Merge branch 'wip-MDL-60281-master' of git://github.com/marinaglancy/moodle
authorDavid Monllao <davidm@moodle.com>
Tue, 17 Oct 2017 07:45:44 +0000 (09:45 +0200)
committerDavid Monllao <davidm@moodle.com>
Tue, 17 Oct 2017 07:45:44 +0000 (09:45 +0200)
41 files changed:
analytics/classes/calculable.php
auth/ldap/classes/admin_setting_special_contexts_configtext.php
backup/util/structure/base_nested_element.class.php
badges/award.php
badges/criteria/award_criteria.php
badges/criteria/award_criteria_manual.php
badges/criteria/award_criteria_profile.php
badges/renderer.php
blocks/activity_results/block_activity_results.php
cache/disabledlib.php
cohort/lib.php
filter/urltolink/filter.php
lib/adminlib.php
lib/behat/form_field/behat_form_select.php
lib/classes/text.php
lib/dml/mysqli_native_moodle_database.php
lib/formslib.php
lib/moodlelib.php
lib/navigationlib.php
lib/outputcomponents.php
lib/pear/HTML/QuickForm/Rule/Compare.php
lib/pear/HTML/QuickForm/date.php
lib/pear/PEAR.php
lib/pear/README_MOODLE.txt
lib/phpunit/classes/base_testcase.php
lib/setuplib.php
lib/tests/setuplib_test.php
lib/webdavlib.php
message/tests/api_test.php
mod/chat/chatd.php
mod/quiz/report/statistics/tests/statistics_test.php
mod/scorm/aicc.php
mod/survey/graph.php
mod/survey/lib.php
mod/wiki/diff/diff_nwiki.php
mod/wiki/diff/difflib.php
mod/workshop/allocation/random/lib.php
question/classes/statistics/questions/calculator.php
question/type/multianswer/questiontype.php
tag/classes/tag.php
user/tests/userlib_test.php

