Merge branch 'wip-MDL-45427-master' of git://github.com/abgreeve/moodle
authorDavid Monllao <davidm@moodle.com>
Mon, 30 May 2016 02:19:24 +0000 (10:19 +0800)
committerDavid Monllao <davidm@moodle.com>
Mon, 30 May 2016 02:19:24 +0000 (10:19 +0800)
114 files changed:
.travis.yml
admin/tool/customlang/db/upgrade.php
admin/tool/log/db/upgrade.php
admin/tool/log/store/database/db/upgrade.php
admin/tool/log/store/standard/db/upgrade.php
admin/tool/lp/styles.css
admin/tool/monitor/db/upgrade.php
auth/cas/db/upgrade.php
auth/ldap/db/upgrade.php
auth/manual/db/upgrade.php
auth/mnet/db/upgrade.php
backup/backup.class.php
blocks/badges/db/upgrade.php
blocks/calendar_month/db/upgrade.php
blocks/calendar_upcoming/db/upgrade.php
blocks/community/db/upgrade.php
blocks/completionstatus/db/upgrade.php
blocks/course_summary/db/upgrade.php
blocks/html/db/upgrade.php
blocks/lp/competencies_to_review.php
blocks/lp/plans_to_review.php
blocks/navigation/db/upgrade.php
blocks/quiz_results/db/upgrade.php
blocks/recent_activity/db/upgrade.php
blocks/rss_client/db/upgrade.php
blocks/section_links/db/upgrade.php
blocks/selfcompletion/db/upgrade.php
blocks/settings/db/upgrade.php
enrol/database/db/upgrade.php
enrol/flatfile/db/upgrade.php
enrol/guest/db/upgrade.php
enrol/imsenterprise/db/upgrade.php
enrol/manual/db/upgrade.php
enrol/mnet/db/upgrade.php
enrol/paypal/db/upgrade.php
enrol/self/db/upgrade.php
filter/mediaplugin/db/upgrade.php
filter/tex/db/upgrade.php
grade/grading/form/guide/db/upgrade.php
grade/grading/form/rubric/db/upgrade.php
grade/report/user/db/upgrade.php
install/lang/oc_lnc/error.php
install/lang/sv/moodle.php
lib/accesslib.php
lib/antivirus/clamav/db/upgrade.php
lib/db/upgrade.php
lib/editor/atto/db/upgrade.php
lib/editor/atto/plugins/equation/db/upgrade.php
lib/editor/tinymce/db/upgrade.php
lib/editor/tinymce/plugins/spellchecker/db/upgrade.php
lib/medialib.php
message/output/email/db/upgrade.php
message/output/jabber/db/upgrade.php
message/output/popup/db/upgrade.php
mod/assign/db/upgrade.php
mod/assign/feedback/comments/db/upgrade.php
mod/assign/feedback/editpdf/db/upgrade.php
mod/assign/feedback/file/db/upgrade.php
mod/assign/submission/comments/db/upgrade.php
mod/assign/submission/file/db/upgrade.php
mod/assign/submission/onlinetext/db/upgrade.php
mod/assign/templates/grading_navigation.mustache
mod/assignment/db/upgrade.php
mod/book/db/upgrade.php
mod/chat/db/upgrade.php
mod/choice/db/upgrade.php
mod/data/db/upgrade.php
mod/feedback/db/upgrade.php
mod/folder/db/upgrade.php
mod/forum/db/upgrade.php
mod/forum/styles.css
mod/glossary/db/upgrade.php
mod/imscp/db/upgrade.php
mod/label/db/upgrade.php
mod/lesson/db/upgrade.php
mod/lti/db/upgrade.php
mod/page/db/upgrade.php
mod/quiz/db/upgrade.php
mod/quiz/report/overview/db/upgrade.php
mod/quiz/report/statistics/db/upgrade.php
mod/resource/db/upgrade.php
mod/scorm/db/upgrade.php
mod/survey/db/upgrade.php
mod/url/db/upgrade.php
mod/wiki/db/upgrade.php
mod/workshop/db/upgrade.php
mod/workshop/form/accumulative/db/upgrade.php
mod/workshop/form/comments/db/upgrade.php
mod/workshop/form/numerrors/db/upgrade.php
mod/workshop/form/rubric/db/upgrade.php
portfolio/boxnet/db/upgrade.php
portfolio/googledocs/db/upgrade.php
portfolio/picasa/db/upgrade.php
question/behaviour/manualgraded/db/upgrade.php
question/format.php
question/type/calculated/db/upgrade.php
question/type/ddmarker/db/upgrade.php
question/type/essay/db/upgrade.php
question/type/match/db/upgrade.php
question/type/multianswer/db/upgrade.php
question/type/multichoice/db/upgrade.php
question/type/numerical/db/upgrade.php
question/type/random/db/upgrade.php
question/type/randomsamatch/db/upgrade.php
question/type/shortanswer/db/upgrade.php
repository/alfresco/db/upgrade.php
repository/boxnet/db/upgrade.php
repository/dropbox/db/upgrade.php
repository/googledocs/db/upgrade.php
repository/picasa/db/upgrade.php
theme/more/db/upgrade.php
version.php
webservice/rest/locallib.php
webservice/rest/tests/server_test.php [new file with mode: 0644]

index 47f3462..d1438f3 100644 (file)
@@ -27,16 +27,19 @@ env:
     # Postgres is significantly is pretty reasonable in its run-time.
 
     # Run unit tests on MySQL
