Merge branch 'wip-MDL-52475-master' of git://github.com/marinaglancy/moodle
authorDavid Monllao <davidm@moodle.com>
Fri, 11 Dec 2015 03:23:41 +0000 (11:23 +0800)
committerDavid Monllao <davidm@moodle.com>
Fri, 11 Dec 2015 03:23:41 +0000 (11:23 +0800)
144 files changed:
admin/environment.xml
admin/tool/uploaduser/index.php
admin/tool/uploaduser/tests/behat/upload_users.feature [moved from admin/tests/behat/upload_users.feature with 58% similarity]
auth/cas/auth.php
auth/email/auth.php
auth/fc/auth.php
auth/fc/fcFPP.php
auth/imap/auth.php
auth/ldap/auth.php
auth/manual/auth.php
auth/mnet/auth.php
auth/nntp/auth.php
auth/nologin/auth.php
auth/none/auth.php
auth/pam/auth.php
auth/pop3/auth.php
auth/radius/auth.php
auth/shibboleth/auth.php
auth/webservice/auth.php
backup/util/settings/tests/settings_test.php
blocks/edit_form.php
blocks/rss_client/editfeed.php
course/moodleform_mod.php
filter/local_settings_form.php
grade/grading/form/guide/guideeditor.php
grade/grading/form/rubric/rubriceditor.php
lib/classes/shutdown_manager.php
lib/dml/moodle_database.php
lib/dml/moodle_transaction.php
lib/form/advcheckbox.php
lib/form/autocomplete.php
lib/form/button.php
lib/form/cancel.php
lib/form/checkbox.php
lib/form/dateselector.php
lib/form/datetimeselector.php
lib/form/duration.php
lib/form/editor.php
lib/form/filemanager.php
lib/form/filepicker.php
lib/form/grading.php
lib/form/group.php
lib/form/header.php
lib/form/hidden.php
lib/form/htmleditor.php
lib/form/listing.php
lib/form/modgrade.php
lib/form/modvisible.php
lib/form/password.php
lib/form/passwordunmask.php
lib/form/questioncategory.php
lib/form/radio.php
lib/form/recaptcha.php
lib/form/searchableselector.php
lib/form/select.php
lib/form/selectgroups.php
lib/form/selectwithlink.php
lib/form/selectyesno.php
lib/form/static.php
lib/form/submit.php
lib/form/submitlink.php
lib/form/tags.php
lib/form/text.php
lib/form/textarea.php
lib/form/url.php
lib/form/warning.php
lib/formslib.php
lib/jabber/XMPP/XMLStream.php
lib/jabber/readme_moodle.txt
lib/pear/Crypt/CHAP.php
lib/pear/HTML/Common.php
lib/pear/HTML/QuickForm.php
lib/pear/HTML/QuickForm/Renderer.php
lib/pear/HTML/QuickForm/Renderer/Array.php
lib/pear/HTML/QuickForm/Renderer/Default.php
lib/pear/HTML/QuickForm/Renderer/Object.php
lib/pear/HTML/QuickForm/Renderer/Tableless.php
lib/pear/HTML/QuickForm/advcheckbox.php
lib/pear/HTML/QuickForm/autocomplete.php
lib/pear/HTML/QuickForm/button.php
lib/pear/HTML/QuickForm/checkbox.php
lib/pear/HTML/QuickForm/date.php
lib/pear/HTML/QuickForm/element.php
lib/pear/HTML/QuickForm/file.php
lib/pear/HTML/QuickForm/group.php
lib/pear/HTML/QuickForm/header.php
lib/pear/HTML/QuickForm/hidden.php
lib/pear/HTML/QuickForm/hiddenselect.php
lib/pear/HTML/QuickForm/hierselect.php
lib/pear/HTML/QuickForm/html.php
lib/pear/HTML/QuickForm/image.php
lib/pear/HTML/QuickForm/input.php
lib/pear/HTML/QuickForm/link.php
lib/pear/HTML/QuickForm/password.php
lib/pear/HTML/QuickForm/radio.php
lib/pear/HTML/QuickForm/reset.php
lib/pear/HTML/QuickForm/select.php
lib/pear/HTML/QuickForm/static.php
lib/pear/HTML/QuickForm/submit.php
lib/pear/HTML/QuickForm/text.php
lib/pear/HTML/QuickForm/textarea.php
lib/pear/HTML/QuickForm/xbutton.php
lib/pear/PEAR.php
lib/pear/README_MOODLE.txt
lib/phpexcel/PHPExcel/Shared/PCLZip/pclzip.lib.php
lib/phpexcel/PHPExcel/Worksheet/AutoFilter/Column.php
lib/phpexcel/readme_moodle.txt
lib/phpunit/classes/advanced_testcase.php
lib/phpunit/classes/basic_testcase.php
lib/phpunit/classes/database_driver_testcase.php
lib/setuplib.php
lib/tests/fixtures/upload_users_profile.csv [new file with mode: 0644]
lib/upgrade.txt
lib/upgradelib.php
mnet/environment.php
mnet/peer.php
mnet/xmlrpc/client.php
mnet/xmlrpc/xmlparser.php
mod/assign/feedback/editpdf/fpdi/ASL20.txt [deleted file]
mod/assign/feedback/editpdf/fpdi/LICENSE [new file with mode: 0644]
mod/assign/feedback/editpdf/fpdi/filters/FilterASCII85.php
mod/assign/feedback/editpdf/fpdi/filters/FilterASCII85_FPDI.php [deleted file]
mod/assign/feedback/editpdf/fpdi/filters/FilterASCIIHexDecode.php
mod/assign/feedback/editpdf/fpdi/filters/FilterLZW.php
mod/assign/feedback/editpdf/fpdi/filters/FilterLZW_FPDI.php [deleted file]
mod/assign/feedback/editpdf/fpdi/fpdf_tpl.php
mod/assign/feedback/editpdf/fpdi/fpdi.php
mod/assign/feedback/editpdf/fpdi/fpdi_bridge.php
mod/assign/feedback/editpdf/fpdi/fpdi_pdf_parser.php
mod/assign/feedback/editpdf/fpdi/pdf_context.php
mod/assign/feedback/editpdf/fpdi/pdf_parser.php
mod/assign/feedback/editpdf/fpdi/readme_moodle.txt
mod/assign/feedback/editpdf/thirdpartylibs.xml
mod/data/export_form.php
mod/data/field/textarea/field.class.php
mod/lesson/mod_form.php
mod/lti/locallib.php
mod/lti/tests/locallib_test.php
mod/wiki/editors/wikieditor.php
mod/wiki/editors/wikifiletable.php
question/type/calculated/db/upgradelib.php
question/type/calculated/question.php
question/type/calculated/tests/variablesubstituter_test.php
question/type/calculatedmulti/db/upgradelib.php

index 6847483..4bf5798 100644 (file)
       <VENDOR name="oracle" version="10.2" />
     </DATABASE>
     <PHP version="5.4.4" level="required">
-      <RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
     </PHP>
     <PCREUNICODE level="optional">
       <FEEDBACK>