index 63ea392..af95120 100644 (file)
@@ -267,7 +267,7 @@ abstract class calculable {
 
         foreach ($arrays as $array) {
             reset($base);
-            while (list($key, $value) = each($array)) {
+            foreach ($array as $key => $value) {
                 if (is_array($value) && !empty($base[$key]) && is_array($base[$key])) {
                     $base[$key] = $this->array_merge_recursive_keep_keys($base[$key], $value);
                 } else {
index 6e5bc65..812bbb7 100644 (file)
@@ -42,8 +42,9 @@ class auth_ldap_admin_setting_special_contexts_configtext extends admin_setting_
     public function write_setting($data) {
         // Try to remove duplicates before storing the contexts (to avoid problems in sync_users()).
         $data = explode(';', $data);
-        $data = array_map(create_function('$x', 'return core_text::strtolower(trim($x));'),
-                                      $data);
+        $data = array_map(function($x) {
+            return core_text::strtolower(trim($x));
+        }, $data);
         $data = implode(';', array_unique($data));
         return parent::write_setting($data);
     }
index b48defc..0067410 100644 (file)
@@ -164,8 +164,8 @@ abstract class base_nested_element extends base_final_element {
     }
 
     public function add_child($element) {
-        if (!($element instanceof base_nested_element)) { // parameter must be a base_nested_element
-            if (!$found = get_class($element)) {
+        if (!is_object($element) || !($element instanceof base_nested_element)) { // parameter must be a base_nested_element
+            if (!is_object($element) || !($found = get_class($element))) {
                 $found = 'non object';
             }
             throw new base_element_struct_exception('nestedelementincorrect', $found);
index 77195f0..18242b9 100644 (file)
@@ -98,7 +98,9 @@ if (count($acceptedroles) > 1) {
     } else {
         // Get all the roles that user has and use the ones required by this badge.
         $roles = get_user_roles($context, $USER->id);
-        $roleids = array_map(create_function('$o', 'return $o->roleid;'), $roles);
+        $roleids = array_map(function($o) {
+            return $o->roleid;
+        }, $roles);
         $selection = array_intersect($acceptedroles, $roleids);
     }
 
index fdc9ee5..ee13151 100644 (file)
@@ -383,7 +383,9 @@ abstract class award_criteria {
         $params = array_filter($params);
         // Find out which param matches optional and required ones.
         $match = array_merge($this->optional_params, array($this->required_param));
-        $regex = implode('|', array_map(create_function('$a', 'return $a . "_";'), $match));
+        $regex = implode('|', array_map(function($a) {
+            return $a . "_";
+        }, $match));
         $requiredkeys = preg_grep('/^(' . $regex . ').*$/', array_keys($params));
 
         if ($this->id !== 0) {
index 51a7959..83fde27 100644 (file)
@@ -65,7 +65,9 @@ class award_criteria_manual extends award_criteria {
         $none = true;
 
         $roles = get_roles_with_capability('moodle/badges:awardbadge', CAP_ALLOW, $PAGE->context);
-        $roleids = array_map(create_function('$o', 'return $o->id;'), $roles);
+        $roleids = array_map(function($o) {
+            return $o->id;
+        }, $roles);
         $existing = array();
         $missing = array();
 
index 65c2dda..51b4988 100644 (file)
@@ -62,7 +62,9 @@ class award_criteria_profile extends award_criteria {
 
         // Get custom fields.
         $cfields = $DB->get_records_sql($sql);
-        $cfids = array_map(create_function('$o', 'return $o->fieldid;'), $cfields);
+        $cfids = array_map(function($o) {
+            return $o->fieldid;
+        }, $cfields);
 
         if ($this->id !== 0) {
             $existing = array_keys($this->params);
index d23ff4e..175cea9 100644 (file)
@@ -358,7 +358,9 @@ class core_badges_renderer extends plugin_renderer_base {
         // Print evidence.
         $agg = $badge->get_aggregation_methods();
         $evidence = $badge->get_criteria_completions($userinfo->id);
-        $eids = array_map(create_function('$o', 'return $o->critid;'), $evidence);
+        $eids = array_map(function($o) {
+            return $o->critid;
+        }, $evidence);
         unset($badge->criteria[BADGE_CRITERIA_TYPE_OVERALL]);
 
         $items = array();
index 52fb8e9..2890415 100644 (file)
@@ -289,8 +289,12 @@ class block_activity_results extends block_base {
                 }
 
                 // Sort groupgrades according to average grade, ascending.
-                uasort($groupgrades, create_function('$a, $b',
-                        'if($a["average"] == $b["average"]) return 0; return ($a["average"] > $b["average"] ? 1 : -1);'));
+                uasort($groupgrades, function($a, $b) {
+                    if ($a["average"] == $b["average"]) {
+                        return 0;
+                    }
+                    return ($a["average"] > $b["average"] ? 1 : -1);
+                });
 
                 // How many groups do we have with graded member submissions to show?
                 $numbest  = empty($this->config->showbest) ? 0 : min($this->config->showbest, count($groupgrades));
index 3a83d1f..2bcc1ca 100644 (file)
@@ -125,9 +125,10 @@ class cache_disabled extends cache {
      * Checks if the cache has the requested key.
      *
      * @param int|string $key Unused.
+     * @param bool $tryloadifpossible Unused.
      * @return bool
      */
-    public function has($key) {
+    public function has($key, $tryloadifpossible = false) {
         return false;
     }
 
index a13eb8b..4de545e 100644 (file)
@@ -234,7 +234,9 @@ function cohort_get_available_cohorts($currentcontext, $withmembers = 0, $offset
     // Build context subquery. Find the list of parent context where user is able to see any or visible-only cohorts.
     // Since this method is normally called for the current course all parent contexts are already preloaded.
     $contextsany = array_filter($currentcontext->get_parent_context_ids(),
-        create_function('$a', 'return has_capability("moodle/cohort:view", context::instance_by_id($a));'));
+        function($a) {
+            return has_capability("moodle/cohort:view", context::instance_by_id($a));
+        });
     $contextsvisible = array_diff($currentcontext->get_parent_context_ids(), $contextsany);
     if (empty($contextsany) && empty($contextsvisible)) {
         // User does not have any permissions to view cohorts.
index 211e149..b8a333e 100644 (file)
@@ -75,6 +75,7 @@ class filter_urltolink extends moodle_text_filter {
         //&lt;a href="blah">
         $filterignoretagsopen  = array('<a\s[^>]+?>', '<span[^>]+?class="nolink"[^>]*?>');
         $filterignoretagsclose = array('</a>', '</span>');
+        $ignoretags = [];
         filter_save_ignore_tags($text,$filterignoretagsopen,$filterignoretagsclose,$ignoretags);
 
         // Check if we support unicode modifiers in regular expressions. Cache it.
index 520f7ba..c4e031f 100644 (file)
@@ -1866,7 +1866,7 @@ abstract class admin_setting {
         }
 
         $callbackfunction = $this->updatedcallback;
-        if (!empty($callbackfunction) and function_exists($callbackfunction)) {
+        if (!empty($callbackfunction) and is_callable($callbackfunction)) {
             $callbackfunction($this->get_full_name());
         }
         return true;
@@ -5206,8 +5206,9 @@ class admin_setting_special_coursecontact extends admin_setting_pickroles {
         parent::__construct('coursecontact', get_string('coursecontact', 'admin'),
             get_string('coursecontact_desc', 'admin'),
             array('editingteacher'));
-        $this->set_updatedcallback(create_function('',
-                "cache::make('core', 'coursecontacts')->purge();"));
+        $this->set_updatedcallback(function (){
+            cache::make('core', 'coursecontacts')->purge();
+        });
     }
 }
 
index 6e359fd..279f52b 100644 (file)
@@ -141,15 +141,9 @@ class behat_form_select extends behat_form_field {
         $values = $this->get_selected_options(false);
         $selectedoptionvalues = $this->get_unescaped_options($values);
 
-        // Precheck to speed things up.
-        if (count($expectedoptions) !== count($selectedoptiontexts) ||
-                count($expectedoptions) !== count($selectedoptionvalues)) {
-            return false;
-        }
-
         // We check against string-ordered lists of options.
-        if ($expectedoptions != $selectedoptiontexts &&
-                $expectedoptions != $selectedoptionvalues) {
+        if ($expectedoptions !== $selectedoptiontexts &&
+                $expectedoptions !== $selectedoptionvalues) {
             return false;
         }
 
index 546dccb..96cb932 100644 (file)
@@ -560,8 +560,12 @@ class core_text {
         static $callback2 = null ;
 
         if (!$callback1 or !$callback2) {
-            $callback1 = create_function('$matches', 'return core_text::code2utf8(hexdec($matches[1]));');
-            $callback2 = create_function('$matches', 'return core_text::code2utf8($matches[1]);');
+            $callback1 = function($matches) {
+                return core_text::code2utf8(hexdec($matches[1]));
+            };
+            $callback2 = function($matches) {
+                return core_text::code2utf8($matches[1]);
+            };
         }
 
         $result = (string)$str;
@@ -600,7 +604,9 @@ class core_text {
 
         if ($dec) {
             if (!$callback) {
-                $callback = create_function('$matches', 'return \'&#\'.(hexdec($matches[1])).\';\';');
+                $callback = function($matches) {
+                    return '&#' . hexdec($matches[1]) . ';';
+                };
             }
             $result = preg_replace_callback('/&#x([0-9a-f]+);/i', $callback, $result);
         }
index 2232e2c..437e4b3 100644 (file)
@@ -1794,7 +1794,9 @@ class mysqli_native_moodle_database extends moodle_database {
             $rv .= " JOIN (".$selects[$i].") $alias ON ".
                 join(' AND ',
                     array_map(
-                        create_function('$a', 'return "'.$falias.'.$a = '.$alias.'.$a";'),
+                        function($a) use ($alias, $falias) {
+                            return $falias . '.' . $a .' = ' . $alias . '.' . $a;
+                        },
                         preg_split('/,/', $fields))
                 );
         }
index 6a320f1..77efbe9 100644 (file)
@@ -2341,7 +2341,9 @@ require(["core/event", "jquery"], function(Event, $) {
             //end of fix
             $escapedElementName = preg_replace_callback(
                 '/[_\[\]-]/',
-                create_function('$matches', 'return sprintf("_%2x",ord($matches[0]));'),
+                function($matches) {
+                    return sprintf("_%2x", ord($matches[0]));
+                },
                 $elementName);
             $valFunc = 'validate_' . $this->_formName . '_' . $escapedElementName . '(ev.target, \''.$escapedElementName.'\')';
 
index 22dfc20..9918926 100644 (file)
@@ -2359,8 +2359,10 @@ function get_user_timezone($tz = 99) {
     $tz = 99;
 
     // Loop while $tz is, empty but not zero, or 99, and there is another timezone is the array.
-    while (((empty($tz) && !is_numeric($tz)) || $tz == 99) && $next = each($timezones)) {
-        $tz = $next['value'];
+    foreach ($timezones as $nextvalue) {
+        if ((empty($tz) && !is_numeric($tz)) || $tz == 99) {
+            $tz = $nextvalue;
+        }
     }
     return is_numeric($tz) ? (float) $tz : $tz;
 }
index 280b119..efb92a9 100644 (file)
@@ -843,7 +843,7 @@ class navigation_node implements renderable {
  * @copyright 2010 Sam Hemelryk
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-class navigation_node_collection implements IteratorAggregate {
+class navigation_node_collection implements IteratorAggregate, Countable {
     /**
      * A multidimensional array to where the first key is the type and the second
      * key is the nodes key.
index e237ba5..fac5c37 100644 (file)
@@ -2640,7 +2640,7 @@ class html_table {
      * $row2->cells = array($cell2, $cell3);
      * $t->data = array($row1, $row2);
      */
-    public $data;
+    public $data = [];
 
     /**
      * @deprecated since Moodle 2.0. Styling should be in the CSS.
index 594e51c..74950b2 100644 (file)
@@ -71,13 +71,16 @@ class HTML_QuickForm_Rule_Compare extends HTML_QuickForm_Rule
     function validate($values, $operator = null)
     {
         $operator = $this->_findOperator($operator);
-        if ('==' != $operator && '!=' != $operator) {
-            $compareFn = create_function('$a, $b', 'return floatval($a) ' . $operator . ' floatval($b);');
+        $a = $values[0];
+        $b = $values[1];
+        if ($operator == '==') {
+            return $a == $b;
+        } else if ($operator == '!=') {
+            return $a != $b;
         } else {
-            $compareFn = create_function('$a, $b', 'return $a ' . $operator . ' $b;');
+            // One of: <= , >= , < , > .
+            return eval('return ' . floatval($a) . $operator . floatval($b) . ';');
         }
-        
-        return $compareFn($values[0], $values[1]);
     }
 
 
index c0090e4..e6ff7f8 100644 (file)
@@ -351,14 +351,18 @@ class HTML_QuickForm_date extends HTML_QuickForm_group
                             $this->_options['maxYear'],
                             $this->_options['minYear'] > $this->_options['maxYear']? -1: 1
                         );
-                        array_walk($options, create_function('&$v,$k','$v = substr($v,-2);'));
+                        array_walk($options, function(&$v, $k) {
+                            $v = substr($v, -2);
+                        });
                         break;
                     case 'h':
                         $options = $this->_createOptionList(1, 12);
                         break;
                     case 'g':
                         $options = $this->_createOptionList(1, 12);
-                        array_walk($options, create_function('&$v,$k', '$v = intval($v);'));
+                        array_walk($options, function(&$v, $k) {
+                            $v = intval($v);
+                        });
                         break;
                     case 'H':
                         $options = $this->_createOptionList(0, 23);
index 4e7c901..295bb1e 100644 (file)
@@ -759,7 +759,7 @@ function _PEAR_call_destructors()
             $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list);
         }
 
-        while (list($k, $objref) = each($_PEAR_destructor_object_list)) {
+        foreach ($_PEAR_destructor_object_list as $k => $objref) {
             $classname = get_class($objref);
             while ($classname) {
                 $destructor = "_$classname";
index ec62936..05043ac 100644 (file)
@@ -32,12 +32,15 @@ MDL-52826 - Remove onsubmit events pointing to the global validation functions a
             tag moved after the HTML
 MDL-50484 - _getPersistantData() returns id with _persistant prefixed to element id.
 MDL-55123 - corrected call to non-static functions in HTML_QuickForm to be PHP7.1-compliant
+MDL-60281 - replaced deprecated create_function() with lambda functions for PHP7.2 compatibility
 
 
 Pear
 ====
-Changed constructors in classes PEAR and PEAR_ERROR to be __construct(). This has
-been already changed upstream in 1.10.0, remove this line after upgrade.
+It was decided that we will not upgrade this library from upstream  any more, see MDL-52465
+
+Changed constructors in classes PEAR and PEAR_ERROR to be __construct().
+MDL-60281 - replaced deprecated function each() with foreach loop for PHP7.2 compatibility
 
 
 Crypt/CHAP
index 231ce1f..54eb63f 100644 (file)
@@ -73,7 +73,7 @@ abstract class base_testcase extends PHPUnit_Framework_TestCase {
     public static function assertNotTag($matcher, $actual, $message = '', $ishtml = true) {
         $dom = PHPUnit_Util_XML::load($actual, $ishtml);
         $tags = self::findNodes($dom, $matcher, $ishtml);
-        $matched = count($tags) > 0 && $tags[0] instanceof DOMNode;
+        $matched = (is_array($tags) && count($tags) > 0) && $tags[0] instanceof DOMNode;
         self::assertFalse($matched, $message);
     }
 
index 7e6d25c..7f6191a 100644 (file)
@@ -51,27 +51,6 @@ define('MEMORY_EXTRA', -3);
 /** Extremely large memory limit - not recommended for standard scripts */
 define('MEMORY_HUGE', -4);
 
-
-/**
- * Simple class. It is usually used instead of stdClass because it looks
- * more familiar to Java developers ;-) Do not use for type checking of
- * function parameters. Please use stdClass instead.
- *
- * @package    core
- * @subpackage lib
- * @copyright  2009 Petr Skoda  {@link http://skodak.org}
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @deprecated since 2.0
- */
-class object extends stdClass {
-    /**
-     * Constructor.
-     */
-    public function __construct() {
-        debugging("'object' class has been deprecated, please use stdClass instead.", DEBUG_DEVELOPER);
-    }
-};
-
 /**
  * Base Moodle Exception class
  *
@@ -1122,7 +1101,9 @@ function workaround_max_input_vars() {
     }
 
     $delim = '&';
-    $fun = create_function('$p', 'return implode("'.$delim.'", $p);');
+    $fun = function($p) use ($delim) {
+        return implode($delim, $p);
+    };
     $chunks = array_map($fun, array_chunk(explode($delim, $str), $max));
 
     // Clear everything from existing $_POST array, otherwise it might be included
index 357a6d7..e801a14 100644 (file)
@@ -469,12 +469,6 @@ class core_setuplib_testcase extends advanced_testcase {
         }
     }
 
-    public function test_object() {
-        $obj = new object();
-        $this->assertDebuggingCalled("'object' class has been deprecated, please use stdClass instead.");
-        $this->assertInstanceOf('stdClass', $obj);
-    }
-
     /**
      * Data provider for test_get_real_size().
      *
index f71c61a..c130715 100644 (file)
@@ -954,7 +954,7 @@ EOD;
 
         $result = true;
 
-        while (list($localpath, $destpath) = each($filelist)) {
+        foreach ($filelist as $localpath => $destpath) {
 
             $localpath = rtrim($localpath, "/");
             $destpath  = rtrim($destpath, "/");
@@ -1011,7 +1011,7 @@ EOD;
 
         $result = true;
 
-        while (list($remotepath, $localpath) = each($filelist)) {
+        foreach ($filelist as $remotepath => $localpath) {
 
             $localpath   = rtrim($localpath, "/");
             $remotepath  = rtrim($remotepath, "/");
index 35d15f5..7139800 100644 (file)
@@ -1398,7 +1398,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
             $this->markTestSkipped("No message processors found");
         }
 
-        list($name, $processor) = each($processors);
+        $name = key($processors);
+        $processor = current($processors);
         $testprocessor = \core_message\api::get_message_processor($name);
         $this->assertEquals($processor->name, $testprocessor->name);
         $this->assertEquals($processor->enabled, $testprocessor->enabled);
@@ -1431,7 +1432,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
         if (empty($processors)) {
             $this->markTestSkipped("No message processors found");
         }
-        list($name, $testprocessor) = each($processors);
+        $name = key($processors);
+        $testprocessor = current($processors);
 
         // Enable.
         \core_message\api::update_processor_status($testprocessor, 1);
@@ -1457,7 +1459,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
         if (empty($processors)) {
             $this->markTestSkipped("No message processors found");
         }
-        list($name, $testprocessor) = each($processors);
+        $name = key($processors);
+        $testprocessor = current($processors);
 
         // Enable.
         \core_message\api::update_processor_status($testprocessor, 1);
index 45ba410..23fbeac 100644 (file)
@@ -892,7 +892,9 @@ if (strpos($commandline, '-') === false) {
     $numswitches = count($switches);
 
     // Fancy way to give a "hyphen" boolean flag to each "switch".
-    $switches = array_map(create_function('$x', 'return array("str" => $x, "hyphen" => (substr($x, 0, 1) == "-"));'), $switches);
+    $switches = array_map(function($x) {
+        return array("str" => $x, "hyphen" => (substr($x, 0, 1) == "-"));
+    }, $switches);
 
     for ($i = 0; $i < $numswitches; ++$i) {
 
index 3f5e090..e67653b 100644 (file)
@@ -154,14 +154,15 @@ class quiz_statistics_question_stats_testcase extends basic_testcase {
     public function get_fields_from_csv($line) {
         $line = trim($line);
         $items = preg_split('!,!', $line);
-        while (list($key) = each($items)) {
+        $cnt = count($items);
+        for ($key = 0; $key < $cnt; $key++) {
             if ($items[$key]!='') {
                 if ($start = ($items[$key]{0}=='"')) {
                     $items[$key] = substr($items[$key], 1);
                     while (!$end = ($items[$key]{strlen($items[$key])-1}=='"')) {
                         $item = $items[$key];
                         unset($items[$key]);
-                        list($key) = each($items);
+                        $key++;
                         $items[$key] = $item . ',' . $items[$key];
                     }
                     $items[$key] = substr($items[$key], 0, strlen($items[$key])-1);
index 14bcb99..8902fd2 100644 (file)
@@ -217,7 +217,7 @@ if (!empty($command)) {
                         $datamodel['[comments]'] = 'cmi.comments';
                         $datarows = explode("\r\n", $aiccdata);
                         reset($datarows);
-                        while ((list(, $datarow) = each($datarows)) !== false) {
+                        foreach ($datarows as $datarow) {
                             if (($equal = strpos($datarow, '=')) !== false) {
                                 $element = strtolower(trim(substr($datarow, 0, $equal)));
                                 $value = trim(substr($datarow, $equal + 1));
index 7422e7d..75c0c0e 100644 (file)
@@ -88,7 +88,7 @@
 
        $options = explode(",",$question->options);
 
-       while (list($key,) = each($options)) {
+       foreach ($options as $key => $unused) {
            $buckets1[$key] = 0;
            $buckets2[$key] = 0;
        }
index db773b5..6d5f7f4 100644 (file)
@@ -539,7 +539,7 @@ function survey_print_multi($question) {
 
     echo "<tr class=\"smalltext\"><th scope=\"row\">$strresponses</th>";
     echo "<th scope=\"col\" class=\"hresponse\">". get_string('notyetanswered', 'survey'). "</th>";
-    while (list ($key, $val) = each ($options)) {
+    foreach ($options as $key => $val) {
         echo "<th scope=\"col\" class=\"hresponse\">$val</th>\n";
     }
     echo "</tr>\n";
index 208a712..6b224d1 100644 (file)
@@ -247,14 +247,14 @@ class _WikiDiffEngine
                continue;
        $matches = $ymatches[$line];
                        reset($matches);
-       while (list ($junk, $y) = each($matches))
+        foreach ($matches as $y)
                if (empty($this->in_seq[$y])) {
                $k = $this->_lcs_pos($y);
                USE_ASSERTS_IN_WIKI && assert($k > 0);
                $ymids[$k] = $ymids[$k-1];
                break;
-                               }
-       while (list ($junk, $y) = each($matches)) {
+            }
+        foreach ($matches as $y) {
                if ($y > $this->seq[$k-1]) {
                USE_ASSERTS_IN_WIKI && assert($y < $this->seq[$k]);
                // Optimization: this is a common case:
index 7e3e965..7dba6d7 100644 (file)
@@ -289,11 +289,12 @@ class ouwiki_line {
         // Note that using a single param for replace only works because all
         // the search strings are 6 characters long
         $data=str_replace(array('&nbsp;','&#xA0;','&#160;'),'      ',$data);
-        
+
         // Tags replaced with equal number of spaces
-        $data=preg_replace_callback('/<.*?'.'>/',create_function(
-            '$matches','return preg_replace("/./"," ",$matches[0]);'),$data);
-            
+        $data = preg_replace_callback('/<.*?'.'>/', function($matches) {
+            return preg_replace("/./", " ", $matches[0]);
+        }, $data);
+
         // 2. Analyse string so that each space-separated thing 
         // is counted as a 'word' (note these may not be real words,
         // for instance words may include punctuation at either end)
@@ -409,9 +410,10 @@ function ouwiki_diff_html_to_lines($content) {
     // Get rid of all script, style, object tags (that might contain non-text
     // outside tags)
     $content=preg_replace_callback(
-        '^(<script .*?</script>)|(<object .*?</object>)|(<style .*?</style>)^i',create_function(
-            '$matches','return preg_replace("/./"," ",$matches[0]);'),$content); 
-    
+        '^(<script .*?</script>)|(<object .*?</object>)|(<style .*?</style>)^i', function($matches) {
+        return preg_replace("/./", " ", $matches[0]);
+    }, $content);
+
     // Get rid of all ` symbols as we are going to use these for a marker later.
     $content=preg_replace('/[`]/',' ',$content);
     
@@ -424,8 +426,9 @@ function ouwiki_diff_html_to_lines($content) {
         }
         $taglist.="<$blocktag>|<\\/$blocktag>";
     }
-    $content=preg_replace_callback('/(('.$taglist.')\s*)+/i',create_function(
-        '$matches','return "`".preg_replace("/./"," ",substr($matches[0],1));'),$content);
+    $content = preg_replace_callback('/((' . $taglist . ')\s*)+/i', function($matches) {
+        return "`" . preg_replace("/./", " ", substr($matches[0], 1));
+    }, $content);
         
     // Now go through splitting each line
     $lines=array(); $index=1;
@@ -709,8 +712,10 @@ function ouwiki_diff($file1,$file2) {
  */
 function ouwiki_diff_add_markers($html,$words,$markerclass,$beforetext,$aftertext) {
     // Sort words by start position
-    usort($words, create_function('$a,$b','return $a->start-$b->start;'));
-    
+    usort($words, function($a, $b) {
+        return $a->start - $b->start;
+    });
+
     // Add marker for each word. We use an odd tag name which will
     // be replaced by span later, this for ease of replacing 
     $spanstart="<ouwiki_diff_add_markers>";
index ffed33c..603cf36 100644 (file)
@@ -126,7 +126,8 @@ class workshop_random_allocator implements workshop_allocator {
             $allreviewers = $reviewers[0];
             $allreviewersreloaded = false;
             foreach ($newallocations as $newallocation) {
-                list($reviewerid, $authorid) = each($newallocation);
+                $reviewerid = key($newallocation);
+                $authorid = current($newallocation);
                 $a = new stdClass();
                 if (isset($allreviewers[$reviewerid])) {
                     $a->reviewername = fullname($allreviewers[$reviewerid]);
@@ -324,7 +325,8 @@ class workshop_random_allocator implements workshop_allocator {
         $submissions    = $this->workshop->get_submissions($authorids);
         $submissions    = $this->index_submissions_by_authors($submissions);
         foreach ($newallocations as $newallocation) {
-            list($reviewerid, $authorid) = each($newallocation);
+            $reviewerid = key($newallocation);
+            $authorid = current($newallocation);
             if (!isset($submissions[$authorid])) {
                 throw new moodle_exception('unabletoallocateauthorwithoutsubmission', 'workshop');
             }
@@ -408,7 +410,8 @@ class workshop_random_allocator implements workshop_allocator {
                 continue;
             }
             foreach ($newallocations as $newallocation) {
-                list($nrid, $naid) = each($newallocation);
+                $nrid = key($newallocation);
+                $naid = current($newallocation);
                 if (array($arid, $aaid) == array($nrid, $naid)) {
                     // re-allocation found - let us continue with the next assessment
                     $keepids[$assessmentid] = null;
index 567e6e9..4f0f285 100644 (file)
@@ -187,7 +187,7 @@ class calculator {
             // foreach ($this->questions as $qid => $question).
             $slots = $this->stats->get_all_slots();
             $this->progress->start_progress('', count($slots), 1);
-            while (list(, $slot) = each($slots)) {
+            foreach ($slots as $slot) {
                 $this->stats->for_slot($slot)->sort_variants();
                 $this->progress->increment_progress();
                 $nextslot = current($slots);
index 17274b4..998a568 100644 (file)
@@ -53,7 +53,9 @@ class qtype_multianswer extends question_type {
 
         // We want an array with question ids as index and the positions as values.
         $sequence = array_flip(explode(',', $sequence));
-        array_walk($sequence, create_function('&$val', '$val++;'));
+        array_walk($sequence, function(&$val) {
+            $val++;
+        });
 
         // If a question is lost, the corresponding index is null
         // so this null convention is used to test $question->options->questions
index 02d568b..a5c0716 100644 (file)
@@ -284,8 +284,10 @@ class core_tag_tag {
         $tags = $DB->get_records_select('tag', 'name = :name AND tagcollid ' . $sql, $params, '', $returnfields);
         if (count($tags) > 1) {
             // Sort in the same order as tag collections.
-            uasort($tags, create_function('$a,$b', '$tagcolls = core_tag_collection::get_collections(); ' .
-                'return $tagcolls[$a->tagcollid]->sortorder < $tagcolls[$b->tagcollid]->sortorder ? -1 : 1;'));
+            $tagcolls = core_tag_collection::get_collections();
+            uasort($tags, function($a, $b) use ($tagcolls) {
+                return $tagcolls[$a->tagcollid]->sortorder < $tagcolls[$b->tagcollid]->sortorder ? -1 : 1;
+            });
         }
         $rv = array();
         foreach ($tags as $id => $tag) {
index a5a6862..0168929 100644 (file)
@@ -887,8 +887,8 @@ class core_userliblib_testcase extends advanced_testcase {
         // the group and has the name 'searchforthis' and has also accessed the course in the last day.
         $userset = user_get_participants($course->id, $group->id, $accesssince + 1, $roleids['student'], 0, -1, 'searchforthis');
 
-        $this->assertEquals(1, sizeof($userset));
         $this->assertEquals($student1->id, $userset->current()->id);
+        $this->assertEquals(1, iterator_count($userset));
     }
 
     /**