-    - DB=mysqli   PHPUNIT=true    INSTALL=false   CITEST=false
+    - DB=mysqli   TASK=PHPUNIT
 
     # Run CI Tests without running PHPUnit.
-    - DB=none     PHPUNIT=false   INSTALL=false   CITEST=true
+    - DB=none     TASK=CITEST
 
     # Run unit tests on Postgres
-    - DB=pgsql    PHPUNIT=true    INSTALL=false   CITEST=false
+    - DB=pgsql    TASK=PHPUNIT
 
     # Perform an upgrade test too.
-    - DB=pgsql    PHPUNIT=false   INSTALL=true   CITEST=false   UPGRADE=true
+    - DB=pgsql    TASK=UPGRADE
+
+    # Run a check for unbuilt files with Grunt.
+    - DB=none     TASK=GRUNT
 
 matrix:
     # Enable fast finish.
@@ -47,22 +50,26 @@ matrix:
     exclude:
         # MySQL - it's just too slow.
         # Exclude it on all versions except for 7.0
-        # - env: DB=mysqli   PHPUNIT=true    INSTALL=false   CITEST=false
+        # - env: DB=mysqli   TASK=PHPUNIT
         #   php: 5.6
         #
-        # - env: DB=mysqli   PHPUNIT=true    INSTALL=false   CITEST=false
+        # - env: DB=mysqli   TASK=PHPUNIT
         #   php: 5.5
 
-        - env: DB=mysqli   PHPUNIT=true    INSTALL=false   CITEST=false
+        - env: DB=mysqli   TASK=PHPUNIT
+          php: 5.4
+
+        - env: DB=none     TASK=GRUNT
           php: 5.4
 
         # Moodle 2.7 is not compatible with PHP 7 for the upgrade test.
-        - env: DB=pgsql    PHPUNIT=false   INSTALL=true   CITEST=false   UPGRADE=true
+        - env: DB=pgsql    TASK=UPGRADE
           php: 7.0
 
 cache:
     directories:
       - $HOME/.composer/cache
+      - $HOME/.npm
 
 install:
     # Disable xdebug. We aren't generating code coverage, and it has a huge impact upon test performance.
@@ -70,6 +77,7 @@ install:
 
     # Set the encrypted GITHUB_TOKEN if it's available to raise the API limit.
     - if [ -n "$GITHUB_APITOKEN" ]; then composer config github-oauth.github.com $GITHUB_APITOKEN; fi
+    - echo 'auth.json' >> .git/info/exclude
 
     # Install composer dependencies.
     # We need --no-interaction in case we hit API limits for composer. This causes it to fall back to a standard clone.
@@ -78,7 +86,7 @@ install:
 
 before_script:
     - >
-      if [ "$INSTALL" = 'true' -o "$PHPUNIT" = 'true' ];
+      if [ "$TASK" = 'PHPUNIT' -o "$TASK" = 'UPGRADE' ];
       then
         # Copy generic configuration in place.
         cp config-dist.php config.php ;
@@ -120,38 +128,37 @@ before_script:
           mysql -u root -e 'SET GLOBAL innodb_file_per_table=ON;' ;
           mysql -e 'CREATE DATABASE travis_ci_test DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;' ;
         fi
+      fi
 
-        if [ "$PHPUNIT" = 'true' ];
-        then
-          # Create a directory for the phpunit dataroot.
-          mkdir -p "$HOME"/roots/phpunit
+    - >
+      if [ "$TASK" = 'PHPUNIT' ];
+      then
+        # Create a directory for the phpunit dataroot.
+        mkdir -p "$HOME"/roots/phpunit
 
-          # The phpunit dataroot and prefix..
-          sed -i \
-            -e "/require_once/i \\\$CFG->phpunit_dataroot = '\/home\/travis\/roots\/phpunit';" \
-            -e "/require_once/i \\\$CFG->phpunit_prefix = 'p_';" \
-            config.php ;
+        # The phpunit dataroot and prefix..
+        sed -i \
+          -e "/require_once/i \\\$CFG->phpunit_dataroot = '\/home\/travis\/roots\/phpunit';" \
+          -e "/require_once/i \\\$CFG->phpunit_prefix = 'p_';" \
+          config.php ;
 
-          # Initialise PHPUnit for Moodle.
-          php admin/tool/phpunit/cli/init.php
-        fi
+        # Initialise PHPUnit for Moodle.
+        php admin/tool/phpunit/cli/init.php
       fi
 
-script:
-    ########################################################################
-    # PHPUnit
-    ########################################################################
     - >
-      if [ "$PHPUNIT" = 'true' ];
+      if [ "$TASK" = 'GRUNT' ];
       then
-        vendor/bin/phpunit;
+        npm install ;
+        npm install -g grunt ;
+        grunt ;
       fi
 
     ########################################################################
     # CI Tests
     ########################################################################
     - >
-      if [ "$CITEST" = 'true' ];
+      if [ "$TASK" = 'CITEST' ];
       then
         # Note - this is deliberately placed in the script section as we
         # should not add any code until after phpunit has run.
@@ -174,18 +181,11 @@ script:
         export phpcmd=`which php`;
       fi
 
-    # Actually run the CI Tests - do this outside of the main test to make output clearer.
-    - >
-      if [ "$CITEST" = 'true' ];
-      then
-        bash local/ci/php_lint/php_lint.sh;
-      fi
-
     ########################################################################
     # Upgrade test
     ########################################################################
     - >
