MDL-44725 Update cm_info::create to allow 'false' param (13)
authorsam marshall <s.marshall@open.ac.uk>
Mon, 1 Sep 2014 10:18:16 +0000 (11:18 +0100)
committersam marshall <s.marshall@open.ac.uk>
Tue, 2 Sep 2014 12:03:33 +0000 (13:03 +0100)
Currently cm_info::create allows the 'null' parameter, and
returns null (as a null $cm should still be null when treated
as a cm_info object).

Some unit tests relied on the value 'false' being treated
the same as null in this regard. This seems like a generally
safe assumption (given this is a function about changing
weakly typed data into a stronger type) so I modified the
function to accept anything PHP false, returning null.

lib/modinfolib.php

index 9b6e9c3..13380a5 100644 (file)
@@ -1739,13 +1739,13 @@ class cm_info implements IteratorAggregate {
      * Creates a cm_info object from a database record (also accepts cm_info
      * in which case it is just returned unchanged).
      *
-     * @param stdClass|cm_info|null $cm Stdclass or cm_info (or null)
+     * @param stdClass|cm_info|null|bool $cm Stdclass or cm_info (or null or false)
      * @param int $userid Optional userid (default to current)
-     * @return cm_info|null Object as cm_info, or null if input was null
+     * @return cm_info|null Object as cm_info, or null if input was null/false
      */
     public static function create($cm, $userid = 0) {
-        // Nulls get passed through.
-        if (is_null($cm)) {
+        // Null, false, etc. gets passed through as null.
+        if (!$cm) {
             return null;
         }
         // If it is already a cm_info object, just return it.