index ad36657..e687fe3 100644 (file)
@@ -232,8 +232,8 @@ if ($formdata = $mform2->is_cancelled()) {
                 if (isset($USER->$key) and is_array($USER->$key)) {
                     // this must be some hacky field that is abusing arrays to store content and format
                     $user->$key = array();
-                    $user->$key['text']   = $value;
-                    $user->$key['format'] = FORMAT_MOODLE;
+                    $user->{$key['text']}   = $value;
+                    $user->{$key['format']} = FORMAT_MOODLE;
                 } else {
                     $user->$key = trim($value);
                 }
@@ -1,4 +1,4 @@
-@core @core_admin @_file_upload
+@tool @tool_uploaduser @_file_upload
 Feature: Upload users
   In order to add users to the system
   As an admin
@@ -39,3 +39,25 @@ Feature: Upload users
     And I follow "Groups"
     And I set the field "groups" to "Section 1 (1)"
     And the "members" select box should contain "Tom Jones"
+
+  @javascript
+  Scenario: Upload users with custom profile fields
+    # Create user profile field.
+    Given I log in as "admin"
+    And I navigate to "User profile fields" node in "Site administration > Users > Accounts"
+    And I set the field "datatype" to "Text area"
+    And I set the following fields to these values:
+      | Short name | superfield  |
+      | Name       | Super field |
+    And I click on "Save changes" "button"
+    # Upload users.
+    When I navigate to "Upload users" node in "Site administration > Users > Accounts"
+    And I upload "lib/tests/fixtures/upload_users_profile.csv" file to "File" filemanager
+    And I press "Upload users"
+    And I press "Upload users"
+    # Check that users were created and the superfield is filled.
+    And I navigate to "Browse list of users" node in "Site administration > Users > Accounts"
+    And I follow "Tom Jones"
+    And I should see "Super field"
+    And I should see "The big guy"
+    And I log out
index afa87dd..4439bcb 100644 (file)
@@ -39,13 +39,23 @@ class auth_plugin_cas extends auth_plugin_ldap {
     /**
      * Constructor.
      */
-    function auth_plugin_cas() {
+    public function __construct() {
         $this->authtype = 'cas';
         $this->roleauth = 'auth_cas';
         $this->errorlogtag = '[AUTH CAS] ';
         $this->init_plugin($this->authtype);
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_cas() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     function prevent_local_passwords() {
         return true;
     }
index 0a0827d..ffa0e91 100644 (file)
@@ -34,11 +34,21 @@ class auth_plugin_email extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_email() {
+    public function __construct() {
         $this->authtype = 'email';
         $this->config = get_config('auth/email');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_email() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index 75c8bd0..b987992 100644 (file)
@@ -37,11 +37,21 @@ class auth_plugin_fc extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_fc() {
+    public function __construct() {
         $this->authtype = 'fc';
         $this->config = get_config('auth/fc');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_fc() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index c082202..2adc309 100644 (file)
@@ -30,7 +30,7 @@ class fcFPP
     var $_debug = FALSE;    // set to true to see some debug info
 
     // class constructor
-    function fcFPP($host="localhost", $port="3333")
+    public function __construct($host="localhost", $port="3333")
     {
     $this->_hostname = $host;
     $this->_port = $port;
@@ -38,6 +38,12 @@ class fcFPP
     $this->_pwd = "";
     }
 
+    function fcFPP($host="localhost", $port="3333")
+    {
+           debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+           self::__construct($host, $port);
+    }
+
     // open a connection to the FirstClass server
     function open()
     {
index b0d7f9f..3e3e2da 100644 (file)
@@ -35,11 +35,21 @@ class auth_plugin_imap extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_imap() {
+    public function __construct() {
         $this->authtype = 'imap';
         $this->config = get_config('auth/imap');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_imap() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index 96d9bba..9d3a4ad 100644 (file)
@@ -143,13 +143,23 @@ class auth_plugin_ldap extends auth_plugin_base {
     /**
      * Constructor with initialisation.
      */
-    function auth_plugin_ldap() {
+    public function __construct() {
         $this->authtype = 'ldap';
         $this->roleauth = 'auth_ldap';
         $this->errorlogtag = '[AUTH LDAP] ';
         $this->init_plugin($this->authtype);
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_ldap() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index 938aae8..c6df146 100644 (file)
@@ -46,13 +46,23 @@ class auth_plugin_manual extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_manual() {
+    public function __construct() {
         $this->authtype = 'manual';
         $config = get_config(self::COMPONENT_NAME);
         $legacyconfig = get_config(self::LEGACY_COMPONENT_NAME);
         $this->config = (object)array_merge((array)$legacyconfig, (array)$config);
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_manual() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist. (Non-mnet accounts only!)
index f061539..8bd7768 100644 (file)
@@ -35,12 +35,22 @@ class auth_plugin_mnet extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_mnet() {
+    public function __construct() {
         $this->authtype = 'mnet';
         $this->config = get_config('auth_mnet');
         $this->mnet = get_mnet_environment();
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_mnet() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * This function is normally used to determine if the username and password
      * are correct for local logins. Always returns false, as local users do not
index c2ad283..9e8b24c 100644 (file)
@@ -35,11 +35,21 @@ class auth_plugin_nntp extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_nntp() {
+    public function __construct() {
         $this->authtype = 'nntp';
         $this->config = get_config('auth/nntp');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_nntp() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index c3ed391..9a1ec28 100644 (file)
@@ -35,10 +35,20 @@ class auth_plugin_nologin extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_nologin() {
+    public function __construct() {
         $this->authtype = 'nologin';
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_nologin() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Do not allow any login.
      *
index fcfce4c..c002930 100644 (file)
@@ -34,11 +34,21 @@ class auth_plugin_none extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_none() {
+    public function __construct() {
         $this->authtype = 'none';
         $this->config = get_config('auth/none');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_none() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work or don't exist and false
      * if the user exists and the password is wrong.
index fd76a09..b1e2053 100644 (file)
@@ -53,12 +53,22 @@ class auth_plugin_pam extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_pam() {
+    public function __construct() {
         $this->authtype = 'pam';
         $this->config = get_config('auth/pam');
         $this->errormessage = '';
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_pam() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index 5e25aa9..4bfaa0b 100644 (file)
@@ -35,11 +35,21 @@ class auth_plugin_pop3 extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_pop3() {
+    public function __construct() {
         $this->authtype = 'pop3';
         $this->config = get_config('auth/pop3');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_pop3() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index a74369e..24ae5d3 100644 (file)
@@ -38,11 +38,21 @@ class auth_plugin_radius extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_radius() {
+    public function __construct() {
         $this->authtype = 'radius';
         $this->config = get_config('auth/radius');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_radius() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index a4cebd8..be7c25b 100644 (file)
@@ -38,11 +38,21 @@ class auth_plugin_shibboleth extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_shibboleth() {
+    public function __construct() {
         $this->authtype = 'shibboleth';
         $this->config = get_config('auth/shibboleth');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_shibboleth() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index 1fc5694..f027f1c 100644 (file)
@@ -35,11 +35,21 @@ class auth_plugin_webservice extends auth_plugin_base {
     /**
      * Constructor.
      */
-    function auth_plugin_webservice() {
+    public function __construct() {
         $this->authtype = 'webservice';
         $this->config = get_config('auth/webservice');
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function auth_plugin_webservice() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Returns true if the username and password work and false if they are
      * wrong or don't exist.
index 201d29e..45bc4ec 100644 (file)
@@ -126,6 +126,9 @@ class backp_settings_testcase extends basic_testcase {
         } catch (exception $e) {
             $this->assertTrue($e instanceof base_setting_exception);
             $this->assertEquals($e->errorcode, 'incorrect_object_passed');
+        } catch (TypeError $e) {
+            // On PHP7+ we get a TypeError raised, lets check we've the right error.
+            $this->assertRegexp('/must be an instance of backup_setting_ui/', $e->getMessage());
         }
         restore_error_handler();
 
@@ -140,6 +143,9 @@ class backp_settings_testcase extends basic_testcase {
         } catch (exception $e) {
             $this->assertTrue($e instanceof base_setting_exception);
             $this->assertEquals($e->errorcode, 'incorrect_object_passed');
+        } catch (TypeError $e) {
+            // On PHP7+ we get a TypeError raised, lets check we've the right error.
+            $this->assertRegexp('/must be an instance of backup_setting_ui/', $e->getMessage());
         }
         restore_error_handler();
 
@@ -302,6 +308,9 @@ class backp_settings_testcase extends basic_testcase {
         } catch (exception $e) {
             $this->assertTrue($e instanceof backup_setting_exception);
             $this->assertEquals($e->errorcode, 'incorrect_object_passed');
+        } catch (TypeError $e) {
+            // On PHP7+ we get a TypeError raised, lets check we've the right error.
+            $this->assertRegexp('/must be an instance of base_setting/', $e->getMessage());
         }
         restore_error_handler();
 
index ad32113..57c9de8 100644 (file)
@@ -54,7 +54,7 @@ class block_edit_form extends moodleform {
         global $CFG;
         $this->block = $block;
         $this->page = $page;
-        parent::moodleform($actionurl);
+        parent::__construct($actionurl);
     }
 
     function definition() {
index 77e3097..2b6d92a 100644 (file)
@@ -36,7 +36,7 @@ class feed_edit_form extends moodleform {
     function __construct($actionurl, $isadding, $caneditshared) {
         $this->isadding = $isadding;
         $this->caneditshared = $caneditshared;
-        parent::moodleform($actionurl);
+        parent::__construct($actionurl);
     }
 
     function definition() {
index 4c8c25f..690dda8 100644 (file)
@@ -58,7 +58,7 @@ abstract class moodleform_mod extends moodleform {
     /** @var object The course format of the current course. */
     protected $courseformat;
 
-    function moodleform_mod($current, $section, $cm, $course) {
+    public function __construct($current, $section, $cm, $course) {
         global $CFG;
 
         $this->current   = $current;
@@ -83,7 +83,17 @@ abstract class moodleform_mod extends moodleform {
         }
         $this->_modname = $matches[1];
         $this->init_features();
-        parent::moodleform('modedit.php');
+        parent::__construct('modedit.php');
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function moodleform_mod($current, $section, $cm, $course) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($current, $section, $cm, $course);
     }
 
     protected function init_features() {
index 1721ffa..fce01a1 100644 (file)
@@ -33,7 +33,7 @@ abstract class filter_local_settings_form extends moodleform {
     public function __construct($submiturl, $filter, $context) {
         $this->filter = $filter;
         $this->context = $context;
-        parent::moodleform($submiturl);
+        parent::__construct($submiturl);
     }
 
     /**
index 902834c..a6e43a1 100644 (file)
@@ -53,8 +53,18 @@ class moodlequickform_guideeditor extends HTML_QuickForm_input {
      * @param string $elementlabel
      * @param array $attributes
      */
+    public function __construct($elementname=null, $elementlabel=null, $attributes=null) {
+        parent::__construct($elementname, $elementlabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
     public function moodlequickform_guideeditor($elementname=null, $elementlabel=null, $attributes=null) {
-        parent::HTML_QuickForm_input($elementname, $elementlabel, $attributes);
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementname, $elementlabel, $attributes);
     }
 
     /**
index b3cc5bf..d990126 100644 (file)
@@ -60,8 +60,18 @@ class MoodleQuickForm_rubriceditor extends HTML_QuickForm_input {
      * @param string $elementLabel
      * @param array $attributes
      */
-    function MoodleQuickForm_rubriceditor($elementName=null, $elementLabel=null, $attributes=null) {
-        parent::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_rubriceditor($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
     }
 
     /**
index 8b01ba0..2a11ae2 100644 (file)
@@ -81,6 +81,9 @@ class core_shutdown_manager {
                 }
             } catch (Exception $e) {
                 error_log('Exception ignored in shutdown function '.var_export($callback, true).':'.$e->getMessage());
+            } catch (Throwable $e) {
+                // Engine errors in PHP7 throw exceptions of type Throwable (this "catch" will be ignored in PHP5).
+                error_log('Exception ignored in shutdown function '.var_export($callback, true).':'.$e->getMessage());
             }
         }
 
index fee0eca..4540c7e 100644 (file)
@@ -2431,10 +2431,14 @@ abstract class moodle_database {
      * automatically if exceptions not caught.
      *
      * @param moodle_transaction $transaction An instance of a moodle_transaction.
-     * @param Exception $e The related exception to this transaction rollback.
+     * @param Exception|Throwable $e The related exception/throwable to this transaction rollback.
      * @return void This does not return, instead the exception passed in will be rethrown.
      */
-    public function rollback_delegated_transaction(moodle_transaction $transaction, Exception $e) {
+    public function rollback_delegated_transaction(moodle_transaction $transaction, $e) {
+        if (!($e instanceof Exception) && !($e instanceof Throwable)) {
+            // PHP7 - we catch Throwables in phpunit but can't use that as the type hint in PHP5.
+            $e = new \coding_exception("Must be given an Exception or Throwable object!");
+        }
         if ($transaction->is_disposed()) {
             throw new dml_transaction_exception('Transactions already disposed', $transaction);
         }
index 106ffb8..839f98d 100644 (file)
@@ -95,10 +95,10 @@ class moodle_transaction {
     /**
      * Rollback all current delegated transactions.
      *
-     * @param Exception $e mandatory exception
+     * @param Exception|Throwable $e mandatory exception/throwable
      * @return void
      */
-    public function rollback(Exception $e) {
+    public function rollback($e) {
         if ($this->is_disposed()) {
             throw new dml_transaction_exception('Transactions already disposed', $this);
         }
index 26ae788..ff679d4 100644 (file)
@@ -55,7 +55,7 @@ class MoodleQuickForm_advcheckbox extends HTML_QuickForm_advcheckbox{
      *              or an associative array
      * @param mixed $values (optional) Values to pass if checked or not checked
      */
-    function MoodleQuickForm_advcheckbox($elementName=null, $elementLabel=null, $text=null, $attributes=null, $values=null)
+    public function __construct($elementName=null, $elementLabel=null, $text=null, $attributes=null, $values=null)
     {
         if ($values === null){
             $values = array(0, 1);
@@ -81,7 +81,17 @@ class MoodleQuickForm_advcheckbox extends HTML_QuickForm_advcheckbox{
             }
         }
 
-        parent::HTML_QuickForm_advcheckbox($elementName, $elementLabel, $text, $attributes, $values);
+        parent::__construct($elementName, $elementLabel, $text, $attributes, $values);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_advcheckbox($elementName=null, $elementLabel=null, $text=null, $attributes=null, $values=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $text, $attributes, $values);
     }
 
     /**
index 206bc67..5cf63c2 100644 (file)
@@ -60,7 +60,7 @@ class MoodleQuickForm_autocomplete extends MoodleQuickForm_select {
      * @param mixed $attributes Either a typical HTML attribute string or an associative array. Special options
      *                          "tags", "placeholder", "ajax", "multiple", "casesensitive" are supported.
      */
-    function MoodleQuickForm_autocomplete($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+    public function __construct($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
         // Even if the constructor gets called twice we do not really want 2x options (crazy forms!).
         $this->_options = array();
         if ($attributes === null) {
@@ -87,11 +87,21 @@ class MoodleQuickForm_autocomplete extends MoodleQuickForm_select {
             $this->casesensitive = $attributes['casesensitive'] ? true : false;
             unset($attributes['casesensitive']);
         }
-        parent::HTML_QuickForm_select($elementName, $elementLabel, $options, $attributes);
+        parent::__construct($elementName, $elementLabel, $options, $attributes);
 
         $this->_type = 'autocomplete';
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_autocomplete($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
     /**
      * Returns HTML for select form element.
      *
index bfa9615..a69e217 100644 (file)
@@ -50,8 +50,18 @@ class MoodleQuickForm_button extends HTML_QuickForm_button
      * @param mixed $attributes (optional) Either a typical HTML attribute string
      *              or an associative array
      */
-    function MoodleQuickForm_button($elementName=null, $value=null, $attributes=null) {
-        parent::HTML_QuickForm_button($elementName, $value, $attributes);
+    public function __construct($elementName=null, $value=null, $attributes=null) {
+        parent::__construct($elementName, $value, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_button($elementName=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $value, $attributes);
     }
 
     /**
index 6674377..2a5764f 100644 (file)
@@ -52,7 +52,7 @@ class MoodleQuickForm_cancel extends MoodleQuickForm_submit
      * @param mixed $attributes (optional) Either a typical HTML attribute string
      *              or an associative array
      */
-    function MoodleQuickForm_cancel($elementName=null, $value=null, $attributes=null)
+    public function __construct($elementName=null, $value=null, $attributes=null)
     {
         if ($elementName==null){
             $elementName='cancel';
@@ -60,7 +60,7 @@ class MoodleQuickForm_cancel extends MoodleQuickForm_submit
         if ($value==null){
             $value=get_string('cancel');
         }
-        MoodleQuickForm_submit::MoodleQuickForm_submit($elementName, $value, $attributes);
+        parent::__construct($elementName, $value, $attributes);
         $this->updateAttributes(array('onclick'=>'skipClientValidation = true; return true;'));
 
         // Add the class btn-cancel.
@@ -71,6 +71,16 @@ class MoodleQuickForm_cancel extends MoodleQuickForm_submit
         $this->updateAttributes(array('class' => $class . ' btn-cancel'));
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_cancel($elementName=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $value, $attributes);
+    }
+
     /**
      * Called by HTML_QuickForm whenever form event is made on this element
      *
@@ -83,8 +93,7 @@ class MoodleQuickForm_cancel extends MoodleQuickForm_submit
     {
         switch ($event) {
             case 'createElement':
-                $className = get_class($this);
-                $this->$className($arg[0], $arg[1], $arg[2]);
+                static::__construct($arg[0], $arg[1], $arg[2]);
                 $caller->_registerCancelButton($this->getName());
                 return true;
                 break;
index 37397da..8aaecdd 100644 (file)
@@ -52,8 +52,18 @@ class MoodleQuickForm_checkbox extends HTML_QuickForm_checkbox{
      * @param mixed $attributes (optional) Either a typical HTML attribute string
      *              or an associative array
      */
-    function MoodleQuickForm_checkbox($elementName=null, $elementLabel=null, $text='', $attributes=null) {
-        parent::HTML_QuickForm_checkbox($elementName, $elementLabel, $text, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $text='', $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $text, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_checkbox($elementName=null, $elementLabel=null, $text='', $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $text, $attributes);
     }
 
     /**
index 2332e99..29957e3 100644 (file)
@@ -75,12 +75,13 @@ class MoodleQuickForm_date_selector extends MoodleQuickForm_group {
      * @param array $options Options to control the element's display
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_date_selector($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+    public function __construct($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
         // Get the calendar type used - see MDL-18375.
         $calendartype = \core_calendar\type_factory::get_calendar_instance();
         $this->_options = array('startyear' => $calendartype->get_min_year(), 'stopyear' => $calendartype->get_max_year(),
             'defaulttime' => 0, 'timezone' => 99, 'step' => 5, 'optional' => false);
-        $this->HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_appendName = true;
         $this->_type = 'date_selector';
@@ -103,6 +104,16 @@ class MoodleQuickForm_date_selector extends MoodleQuickForm_group {
         }
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_date_selector($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
     /**
      * This will create date group element constisting of day, month and year.
      *
index 3153f34..8055f02 100644 (file)
@@ -77,13 +77,14 @@ class MoodleQuickForm_date_time_selector extends MoodleQuickForm_group {
      * @param array $options Options to control the element's display
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_date_time_selector($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+    public function __construct($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
         // Get the calendar type used - see MDL-18375.
         $calendartype = \core_calendar\type_factory::get_calendar_instance();
         $this->_options = array('startyear' => $calendartype->get_min_year(), 'stopyear' => $calendartype->get_max_year(),
             'defaulttime' => 0, 'timezone' => 99, 'step' => 5, 'optional' => false);
 
-        $this->HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_appendName = true;
         $this->_type = 'date_time_selector';
@@ -106,6 +107,16 @@ class MoodleQuickForm_date_time_selector extends MoodleQuickForm_group {
         }
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_date_time_selector($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
     /**
      * This will create date group element constisting of day, month and year.
      *
index 4298f00..ab2d434 100644 (file)
@@ -63,8 +63,9 @@ class MoodleQuickForm_duration extends MoodleQuickForm_group {
     *              If not specified, minutes is used.
     * @param mixed $attributes Either a typical HTML attribute string or an associative array
     */
-    function MoodleQuickForm_duration($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
-        $this->HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_appendName = true;
         $this->_type = 'duration';
@@ -83,6 +84,16 @@ class MoodleQuickForm_duration extends MoodleQuickForm_group {
         }
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_duration($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
     /**
      * Returns time associative array of unit length.
      *
index 0c18b21..4e06505 100644 (file)
@@ -68,7 +68,7 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element {
      *              or an associative array
      * @param array $options set of options to initalize filepicker
      */
-    function MoodleQuickForm_editor($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
         global $CFG, $PAGE;
 
         $options = (array)$options;
@@ -89,7 +89,7 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element {
             }
         }
         $this->_options['trusted'] = trusttext_trusted($this->_options['context']);
-        parent::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
 
         // Note: for some reason the code using this setting does not like bools.
         $this->_options['subdirs'] = (int)($this->_options['subdirs'] == 1);
@@ -97,6 +97,16 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element {
         editors_head_setup();
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_editor($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $options);
+    }
+
     /**
      * Called by HTML_QuickForm whenever form event is made on this element
      *
index 8140fec..d525253 100644 (file)
@@ -60,7 +60,7 @@ class MoodleQuickForm_filemanager extends HTML_QuickForm_element {
      *              or an associative array
      * @param array $options set of options to initalize filemanager
      */
-    function MoodleQuickForm_filemanager($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
         global $CFG, $PAGE;
 
         $options = (array)$options;
@@ -76,7 +76,17 @@ class MoodleQuickForm_filemanager extends HTML_QuickForm_element {
             $this->_options['return_types'] = (FILE_INTERNAL | FILE_REFERENCE);
         }
         $this->_type = 'filemanager';
-        parent::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_filemanager($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $options);
     }
 
     /**
index da5aff8..1634096 100644 (file)
@@ -59,7 +59,7 @@ class MoodleQuickForm_filepicker extends HTML_QuickForm_input {
      *              or an associative array
      * @param array $options set of options to initalize filepicker
      */
-    function MoodleQuickForm_filepicker($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
         global $CFG, $PAGE;
 
         $options = (array)$options;
@@ -81,7 +81,17 @@ class MoodleQuickForm_filepicker extends HTML_QuickForm_input {
         }
         $this->_options['maxbytes'] = get_user_max_upload_file_size($PAGE->context, $CFG->maxbytes, $coursemaxbytes, $fpmaxbytes);
         $this->_type = 'filepicker';
-        parent::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_filepicker($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $options);
     }
 
     /**
index 18191dd..c47de8a 100644 (file)
@@ -61,11 +61,21 @@ class MoodleQuickForm_grading extends HTML_QuickForm_input{
      * @param mixed $elementLabel Label(s) for the input field
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      */
-    public function MoodleQuickForm_grading($elementName=null, $elementLabel=null, $attributes=null) {
-        parent::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->gradingattributes = $attributes;
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_grading($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
+
     /**
      * Helper function to retrieve gradingform_instance passed in element attributes
      *
index 3d95d9f..753977f 100644 (file)
@@ -50,8 +50,18 @@ class MoodleQuickForm_group extends HTML_QuickForm_group{
      * @param string $separator (optional) string to seperate elements.
      * @param string $appendName (optional) string to appened to grouped elements.
      */
-    function MoodleQuickForm_group($elementName=null, $elementLabel=null, $elements=null, $separator=null, $appendName = true) {
-        parent::HTML_QuickForm_group($elementName, $elementLabel, $elements, $separator, $appendName);
+    public function __construct($elementName=null, $elementLabel=null, $elements=null, $separator=null, $appendName = true) {
+        parent::__construct($elementName, $elementLabel, $elements, $separator, $appendName);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_group($elementName=null, $elementLabel=null, $elements=null, $separator=null, $appendName = true) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $elements, $separator, $appendName);
     }
 
     /** @var string template type, would cause problems with client side validation so will leave for now */
index 36c5a08..f5f1ed5 100644 (file)
@@ -48,8 +48,18 @@ class MoodleQuickForm_header extends HTML_QuickForm_header
      * @param string $elementName name of the header element
      * @param string $text text displayed in header element
      */
-    function MoodleQuickForm_header($elementName = null, $text = null) {
-        parent::HTML_QuickForm_header($elementName, $text);
+    public function __construct($elementName = null, $text = null) {
+        parent::__construct($elementName, $text);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_header($elementName = null, $text = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $text);
     }
 
    /**
index 6c2f239..d21c029 100644 (file)
@@ -49,8 +49,18 @@ class MoodleQuickForm_hidden extends HTML_QuickForm_hidden{
      * @param mixed  $attributes (optional) Either a typical HTML attribute string
      *               or an associative array
      */
-    function MoodleQuickForm_hidden($elementName=null, $value='', $attributes=null) {
-        parent::HTML_QuickForm_hidden($elementName, $value, $attributes);
+    public function __construct($elementName=null, $value='', $attributes=null) {
+        parent::__construct($elementName, $value, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_hidden($elementName=null, $value='', $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        return self::__construct($elementName, $value, $attributes);
     }
 
     /**
index adddc3f..32353d6 100644 (file)
@@ -54,8 +54,8 @@ class MoodleQuickForm_htmleditor extends MoodleQuickForm_textarea{
      * @param array $attributes (optional) Either a typical HTML attribute string
      *              or an associative array
      */
-    function MoodleQuickForm_htmleditor($elementName=null, $elementLabel=null, $options=array(), $attributes=null){
-        parent::MoodleQuickForm_textarea($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $options=array(), $attributes=null){
+        parent::__construct($elementName, $elementLabel, $attributes);
         // set the options, do not bother setting bogus ones
         if (is_array($options)) {
             foreach ($options as $name => $value) {
@@ -73,6 +73,16 @@ class MoodleQuickForm_htmleditor extends MoodleQuickForm_textarea{
         editors_head_setup();
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_htmleditor($elementName=null, $elementLabel=null, $options=array(), $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
     /**
      * Returns the input field in HTML
      *
index 102b492..cd9477c 100644 (file)
@@ -73,7 +73,7 @@ class MoodleQuickForm_listing extends HTML_QuickForm_input {
      * @param array $attributes (optional) Either a typical HTML attribute string or an associative array.
      * @param array $options set of options to initalize listing.
      */
-    function MoodleQuickForm_listing($elementName=null, $elementLabel=null, $attributes=null, $options=array()) {
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null, $options=array()) {
 
        $this->_type = 'listing';
         if (!empty($options['items'])) {
@@ -89,7 +89,17 @@ class MoodleQuickForm_listing extends HTML_QuickForm_input {
         } else {
             $this->hideall = get_string('hide');
         }
-        parent::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_listing($elementName=null, $elementLabel=null, $attributes=null, $options=array()) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $options);
     }
 
     /**
index d76122b..dd8ccce 100644 (file)
@@ -53,13 +53,24 @@ class MoodleQuickForm_modgrade extends MoodleQuickForm_group{
      * @param array $options Options to control the element's display. Not used.
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      */
-    public function MoodleQuickForm_modgrade($elementname = null, $elementlabel = null, $options = array(), $attributes = null) {
-        $this->HTML_QuickForm_element($elementname, $elementlabel, $attributes);
+    public function __construct($elementname = null, $elementlabel = null, $options = array(), $attributes = null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementname, $elementlabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_appendName = true;
         $this->_type = 'modgrade';
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_modgrade($elementname = null, $elementlabel = null, $options = array(), $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementname, $elementlabel, $options, $attributes);
+    }
+
     /**
      * Create elements for this group.
      */
index 2a6acd9..ddc4a6f 100644 (file)
@@ -48,12 +48,20 @@ class MoodleQuickForm_modvisible extends MoodleQuickForm_select{
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      * @param array $options ignored
      */
-    function MoodleQuickForm_modvisible($elementName=null, $elementLabel=null, $attributes=null, $options=null)
-    {
-        HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes, null);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes, null);
         $this->_type = 'modvisible';
+    }
 
-
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_modvisible($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $options);
     }
 
     /**
index 4265ec6..82153bc 100644 (file)
@@ -49,7 +49,7 @@ class MoodleQuickForm_password extends HTML_QuickForm_password{
      * @param mixed $attributes (optional) Either a typical HTML attribute string
      *              or an associative array
      */
-    function MoodleQuickForm_password($elementName=null, $elementLabel=null, $attributes=null) {
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
         global $CFG;
         // no standard mform in moodle should allow autocomplete of passwords
         if (empty($attributes)) {
@@ -62,7 +62,17 @@ class MoodleQuickForm_password extends HTML_QuickForm_password{
             }
         }
 
-        parent::HTML_QuickForm_password($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_password($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
     }
 
     /**
index 15bd4bc..b8d4102 100644 (file)
@@ -51,7 +51,7 @@ class MoodleQuickForm_passwordunmask extends MoodleQuickForm_password {
      * @param mixed $attributes (optional) Either a typical HTML attribute string
      *              or an associative array
      */
-    function MoodleQuickForm_passwordunmask($elementName=null, $elementLabel=null, $attributes=null) {
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
         global $CFG;
         // no standard mform in moodle should allow autocomplete of passwords
         if (empty($attributes)) {
@@ -64,7 +64,17 @@ class MoodleQuickForm_passwordunmask extends MoodleQuickForm_password {
             }
         }
 
-        parent::MoodleQuickForm_password($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_passwordunmask($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
     }
 
     /**
index 4f7d999..8ebe1d0 100644 (file)
@@ -53,8 +53,8 @@ class MoodleQuickForm_questioncategory extends MoodleQuickForm_selectgroups {
      *              from moodlelib.php.
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_questioncategory($elementName = null, $elementLabel = null, $options = null, $attributes = null) {
-        MoodleQuickForm_selectgroups::MoodleQuickForm_selectgroups($elementName, $elementLabel, array(), $attributes);
+    public function __construct($elementName = null, $elementLabel = null, $options = null, $attributes = null) {
+        parent::__construct($elementName, $elementLabel, array(), $attributes);
         $this->_type = 'questioncategory';
         if (is_array($options)) {
             $this->_options = $options + $this->_options;
@@ -64,4 +64,13 @@ class MoodleQuickForm_questioncategory extends MoodleQuickForm_selectgroups {
         }
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_questioncategory($elementName = null, $elementLabel = null, $options = null, $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
 }
index 6aaa780..3f6a731 100644 (file)
@@ -51,8 +51,18 @@ class MoodleQuickForm_radio extends HTML_QuickForm_radio{
      * @param mixed $attributes (optional) Either a typical HTML attribute string
      *              or an associative array
      */
-    function MoodleQuickForm_radio($elementName=null, $elementLabel=null, $text=null, $value=null, $attributes=null) {
-        parent::HTML_QuickForm_radio($elementName, $elementLabel, $text, $value, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $text=null, $value=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $text, $value, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_radio($elementName=null, $elementLabel=null, $text=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $text, $value, $attributes);
     }
 
     /**
index 2080088..f043353 100644 (file)
@@ -53,9 +53,9 @@ class MoodleQuickForm_recaptcha extends HTML_QuickForm_input {
      * @param mixed $attributes (optional) Either a typical HTML attribute string
      *              or an associative array
      */
-    function MoodleQuickForm_recaptcha($elementName = null, $elementLabel = null, $attributes = null) {
+    public function __construct($elementName = null, $elementLabel = null, $attributes = null) {
         global $CFG;
-        parent::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->_type = 'recaptcha';
         if (is_https()) {
             $this->_https = true;
@@ -64,6 +64,16 @@ class MoodleQuickForm_recaptcha extends HTML_QuickForm_input {
         }
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_recaptcha($elementName = null, $elementLabel = null, $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
+
     /**
      * Returns the recaptcha element in HTML
      *
index 681549b..458a23c 100644 (file)
@@ -49,12 +49,22 @@ class MoodleQuickForm_searchableselector extends MoodleQuickForm_select{
      * @param array $options additional options.
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_searchableselector($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+    public function __construct($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
         //set size default to 12
         if (empty($attributes) || empty($attributes['size'])) {
             $attributes['size'] = 12;
         }
-        parent::MoodleQuickForm_select($elementName, $elementLabel, $options, $attributes);
+        parent::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_searchableselector($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
     }
 
     /**
index 8b0beba..aa888cb 100644 (file)
@@ -52,8 +52,18 @@ class MoodleQuickForm_select extends HTML_QuickForm_select{
      * @param mixed $options Data to be used to populate options
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_select($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
-        parent::HTML_QuickForm_select($elementName, $elementLabel, $options, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_select($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
     }
 
     /**
index 2d5dd63..c942acb 100644 (file)
@@ -63,10 +63,10 @@ class MoodleQuickForm_selectgroups extends HTML_QuickForm_element {
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      * @param bool $showchoose add standard moodle "Choose..." option as first item
      */
-    function MoodleQuickForm_selectgroups($elementName=null, $elementLabel=null, $optgrps=null, $attributes=null, $showchoose=false)
+    public function __construct($elementName=null, $elementLabel=null, $optgrps=null, $attributes=null, $showchoose=false)
     {
         $this->showchoose = $showchoose;
-        HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_type = 'selectgroups';
         if (isset($optgrps)) {
@@ -74,6 +74,16 @@ class MoodleQuickForm_selectgroups extends HTML_QuickForm_element {
         }
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_selectgroups($elementName=null, $elementLabel=null, $optgrps=null, $attributes=null, $showchoose=false) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $optgrps, $attributes, $showchoose);
+    }
+
     /**
      * Sets the default values of the select box
      *
index 4377b31..78832d9 100644 (file)
@@ -62,8 +62,7 @@ class MoodleQuickForm_selectwithlink extends HTML_QuickForm_select{
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      * @param bool $linkdata data to be posted
      */
-    function MoodleQuickForm_selectwithlink($elementName=null, $elementLabel=null, $options=null, $attributes=null, $linkdata=null)
-    {
+    public function __construct($elementName=null, $elementLabel=null, $options=null, $attributes=null, $linkdata=null) {
         if (!empty($linkdata['link']) && !empty($linkdata['label'])) {
             $this->_link = $linkdata['link'];
             $this->_linklabel = $linkdata['label'];
@@ -73,7 +72,17 @@ class MoodleQuickForm_selectwithlink extends HTML_QuickForm_select{
             $this->_linkreturn = $linkdata['return'];
         }
 
-        parent::HTML_QuickForm_select($elementName, $elementLabel, $options, $attributes);
+        parent::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_selectwithlink($elementName=null, $elementLabel=null, $options=null, $attributes=null, $linkdata=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes, $linkdata);
     }
 
     /**
index d88a276..7764fbb 100644 (file)
@@ -47,13 +47,23 @@ class MoodleQuickForm_selectyesno extends MoodleQuickForm_select{
      * @param mixed $attributes Either a typical HTML attribute string or an associative array
      * @param mixed $options ignored, not used.
      */
-    function MoodleQuickForm_selectyesno($elementName=null, $elementLabel=null, $attributes=null, $options=null)
-    {
-        HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes, null);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes, null);
         $this->_type = 'selectyesno';
         $this->_persistantFreeze = true;
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_selectyesno($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $options);
+    }
+
     /**
      * Called by HTML_QuickForm whenever form event is made on this element
      *
index 716b026..391be8e 100644 (file)
@@ -51,8 +51,18 @@ class MoodleQuickForm_static extends HTML_QuickForm_static{
      * @param string $elementLabel (optional) text field label
      * @param string $text (optional) Text to put in text field
      */
-    function MoodleQuickForm_static($elementName=null, $elementLabel=null, $text=null) {
-        parent::HTML_QuickForm_static($elementName, $elementLabel, $text);
+    public function __construct($elementName=null, $elementLabel=null, $text=null) {
+        parent::__construct($elementName, $elementLabel, $text);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_static($elementName=null, $elementLabel=null, $text=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $text);
     }
 
     /**
index af94e4f..c0e2d96 100644 (file)
@@ -45,8 +45,18 @@ class MoodleQuickForm_submit extends HTML_QuickForm_submit {
      * @param string $value (optional) field label
      * @param string $attributes (optional) Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_submit($elementName=null, $value=null, $attributes=null) {
-        parent::HTML_QuickForm_submit($elementName, $value, $attributes);
+    public function __construct($elementName=null, $value=null, $attributes=null) {
+        parent::__construct($elementName, $value, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_submit($elementName=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $value, $attributes);
     }
 
     /**
index 9b7b5e0..bf238a5 100644 (file)
@@ -51,8 +51,18 @@ class MoodleQuickForm_submitlink extends MoodleQuickForm_submit {
      * @param string $value (optional) field label
      * @param string $attributes (optional) Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_submitlink($elementName=null, $value=null, $attributes=null) {
-        parent::MoodleQuickForm_submit($elementName, $value, $attributes);
+    public function __construct($elementName=null, $value=null, $attributes=null) {
+        parent::__construct($elementName, $value, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_submitlink($elementName=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $value, $attributes);
     }
 
     /**
index 961a262..a472767 100644 (file)
@@ -71,7 +71,7 @@ class MoodleQuickForm_tags extends MoodleQuickForm_autocomplete {
      * @param array $options Options to control the element's display
      * @param mixed $attributes Either a typical HTML attribute string or an associative array.
      */
-    function MoodleQuickForm_tags($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+    public function __construct($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
         if (!isset($options['display'])) {
             $options['display'] = self::DEFAULTUI;
         }
@@ -92,7 +92,17 @@ class MoodleQuickForm_tags extends MoodleQuickForm_autocomplete {
         $attributes['placeholder'] = get_string('entertags', 'tag');
         $attributes['showsuggestions'] = $this->showingofficial;
 
-        parent::MoodleQuickForm_autocomplete($elementName, $elementLabel, $validoptions, $attributes);
+        parent::__construct($elementName, $elementLabel, $validoptions, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_tags($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
     }
 
     /**
index 97a0219..a1af03b 100644 (file)
@@ -51,8 +51,18 @@ class MoodleQuickForm_text extends HTML_QuickForm_text{
      * @param string $elementLabel (optional) text field label
      * @param string $attributes (optional) Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_text($elementName=null, $elementLabel=null, $attributes=null) {
-        parent::HTML_QuickForm_text($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_text($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
     }
 
     /**
index f03b610..273fff5 100644 (file)
@@ -54,8 +54,18 @@ class MoodleQuickForm_textarea extends HTML_QuickForm_textarea{
      * @param string $elementLabel (optional) text field label
      * @param string $attributes (optional) Either a typical HTML attribute string or an associative array
      */
-    function MoodleQuickForm_textarea($elementName=null, $elementLabel=null, $attributes=null) {
-        parent::HTML_QuickForm_textarea($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_textarea($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
     }
 
     /**
index 2e62463..4a22571 100644 (file)
@@ -51,7 +51,7 @@ class MoodleQuickForm_url extends HTML_QuickForm_text{
      * @param mixed $attributes Either a typical HTML attribute string or an associative array.
      * @param array $options data which need to be posted.
      */
-    function MoodleQuickForm_url($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
         global $CFG;
         require_once("$CFG->dirroot/repository/lib.php");
         $options = (array)$options;
@@ -61,7 +61,17 @@ class MoodleQuickForm_url extends HTML_QuickForm_text{
         if (!isset($this->_options['usefilepicker'])) {
             $this->_options['usefilepicker'] = true;
         }
-        parent::HTML_QuickForm_text($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_url($elementName=null, $elementLabel=null, $attributes=null, $options=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $options);
     }
 
     /**
index 90865ea..38c21a3 100644 (file)
@@ -53,8 +53,8 @@ class MoodleQuickForm_warning extends HTML_QuickForm_static{
      * @param string $elementClass (optional) show as warning or notification => 'notifyproblem'
      * @param string $text (optional) Text to put in warning field
      */
-    function MoodleQuickForm_warning($elementName=null, $elementClass='notifyproblem', $text=null) {
-        parent::HTML_QuickForm_static($elementName, null, $text);
+    public function __construct($elementName=null, $elementClass='notifyproblem', $text=null) {
+        parent::__construct($elementName, null, $text);
         $this->_type = 'warning';
         if (is_null($elementClass)) {
             $elementClass = 'notifyproblem';
@@ -62,6 +62,16 @@ class MoodleQuickForm_warning extends HTML_QuickForm_static{
         $this->_class = $elementClass;
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_warning($elementName=null, $elementClass='notifyproblem', $text=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementClass, $text);
+    }
+
     /**
      * Returns HTML for this form element.
      *
index e65979c..6192514 100644 (file)
@@ -157,7 +157,7 @@ abstract class moodleform {
      * @param mixed $attributes you can pass a string of html attributes here or an array.
      * @param bool $editable
      */
-    function moodleform($action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true) {
+    public function __construct($action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true) {
         global $CFG, $FULLME;
         // no standard mform in moodle should allow autocomplete with the exception of user signup
         if (empty($attributes)) {
@@ -207,6 +207,16 @@ abstract class moodleform {
         $this->_process_submission($method);
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function moodleform($action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($action, $customdata, $method, $target, $attributes, $editable);
+    }
+
     /**
      * It should returns unique identifier for the form.
      * Currently it will return class name, but in case two same forms have to be
@@ -1426,12 +1436,13 @@ class MoodleQuickForm extends HTML_QuickForm_DHTMLRulesTableless {
      * @param string $target (optional)Form's target defaults to none
      * @param mixed $attributes (optional)Extra attributes for <form> tag
      */
-    function MoodleQuickForm($formName, $method, $action, $target='', $attributes=null){
+    public function __construct($formName, $method, $action, $target='', $attributes=null) {
         global $CFG, $OUTPUT;
 
         static $formcounter = 1;
 
-        HTML_Common::HTML_Common($attributes);
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_Common::__construct($attributes);
         $target = empty($target) ? array() : array('target' => $target);
         $this->_formName = $formName;
         if (is_a($action, 'moodle_url')){
@@ -1460,6 +1471,16 @@ class MoodleQuickForm extends HTML_QuickForm_DHTMLRulesTableless {
         $this->setRequiredNote(get_string('somefieldsrequired', 'form', '<img alt="'.get_string('requiredelement', 'form').'" src="'.$OUTPUT->pix_url('req') .'" />'));
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm($formName, $method, $action, $target='', $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($formName, $method, $action, $target, $attributes);
+    }
+
     /**
      * Use this method to indicate an element in a form is an advanced field. If items in a form
      * are marked as advanced then 'Hide/Show Advanced' buttons will automatically be displayed in the
@@ -2594,7 +2615,7 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{
     /**
      * Constructor
      */
-    function MoodleQuickForm_Renderer(){
+    public function __construct() {
         // switch next two lines for ol li containers for form items.
         //        $this->_elementTemplates=array('default'=>"\n\t\t".'<li class="fitem"><label>{label}{help}<!-- BEGIN required -->{req}<!-- END required --></label><div class="qfelement<!-- BEGIN error --> error<!-- END error --> {type}"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}</div></li>');
         $this->_elementTemplates = array(
@@ -2610,7 +2631,17 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{
 
         'nodisplay'=>'');
 
-        parent::HTML_QuickForm_Renderer_Tableless();
+        parent::__construct();
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_Renderer() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
     }
 
     /**
index 73ab3fe..5c71426 100644 (file)
@@ -564,7 +564,7 @@ class XMPPHP_XMLStream {
                                                if ($searchxml !== null) {
                                                        if($handler[2] === null) $handler[2] = $this;
                                                        $this->log->log("Calling {$handler[1]}",  XMPPHP_Log::LEVEL_DEBUG);
-                                                       $handler[2]->$handler[1]($this->xmlobj[2]);
+                                                       $handler[2]->{$handler[1]}($this->xmlobj[2]);
                                                }
                                        }
                                }
@@ -578,13 +578,13 @@ class XMPPHP_XMLStream {
                                if($searchxml !== null and $searchxml->name == $handler[0] and ($searchxml->ns == $handler[1] or (!$handler[1] and $searchxml->ns == $this->default_ns))) {
                                        if($handler[3] === null) $handler[3] = $this;
                                        $this->log->log("Calling {$handler[2]}",  XMPPHP_Log::LEVEL_DEBUG);
-                                       $handler[3]->$handler[2]($this->xmlobj[2]);
+                                       $handler[3]->{$handler[2]}($this->xmlobj[2]);
                                }
                        }
                        foreach($this->idhandlers as $id => $handler) {
                                if(array_key_exists('id', $this->xmlobj[2]->attrs) and $this->xmlobj[2]->attrs['id'] == $id) {
                                        if($handler[1] === null) $handler[1] = $this;
-                                       $handler[1]->$handler[0]($this->xmlobj[2]);
+                                       $handler[1]->{$handler[0]}($this->xmlobj[2]);
                                        #id handlers are only used once
                                        unset($this->idhandlers[$id]);
                                        break;
@@ -640,7 +640,7 @@ class XMPPHP_XMLStream {
                                if($handler[2] === null) {
                                        $handler[2] = $this;
                                }
-                               $handler[2]->$handler[1]($payload);
+                               $handler[2]->{$handler[1]}($payload);
                        }
                }
                foreach($this->until as $key => $until) {
index f8328fb..205c214 100644 (file)
@@ -1,3 +1,4 @@
 Description of XMPPHP (aka jabber) version 0.1rc2-r77 library import into Moodle
 
 MDL-20876 - replaced deprecated split() with explode()
+MDL-52335 - PHP7 variable syntax changes
index 561ec9f..f8f4d04 100644 (file)
@@ -85,12 +85,18 @@ class Crypt_CHAP extends PEAR
      * Generates a random challenge
      * @return void
      */
-    function Crypt_CHAP()
+    public function __construct()
     {
-        $this->PEAR();
+        parent::__construct();
         $this->generateChallenge();
     }
 
+    function Crypt_CHAP()
+    {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Generates a random binary challenge
      *
@@ -167,12 +173,18 @@ class Crypt_CHAP_MSv1 extends Crypt_CHAP
      * Loads the hash extension
      * @return void
      */
-    function Crypt_CHAP_MSv1()
+    public function __construct()
     {
-        $this->Crypt_CHAP();
+        parent::__construct();
         $this->loadExtension('hash');
     }
 
+    function Crypt_CHAP_MSv1()
+    {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Generates the NT-HASH from the given plaintext password.
      *
@@ -415,9 +427,9 @@ class Crypt_CHAP_MSv2 extends Crypt_CHAP_MSv1
      * Generates the 16 Bytes peer and authentication challenge
      * @return void
      */
-    function Crypt_CHAP_MSv2()
+    public function __construct()
     {
-        $this->Crypt_CHAP_MSv1();
+        parent::__construct();
         $this->generateChallenge('peerChallenge', 16);
         $this->generateChallenge('authChallenge', 16);
     }
index 2c51010..b862179 100644 (file)
@@ -83,12 +83,22 @@ class HTML_Common {
      * @param    int     $tabOffset      Indent offset in tabs
      * @access   public
      */
-    function HTML_Common($attributes = null, $tabOffset = 0)
+    public function __construct($attributes = null, $tabOffset = 0)
     {
         $this->setAttributes($attributes);
         $this->setTabOffset($tabOffset);
     } // end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_Common($attributes = null, $tabOffset = 0) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($attributes, $tabOffset);
+    }
+
     public static function raiseError($message = null,
                                        $code = null,
                                        $mode = null,
index 6da6ff4..bf8062e 100644 (file)
@@ -253,9 +253,9 @@ class HTML_QuickForm extends HTML_Common {
      * @param    bool        $trackSubmit       (optional)Whether to track if the form was submitted by adding a special hidden field
      * @access   public
      */
-    function HTML_QuickForm($formName='', $method='post', $action='', $target='', $attributes=null, $trackSubmit = false)
+    public function __construct($formName='', $method='post', $action='', $target='', $attributes=null, $trackSubmit = false)
     {
-        HTML_Common::HTML_Common($attributes);
+        parent::__construct($attributes);
         $method = (strtoupper($method) == 'GET') ? 'get' : 'post';
         $action = ($action == '') ? $_SERVER['PHP_SELF'] : $action;
         $target = empty($target) ? array() : array('target' => $target);
@@ -301,6 +301,16 @@ class HTML_QuickForm extends HTML_Common {
         }
     } // end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm($formName='', $method='post', $action='', $target='', $attributes=null, $trackSubmit = false) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($formName, $method, $action, $target, $attributes, $trackSubmit);
+    }
+
     // }}}
     // {{{ apiVersion()
 
@@ -1983,16 +1993,27 @@ class HTML_QuickForm_Error extends PEAR_Error {
     * @param int   $level intensity of the error (PHP error code)
     * @param mixed $debuginfo any information that can inform user as to nature of the error
     */
-    function HTML_QuickForm_Error($code = QUICKFORM_ERROR, $mode = PEAR_ERROR_RETURN,
+    public function __construct($code = QUICKFORM_ERROR, $mode = PEAR_ERROR_RETURN,
                          $level = E_USER_NOTICE, $debuginfo = null)
     {
         if (is_int($code)) {
-            $this->PEAR_Error(HTML_QuickForm::errorMessage($code), $code, $mode, $level, $debuginfo);
+            parent::__construct(HTML_QuickForm::errorMessage($code), $code, $mode, $level, $debuginfo);
         } else {
-            $this->PEAR_Error("Invalid error code: $code", QUICKFORM_ERROR, $mode, $level, $debuginfo);
+            parent::__construct("Invalid error code: $code", QUICKFORM_ERROR, $mode, $level, $debuginfo);
         }
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_Error($code = QUICKFORM_ERROR, $mode = PEAR_ERROR_RETURN,
+                         $level = E_USER_NOTICE, $debuginfo = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($code, $mode, $level, $debuginfo);
+    }
+
     // }}}
 } // end class HTML_QuickForm_Error
 ?>
index 7162c64..324fbf7 100644 (file)
@@ -33,10 +33,19 @@ class HTML_QuickForm_Renderer
     *
     * @access public
     */
-    function HTML_QuickForm_Renderer()
-    {
+    public function __construct() {
     } // end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_Renderer() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
    /**
     * Called when visiting a form, before processing any form elements
     *
index ee0c4ce..a91d90b 100644 (file)
@@ -147,13 +147,21 @@ class HTML_QuickForm_Renderer_Array extends HTML_QuickForm_Renderer
     * @param  bool    true: render an array of labels to many labels, $key 0 to 'label' and the oterh to "label_$key"
     * @access public
     */
-    function HTML_QuickForm_Renderer_Array($collectHidden = false, $staticLabels = false)
-    {
-        $this->HTML_QuickForm_Renderer();
+    public function __construct($collectHidden = false, $staticLabels = false) {
+        parent::__construct();
         $this->_collectHidden = $collectHidden;
         $this->_staticLabels  = $staticLabels;
     } // end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_Renderer_Array($collectHidden = false, $staticLabels = false) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($collectHidden, $staticLabels);
+    }
 
    /**
     * Returns the resultant array
index 5eeee14..7c54c13 100644 (file)
@@ -141,9 +141,18 @@ class HTML_QuickForm_Renderer_Default extends HTML_QuickForm_Renderer
     *
     * @access public
     */
-    function HTML_QuickForm_Renderer_Default()
-    {
-        $this->HTML_QuickForm_Renderer();
+    public function __construct() {
+        parent::__construct();
+    } // end constructor
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_Renderer_Default() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
     } // end constructor
 
    /**
index 9ed495c..9928a0b 100644 (file)
@@ -78,13 +78,22 @@ class HTML_QuickForm_Renderer_Object extends HTML_QuickForm_Renderer
      * @param collecthidden bool    true: collect all hidden elements
      * @access public
      */
-    function HTML_QuickForm_Renderer_Object($collecthidden = false) 
-    {
-        $this->HTML_QuickForm_Renderer();
+    public function __construct($collecthidden = false) {
+        parent::__construct();
         $this->_collectHidden = $collecthidden;
         $this->_obj = new QuickformForm;
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_Renderer_Object($collecthidden = false) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($collecthidden);
+    }
+
     /**
      * Return the rendered Object
      * @access public
index 7326ede..4ef5a33 100644 (file)
@@ -118,11 +118,20 @@ class HTML_QuickForm_Renderer_Tableless extends HTML_QuickForm_Renderer_Default
     *
     * @access public
     */
-    function HTML_QuickForm_Renderer_Tableless()
-    {
-        $this->HTML_QuickForm_Renderer_Default();
+    public function __construct() {
+        parent::__construct();
     } // end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_Renderer_Tableless() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
    /**
     * Called when visiting a header element
     *
index cc14b71..896fa27 100644 (file)
@@ -77,12 +77,21 @@ class HTML_QuickForm_advcheckbox extends HTML_QuickForm_checkbox
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_advcheckbox($elementName=null, $elementLabel=null, $text=null, $attributes=null, $values=null)
-    {
-        $this->HTML_QuickForm_checkbox($elementName, $elementLabel, $text, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $text=null, $attributes=null, $values=null) {
+        parent::__construct($elementName, $elementLabel, $text, $attributes);
         $this->setValues($values);
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_advcheckbox($elementName=null, $elementLabel=null, $text=null, $attributes=null, $values=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $text, $attributes, $values);
+    }
+
     // }}}
     // {{{ getPrivateName()
 
index c39bd8d..acfbd20 100644 (file)
@@ -75,9 +75,8 @@ class HTML_QuickForm_autocomplete extends HTML_QuickForm_text
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_autocomplete($elementName = null, $elementLabel = null, $options = null, $attributes = null)
-    {
-        $this->HTML_QuickForm_text($elementName, $elementLabel, $attributes);
+    public function __construct($elementName = null, $elementLabel = null, $options = null, $attributes = null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_type = 'autocomplete';
         if (isset($options)) {
@@ -85,6 +84,16 @@ class HTML_QuickForm_autocomplete extends HTML_QuickForm_text
         }
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_autocomplete($elementName = null, $elementLabel = null, $options = null, $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
     // }}}
     // {{{ setOptions()
 
index bf6f10e..95e975f 100644 (file)
@@ -45,13 +45,22 @@ class HTML_QuickForm_button extends HTML_QuickForm_input
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_button($elementName=null, $value=null, $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, null, $attributes);
+    public function __construct($elementName=null, $value=null, $attributes=null) {
+        parent::__construct($elementName, null, $attributes);
         $this->_persistantFreeze = false;
         $this->setValue($value);
         $this->setType('button');
     } //end constructor
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_button($elementName=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $value, $attributes);
+    }
     
     // }}}
     // {{{ freeze()
index 100f8e7..f305fc5 100644 (file)
@@ -57,15 +57,24 @@ class HTML_QuickForm_checkbox extends HTML_QuickForm_input
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_checkbox($elementName=null, $elementLabel=null, $text='', $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $text='', $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_text = $text;
         $this->setType('checkbox');
         $this->updateAttributes(array('value'=>1));
     } //end constructor
-    
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_checkbox($elementName=null, $elementLabel=null, $text='', $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $text, $attributes);
+    }
+
     // }}}
     // {{{ setChecked()
 
index 495e76e..c0090e4 100644 (file)
@@ -266,9 +266,9 @@ class HTML_QuickForm_date extends HTML_QuickForm_group
     * @param    array   Options to control the element's display
     * @param    mixed   Either a typical HTML attribute string or an associative array
     */
-    function HTML_QuickForm_date($elementName = null, $elementLabel = null, $options = array(), $attributes = null)
-    {
-        $this->HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_appendName = true;
         $this->_type = 'date';
@@ -288,6 +288,16 @@ class HTML_QuickForm_date extends HTML_QuickForm_group
         }
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_date($elementName = null, $elementLabel = null, $options = array(), $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
     // }}}
     // {{{ _createElements()
 
index a0a600c..dc615f5 100644 (file)
@@ -80,9 +80,8 @@ class HTML_QuickForm_element extends HTML_Common
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_element($elementName=null, $elementLabel=null, $attributes=null)
-    {
-        HTML_Common::HTML_Common($attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($attributes);
         if (isset($elementName)) {
             $this->setName($elementName);
         }
@@ -90,6 +89,16 @@ class HTML_QuickForm_element extends HTML_Common
             $this->setLabel($elementLabel);
         }
     } //end constructor
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_element($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
     
     // }}}
     // {{{ apiVersion()
@@ -359,8 +368,7 @@ class HTML_QuickForm_element extends HTML_Common
     {
         switch ($event) {
             case 'createElement':
-                $className = get_class($this);
-                $this->$className($arg[0], $arg[1], $arg[2], $arg[3], $arg[4]);
+                static::__construct($arg[0], $arg[1], $arg[2], $arg[3], $arg[4]);
                 break;
             case 'addElement':
                 $this->onQuickFormEvent('createElement', $arg, $caller);
index a8906f5..b698b67 100644 (file)
@@ -61,12 +61,21 @@ class HTML_QuickForm_file extends HTML_QuickForm_input
      * @since     1.0
      * @access    public
      */
-    function HTML_QuickForm_file($elementName=null, $elementLabel=null, $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->setType('file');
     } //end constructor
-    
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_file($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
+
     // }}}
     // {{{ setSize()
 
@@ -176,8 +185,7 @@ class HTML_QuickForm_file extends HTML_QuickForm_input
                 return $this->onQuickFormEvent('updateValue', null, $caller);
                 break;
             case 'createElement':
-                $className = get_class($this);
-                $this->$className($arg[0], $arg[1], $arg[2]);
+                static::__construct($arg[0], $arg[1], $arg[2], $arg[3], $arg[4]);
                 break;
         }
         return true;
index 229d697..b400964 100644 (file)
@@ -92,9 +92,8 @@ class HTML_QuickForm_group extends HTML_QuickForm_element
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_group($elementName=null, $elementLabel=null, $elements=null, $separator=null, $appendName = true)
-    {
-        $this->HTML_QuickForm_element($elementName, $elementLabel);
+    public function __construct($elementName=null, $elementLabel=null, $elements=null, $separator=null, $appendName = true) {
+        parent::__construct($elementName, $elementLabel);
         $this->_type = 'group';
         if (isset($elements) && is_array($elements)) {
             $this->setElements($elements);
@@ -107,6 +106,16 @@ class HTML_QuickForm_group extends HTML_QuickForm_element
         }
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_group($elementName=null, $elementLabel=null, $elements=null, $separator=null, $appendName = true) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $elements, $separator, $appendName);
+    }
+
     // }}}
     // {{{ setName()
 
index b13eb2d..6ba301c 100644 (file)
@@ -38,12 +38,21 @@ class HTML_QuickForm_header extends HTML_QuickForm_static
     * @access public
     * @return void
     */
-    function HTML_QuickForm_header($elementName = null, $text = null)
-    {
-        $this->HTML_QuickForm_static($elementName, null, $text);
+    public function __construct($elementName = null, $text = null) {
+        parent::__construct($elementName, null, $text);
         $this->_type = 'header';
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_header($elementName = null, $text = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $text);
+    }
+
     // }}}
     // {{{ accept()
 
index e758aee..edbade9 100644 (file)
@@ -45,13 +45,22 @@ class HTML_QuickForm_hidden extends HTML_QuickForm_input
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_hidden($elementName=null, $value='', $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, null, $attributes);
+    public function __construct($elementName=null, $value='', $attributes=null) {
+        parent::__construct($elementName, null, $attributes);
         $this->setType('hidden');
         $this->setValue($value);
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_hidden($elementName=null, $value='', $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        return self::__construct($elementName, $value, $attributes);
+    }
+
     // }}}
     // {{{ freeze()
 
index 458aa5c..acafa4f 100644 (file)
@@ -49,9 +49,9 @@ class HTML_QuickForm_hiddenselect extends HTML_QuickForm_select
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_hiddenselect($elementName=null, $elementLabel=null, $options=null, $attributes=null)
-    {
-        HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_type = 'hiddenselect';
         if (isset($options)) {
@@ -59,6 +59,16 @@ class HTML_QuickForm_hiddenselect extends HTML_QuickForm_select
         }
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_hiddenselect($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $options, $attributes);
+    }
+
     // }}}
     // {{{ toHtml()
 
index 25de466..3762229 100644 (file)
@@ -114,9 +114,9 @@ class HTML_QuickForm_hierselect extends HTML_QuickForm_group
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_hierselect($elementName=null, $elementLabel=null, $attributes=null, $separator=null)
-    {
-        $this->HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null, $separator=null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         if (isset($separator)) {
             $this->_separator = $separator;
@@ -125,6 +125,16 @@ class HTML_QuickForm_hierselect extends HTML_QuickForm_group
         $this->_appendName = true;
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_hierselect($elementName=null, $elementLabel=null, $attributes=null, $separator=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $separator);
+    }
+
     // }}}
     // {{{ setOptions()
 
index 10b773e..a8c6f01 100644 (file)
@@ -40,12 +40,21 @@ class HTML_QuickForm_html extends HTML_QuickForm_static
     * @access public
     * @return void
     */
-    function HTML_QuickForm_html($text = null)
-    {
-        $this->HTML_QuickForm_static(null, null, $text);
+    public function __construct($text = null) {
+        parent::__construct(null, null, $text);
         $this->_type = 'html';
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_html($text = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($text);
+    }
+
     // }}}
     // {{{ accept()
 
index a3cc2e3..3cdef2b 100644 (file)
@@ -44,13 +44,22 @@ class HTML_QuickForm_image extends HTML_QuickForm_input
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_image($elementName=null, $src='', $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, null, $attributes);
+    public function __construct($elementName=null, $src='', $attributes=null) {
+        parent::__construct($elementName, null, $attributes);
         $this->setType('image');
         $this->setSource($src);
     } // end class constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_image($elementName=null, $src='', $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $src, $attributes);
+    }
+
     // }}}
     // {{{ setSource()
 
index f182e7e..aa197d1 100644 (file)
@@ -45,11 +45,20 @@ class HTML_QuickForm_input extends HTML_QuickForm_element
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_input($elementName=null, $elementLabel=null, $attributes=null)
-    {
-        $this->HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_input($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
+
     // }}}
     // {{{ setType()
 
index 947f76c..7278740 100644 (file)
@@ -57,15 +57,25 @@ class HTML_QuickForm_link extends HTML_QuickForm_static
      * @return    void
      * @throws    
      */
-    function HTML_QuickForm_link($elementName=null, $elementLabel=null, $href=null, $text=null, $attributes=null)
-    {
-        HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $href=null, $text=null, $attributes=null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = false;
         $this->_type = 'link';
         $this->setHref($href);
         $this->_text = $text;
     } //end constructor
-    
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_link($elementName=null, $elementLabel=null, $href=null, $text=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $href, $text, $attributes);
+    }
+
     // }}}
     // {{{ setName()
 
index a83d505..6d4c730 100644 (file)
@@ -46,11 +46,20 @@ class HTML_QuickForm_password extends HTML_QuickForm_input
      * @return    void
      * @throws    
      */
-    function HTML_QuickForm_password($elementName=null, $elementLabel=null, $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->setType('password');
     } //end constructor
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_password($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
     
     // }}}
     // {{{ setSize()
index 2632026..b3569fd 100644 (file)
@@ -57,9 +57,9 @@ class HTML_QuickForm_radio extends HTML_QuickForm_input
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_radio($elementName=null, $elementLabel=null, $text=null, $value=null, $attributes=null)
-    {
-        $this->HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $text=null, $value=null, $attributes=null) {
+        // TODO MDL-52313 Replace with the call to parent::__construct().
+        HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
         if (isset($value)) {
             $this->setValue($value);
         }
@@ -68,6 +68,16 @@ class HTML_QuickForm_radio extends HTML_QuickForm_input
         $this->_text = $text;
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_radio($elementName=null, $elementLabel=null, $text=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $text, $value, $attributes);
+    }
+
     // }}}
 
     function _generateId() {
index 3533653..62ee12f 100644 (file)
@@ -45,13 +45,22 @@ class HTML_QuickForm_reset extends HTML_QuickForm_input
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_reset($elementName=null, $value=null, $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, null, $attributes);
+    public function __construct($elementName=null, $value=null, $attributes=null) {
+        parent::__construct($elementName, null, $attributes);
         $this->setValue($value);
         $this->setType('reset');
     } //end constructor
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_reset($elementName=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $value, $attributes);
+    }
+
     // }}}
     // {{{ freeze()
 
index f15ad8b..eda8438 100644 (file)
@@ -66,15 +66,24 @@ class HTML_QuickForm_select extends HTML_QuickForm_element {
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_select($elementName=null, $elementLabel=null, $options=null, $attributes=null)
-    {
-        HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_type = 'select';
         if (isset($options)) {
             $this->load($options);
         }
     } //end constructor
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_select($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
     
     // }}}
     // {{{ apiVersion()
index 6987931..728eabd 100644 (file)
@@ -49,14 +49,23 @@ class HTML_QuickForm_static extends HTML_QuickForm_element {
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_static($elementName=null, $elementLabel=null, $text=null)
-    {
-        HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel);
+    public function __construct($elementName=null, $elementLabel=null, $text=null) {
+        parent::__construct($elementName, $elementLabel);
         $this->_persistantFreeze = false;
         $this->_type = 'static';
         $this->_text = $text;
     } //end constructor
-    
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_static($elementName=null, $elementLabel=null, $text=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $text);
+    }
+
     // }}}
     // {{{ setName()
 
index e1d3e7d..6ca23a4 100644 (file)
@@ -44,13 +44,22 @@ class HTML_QuickForm_submit extends HTML_QuickForm_input
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_submit($elementName=null, $value=null, $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, null, $attributes);
+    public function __construct($elementName=null, $value=null, $attributes=null) {
+        parent::__construct($elementName, null, $attributes);
         $this->setValue($value);
         $this->setType('submit');
     } //end constructor
-    
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_submit($elementName=null, $value=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $value, $attributes);
+    }
+
     // }}}
     // {{{ freeze()
 
index 9d6d9de..042e508 100644 (file)
@@ -46,12 +46,21 @@ class HTML_QuickForm_text extends HTML_QuickForm_input
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_text($elementName=null, $elementLabel=null, $attributes=null)
-    {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->setType('text');
     } //end constructor
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_text($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
         
     // }}}
     // {{{ setSize()
index 7aa0af2..9967f59 100644 (file)
@@ -55,13 +55,22 @@ class HTML_QuickForm_textarea extends HTML_QuickForm_element
      * @access    public
      * @return    void
      */
-    function HTML_QuickForm_textarea($elementName=null, $elementLabel=null, $attributes=null)
-    {
-        HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+    public function __construct($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->_persistantFreeze = true;
         $this->_type = 'textarea';
     } //end constructor
-    
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_textarea($elementName=null, $elementLabel=null, $attributes=null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
+    }
+
     // }}}
     // {{{ setName()
 
index dd01995..b8f972b 100644 (file)
@@ -44,14 +44,22 @@ class HTML_QuickForm_xbutton extends HTML_QuickForm_element
     * @param    mixed   Either a typical HTML attribute string or an associative array
     * @access   public
     */
-    function HTML_QuickForm_xbutton($elementName = null, $elementContent = null, $attributes = null)
-    {
-        $this->HTML_QuickForm_element($elementName, null, $attributes);
+    public function __construct($elementName = null, $elementContent = null, $attributes = null) {
+        parent::__construct($elementName, null, $attributes);
         $this->setContent($elementContent);
         $this->setPersistantFreeze(false);
         $this->_type = 'xbutton';
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function HTML_QuickForm_xbutton($elementName = null, $elementContent = null, $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementContent, $attributes);
+    }
 
     function toHtml()
     {
index 69b2655..4e7c901 100644 (file)
@@ -146,7 +146,7 @@ class PEAR
      * @access public
      * @return void
      */
-    function PEAR($error_class = null)
+    function __construct($error_class = null)
     {
         $classname = strtolower(get_class($this));
         if ($this->_debug) {
@@ -173,6 +173,18 @@ class PEAR
         }
     }
 
+    /**
+     * Only here for backwards compatibility.
+     * E.g. Archive_Tar calls $this->PEAR() in its constructor.
+     *
+     * @param string $error_class Which class to use for error objects,
+     *                            defaults to PEAR_Error.
+     */
+    public function PEAR($error_class = null)
+    {
+        $this->__construct($error_class);
+    }
+
     /**
      * Destructor (the emulated type of...).  Does nothing right now,
      * but is included for forward compatibility, so subclass
@@ -823,7 +835,7 @@ class PEAR_Error
      * @access public
      *
      */
-    function PEAR_Error($message = 'unknown error', $code = null,
+    function __construct($message = 'unknown error', $code = null,
                         $mode = null, $options = null, $userinfo = null)
     {
         if ($mode === null) {
@@ -896,6 +908,14 @@ class PEAR_Error
         }
     }
 
+    /**
+     * Old syntax of class constructor for backward compatibility.
+     */
+    public function PEAR_Error($message = 'unknown error', $code = null,
+                        $mode = null, $options = null, $userinfo = null) {
+        self::__construct($message, $code, $mode, $options, $userinfo);
+    }
+
     /**
      * Get the error mode from an error object.
      *
index 5b70ba4..a427440 100644 (file)
@@ -27,3 +27,15 @@ Most probably we will stop using this library in the future.
 MDL-20876 - replaced split() with explode() or preg_split() where appropriate
 MDL-40267 - Moodle core_text strlen functions used for range rule rule to be utf8 safe.
 MDL-46467 - $mform->hardfreeze causes labels to loose their for HTML attribute
+MDL-52081 - made all constructors PHP7 compatible
+
+
+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.
+
+
+Crypt/CHAP
+==========
+MDL-52285 - made all constructors PHP7 compatible
index 263137d..a5a9b0a 100644 (file)
@@ -212,7 +212,7 @@ class PclZip
     //     Note that no real action is taken, if the archive does not exist it is not
     //     created. Use create() for that.
     // --------------------------------------------------------------------------------
-    public function PclZip($p_zipname)
+    public function __construct($p_zipname)
     {
 
         // ----- Tests the zlib
index d64fd81..e0769c4 100644 (file)
@@ -393,9 +393,9 @@ class PHPExcel_Worksheet_AutoFilter_Column
                 //    The columns array of PHPExcel_Worksheet_AutoFilter objects
                 $this->$key = array();
                 foreach ($value as $k => $v) {
-                    $this->$key[$k] = clone $v;
+                    $this->{$key[$k]} = clone $v;
                     // attach the new cloned Rule to this new cloned Autofilter Cloned object
-                    $this->$key[$k]->setParent($this);
+                    $this->{$key[$k]}->setParent($this);
                 }
             } else {
                 $this->$key = $value;
index c3b5fd6..1a428cc 100644 (file)
@@ -25,6 +25,7 @@ Changes:
    - PHPExcel/Writer/Excel5/Worksheet.php
    - PHPExcel/Writer/Excel5/Xf.php
    lib/excellib.class.php has been updated so that only 2007 excel spreadsheets will be produced.
+ * MDL-52336 patch for PHP7 compatibility, after upgrade make sure that these changes are included and remove this line
 
 
 
index dc52be9..d09d5cd 100644 (file)
@@ -88,7 +88,14 @@ abstract class advanced_testcase extends base_testcase {
                 trigger_error('Unexpected debugging() call detected.', E_USER_NOTICE);
             }
 
-        } catch (Exception $e) {
+        } catch (Exception $ex) {
+            $e = $ex;
+        } catch (Throwable $ex) {
+            // Engine errors in PHP7 throw exceptions of type Throwable (this "catch" will be ignored in PHP5).
+            $e = $ex;
+        }
+
+        if (isset($e)) {
             // cleanup after failed expectation
             self::resetAllData();
             throw $e;
index 8e53d15..ba7d000 100644 (file)
@@ -62,7 +62,15 @@ abstract class basic_testcase extends base_testcase {
 
         try {
             parent::runBare();
-        } catch (Exception $e) {
+
+        } catch (Exception $ex) {
+            $e = $ex;
+        } catch (Throwable $ex) {
+            // Engine errors in PHP7 throw exceptions of type Throwable (this "catch" will be ignored in PHP5).
+            $e = $ex;
+        }
+
+        if (isset($e)) {
             // cleanup after failed expectation
             phpunit_util::reset_all_data();
             throw $e;
index eaacaa2..5236a6e 100644 (file)
@@ -142,7 +142,14 @@ abstract class database_driver_testcase extends base_testcase {
         try {
             parent::runBare();
 
-        } catch (Exception $e) {
+        } catch (Exception $ex) {
+            $e = $ex;
+        } catch (Throwable $ex) {
+            // Engine errors in PHP7 throw exceptions of type Throwable (this "catch" will be ignored in PHP5).
+            $e = $ex;
+        }
+
+        if (isset($e)) {
             if ($this->tdb->is_transaction_started()) {
                 $this->tdb->force_transaction_rollback();
             }
index 145c4a4..ee6b8ee 100644 (file)
@@ -378,7 +378,14 @@ function default_exception_handler($ex) {
                 $DB->set_debug(0);
             }
             echo $OUTPUT->fatal_error($info->message, $info->moreinfourl, $info->link, $info->backtrace, $info->debuginfo);
-        } catch (Exception $out_ex) {
+        } catch (Exception $e) {
+            $out_ex = $e;
+        } catch (Throwable $e) {
+            // Engine errors in PHP7 throw exceptions of type Throwable (this "catch" will be ignored in PHP5).
+            $out_ex = $e;
+        }
+
+        if (isset($out_ex)) {
             // default exception handler MUST not throw any exceptions!!
             // the problem here is we do not know if page already started or not, we only know that somebody messed up in outputlib or theme
             // so we just print at least something instead of "Exception thrown without a stack frame in Unknown on line 0":-(
diff --git a/lib/tests/fixtures/upload_users_profile.csv b/lib/tests/fixtures/upload_users_profile.csv
new file mode 100644 (file)
index 0000000..b15db76
--- /dev/null
@@ -0,0 +1,3 @@
+username,password,firstname,lastname,email,profile_field_superfield
+jonest,verysecret,Tom,Jones,jonest@someplace.edu,The big guy
+reznort,somesecret,Trent,Reznor,reznort@someplace.edu,Loves cats
index e93691c..0a33a15 100644 (file)
@@ -11,6 +11,18 @@ information provided here is intended especially for developers.
 * Ajax calls going through lib/ajax/* now validate the return values before sending
   the response. If the validation does not pass an exception is raised. This behaviour
   is consistent with web services.
+* Several changes in Moodle core, standard plugins and third party libraries to
+  ensure compatibility with PHP7. All plugins are recommended to perform testing
+  against PHP7 as well. The following changes may affect you:
+  * Class moodleform, moodleform_mod and some module classes have been changed to use
+    __construct() for the constructor. Calling parent constructors by the class
+    name will display debugging message. Incorrect: parent::moodleform(),
+    correct: parent::__construct()
+  * All form elements have also changed the constructor syntax. No changes are
+    needed for using form elements, however if plugin defines new form element it
+    needs to use correct syntax. For example, incorrect: parent::HTML_QuickForm_input(),
+    HTML_QuickForm_input::HTML_QuickForm_input(), $this->HTML_QuickForm_input().
+    Correct: HTML_QuickForm_input::__construct() or parent::__construct().
 
 === 3.0 ===
 
index 7832ce1..c44cee9 100644 (file)
@@ -1547,6 +1547,9 @@ function install_core($version, $verbose) {
         cache_helper::purge_all();
     } catch (exception $ex) {
         upgrade_handle_exception($ex);
+    } catch (Throwable $ex) {
+        // Engine errors in PHP7 throw exceptions of type Throwable (this "catch" will be ignored in PHP5).
+        upgrade_handle_exception($ex);
     }
 }
 
@@ -1617,6 +1620,9 @@ function upgrade_core($version, $verbose) {
         print_upgrade_part_end('moodle', false, $verbose);
     } catch (Exception $ex) {
         upgrade_handle_exception($ex);
+    } catch (Throwable $ex) {
+        // Engine errors in PHP7 throw exceptions of type Throwable (this "catch" will be ignored in PHP5).
+        upgrade_handle_exception($ex);
     }
 }
 
@@ -1651,6 +1657,9 @@ function upgrade_noncore($verbose) {
 
     } catch (Exception $ex) {
         upgrade_handle_exception($ex);
+    } catch (Throwable $ex) {
+        // Engine errors in PHP7 throw exceptions of type Throwable (this "catch" will be ignored in PHP5).
+        upgrade_handle_exception($ex);
     }
 }
 
index 5cc649b..236e4b6 100644 (file)
@@ -17,10 +17,6 @@ class mnet_environment {
     var $keypair            = array();
     var $deleted            = 0;
 
-    function mnet_environment() {
-        return true;
-    }
-
     function init() {
         global $CFG, $DB;
 
index 9f72e17..804b7d2 100644 (file)
@@ -39,10 +39,6 @@ class mnet_peer {
     /** @var int $sslverification The level of SSL verification to apply. */
     public $sslverification = self::SSL_HOST_AND_PEER;
 
-    function mnet_peer() {
-        return true;
-    }
-
     /*
      * Fetch information about a peer identified by wwwroot
      * If information does not preexist in db, collect it together based on
index 08414cf..502048b 100644 (file)
@@ -23,12 +23,21 @@ class mnet_xmlrpc_client {
     var $mnet     = null;
 
     /**
-     * Constructor returns true
+     * Constructor
      */
-    function mnet_xmlrpc_client() {
+    public function __construct() {
         // make sure we've got this set up before we try and do anything else
         $this->mnet = get_mnet_environment();
-        return true;
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function mnet_xmlrpc_client() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
     }
 
     /**
index 95ccd2a..9afdcb4 100644 (file)
@@ -17,10 +17,20 @@ class mnet_encxml_parser {
      *
      * @return bool True
      */
-    function mnet_encxml_parser() {
+    public function __construct() {
         return $this->initialise();
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function mnet_encxml_parser() {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct();
+    }
+
     /**
      * Set default element handlers and initialise properties to empty.
      *
diff --git a/mod/assign/feedback/editpdf/fpdi/ASL20.txt b/mod/assign/feedback/editpdf/fpdi/ASL20.txt
deleted file mode 100644 (file)
index d645695..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/mod/assign/feedback/editpdf/fpdi/LICENSE b/mod/assign/feedback/editpdf/fpdi/LICENSE
new file mode 100644 (file)
index 0000000..7b4f530
--- /dev/null
@@ -0,0 +1,21 @@
+The MIT License (MIT)\r
+\r
+Copyright (c) 2015 Setasign - Jan Slabon, https://www.setasign.com\r
+\r
+Permission is hereby granted, free of charge, to any person obtaining a copy\r
+of this software and associated documentation files (the "Software"), to deal\r
+in the Software without restriction, including without limitation the rights\r
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
+copies of the Software, and to permit persons to whom the Software is\r
+furnished to do so, subject to the following conditions:\r
+\r
+The above copyright notice and this permission notice shall be included in\r
+all copies or substantial portions of the Software.\r
+\r
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
+THE SOFTWARE.
\ No newline at end of file
index e16ac05..b7e8966 100644 (file)
@@ -1,21 +1,12 @@
 <?php
-//
-//  FPDI - Version 1.5.4
-//
-//    Copyright 2004-2015 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
+/**
+ * This file is part of FPDI
+ *
+ * @package   FPDI
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)
+ * @license   http://opensource.org/licenses/mit-license The MIT License
+ * @version   1.6.1
+ */
 
 /**
  * Class FilterASCII85
@@ -66,8 +57,10 @@ class FilterASCII85
             if ($state == 5) {
                 $state = 0;
                 $r = 0;
-                for ($j = 0; $j < 5; ++$j)
-                    $r = $r * 85 + $chn[$j];
+                for ($j = 0; $j < 5; ++$j) {
+                    $r = (int)($r * 85 + $chn[$j]);
+                }
+
                 $out .= chr($r >> 24);
                 $out .= chr($r >> 16);
                 $out .= chr($r >> 8);
diff --git a/mod/assign/feedback/editpdf/fpdi/filters/FilterASCII85_FPDI.php b/mod/assign/feedback/editpdf/fpdi/filters/FilterASCII85_FPDI.php
deleted file mode 100644 (file)
index 03413eb..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php\r
-//\r
-//  FPDI - Version 1.4.4\r
-//\r
-//    Copyright 2004-2013 Setasign - Jan Slabon\r
-//\r
-//  Licensed under the Apache License, Version 2.0 (the "License");\r
-//  you may not use this file except in compliance with the License.\r
-//  You may obtain a copy of the License at\r
-//\r
-//      http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-//  Unless required by applicable law or agreed to in writing, software\r
-//  distributed under the License is distributed on an "AS IS" BASIS,\r
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-//  See the License for the specific language governing permissions and\r
-//  limitations under the License.\r
-//\r
-\r
-require_once('FilterASCII85.php');\r
-\r
-class FilterASCII85_FPDI extends FilterASCII85 {\r
-\r
-    var $fpdi;\r
-    \r
-    function FilterASCII85_FPDI(&$fpdi) {\r
-        $this->fpdi =& $fpdi;\r
-    }\r
-\r
-    function error($msg) {\r
-        $this->fpdi->error($msg);\r
-    }\r
-}
\ No newline at end of file
index 37c5986..66ddae4 100644 (file)
@@ -1,21 +1,12 @@
 <?php\r
-//\r
-//  FPDI - Version 1.5.4\r
-//\r
-//    Copyright 2004-2015 Setasign - Jan Slabon\r
-//\r
-//  Licensed under the Apache License, Version 2.0 (the "License");\r
-//  you may not use this file except in compliance with the License.\r
-//  You may obtain a copy of the License at\r
-//\r
-//      http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-//  Unless required by applicable law or agreed to in writing, software\r
-//  distributed under the License is distributed on an "AS IS" BASIS,\r
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-//  See the License for the specific language governing permissions and\r
-//  limitations under the License.\r
-//\r
+/**\r
+ * This file is part of FPDI\r
+ *\r
+ * @package   FPDI\r
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)\r
+ * @license   http://opensource.org/licenses/mit-license The MIT License\r
+ * @version   1.6.1\r
+ */\r
 \r
 /**\r
  * Class FilterASCIIHexDecode\r
index d2ebfeb..f855d22 100644 (file)
@@ -1,21 +1,12 @@
 <?php
-//
-//  FPDI - Version 1.5.4
-//
-//    Copyright 2004-2015 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
+/**
+ * This file is part of FPDI
+ *
+ * @package   FPDI
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)
+ * @license   http://opensource.org/licenses/mit-license The MIT License
+ * @version   1.6.1
+ */
 
 /**
  * Class FilterLZW
diff --git a/mod/assign/feedback/editpdf/fpdi/filters/FilterLZW_FPDI.php b/mod/assign/feedback/editpdf/fpdi/filters/FilterLZW_FPDI.php
deleted file mode 100644 (file)
index decc170..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php\r
-//\r
-//  FPDI - Version 1.4.4\r
-//\r
-//    Copyright 2004-2013 Setasign - Jan Slabon\r
-//\r
-//  Licensed under the Apache License, Version 2.0 (the "License");\r
-//  you may not use this file except in compliance with the License.\r
-//  You may obtain a copy of the License at\r
-//\r
-//      http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-//  Unless required by applicable law or agreed to in writing, software\r
-//  distributed under the License is distributed on an "AS IS" BASIS,\r
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-//  See the License for the specific language governing permissions and\r
-//  limitations under the License.\r
-//\r
-\r
-require_once('FilterLZW.php');\r
-\r
-class FilterLZW_FPDI extends FilterLZW {\r
-\r
-    var $fpdi;\r
-\r
-    function FilterLZW_FPDI(&$fpdi) {\r
-        $this->fpdi =& $fpdi;\r
-    }\r
-    \r
-    function error($msg) {\r
-        $this->fpdi->error($msg);\r
-    }\r
-}
\ No newline at end of file
index dbaa1f2..de746dd 100644 (file)
@@ -1,21 +1,12 @@
 <?php
-//
-//  FPDI - Version 1.5.4
-//
-//    Copyright 2004-2015 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
+/**
+ * This file is part of FPDI
+ *
+ * @package   FPDI
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)
+ * @license   http://opensource.org/licenses/mit-license The MIT License
+ * @version   1.6.1
+ */
 
 if (!class_exists('fpdi_bridge')) {
     require_once('fpdi_bridge.php');
@@ -256,7 +247,7 @@ class FPDF_TPL extends fpdi_bridge
         );
 
         $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm',
-                $tplData['scaleX'], $tplData['scaleY'], $tplData['tx'] * $this->k, $tplData['ty'] * $this->k)
+            $tplData['scaleX'], $tplData['scaleY'], $tplData['tx'] * $this->k, $tplData['ty'] * $this->k)
         ); // Translate
         $this->_out(sprintf('%s%d Do Q', $this->tplPrefix, $tplIdx));
 
@@ -362,7 +353,7 @@ class FPDF_TPL extends fpdi_bridge
      * @see http://fpdf.org/en/doc/addpage.htm
      * @see http://www.tcpdf.org/doc/code/classTCPDF.html#a5171e20b366b74523709d84c349c1ced
      */
-    public function AddPage($orientation = '', $format = '', $keepmargins = false, $tocpage = false)
+    public function AddPage($orientation = '', $format = '', $rotationOrKeepmargins = false, $tocpage = false)
     {
         if (is_subclass_of($this, 'TCPDF')) {
             $args = func_get_args();
@@ -373,7 +364,7 @@ class FPDF_TPL extends fpdi_bridge
             throw new LogicException('Adding pages in templates is not possible!');
         }
 
-        parent::AddPage($orientation, $format);
+        parent::AddPage($orientation, $format, $rotationOrKeepmargins);
     }
 
     /**
index c81cd9f..8ecc661 100644 (file)
@@ -1,21 +1,12 @@
 <?php\r
-//\r
-//  FPDI - Version 1.5.4\r
-//\r
-//    Copyright 2004-2015 Setasign - Jan Slabon\r
-//\r
-//  Licensed under the Apache License, Version 2.0 (the "License");\r
-//  you may not use this file except in compliance with the License.\r
-//  You may obtain a copy of the License at\r
-//\r
-//      http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-//  Unless required by applicable law or agreed to in writing, software\r
-//  distributed under the License is distributed on an "AS IS" BASIS,\r
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-//  See the License for the specific language governing permissions and\r
-//  limitations under the License.\r
-//\r
+/**\r
+ * This file is part of FPDI\r
+ *\r
+ * @package   FPDI\r
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)\r
+ * @license   http://opensource.org/licenses/mit-license The MIT License\r
+ * @version   1.6.1\r
+ */\r
 \r
 if (!class_exists('FPDF_TPL')) {\r
     require_once('fpdf_tpl.php');\r
@@ -31,7 +22,7 @@ class FPDI extends FPDF_TPL
      *\r
      * @string\r
      */\r
-    const VERSION = '1.5.3';\r
+    const VERSION = '1.6.1';\r
 \r
     /**\r
      * Actual filename\r
@@ -129,7 +120,7 @@ class FPDI extends FPDF_TPL
         if (!class_exists('fpdi_pdf_parser')) {\r
             require_once('fpdi_pdf_parser.php');\r
         }\r
-       return new fpdi_pdf_parser($filename);\r
+        return new fpdi_pdf_parser($filename);\r
     }\r
     \r
     /**\r
@@ -139,8 +130,8 @@ class FPDI extends FPDF_TPL
      */\r
     public function getPdfVersion()\r
     {\r
-               return $this->PDFVersion;\r
-       }\r
+        return $this->PDFVersion;\r
+    }\r
     \r
     /**\r
      * Set the PDF version.\r
@@ -151,7 +142,7 @@ class FPDI extends FPDF_TPL
     {\r
         $this->PDFVersion = sprintf('%.1F', $version);\r
     }\r
-       \r
+    \r
     /**\r
      * Import a page.\r
      *\r
@@ -243,7 +234,7 @@ class FPDI extends FPDF_TPL
         $rotation = $parser->getPageRotation($pageNo);\r
         $tpl['_rotationAngle'] = 0;\r
         if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0) {\r
-               $steps = $angle / 90;\r
+            $steps = $angle / 90;\r
                 \r
             $_w = $tpl['w'];\r
             $_h = $tpl['h'];\r
@@ -251,9 +242,9 @@ class FPDI extends FPDF_TPL
             $tpl['h'] = $steps % 2 == 0 ? $_h : $_w;\r
             \r
             if ($angle < 0)\r
-               $angle += 360;\r
+                $angle += 360;\r
             \r
-               $tpl['_rotationAngle'] = $angle * -1;\r
+            $tpl['_rotationAngle'] = $angle * -1;\r
         }\r
         \r
         $this->_importedPages[$pageKey] = $this->tpl;\r
@@ -301,29 +292,33 @@ class FPDI extends FPDF_TPL
             $size = array($size['w'], $size['h']);\r
             \r
             if (is_subclass_of($this, 'TCPDF')) {\r
-               $this->setPageFormat($size, $orientation);\r
+                $this->setPageFormat($size, $orientation);\r
             } else {\r
-               $size = $this->_getpagesize($size);\r
-               \r
-               if($orientation != $this->CurOrientation ||\r
+                $size = $this->_getpagesize($size);\r
+                \r
+                if($orientation != $this->CurOrientation ||\r
                     $size[0] != $this->CurPageSize[0] ||\r
                     $size[1] != $this->CurPageSize[1]\r
                 ) {\r
-                                       // New size or orientation\r
-                                       if ($orientation=='P') {\r
-                                               $this->w = $size[0];\r
-                                               $this->h = $size[1];\r
-                                       } else {\r
-                                               $this->w = $size[1];\r
-                                               $this->h = $size[0];\r
-                                       }\r
-                                       $this->wPt = $this->w * $this->k;\r
-                                       $this->hPt = $this->h * $this->k;\r
-                                       $this->PageBreakTrigger = $this->h - $this->bMargin;\r
-                                       $this->CurOrientation = $orientation;\r
-                                       $this->CurPageSize = $size;\r
-                                       $this->PageSizes[$this->page] = array($this->wPt, $this->hPt);\r
-                               }\r
+                    // New size or orientation\r
+                    if ($orientation=='P') {\r
+                        $this->w = $size[0];\r
+                        $this->h = $size[1];\r
+                    } else {\r
+                        $this->w = $size[1];\r
+                        $this->h = $size[0];\r
+                    }\r
+                    $this->wPt = $this->w * $this->k;\r
+                    $this->hPt = $this->h * $this->k;\r
+                    $this->PageBreakTrigger = $this->h - $this->bMargin;\r
+                    $this->CurOrientation = $orientation;\r
+                    $this->CurPageSize = $size;\r
+                    if (FPDF_VERSION >= 1.8) {\r
+                        $this->PageInfo[$this->page]['size'] = array($this->wPt, $this->hPt);\r
+                    } else {\r
+                        $this->PageSizes[$this->page] = array($this->wPt, $this->hPt);\r
+                    }\r
+                }\r
             } \r
         }\r
         \r
@@ -373,13 +368,13 @@ class FPDI extends FPDF_TPL
     protected function _putformxobjects()\r
     {\r
         $filter = ($this->compress) ? '/Filter /FlateDecode ' : '';\r
-           reset($this->_tpls);\r
+        reset($this->_tpls);\r
         foreach($this->_tpls AS $tplIdx => $tpl) {\r
             $this->_newobj();\r
-               $currentN = $this->n; // TCPDF/Protection: rem current "n"\r
-               \r
-               $this->_tpls[$tplIdx]['n'] = $this->n;\r
-               $this->_out('<<' . $filter . '/Type /XObject');\r
+            $currentN = $this->n; // TCPDF/Protection: rem current "n"\r
+            \r
+            $this->_tpls[$tplIdx]['n'] = $this->n;\r
+            $this->_out('<<' . $filter . '/Type /XObject');\r
             $this->_out('/Subtype /Form');\r
             $this->_out('/FormType 1');\r
             \r
@@ -406,15 +401,15 @@ class FPDI extends FPDF_TPL
                     \r
                     switch($tpl['_rotationAngle']) {\r
                         case -90:\r
-                           $tx = -$tpl['box']['lly'];\r
-                           $ty = $tpl['box']['urx'];\r
-                           break;\r
+                            $tx = -$tpl['box']['lly'];\r
+                            $ty = $tpl['box']['urx'];\r
+                            break;\r
                         case -180:\r
                             $tx = $tpl['box']['urx'];\r
                             $ty = $tpl['box']['ury'];\r
                             break;\r
                         case -270:\r
-                               $tx = $tpl['box']['ury'];\r
+                            $tx = $tpl['box']['ury'];\r
                             $ty = -$tpl['box']['llx'];\r
                             break;\r
                     }\r
@@ -478,15 +473,15 @@ class FPDI extends FPDF_TPL
             $buffer = ($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];\r
 \r
             if (is_subclass_of($this, 'TCPDF')) {\r
-               $buffer = $this->_getrawstream($buffer);\r
-               $this->_out('/Length ' . strlen($buffer) . ' >>');\r
-               $this->_out("stream\n" . $buffer . "\nendstream");\r
+                $buffer = $this->_getrawstream($buffer);\r
+                $this->_out('/Length ' . strlen($buffer) . ' >>');\r
+                $this->_out("stream\n" . $buffer . "\nendstream");\r
             } else {\r
-                   $this->_out('/Length ' . strlen($buffer) . ' >>');\r
-                       $this->_putstream($buffer);\r
+                $this->_out('/Length ' . strlen($buffer) . ' >>');\r
+                $this->_putstream($buffer);\r
             }\r
-               $this->_out('endobj');\r
-               $this->n = $newN; // TCPDF: reset to new "n"\r
+            $this->_out('endobj');\r
+            $this->n = $newN; // TCPDF: reset to new "n"\r
         }\r
         \r
         $this->_putimportedobjects();\r
@@ -507,7 +502,7 @@ class FPDI extends FPDF_TPL
             $objId = ++$this->n;\r
         }\r
 \r
-        //Begin a new object\r
+        // Begin a new object\r
         if (!$onlyNewObj) {\r
             $this->offsets[$objId] = is_subclass_of($this, 'TCPDF') ? $this->bufferlen : strlen($this->buffer);\r
             $this->_out($objId . ' 0 obj');\r
@@ -532,93 +527,92 @@ class FPDI extends FPDF_TPL
         \r
         switch ($value[0]) {\r
 \r
-               case pdf_parser::TYPE_TOKEN:\r
+            case pdf_parser::TYPE_TOKEN:\r
                 $this->_straightOut($value[1] . ' ');\r
-                       break;\r
-                   case pdf_parser::TYPE_NUMERIC:\r
-               case pdf_parser::TYPE_REAL:\r
+                break;\r
+            case pdf_parser::TYPE_NUMERIC:\r
+            case pdf_parser::TYPE_REAL:\r
                 if (is_float($value[1]) && $value[1] != 0) {\r
-                           $this->_straightOut(rtrim(rtrim(sprintf('%F', $value[1]), '0'), '.') . ' ');\r
-                       } else {\r
-                               $this->_straightOut($value[1] . ' ');\r
-                       }\r
-                       break;\r
-                       \r
-               case pdf_parser::TYPE_ARRAY:\r
-\r
-                       // An array. Output the proper\r
-                       // structure and move on.\r
-\r
-                       $this->_straightOut('[');\r
+                    $this->_straightOut(rtrim(rtrim(sprintf('%F', $value[1]), '0'), '.') . ' ');\r
+                } else {\r
+                    $this->_straightOut($value[1] . ' ');\r
+                }\r
+                break;\r
+                \r
+            case pdf_parser::TYPE_ARRAY:\r
+\r
+                // An array. Output the proper\r
+                // structure and move on.\r
+\r
+                $this->_straightOut('[');\r
                 for ($i = 0; $i < count($value[1]); $i++) {\r
-                               $this->_writeValue($value[1][$i]);\r
-                       }\r
+                    $this->_writeValue($value[1][$i]);\r
+                }\r
 \r
-                       $this->_out(']');\r
-                       break;\r
+                $this->_out(']');\r
+                break;\r
 \r
-               case pdf_parser::TYPE_DICTIONARY:\r
+            case pdf_parser::TYPE_DICTIONARY:\r
 \r
-                       // A dictionary.\r
-                       $this->_straightOut('<<');\r
+                // A dictionary.\r
+                $this->_straightOut('<<');\r
 \r
-                       reset ($value[1]);\r
+                reset ($value[1]);\r
 \r
-                       while (list($k, $v) = each($value[1])) {\r
-                               $this->_straightOut($k . ' ');\r
-                               $this->_writeValue($v);\r
-                       }\r
+                while (list($k, $v) = each($value[1])) {\r
+                    $this->_straightOut($k . ' ');\r
+                    $this->_writeValue($v);\r
+                }\r
 \r
-                       $this->_straightOut('>>');\r
-                       break;\r
+                $this->_straightOut('>>');\r
+                break;\r
 \r
-               case pdf_parser::TYPE_OBJREF:\r
+            case pdf_parser::TYPE_OBJREF:\r
 \r
-                       // An indirect object reference\r
-                       // Fill the object stack if needed\r
-                       $cpfn =& $this->currentParser->filename;\r
-                       if (!isset($this->_doneObjStack[$cpfn][$value[1]])) {\r
-                           $this->_newobj(false, true);\r
-                           $this->_objStack[$cpfn][$value[1]] = array($this->n, $value);\r
+                // An indirect object reference\r
+                // Fill the object stack if needed\r
+                $cpfn =& $this->currentParser->filename;\r
+                if (!isset($this->_doneObjStack[$cpfn][$value[1]])) {\r
+                    $this->_newobj(false, true);\r
+                    $this->_objStack[$cpfn][$value[1]] = array($this->n, $value);\r
                     $this->_doneObjStack[$cpfn][$value[1]] = array($this->n, $value);\r
                 }\r
                 $objId = $this->_doneObjStack[$cpfn][$value[1]][0];\r
 \r
-                       $this->_out($objId . ' 0 R');\r
-                       break;\r
+                $this->_out($objId . ' 0 R');\r
+                break;\r
 \r
-               case pdf_parser::TYPE_STRING:\r
+            case pdf_parser::TYPE_STRING:\r
 \r
-                       // A string.\r
+                // A string.\r
                 $this->_straightOut('(' . $value[1] . ')');\r
 \r
-                       break;\r
+                break;\r
 \r
-               case pdf_parser::TYPE_STREAM:\r
+            case pdf_parser::TYPE_STREAM:\r
 \r
-                       // A stream. First, output the\r
-                       // stream dictionary, then the\r
-                       // stream data itself.\r
+                // A stream. First, output the\r
+                // stream dictionary, then the\r
+                // stream data itself.\r
                 $this->_writeValue($value[1]);\r
-                       $this->_out('stream');\r
-                       $this->_out($value[2][1]);\r
-                       $this->_straightOut("endstream");\r
-                       break;\r
-                       \r
+                $this->_out('stream');\r
+                $this->_out($value[2][1]);\r
+                $this->_straightOut("endstream");\r
+                break;\r
+                \r
             case pdf_parser::TYPE_HEX:\r
                 $this->_straightOut('<' . $value[1] . '>');\r
                 break;\r
 \r
             case pdf_parser::TYPE_BOOLEAN:\r
-                   $this->_straightOut($value[1] ? 'true ' : 'false ');\r
-                   break;\r
+                $this->_straightOut($value[1] ? 'true ' : 'false ');\r
+                break;\r
             \r
-               case pdf_parser::TYPE_NULL:\r
+            case pdf_parser::TYPE_NULL:\r
                 // The null object.\r
-\r
-                       $this->_straightOut('null ');\r
-                       break;\r
-       }\r
+                $this->_straightOut('null ');\r
+                break;\r
+        }\r
     }\r
     \r
     \r
@@ -629,32 +623,32 @@ class FPDI extends FPDF_TPL
     {\r
         if (!is_subclass_of($this, 'TCPDF')) {\r
             if ($this->state == 2) {\r
-                       $this->pages[$this->page] .= $s;\r
+                $this->pages[$this->page] .= $s;\r
             } else {\r
-                       $this->buffer .= $s;\r
+                $this->buffer .= $s;\r
             }\r
 \r
         } else {\r
             if ($this->state == 2) {\r
-                               if ($this->inxobj) {\r
-                                       // we are inside an XObject template\r
-                                       $this->xobjects[$this->xobjid]['outdata'] .= $s;\r
-                               } else if ((!$this->InFooter) AND isset($this->footerlen[$this->page]) AND ($this->footerlen[$this->page] > 0)) {\r
-                                       // puts data before page footer\r
-                                       $pagebuff = $this->getPageBuffer($this->page);\r
-                                       $page = substr($pagebuff, 0, -$this->footerlen[$this->page]);\r
-                                       $footer = substr($pagebuff, -$this->footerlen[$this->page]);\r
-                                       $this->setPageBuffer($this->page, $page . $s . $footer);\r
-                                       // update footer position\r
-                                       $this->footerpos[$this->page] += strlen($s);\r
-                               } else {\r
-                                       // set page data\r
-                                       $this->setPageBuffer($this->page, $s, true);\r
-                               }\r
-                       } else if ($this->state > 0) {\r
-                               // set general data\r
-                               $this->setBuffer($s);\r
-                       }\r
+                if ($this->inxobj) {\r
+                    // we are inside an XObject template\r
+                    $this->xobjects[$this->xobjid]['outdata'] .= $s;\r
+                } else if ((!$this->InFooter) AND isset($this->footerlen[$this->page]) AND ($this->footerlen[$this->page] > 0)) {\r
+                    // puts data before page footer\r
+                    $pagebuff = $this->getPageBuffer($this->page);\r
+                    $page = substr($pagebuff, 0, -$this->footerlen[$this->page]);\r
+                    $footer = substr($pagebuff, -$this->footerlen[$this->page]);\r
+                    $this->setPageBuffer($this->page, $page . $s . $footer);\r
+                    // update footer position\r
+                    $this->footerpos[$this->page] += strlen($s);\r
+                } else {\r
+                    // set page data\r
+                    $this->setPageBuffer($this->page, $s, true);\r
+                }\r
+            } else if ($this->state > 0) {\r
+                // set general data\r
+                $this->setBuffer($s);\r
+            }\r
         }\r
     }\r
 \r
@@ -677,7 +671,7 @@ class FPDI extends FPDF_TPL
     protected function _closeParsers()\r
     {\r
         if ($this->state > 2) {\r
-               $this->cleanUp();\r
+            $this->cleanUp();\r
             return true;\r
         }\r
 \r
index dc69d2e..b2e43c4 100644 (file)
@@ -1,21 +1,12 @@
 <?php
-//
-//  FPDI - Version 1.5.4
-//
-//    Copyright 2004-2015 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
+/**
+ * This file is part of FPDI
+ *
+ * @package   FPDI
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)
+ * @license   http://opensource.org/licenses/mit-license The MIT License
+ * @version   1.6.1
+ */
 
 /**
  * This file is used as a bridge between TCPDF or FPDF
@@ -39,7 +30,7 @@ if (!class_exists('TCPDF', false)) {
     /**
      * Class fpdi_bridge
      *
-     * This has been modified to use the Moodle pdflib wrapper which in turn extends TCPDF
+     * This has been modified to use the Moodle pdf class which in turn extends the TCPDF class.
      */
     class fpdi_bridge extends pdf
     {
index 883b723..9e6d521 100644 (file)
@@ -1,21 +1,12 @@
 <?php\r
-//\r
-//  FPDI - Version 1.5.4\r
-//\r
-//    Copyright 2004-2015 Setasign - Jan Slabon\r
-//\r
-//  Licensed under the Apache License, Version 2.0 (the "License");\r
-//  you may not use this file except in compliance with the License.\r
-//  You may obtain a copy of the License at\r
-//\r
-//      http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-//  Unless required by applicable law or agreed to in writing, software\r
-//  distributed under the License is distributed on an "AS IS" BASIS,\r
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-//  See the License for the specific language governing permissions and\r
-//  limitations under the License.\r
-//\r
+/**\r
+ * This file is part of FPDI\r
+ *\r
+ * @package   FPDI\r
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)\r
+ * @license   http://opensource.org/licenses/mit-license The MIT License\r
+ * @version   1.6.1\r
+ */\r
 \r
 if (!class_exists('pdf_parser')) {\r
     require_once('pdf_parser.php');\r
@@ -127,18 +118,18 @@ class fpdi_pdf_parser extends pdf_parser
      */\r
     protected function _getPageResources($obj)\r
     {\r
-       $obj = $this->resolveObject($obj);\r
+        $obj = $this->resolveObject($obj);\r
 \r
         // If the current object has a resources\r
-       // dictionary associated with it, we use\r
-       // it. Otherwise, we move back to its\r
-       // parent object.\r
+        // dictionary associated with it, we use\r
+        // it. Otherwise, we move back to its\r
+        // parent object.\r
         if (isset($obj[1][1]['/Resources'])) {\r
-               $res = $this->resolveObject($obj[1][1]['/Resources']);\r
-               if ($res[0] == pdf_parser::TYPE_OBJECT)\r
+            $res = $this->resolveObject($obj[1][1]['/Resources']);\r
+            if ($res[0] == pdf_parser::TYPE_OBJECT)\r
                 return $res[1];\r
             return $res;\r
-       }\r
+        }\r
 \r
         if (!isset($obj[1][1]['/Parent'])) {\r
             return false;\r
@@ -301,13 +292,13 @@ class fpdi_pdf_parser extends pdf_parser
      */\r
     protected function _getPageRotation($obj)\r
     {\r
-       $obj = $this->resolveObject($obj);\r
-       if (isset($obj[1][1]['/Rotate'])) {\r
-               $res = $this->resolveObject($obj[1][1]['/Rotate']);\r
-               if ($res[0] == pdf_parser::TYPE_OBJECT)\r
+        $obj = $this->resolveObject($obj);\r
+        if (isset($obj[1][1]['/Rotate'])) {\r
+            $res = $this->resolveObject($obj[1][1]['/Rotate']);\r
+            if ($res[0] == pdf_parser::TYPE_OBJECT)\r
                 return $res[1];\r
             return $res;\r
-       }\r
+        }\r
 \r
         if (!isset($obj[1][1]['/Parent'])) {\r
             return false;\r
@@ -330,7 +321,7 @@ class fpdi_pdf_parser extends pdf_parser
     protected function _readPages(&$pages, &$result)\r
     {\r
         // Get the kids dictionary\r
-       $_kids = $this->resolveObject($pages[1][1]['/Kids']);\r
+        $_kids = $this->resolveObject($pages[1][1]['/Kids']);\r
 \r
         if (!is_array($_kids)) {\r
             throw new Exception('Cannot find /Kids in current /Page-Dictionary');\r
@@ -343,14 +334,14 @@ class fpdi_pdf_parser extends pdf_parser
         $kids = $_kids[1];\r
 \r
         foreach ($kids as $v) {\r
-               $pg = $this->resolveObject($v);\r
+            $pg = $this->resolveObject($v);\r
             if ($pg[1][1]['/Type'][1] === '/Pages') {\r
                 // If one of the kids is an embedded\r
-                       // /Pages array, resolve it as well.\r
+                // /Pages array, resolve it as well.\r
                 $this->_readPages($pg, $result);\r
-               } else {\r
-                       $result[] = $pg;\r
-               }\r
-       }\r
+            } else {\r
+                $result[] = $pg;\r
+            }\r
+        }\r
     }\r
 }
\ No newline at end of file
index aa78f64..474aa72 100644 (file)
@@ -1,21 +1,12 @@
 <?php\r
-//\r
-//  FPDI - Version 1.5.4\r
-//\r
-//    Copyright 2004-2015 Setasign - Jan Slabon\r
-//\r
-//  Licensed under the Apache License, Version 2.0 (the "License");\r
-//  you may not use this file except in compliance with the License.\r
-//  You may obtain a copy of the License at\r
-//\r
-//      http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-//  Unless required by applicable law or agreed to in writing, software\r
-//  distributed under the License is distributed on an "AS IS" BASIS,\r
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-//  See the License for the specific language governing permissions and\r
-//  limitations under the License.\r
-//\r
+/**\r
+ * This file is part of FPDI\r
+ *\r
+ * @package   FPDI\r
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)\r
+ * @license   http://opensource.org/licenses/mit-license The MIT License\r
+ * @version   1.6.1\r
+ */\r
 \r
 /**\r
  * Class pdf_context\r
index 1463b0a..490b135 100644 (file)
@@ -1,21 +1,12 @@
 <?php\r
-//\r
-//  FPDI - Version 1.5.4\r
-//\r
-//    Copyright 2004-2015 Setasign - Jan Slabon\r
-//\r
-//  Licensed under the Apache License, Version 2.0 (the "License");\r
-//  you may not use this file except in compliance with the License.\r
-//  You may obtain a copy of the License at\r
-//\r
-//      http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-//  Unless required by applicable law or agreed to in writing, software\r
-//  distributed under the License is distributed on an "AS IS" BASIS,\r
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-//  See the License for the specific language governing permissions and\r
-//  limitations under the License.\r
-//\r
+/**\r
+ * This file is part of FPDI\r
+ *\r
+ * @package   FPDI\r
+ * @copyright Copyright (c) 2015 Setasign - Jan Slabon (http://www.setasign.com)\r
+ * @license   http://opensource.org/licenses/mit-license The MIT License\r
+ * @version   1.6.1\r
+ */\r
 \r
 /**\r
  * Class pdf_parser\r
@@ -594,7 +585,7 @@ class pdf_parser
 \r
                 return array(self::TYPE_STREAM, $v);\r
 \r
-            default    :\r
+            default:\r
                 if (is_numeric($token)) {\r
                     // A numeric token. Make sure that\r
                     // it is not part of something else.\r
index bc1bae1..7cac3bb 100644 (file)
@@ -10,7 +10,7 @@ Information
 URL: http://www.setasign.de/products/pdf-php-solutions/fpdi/
 Download from: http://www.setasign.de/products/pdf-php-solutions/fpdi/downloads
 Documentation: http://www.setasign.de/products/pdf-php-solutions/fpdi/manuals/
-License: Apache Software License 2.0
+License: The MIT License (MIT)
 
 Installation
 ------------
@@ -19,6 +19,13 @@ Installation
 3) Update mod/assign/feedback/editpdf/fpdi/fpdi_bridge.php (or the replacement file) to extend 'pdf' instead of 'TCPDF'.
 4) Make a note below of any changes made.
 
+2015/12/04
+----------
+Updated to FPDI: 1.6.1
+
+1) Changed 'TCPDF' to 'pdf' (as stated above).
+2) License changed from Apache Software License 2.0 to The MIT License (MIT).
+
 2015/10/01
 ----------
 Updated to FPDI: 1.5.4
index 5ce0dd6..cf10e9b 100644 (file)
@@ -3,8 +3,8 @@
   <library>
     <location>fpdi</location>
     <name>FPDI</name>
-    <license>Apache</license>
-    <version>1.5.4</version>
-    <licenseversion>2.0</licenseversion>
+    <license>MIT</license>
+    <version>1.6.1</version>
+    <licenseversion></licenseversion>
   </library>
 </libraries>
index 90b4ff7..c0383f2 100644 (file)
@@ -13,11 +13,21 @@ class mod_data_export_form extends moodleform {
 
      // @param string $url: the url to post to
      // @param array $datafields: objects in this database
-    function mod_data_export_form($url, $datafields, $cm, $data) {
+    public function __construct($url, $datafields, $cm, $data) {
         $this->_datafields = $datafields;
         $this->_cm = $cm;
         $this->_data = $data;
-        parent::moodleform($url);
+        parent::__construct($url);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function mod_data_export_form($url, $datafields, $cm, $data) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($url, $datafields, $cm, $data);
     }
 
     function definition() {
index a6e1b4c..ddf5486 100644 (file)
@@ -199,7 +199,7 @@ class data_field_textarea extends data_field_base {
                 // the value will be retrieved by file_get_submitted_draft_itemid, do not need to save in DB
                 return true;
             } else {
-                $content->$names[2] = clean_param($value, PARAM_NOTAGS);  // content[1-4]
+                $content->{$names[2]} = clean_param($value, PARAM_NOTAGS);  // content[1-4]
             }
         } else {
             $content->content = clean_param($value, PARAM_CLEAN);
index 5d3eb3a..2abc762 100644 (file)
@@ -33,9 +33,19 @@ class mod_lesson_mod_form extends moodleform_mod {
 
     protected $course = null;
 
-    public function mod_lesson_mod_form($current, $section, $cm, $course) {
+    public function __construct($current, $section, $cm, $course) {
         $this->course = $course;
-        parent::moodleform_mod($current, $section, $cm, $course);
+        parent::__construct($current, $section, $cm, $course);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function mod_lesson_mod_form($current, $section, $cm, $course) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($current, $section, $cm, $course);
     }
 
     function definition() {
index 2306de3..9840dba 100644 (file)
@@ -868,7 +868,7 @@ function lti_parse_custom_parameter($toolproxy, $tool, $params, $value, $islti2)
                             $value = $params[$val];
                         } else {
                             $valarr = explode('->', substr($val, 1), 2);
-                            $value = "{${$valarr[0]}->$valarr[1]}";
+                            $value = "{${$valarr[0]}->{$valarr[1]}}";
                             $value = str_replace('<br />' , ' ', $value);
                             $value = str_replace('<br>' , ' ', $value);
                             $value = format_string($value);
index 6b185aa..350e5aa 100644 (file)
@@ -63,8 +63,11 @@ require_once($CFG->dirroot . '/mod/lti/servicelib.php');
 class mod_lti_locallib_testcase extends advanced_testcase {
 
     public function test_split_custom_parameters() {
+        $this->resetAfterTest();
+
         $tool = new stdClass();
         $tool->enabledcapability = '';
+        $tool->parameter = '';
         $this->assertEquals(lti_split_custom_parameters(null, $tool, array(), "x=1\ny=2", false),
             array('custom_x' => '1', 'custom_y' => '2'));
 
@@ -76,6 +79,12 @@ class mod_lti_locallib_testcase extends advanced_testcase {
         $this->assertEquals(lti_split_custom_parameters(null, $tool, array(),
             'Complex!@#$^*(){}[]KEY=Complex!@#$^*;(){}[]½Value', false),
             array('custom_complex____________key' => 'Complex!@#$^*;(){}[]½Value'));
+
+        // Test custom parameter that returns $USER property.
+        $user = $this->getDataGenerator()->create_user(array('middlename' => 'SOMETHING'));
+        $this->setUser($user);
+        $this->assertEquals(array('custom_x' => '1', 'custom_y' => 'SOMETHING'),
+            lti_split_custom_parameters(null, $tool, array(), "x=1\ny=\$Person.name.middle", false));
     }
 
     /**
index 1164152..187c341 100644 (file)
@@ -33,7 +33,14 @@ class MoodleQuickForm_wikieditor extends MoodleQuickForm_textarea {
 
     private $files;
 
-    function MoodleQuickForm_wikieditor($elementName = null, $elementLabel = null, $attributes = null) {
+    /**
+     * Constructor
+     *
+     * @param string $elementName (optional) name of the text field
+     * @param string $elementLabel (optional) text field label
+     * @param string $attributes (optional) Either a typical HTML attribute string or an associative array
+     */
+    function __construct($elementName = null, $elementLabel = null, $attributes = null) {
         if (isset($attributes['wiki_format'])) {
             $this->wikiformat = $attributes['wiki_format'];
             unset($attributes['wiki_format']);
@@ -43,7 +50,17 @@ class MoodleQuickForm_wikieditor extends MoodleQuickForm_textarea {
             unset($attributes['files']);
         }
 
-        parent::MoodleQuickForm_textarea($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
+    }
+
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_wikieditor($elementName = null, $elementLabel = null, $attributes = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes);
     }
 
     function setWikiFormat($wikiformat) {
index c1b9ed4..fffaf4b 100644 (file)
@@ -37,13 +37,23 @@ class MoodleQuickForm_wikifiletable extends HTML_QuickForm_element {
     private $_fileinfo;
     private $_value = array();
 
-    function MoodleQuickForm_wikifiletable($elementName = null, $elementLabel = null, $attributes = null, $fileinfo = null, $format = null) {
+    public function __construct($elementName = null, $elementLabel = null, $attributes = null, $fileinfo = null, $format = null) {
 
-        parent::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
+        parent::__construct($elementName, $elementLabel, $attributes);
         $this->_fileinfo = $fileinfo;
         $this->_format = $format;
     }
 
+    /**
+     * Old syntax of class constructor. Deprecated in PHP7.
+     *
+     * @deprecated since Moodle 3.1
+     */
+    public function MoodleQuickForm_wikifiletable($elementName = null, $elementLabel = null, $attributes = null, $fileinfo = null, $format = null) {
+        debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
+        self::__construct($elementName, $elementLabel, $attributes, $fileinfo, $format);
+    }
+
     function onQuickFormEvent($event, $arg, &$caller) {
         global $OUTPUT;
 
index 22d8710..09803be 100644 (file)
@@ -248,11 +248,18 @@ class qtype_calculated_qe2_attempt_updater extends question_qtype_attempt_update
      * @return float the computed result.
      */
     protected function calculate_raw($expression) {
-        // This validation trick from http://php.net/manual/en/function.eval.php.
-        if (!@eval('return true; $result = ' . $expression . ';')) {
-            return '[Invalid expression ' . $expression . ']';
+        try {
+            // In older PHP versions this this is a way to validate code passed to eval.
+            // The trick came from http://php.net/manual/en/function.eval.php.
+            if (@eval('return true; $result = ' . $expression . ';')) {
+                return eval('return ' . $expression . ';');
+            }
+        } catch (Throwable $e) {
+            // PHP7 and later now throws ParseException and friends from eval(),
+            // which is much better.
         }
-        return eval('return ' . $expression . ';');
+        // In either case of an invalid $expression, we end here.
+        return '[Invalid expression ' . $expression . ']';
     }
 
     /**
index af9c819..99cd171 100644 (file)
@@ -433,11 +433,18 @@ class qtype_calculated_variable_substituter {
      * @return float the computed result.
      */
     protected function calculate_raw($expression) {
-        // This validation trick from http://php.net/manual/en/function.eval.php .
-        if (!@eval('return true; $result = ' . $expression . ';')) {
-            throw new moodle_exception('illegalformulasyntax', 'qtype_calculated', '', $expression);
+        try {
+            // In older PHP versions this this is a way to validate code passed to eval.
+            // The trick came from http://php.net/manual/en/function.eval.php.
+            if (@eval('return true; $result = ' . $expression . ';')) {
+                return eval('return ' . $expression . ';');
+            }
+        } catch (Throwable $e) {
+            // PHP7 and later now throws ParseException and friends from eval(),
+            // which is much better.
         }
-        return eval('return ' . $expression . ';');
+        // In either case of an invalid $expression, we end here.
+        throw new moodle_exception('illegalformulasyntax', 'qtype_calculated', '', $expression);
     }
 
     /**
index f9be863..b670306 100644 (file)
@@ -65,6 +65,17 @@ class qtype_calculated_variable_substituter_test extends advanced_testcase {
         $vs->calculate('{a}{b}'); // Have to make sure this does not just evaluate to 12.
     }
 
+    public function test_division_by_zero_expression() {
+
+        if (intval(PHP_VERSION) < 7) {
+            $this->markTestSkipped('Division by zero triggers a PHP warning before PHP 7.');
+        }
+
+        $this->setExpectedException('moodle_exception');
+        $vs = new qtype_calculated_variable_substituter(array('a' => 1, 'b' => 0), '.');
+        $vs->calculate('{a} / {b}');
+    }
+
     public function test_replace_expressions_in_text_simple_var() {
         $vs = new qtype_calculated_variable_substituter(array('a' => 1, 'b' => 2), '.');
         $this->assertEquals('1 + 2', $vs->replace_expressions_in_text('{a} + {b}'));
index 53bf09d..ed4cb25 100644 (file)
@@ -272,11 +272,18 @@ class qtype_calculatedmulti_qe2_attempt_updater extends question_qtype_attempt_u
      * @return float the computed result.
      */
     protected function calculate_raw($expression) {
-        // This validation trick from http://php.net/manual/en/function.eval.php.
-        if (!@eval('return true; $result = ' . $expression . ';')) {
-            return '[Invalid expression ' . $expression . ']';
+        try {
+            // In older PHP versions this this is a way to validate code passed to eval.
+            // The trick came from http://php.net/manual/en/function.eval.php.
+            if (@eval('return true; $result = ' . $expression . ';')) {
+                return eval('return ' . $expression . ';');
+            }
+        } catch (Throwable $e) {
+            // PHP7 and later now throws ParseException and friends from eval(),
+            // which is much better.
         }
-        return eval('return ' . $expression . ';');
+        // In either case of an invalid $expression, we end here.
+        return '[Invalid expression ' . $expression . ']';
     }
 
     /**