-      if [ "$UPGRADE" = 'true' ];
+      if [ "$TASK" = 'UPGRADE' ];
       then
         # We need the official upstream.
         git remote add upstream https://github.com/moodle/moodle.git;
@@ -205,7 +205,36 @@ script:
 
         # The local_ci repository can be used to check upgrade savepoints.
         git clone https://github.com/moodlehq/moodle-local_ci.git local/ci ;
+      fi
 
+script:
+    - >
+      if [ "$TASK" = 'PHPUNIT' ];
+      then
+        vendor/bin/phpunit;
+      fi
+
+    - >
+      if [ "$TASK" = 'CITEST' ];
+      then
+        bash local/ci/php_lint/php_lint.sh;
+      fi
+
+    - >
+      if [ "$TASK" = 'GRUNT' ];
+      then
+        # Add all files to the git index and then run diff --cached to see all changes.
+        # This ensures that we get the status of all files, including new files.
+        git add . ;
+        git diff --cached --exit-code ;
+      fi
+
+    ########################################################################
+    # Upgrade test
+    ########################################################################
+    - >
+      if [ "$TASK" = 'UPGRADE' ];
+      then
         cp local/ci/check_upgrade_savepoints/check_upgrade_savepoints.php ./check_upgrade_savepoints.php
         result=`php check_upgrade_savepoints.php`;
         # Check if there are problems
index b3c5c03..b63626f 100644 (file)
@@ -38,5 +38,8 @@ function xmldb_tool_customlang_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index ef219e0..042ed97 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_tool_log_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index dc92035..21e34e0 100644 (file)
@@ -36,5 +36,8 @@ function xmldb_logstore_database_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 4e23361..4834535 100644 (file)
@@ -53,5 +53,8 @@ function xmldb_logstore_standard_upgrade($oldversion) {
         upgrade_plugin_savepoint(true, 2016041200, 'logstore', 'standard');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 701fc99..39d4e6e 100644 (file)
 .path-admin-tool-lp [data-region="competencylinktree"] select {
     width: 100%;
 }
+.path-admin-tool-lp [data-region] .generaltable.fullwidth {
+    clear: both;
+}
 
 .path-admin-tool-lp .competency-rule-points {
     margin-top: 10px;
index f02556d..9f8e53b 100644 (file)
@@ -59,5 +59,8 @@ function xmldb_tool_monitor_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index d421185..22fcb7b 100644 (file)
@@ -52,5 +52,8 @@ function xmldb_auth_cas_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 762815c..3526ffc 100644 (file)
@@ -52,5 +52,8 @@ function xmldb_auth_ldap_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 3c0ae55..d9b32b2 100644 (file)
@@ -40,5 +40,8 @@ function xmldb_auth_manual_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index bfdef15..2daae51 100644 (file)
@@ -40,5 +40,8 @@ function xmldb_auth_mnet_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index a5a660d..e7dccee 100644 (file)
@@ -135,7 +135,7 @@ abstract class backup implements checksumable {
     /**
      * Usually same than major release zero version, mainly for informative/historic purposes.
      */
-    const RELEASE = '3.1';
+    const RELEASE = '3.2';
 }
 
 /*
index a9ff3a1..e62f9b8 100644 (file)
@@ -82,5 +82,8 @@ function xmldb_block_badges_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index c83b12a..df1c068 100644 (file)
@@ -82,5 +82,8 @@ function xmldb_block_calendar_month_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 0836409..8d57d38 100644 (file)
@@ -82,5 +82,8 @@ function xmldb_block_calendar_upcoming_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 3a3e7b1..e4e537f 100644 (file)
@@ -55,5 +55,8 @@ function xmldb_block_community_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index f44773a..9767c51 100644 (file)
@@ -57,5 +57,8 @@ function xmldb_block_completionstatus_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 1678a1b..2905aae 100644 (file)
@@ -57,5 +57,8 @@ function xmldb_block_course_summary_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 4b5a51a..7f27cf1 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_block_html_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index ec91f28..817620c 100644 (file)
@@ -35,6 +35,7 @@ $url = new moodle_url('/blocks/lp/competencies_to_review.php');
 $PAGE->set_context(context_user::instance($USER->id));
 $PAGE->set_url($url);
 $PAGE->set_title($toreviewstr);
+$PAGE->set_pagelayout('standard');
 $PAGE->navbar->add($toreviewstr, $url);
 
 $output = $PAGE->get_renderer('block_lp');
index 973c1ae..8643bcf 100644 (file)
@@ -35,6 +35,7 @@ $url = new moodle_url('/blocks/lp/plans_to_review.php');
 $PAGE->set_context(context_user::instance($USER->id));
 $PAGE->set_url($url);
 $PAGE->set_title($toreviewstr);
+$PAGE->set_pagelayout('standard');
 $PAGE->navbar->add($toreviewstr, $url);
 
 $output = $PAGE->get_renderer('block_lp');
index 430bb9e..f137d38 100644 (file)
@@ -64,5 +64,8 @@ function xmldb_block_navigation_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index ec753c9..129ecc9 100644 (file)
@@ -107,5 +107,8 @@ function xmldb_block_quiz_results_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
\ No newline at end of file
index 02e8be0..e2c9193 100644 (file)
@@ -56,5 +56,8 @@ function xmldb_block_recent_activity_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index cf8294e..b8487d9 100644 (file)
@@ -53,5 +53,8 @@ function xmldb_block_rss_client_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 66f7957..d570716 100644 (file)
@@ -58,5 +58,8 @@ function xmldb_block_section_links_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 9dee1f5..374ea53 100644 (file)
@@ -57,5 +57,8 @@ function xmldb_block_selfcompletion_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index bd96db6..c435ed7 100644 (file)
@@ -64,5 +64,8 @@ function xmldb_block_settings_upgrade($oldversion, $block) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index a2d2c53..5a44fd7 100644 (file)
@@ -36,5 +36,8 @@ function xmldb_enrol_database_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index f16aa4d..8660e33 100644 (file)
@@ -36,5 +36,8 @@ function xmldb_enrol_flatfile_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index e1111f7..4f44dbe 100644 (file)
@@ -36,5 +36,8 @@ function xmldb_enrol_guest_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 0bc6134..1a7a9ad 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_enrol_imsenterprise_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 5ec65e3..8207e81 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_enrol_manual_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 2a59641..b96eb18 100644 (file)
@@ -36,5 +36,8 @@ function xmldb_enrol_mnet_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 1497469..8fab0c7 100644 (file)
@@ -54,5 +54,8 @@ function xmldb_enrol_paypal_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 82bb97d..8be21ea 100644 (file)
@@ -36,5 +36,8 @@ function xmldb_enrol_self_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 2a70d61..0e05041 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_filter_mediaplugin_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 14aa3d8..f8320d7 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_filter_tex_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index eb50b3c..eb06597 100644 (file)
@@ -46,5 +46,8 @@ function xmldb_gradingform_guide_upgrade($oldversion) {
         upgrade_plugin_savepoint(true, 2016051100, 'gradingform', 'guide');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 68a632f..3d6ca7f 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_gradingform_rubric_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index f79d0d1..c80ab9d 100644 (file)
@@ -45,5 +45,8 @@ function xmldb_gradereport_user_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 5c1a07e..7dcce90 100644 (file)
@@ -30,9 +30,9 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$string['cannotcreatedboninstall'] = '<p>Impossible de crear la banca de donadas.</p>
-<p>La banca de donadas indicada existís pas e l\'utilizaire especificat a pas las autorizacions que permeton de crear una banca de donadas.</p>.
-<p>L\'administrator del site deu repassar la configuracion de la banca de donadas.</p>';
+$string['cannotcreatedboninstall'] = '<p>Impossible de crear la basa de donadas.</p>
+<p>La banca de donadas indicada existís pas e l\'utilizaire especificat a pas las autorizacions que permeton de crear una basa de donadas.</p>.
+<p>L\'administrator del site deu repassar la configuracion de la basa de donadas.</p>';
 $string['cannotcreatelangdir'] = 'Creacion del dorsièr lang impossible';
 $string['cannotcreatetempdir'] = 'Creacion del dorsièr temp impossibla';
 $string['cannotdownloadcomponents'] = 'Telecargament dels components impossible';
@@ -42,7 +42,7 @@ $string['cannotsavemd5file'] = 'Enregistrament del fichièr md5 impossible';
 $string['cannotsavezipfile'] = 'Enregistrament del fichièr ZIP impossible';
 $string['cannotunzipfile'] = 'Descompression del fichièr ZIP impossibla';
 $string['componentisuptodate'] = 'Lo component es a jorn';
-$string['dmlexceptiononinstall'] = '<p>Una error de banca de donadas s\'es produita [{$a->errorcode}].<br />{$a->debuginfo}</p>';
+$string['dmlexceptiononinstall'] = '<p>Una error de basa de donadas s\'es produita [{$a->errorcode}].<br />{$a->debuginfo}</p>';
 $string['downloadedfilecheckfailed'] = 'La verificacion del fichièr telecargat a fracassat';
 $string['invalidmd5'] = 'Lo còdi de contraròtle md5 es pas valid';
 $string['missingrequiredfield'] = 'Un camp obligatòri es pas completat';
index 6a92867..6505f91 100644 (file)
@@ -31,6 +31,7 @@
 defined('MOODLE_INTERNAL') || die();
 
 $string['language'] = 'Språk';
+$string['moodlelogo'] = 'Moodie-logotyp';
 $string['next'] = 'Nästa';
 $string['previous'] = 'Tidigare';
 $string['reload'] = 'Uppdatera';
index 32362d1..a2c4eb8 100644 (file)
@@ -980,20 +980,17 @@ function load_course_context($userid, context_course $coursecontext, &$accessdat
     }
 
     // now get overrides of interesting roles in all interesting contexts (this course + children + parents)
-    $params = array('c'=>$coursecontext->id);
+    $params = array('pathprefix' => $coursecontext->path . '/%');
     list($parentsaself, $rparams) = $DB->get_in_or_equal($coursecontext->get_parent_context_ids(true), SQL_PARAMS_NAMED, 'pc_');
     $params = array_merge($params, $rparams);
     list($roleids, $rparams) = $DB->get_in_or_equal($roles, SQL_PARAMS_NAMED, 'r_');
     $params = array_merge($params, $rparams);
 
     $sql = "SELECT ctx.path, rc.roleid, rc.capability, rc.permission
-                 FROM {role_capabilities} rc
-                 JOIN {context} ctx
-                      ON (ctx.id = rc.contextid)
-                 JOIN {context} cctx
-                      ON (cctx.id = :c
-                          AND (ctx.id $parentsaself OR ctx.path LIKE ".$DB->sql_concat('cctx.path',"'/%'")."))
+                 FROM {context} ctx
+                 JOIN {role_capabilities} rc ON rc.contextid = ctx.id
                 WHERE rc.roleid $roleids
+                  AND (ctx.id $parentsaself OR ctx.path LIKE :pathprefix)
              ORDER BY rc.capability"; // fixed capability order is necessary for rdef dedupe
     $rs = $DB->get_recordset_sql($sql, $params);
 
index 618657e..45eb5c1 100644 (file)
@@ -31,5 +31,8 @@ defined('MOODLE_INTERNAL') || die();
  * @return bool
  */
 function xmldb_antivirus_clamav_upgrade($oldversion) {
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 22db5bf..ee468b6 100644 (file)
@@ -2069,5 +2069,8 @@ function xmldb_main_upgrade($oldversion) {
         upgrade_main_savepoint(true, 2016051700.01);
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 87a5bcf..c419bf5 100644 (file)
@@ -86,5 +86,8 @@ function xmldb_editor_atto_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 63a1c85..1a11a63 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_atto_equation_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
\ No newline at end of file
index 14204f5..2ed7bbf 100644 (file)
@@ -56,5 +56,8 @@ function xmldb_editor_tinymce_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 2186346..75ed576 100644 (file)
@@ -36,5 +36,8 @@ function xmldb_tinymce_spellchecker_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 393769d..23d4379 100644 (file)
@@ -1123,8 +1123,8 @@ OET;
                 // is a simplified version, does not take into account old browser
                 // versions or manual plugins.
                 if ($ext === 'ogv' || $ext === 'webm') {
-                    // Formats .ogv and .webm are not supported in IE or Safari.
-                    if (core_useragent::is_ie() || core_useragent::is_safari()) {
+                    // Formats .ogv and .webm are not supported in IE, Edge or Safari.
+                    if (core_useragent::is_ie() || core_useragent::is_edge() || core_useragent::is_safari()) {
                         continue;
                     }
                 } else {
@@ -1195,8 +1195,8 @@ OET;
             $ext = core_media::get_extension($url);
             if (in_array($ext, $extensions)) {
                 if ($ext === 'ogg' || $ext === 'oga') {
-                    // Formats .ogg and .oga are not supported in IE or Safari.
-                    if (core_useragent::is_ie() || core_useragent::is_safari()) {
+                    // Formats .ogg and .oga are not supported in IE, Edge, or Safari.
+                    if (core_useragent::is_ie() || core_useragent::is_edge() || core_useragent::is_safari()) {
                         continue;
                     }
                 } else {
index e5ad531..e1a5f2d 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_message_email_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 3979a91..0570cc0 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_message_jabber_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 5c08828..c1834c9 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_message_popup_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index d5e358e..c0935c5 100644 (file)
@@ -197,5 +197,8 @@ function xmldb_assign_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 3c35f2f..1e0d2dd 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_assignfeedback_comments_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 599653b..c8bbaee 100644 (file)
@@ -65,5 +65,8 @@ function xmldb_assignfeedback_editpdf_upgrade($oldversion) {
         upgrade_plugin_savepoint(true, 2016021600, 'assignfeedback', 'editpdf');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index ecfe0ba..7a0ab50 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_assignfeedback_file_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 273eade..5f4d740 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_assignsubmission_comments_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 62f1376..9cf89ba 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_assignsubmission_file_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 1b1907f..9189c63 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_assignsubmission_onlinetext_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 51488d0..93f5093 100644 (file)
@@ -33,7 +33,7 @@
 }}
 <div data-region="grading-navigation" class="row-fluid">
 <div data-region="assignment-info" class="span4">
-<a href="{{config.wwwroot}}/course/view.php?id={{courseid}}">{{coursename}}</a><br/>
+<a href="{{config.wwwroot}}/course/view.php?id={{courseid}}">{{{coursename}}}</a><br/>
 <a href="{{config.wwwroot}}/mod/assign/view.php?id={{cmid}}">{{name}}</a>
 {{#caneditsettings}}
 <a href="{{config.wwwroot}}/course/modedit.php?update={{cmid}}&return=1">{{#pix}}t/edit, core,{{#str}}editsettings{{/str}}{{/pix}}</a>
index c083cc4..e6c5ca3 100644 (file)
@@ -33,5 +33,8 @@ function xmldb_assignment_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index f55aab0..5371955 100644 (file)
@@ -58,5 +58,8 @@ function xmldb_book_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 37e7922..d947663 100644 (file)
@@ -36,5 +36,8 @@ function xmldb_chat_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index fafd471..290f6ee 100644 (file)
@@ -80,5 +80,8 @@ function xmldb_choice_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 7ecf150..27abdab 100644 (file)
@@ -79,5 +79,8 @@ function xmldb_data_upgrade($oldversion) {
     }
 
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 4d6d365..2e1644e 100644 (file)
@@ -143,5 +143,8 @@ function xmldb_feedback_upgrade($oldversion) {
         upgrade_mod_savepoint(true, 2016051105, 'feedback');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 530b818..1f9ada9 100644 (file)
@@ -70,5 +70,8 @@ function xmldb_folder_upgrade($oldversion) {
         upgrade_mod_savepoint(true, 2016020201, 'folder');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 218f527..942b760 100644 (file)
@@ -174,5 +174,8 @@ function xmldb_forum_upgrade($oldversion) {
         // Forum savepoint reached.
         upgrade_mod_savepoint(true, 2015120800, 'forum');
     }
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index fa84a82..f6fbd54 100644 (file)
@@ -121,7 +121,7 @@ span.unread {
 }
 
 /* Forumpost hash anchor target */
-.path-mod-forum :target :before {
+.path-mod-forum :target ~ .forumpost:before {
     display: block;
     content: '';
     width: 4px;
index 34e1d6e..c2f52a6 100644 (file)
@@ -48,5 +48,8 @@ function xmldb_glossary_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index e2d9515..f32f8f4 100644 (file)
@@ -40,5 +40,8 @@ function xmldb_imscp_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index eda7448..283b7f7 100644 (file)
@@ -56,5 +56,8 @@ function xmldb_label_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 4c2a9c0..ca0e48b 100644 (file)
@@ -384,5 +384,8 @@ function xmldb_lesson_upgrade($oldversion) {
         // Lesson savepoint reached.
         upgrade_mod_savepoint(true, 2016012800, 'lesson');
     }
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index c0ab6c3..01d3131 100644 (file)
@@ -194,5 +194,8 @@ function xmldb_lti_upgrade($oldversion) {
         upgrade_mod_savepoint(true, 2016041800, 'lti');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 9691188..d357bca 100644 (file)
@@ -56,5 +56,8 @@ function xmldb_page_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index d56585e..f42c007 100644 (file)
@@ -190,5 +190,8 @@ function xmldb_quiz_upgrade($oldversion) {
         upgrade_mod_savepoint(true, 2016032600, 'quiz');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index ad1e1b4..670cf4c 100644 (file)
@@ -40,5 +40,8 @@ function xmldb_quiz_overview_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 6664071..1169ace 100644 (file)
@@ -39,5 +39,8 @@ function xmldb_quiz_statistics_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index f490b91..49c7cec 100644 (file)
@@ -56,5 +56,8 @@ function xmldb_resource_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 73c8818..f08a1e3 100644 (file)
@@ -105,5 +105,8 @@ function xmldb_scorm_upgrade($oldversion) {
         upgrade_mod_savepoint(true, 2016021000, 'scorm');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 53686fd..004fc6d 100644 (file)
@@ -33,5 +33,8 @@ function xmldb_survey_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 6e7a7d3..e17365e 100644 (file)
@@ -56,5 +56,8 @@ function xmldb_url_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 2614baa..a4fc0f7 100644 (file)
@@ -49,5 +49,8 @@ function xmldb_wiki_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 9a7c281..cfec75e 100644 (file)
@@ -68,5 +68,8 @@ function xmldb_workshop_upgrade($oldversion) {
         upgrade_mod_savepoint(true, 2016022200, 'workshop');
     }
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index b1cf884..8beed00 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_workshopform_accumulative_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index d83a254..715ce04 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_workshopform_comments_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 89b9d87..e346312 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_workshopform_numerrors_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 4bb5d59..a6d7643 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_workshopform_rubric_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index af98aef..588bf5f 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_portfolio_boxnet_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 603961d..c02c769 100644 (file)
@@ -32,5 +32,8 @@ function xmldb_portfolio_googledocs_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index a0efd95..ae86c3b 100644 (file)
@@ -32,5 +32,8 @@ function xmldb_portfolio_picasa_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 50cce8d..4df1341 100644 (file)
@@ -39,5 +39,8 @@ function xmldb_qbehaviour_manualgraded_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index b2ddad2..a2aeaa1 100644 (file)
@@ -426,7 +426,7 @@ class qformat_default {
             $result = question_bank::get_qtype($question->qtype)->save_question_options($question);
 
             if (isset($question->tags)) {
-                core_tag_tag::set_item_tags('core_question', 'question', $question->context, $question->id, $question->tags);
+                core_tag_tag::set_item_tags('core_question', 'question', $question->id, $question->context, $question->tags);
             }
 
             if (!empty($result->error)) {
index 92f2760..470ceba 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_qtype_calculated_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 282aac5..f7041fe 100644 (file)
@@ -62,5 +62,8 @@ function xmldb_qtype_ddmarker_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index a33fd4b..82f4b65 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_qtype_essay_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 0254001..af64b37 100644 (file)
@@ -40,5 +40,8 @@ function xmldb_qtype_match_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 25b67f8..b247da5 100644 (file)
@@ -124,5 +124,8 @@ function xmldb_qtype_multianswer_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index e938157..31f6b7c 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_qtype_multichoice_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 20f8ea9..a4f1f20 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_qtype_numerical_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 4d35409..7856189 100644 (file)
@@ -51,5 +51,8 @@ function xmldb_qtype_random_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 890b2bf..99d9fcf 100644 (file)
@@ -40,5 +40,8 @@ function xmldb_qtype_randomsamatch_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index e605fc8..ff2a16e 100644 (file)
@@ -41,5 +41,8 @@ function xmldb_qtype_shortanswer_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 3b4f45f..4e766bf 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_repository_alfresco_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 774e637..a664f3a 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_repository_boxnet_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 3e25c1f..1be51fa 100644 (file)
@@ -32,5 +32,8 @@ function xmldb_repository_dropbox_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 65d9fa8..63275d8 100644 (file)
@@ -32,5 +32,8 @@ function xmldb_repository_googledocs_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index ec2fe8a..88ff113 100644 (file)
@@ -32,5 +32,8 @@ function xmldb_repository_picasa_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index aa97060..7b4da19 100644 (file)
@@ -42,5 +42,8 @@ function xmldb_theme_more_upgrade($oldversion) {
     // Moodle v3.0.0 release upgrade line.
     // Put any upgrade step following this.
 
+    // Moodle v3.1.0 release upgrade line.
+    // Put any upgrade step following this.
+
     return true;
 }
index 78f6a4b..2370153 100644 (file)
 
 defined('MOODLE_INTERNAL') || die();
 
-$version  = 2016052300.00;              // YYYYMMDD      = weekly release date of this DEV branch.
+$version  = 2016052300.01;              // YYYYMMDD      = weekly release date of this DEV branch.
                                         //         RR    = release increments - 00 in DEV branches.
                                         //           .XX = incremental changes.
 
-$release  = '3.2dev (Build: 20160523)'; // Human-friendly version name
+$release  = '3.2dev (Build: 20160526)'; // Human-friendly version name
 
 $branch   = '32';                       // This version's branch.
 $maturity = MATURITY_ALPHA;             // This version's maturity level.
index 1ead151..f0bd340 100644 (file)
@@ -224,7 +224,8 @@ class webservice_rest_server extends webservice_base_server {
         } else if ($desc instanceof external_single_structure) {
             $single = '<SINGLE>'."\n";
             foreach ($desc->keys as $key=>$subdesc) {
-                $single .= '<KEY name="'.$key.'">'.self::xmlize_result($returns[$key], $subdesc).'</KEY>'."\n";
+                $value = isset($returns[$key]) ? $returns[$key] : null;
+                $single .= '<KEY name="'.$key.'">'.self::xmlize_result($value, $subdesc).'</KEY>'."\n";
             }
             $single .= '</SINGLE>'."\n";
             return $single;
diff --git a/webservice/rest/tests/server_test.php b/webservice/rest/tests/server_test.php
new file mode 100644 (file)
index 0000000..354fc60
--- /dev/null
@@ -0,0 +1,217 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Rest server tests.
+ *
+ * @package    webservice_rest
+ * @copyright  2016 Frédéric Massart - FMCorz.net
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+global $CFG;
+
+require_once($CFG->libdir . '/externallib.php');
+require_once($CFG->dirroot . '/webservice/rest/locallib.php');
+
+/**
+ * Rest server testcase.
+ *
+ * @package    webservice_rest
+ * @copyright  2016 Frédéric Massart - FMCorz.net
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class webservice_rest_server_testcase extends advanced_testcase {
+
+    /**
+     * Data provider for test_xmlize.
+     * @return array
+     */
+    public function xmlize_provider() {
+        $data = [];
+        $data[] = [null, null, ''];
+        $data[] = [new external_value(PARAM_BOOL), false, "<VALUE>0</VALUE>\n"];
+        $data[] = [new external_value(PARAM_BOOL), true, "<VALUE>1</VALUE>\n"];
+        $data[] = [new external_value(PARAM_ALPHA), null, "<VALUE null=\"null\"/>\n"];
+        $data[] = [new external_value(PARAM_ALPHA), 'a', "<VALUE>a</VALUE>\n"];
+        $data[] = [new external_value(PARAM_INT), 123, "<VALUE>123</VALUE>\n"];
+        $data[] = [
+            new external_multiple_structure(new external_value(PARAM_INT)),
+            [1, 2, 3],
+            "<MULTIPLE>\n" .
+            "<VALUE>1</VALUE>\n" .
+            "<VALUE>2</VALUE>\n" .
+            "<VALUE>3</VALUE>\n" .
+            "</MULTIPLE>\n"
+        ];
+        $data[] = [ // Multiple structure with null value.
+            new external_multiple_structure(new external_value(PARAM_ALPHA)),
+            ['A', null, 'C'],
+            "<MULTIPLE>\n" .
+            "<VALUE>A</VALUE>\n" .
+            "<VALUE null=\"null\"/>\n" .
+            "<VALUE>C</VALUE>\n" .
+            "</MULTIPLE>\n"
+        ];
+        $data[] = [ // Multiple structure without values.
+            new external_multiple_structure(new external_value(PARAM_ALPHA)),
+            [],
+            "<MULTIPLE>\n" .
+            "</MULTIPLE>\n"
+        ];
+        $data[] = [
+            new external_single_structure([
+                'one' => new external_value(PARAM_INT),
+                'two' => new external_value(PARAM_INT),
+                'three' => new external_value(PARAM_INT),
+            ]),
+            ['one' => 1, 'two' => 2, 'three' => 3],
+            "<SINGLE>\n" .
+            "<KEY name=\"one\"><VALUE>1</VALUE>\n</KEY>\n" .
+            "<KEY name=\"two\"><VALUE>2</VALUE>\n</KEY>\n" .
+            "<KEY name=\"three\"><VALUE>3</VALUE>\n</KEY>\n" .
+            "</SINGLE>\n"
+        ];
+        $data[] = [ // Single structure with null value.
+            new external_single_structure([
+                'one' => new external_value(PARAM_INT),
+                'two' => new external_value(PARAM_INT),
+                'three' => new external_value(PARAM_INT),
+            ]),
+            ['one' => 1, 'two' => null, 'three' => 3],
+            "<SINGLE>\n" .
+            "<KEY name=\"one\"><VALUE>1</VALUE>\n</KEY>\n" .
+            "<KEY name=\"two\"><VALUE null=\"null\"/>\n</KEY>\n" .
+            "<KEY name=\"three\"><VALUE>3</VALUE>\n</KEY>\n" .
+            "</SINGLE>\n"
+        ];
+        $data[] = [ // Single structure missing keys.
+            new external_single_structure([
+                'one' => new external_value(PARAM_INT),
+                'two' => new external_value(PARAM_INT),
+                'three' => new external_value(PARAM_INT),
+            ]),
+            ['two' => null, 'three' => 3],
+            "<SINGLE>\n" .
+            "<KEY name=\"one\"><VALUE null=\"null\"/>\n</KEY>\n" .
+            "<KEY name=\"two\"><VALUE null=\"null\"/>\n</KEY>\n" .
+            "<KEY name=\"three\"><VALUE>3</VALUE>\n</KEY>\n" .
+            "</SINGLE>\n"
+        ];
+        $data[] = [ // Nested structure.
+            new external_single_structure([
+                'one' => new external_multiple_structure(
+                    new external_value(PARAM_INT)
+                ),
+                'two' => new external_multiple_structure(
+                    new external_single_structure([
+                        'firstname' => new external_value(PARAM_RAW),
+                        'lastname' => new external_value(PARAM_RAW),
+                    ])
+                ),
+                'three' => new external_single_structure([
+                    'firstname' => new external_value(PARAM_RAW),
+                    'lastname' => new external_value(PARAM_RAW),
+                ]),
+            ]),
+            [
+                'one' => [2, 3, 4],
+                'two' => [
+                    ['firstname' => 'Louis', 'lastname' => 'Armstrong'],
+                    ['firstname' => 'Neil', 'lastname' => 'Armstrong'],
+                ],
+                'three' => ['firstname' => 'Neil', 'lastname' => 'Armstrong'],
+            ],
+            "<SINGLE>\n" .
+            "<KEY name=\"one\"><MULTIPLE>\n".
+                "<VALUE>2</VALUE>\n" .
+                "<VALUE>3</VALUE>\n" .
+                "<VALUE>4</VALUE>\n" .
+            "</MULTIPLE>\n</KEY>\n" .
+            "<KEY name=\"two\"><MULTIPLE>\n".
+                "<SINGLE>\n" .
+                    "<KEY name=\"firstname\"><VALUE>Louis</VALUE>\n</KEY>\n" .
+                    "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" .
+                "</SINGLE>\n" .
+                "<SINGLE>\n" .
+                    "<KEY name=\"firstname\"><VALUE>Neil</VALUE>\n</KEY>\n" .
+                    "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" .
+                "</SINGLE>\n" .
+            "</MULTIPLE>\n</KEY>\n" .
+            "<KEY name=\"three\"><SINGLE>\n" .
+                "<KEY name=\"firstname\"><VALUE>Neil</VALUE>\n</KEY>\n" .
+                "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" .
+            "</SINGLE>\n</KEY>\n" .
+            "</SINGLE>\n"
+        ];
+        $data[] = [ // Nested structure with missing keys.
+            new external_single_structure([
+                'one' => new external_multiple_structure(
+                    new external_value(PARAM_INT)
+                ),
+                'two' => new external_multiple_structure(
+                    new external_single_structure([
+                        'firstname' => new external_value(PARAM_RAW),
+                        'lastname' => new external_value(PARAM_RAW),
+                    ])
+                ),
+                'three' => new external_single_structure([
+                    'firstname' => new external_value(PARAM_RAW),
+                    'lastname' => new external_value(PARAM_RAW),
+                ]),
+            ]),
+            [
+                'two' => [
+                    ['firstname' => 'Louis'],
+                    ['lastname' => 'Armstrong'],
+                ],
+                'three' => ['lastname' => 'Armstrong'],
+            ],
+            "<SINGLE>\n" .
+            "<KEY name=\"one\"><MULTIPLE>\n</MULTIPLE>\n</KEY>\n" .
+            "<KEY name=\"two\"><MULTIPLE>\n".
+                "<SINGLE>\n" .
+                    "<KEY name=\"firstname\"><VALUE>Louis</VALUE>\n</KEY>\n" .
+                    "<KEY name=\"lastname\"><VALUE null=\"null\"/>\n</KEY>\n" .
+                "</SINGLE>\n" .
+                "<SINGLE>\n" .
+                    "<KEY name=\"firstname\"><VALUE null=\"null\"/>\n</KEY>\n" .
+                    "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" .
+                "</SINGLE>\n" .
+            "</MULTIPLE>\n</KEY>\n" .
+            "<KEY name=\"three\"><SINGLE>\n" .
+                "<KEY name=\"firstname\"><VALUE null=\"null\"/>\n</KEY>\n" .
+                "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" .
+            "</SINGLE>\n</KEY>\n" .
+            "</SINGLE>\n"
+        ];
+        return $data;
+    }
+
+    /**
+     * @dataProvider xmlize_provider
+     * @param external_description $description The data structure.
+     * @param mixed $value The value to xmlise.
+     * @param mixed $expected The expected output.
+     */
+    public function test_xmlize($description, $value, $expected) {
+        $method = new ReflectionMethod('webservice_rest_server', 'xmlize_result');
+        $method->setAccessible(true);
+        $this->assertEquals($expected, $method->invoke(null, $value, $description));
+    }
+
+}