From f83d212bcf0aeaf71d6cd8a7d6cc82f8a6944f85 Mon Sep 17 00:00:00 2001 From: "Eloy Lafuente (stronk7)" Date: Wed, 14 Jun 2017 19:33:22 +0200 Subject: [PATCH] MDL-57432 upgrade: remove unused functions/settings from upgradelib All these functions were used only by deleted upgrade steps so it's safe to proceed with straight deletion, considering them internal. Deletion has been documented in corresponding upgrade.txt files: - upgrade_mimetypes() - upgrade_fix_missing_root_folders_draft() - upgrade_minmaxgrade() and upgrade_minmaxgradestepignored setting - upgrade_course_tags() - atto_equation_update_librarygroup4_setting() - mod_lti_upgrade_custom_separator() These have been kept because continue being used by restore: - upgrade_group_members_only() - upgrade_extra_credit_weightoverride() - upgrade_calculated_grade_items() --- lib/db/install.php | 1 - lib/db/upgrade.php | 6 + lib/db/upgradelib.php | 40 --- .../atto/plugins/equation/db/upgradelib.php | 71 ------ .../equation/tests/upgradelib_testcase.php | 125 ---------- lib/editor/atto/upgrade.txt | 8 + lib/tests/upgradelib_test.php | 234 ------------------ lib/upgrade.txt | 7 + lib/upgradelib.php | 84 ------- mod/lti/db/upgrade.php | 2 - mod/lti/db/upgradelib.php | 57 ----- mod/lti/tests/upgradelib_test.php | 90 ------- mod/lti/upgrade.txt | 6 + version.php | 2 +- 14 files changed, 28 insertions(+), 705 deletions(-) delete mode 100644 lib/editor/atto/plugins/equation/db/upgradelib.php delete mode 100644 lib/editor/atto/plugins/equation/tests/upgradelib_testcase.php delete mode 100644 mod/lti/db/upgradelib.php delete mode 100644 mod/lti/tests/upgradelib_test.php diff --git a/lib/db/install.php b/lib/db/install.php index f291828a1fa..92c725210e6 100644 --- a/lib/db/install.php +++ b/lib/db/install.php @@ -132,7 +132,6 @@ function xmldb_main_install() { 'texteditors' => 'atto,tinymce,textarea', 'antiviruses' => '', 'media_plugins_sortorder' => 'videojs,youtube,swf', - 'upgrade_minmaxgradestepignored' => 1, // New installs should not run this upgrade step. 'upgrade_extracreditweightsstepignored' => 1, // New installs should not run this upgrade step. 'upgrade_calculatedgradeitemsignored' => 1, // New installs should not run this upgrade step. 'upgrade_letterboundarycourses' => 1, // New installs should not run this upgrade step. diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index b14615e9943..e53fd1eb4b4 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -1914,5 +1914,11 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2017061301.00); } + if ($oldversion < 2017071000.00 ) { + // Clean old upgrade setting not used anymore. + unset_config('upgrade_minmaxgradestepignored'); + upgrade_main_savepoint(true, 2017071000.00); + } + return true; } diff --git a/lib/db/upgradelib.php b/lib/db/upgradelib.php index bfb630db594..134d4c0b3b7 100644 --- a/lib/db/upgradelib.php +++ b/lib/db/upgradelib.php @@ -130,26 +130,6 @@ function upgrade_group_members_only($groupingid, $availability) { return json_encode($tree); } -/** - * Updates the mime-types for files that exist in the database, based on their - * file extension. - * - * @param array $filetypes Array with file extension as the key, and mimetype as the value - */ -function upgrade_mimetypes($filetypes) { - global $DB; - $select = $DB->sql_like('filename', '?', false); - foreach ($filetypes as $extension=>$mimetype) { - $DB->set_field_select( - 'files', - 'mimetype', - $mimetype, - $select, - array($extension) - ); - } -} - /** * Marks all courses with changes in extra credit weight calculation * @@ -288,26 +268,6 @@ function upgrade_calculated_grade_items($courseid = null) { } } -/** - * This upgrade script merges all tag instances pointing to the same course tag - * - * User id is no longer used for those tag instances - */ -function upgrade_course_tags() { - global $DB; - $sql = "SELECT min(ti.id) - FROM {tag_instance} ti - LEFT JOIN {tag_instance} tii on tii.itemtype = ? and tii.itemid = ti.itemid and tii.tiuserid = 0 and tii.tagid = ti.tagid - where ti.itemtype = ? and ti.tiuserid <> 0 AND tii.id is null - group by ti.tagid, ti.itemid"; - $ids = $DB->get_fieldset_sql($sql, array('course', 'course')); - if ($ids) { - list($idsql, $idparams) = $DB->get_in_or_equal($ids); - $DB->execute('UPDATE {tag_instance} SET tiuserid = 0 WHERE id ' . $idsql, $idparams); - } - $DB->execute("DELETE FROM {tag_instance} WHERE itemtype = ? AND tiuserid <> 0", array('course')); -} - /** * This function creates a default separated/connected scale * so there's something in the database. The locations of diff --git a/lib/editor/atto/plugins/equation/db/upgradelib.php b/lib/editor/atto/plugins/equation/db/upgradelib.php deleted file mode 100644 index f60c0f97493..00000000000 --- a/lib/editor/atto/plugins/equation/db/upgradelib.php +++ /dev/null @@ -1,71 +0,0 @@ -. - -/** - * Atto equation upgrade helper functions. - * - * @package atto_equation - * @copyright 2015 Sam Chaffee - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -defined('MOODLE_INTERNAL') || die(); - -/** - * Updates the librarygroup4 setting if has not been changed from the default. - */ -function atto_equation_update_librarygroup4_setting() { - // Original default setting for librarygroup4. - $settingdefault = ' -\sum{a,b} -\int_{a}^{b}{c} -\iint_{a}^{b}{c} -\iiint_{a}^{b}{c} -\oint{a} -(a) -[a] -\lbrace{a}\rbrace -\left| \begin{matrix} a_1 & a_2 \\ a_3 & a_4 \end{matrix} \right| -'; - // Make a comparison string. - $settingdefaultcmpr = trim(str_replace(array("\r", "\n"), '', $settingdefault)); - - // Make the current librarygroup4 setting into a comparison string. - $currentsetting = get_config('atto_equation', 'librarygroup4'); - $currentsettingcmpr = trim(str_replace(array("\r", "\n"), '', $currentsetting)); - - if ($settingdefaultcmpr === $currentsettingcmpr) { - // Only if the original defaults match the current setting do we set the new config. - $newconfig = ' -\sum{a,b} -\sqrt[a]{b+c} -\int_{a}^{b}{c} -\iint_{a}^{b}{c} -\iiint_{a}^{b}{c} -\oint{a} -(a) -[a] -\lbrace{a}\rbrace -\left| \begin{matrix} a_1 & a_2 \\ a_3 & a_4 \end{matrix} \right| -\frac{a}{b+c} -\vec{a} -\binom {a} {b} -{a \brack b} -{a \brace b} -'; - set_config('librarygroup4', $newconfig, 'atto_equation'); - } -} \ No newline at end of file diff --git a/lib/editor/atto/plugins/equation/tests/upgradelib_testcase.php b/lib/editor/atto/plugins/equation/tests/upgradelib_testcase.php deleted file mode 100644 index bd872e5c6ad..00000000000 --- a/lib/editor/atto/plugins/equation/tests/upgradelib_testcase.php +++ /dev/null @@ -1,125 +0,0 @@ -. - -/** - * PHPUnit testcase class for atto equation upgrade lib. - * - * @package atto_equation - * @copyright 2015 Sam Chaffee - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -defined('MOODLE_INTERNAL') || die(); - -/** - * PHPUnit testcase class for atto equation upgrade lib. - * - * @package atto_equation - * @copyright 2015 Sam Chaffee - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class atto_equation_upgradelib_testcase extends advanced_testcase { - /** - * The name of the plugin in config_plugins. - */ - const SETTING_PLUGIN = 'atto_equation'; - - /** - * The name of the setting in config_plugins. - */ - const SETTING_NAME = 'librarygroup4'; - - /** - * Does testsuite set up. - */ - public function setUp() { - $this->resetAfterTest(); - } - - /** - * Tests the upgradelib atto_equation_update_librarygroup4_setting function. - */ - public function test_update_librarygroup4_update() { - global $CFG; - require_once($CFG->libdir . '/editor/atto/plugins/equation/db/upgradelib.php'); - - $originaldefaults = [ - '\sum{a,b}', - '\int_{a}^{b}{c}', - '\iint_{a}^{b}{c}', - '\iiint_{a}^{b}{c}', - '\oint{a}', - '(a)', - '[a]', - '\lbrace{a}\rbrace', - '\left| \begin{matrix} a_1 & a_2 \\ a_3 & a_4 \end{matrix} \right|', - ]; - - $newconfig = ' -\sum{a,b} -\sqrt[a]{b+c} -\int_{a}^{b}{c} -\iint_{a}^{b}{c} -\iiint_{a}^{b}{c} -\oint{a} -(a) -[a] -\lbrace{a}\rbrace -\left| \begin{matrix} a_1 & a_2 \\ a_3 & a_4 \end{matrix} \right| -\frac{a}{b+c} -\vec{a} -\binom {a} {b} -{a \brack b} -{a \brace b} -'; - - // Test successful update using windows line endings. - $originaldefaultswindows = "\r\n" . implode("\r\n", $originaldefaults) . "\r\n"; - set_config(self::SETTING_NAME, $originaldefaultswindows, self::SETTING_PLUGIN); - atto_equation_update_librarygroup4_setting(); - - $this->assertEquals($newconfig, get_config(self::SETTING_PLUGIN, self::SETTING_NAME)); - - // Test successful update using linux line . - $originaldefaultslinux = "\n" . implode("\n", $originaldefaults) . "\n"; - set_config(self::SETTING_NAME, $originaldefaultslinux, self::SETTING_PLUGIN); - atto_equation_update_librarygroup4_setting(); - - $this->assertEquals($newconfig, get_config(self::SETTING_PLUGIN, self::SETTING_NAME)); - - // Alter the original configuration by removing one of the equations. - $alteredconfig = array_slice($originaldefaults, 0, -1); - - // Test no update using windows line endings. - $alteredconfigwindows = "\r\n" . implode("\r\n", $alteredconfig) . "\r\n"; - set_config(self::SETTING_NAME, $alteredconfigwindows, self::SETTING_PLUGIN); - atto_equation_update_librarygroup4_setting(); - - $this->assertEquals($alteredconfigwindows, get_config(self::SETTING_PLUGIN, self::SETTING_NAME)); - - // Test no update using linux line endings. - $alteredconfiglinux = "\n" . implode("\n", $alteredconfig) . "\n"; - set_config(self::SETTING_NAME, $alteredconfiglinux, self::SETTING_PLUGIN); - atto_equation_update_librarygroup4_setting(); - - $this->assertEquals($alteredconfiglinux, get_config(self::SETTING_PLUGIN, self::SETTING_NAME)); - - // Test no configuration. - unset_config(self::SETTING_NAME, self::SETTING_PLUGIN); - atto_equation_update_librarygroup4_setting(); - - $this->assertFalse(get_config(self::SETTING_PLUGIN, self::SETTING_NAME)); - } -} \ No newline at end of file diff --git a/lib/editor/atto/upgrade.txt b/lib/editor/atto/upgrade.txt index f52c1f56b1a..f892f5b211f 100644 --- a/lib/editor/atto/upgrade.txt +++ b/lib/editor/atto/upgrade.txt @@ -1,5 +1,13 @@ This files describes API changes in the editor_atto code. + +=== 3.4 === + +* The following functions, previously used (exclusively) by upgrade steps are not available + anymore because of the upgrade cleanup performed for this version. See MDL-57432 for more info: + - atto_equation_update_librarygroup4_setting() + === 3.0 === + * Rangy updated to 1.3.0. Rangy has deprecated the createCssClassApplier function in this version (it is now createClassApplier). diff --git a/lib/tests/upgradelib_test.php b/lib/tests/upgradelib_test.php index dd684ad5a7c..2110e845602 100644 --- a/lib/tests/upgradelib_test.php +++ b/lib/tests/upgradelib_test.php @@ -75,179 +75,6 @@ class core_upgradelib_testcase extends advanced_testcase { return $DB->get_record('grade_items', array('id' => $item->id)); } - public function test_upgrade_fix_missing_root_folders_draft() { - global $DB, $SITE; - - $this->resetAfterTest(true); - - $user = $this->getDataGenerator()->create_user(); - $usercontext = context_user::instance($user->id); - $this->setUser($user); - $resource1 = $this->getDataGenerator()->get_plugin_generator('mod_resource') - ->create_instance(array('course' => $SITE->id)); - $context = context_module::instance($resource1->cmid); - $draftitemid = 0; - file_prepare_draft_area($draftitemid, $context->id, 'mod_resource', 'content', 0); - - $queryparams = array( - 'component' => 'user', - 'contextid' => $usercontext->id, - 'filearea' => 'draft', - 'itemid' => $draftitemid, - ); - - // Make sure there are two records in files for the draft file area and one of them has filename '.'. - $records = $DB->get_records_menu('files', $queryparams, '', 'id, filename'); - $this->assertEquals(2, count($records)); - $this->assertTrue(in_array('.', $records)); - $originalhash = $DB->get_field('files', 'pathnamehash', $queryparams + array('filename' => '.')); - - // Delete record with filename '.' and make sure it does not exist any more. - $DB->delete_records('files', $queryparams + array('filename' => '.')); - - $records = $DB->get_records_menu('files', $queryparams, '', 'id, filename'); - $this->assertEquals(1, count($records)); - $this->assertFalse(in_array('.', $records)); - - // Run upgrade script and make sure the record is restored. - upgrade_fix_missing_root_folders_draft(); - - $records = $DB->get_records_menu('files', $queryparams, '', 'id, filename'); - $this->assertEquals(2, count($records)); - $this->assertTrue(in_array('.', $records)); - $newhash = $DB->get_field('files', 'pathnamehash', $queryparams + array('filename' => '.')); - $this->assertEquals($originalhash, $newhash); - } - - /** - * Test upgrade minmaxgrade step. - */ - public function test_upgrade_minmaxgrade() { - global $CFG, $DB; - require_once($CFG->libdir . '/gradelib.php'); - $initialminmax = $CFG->grade_minmaxtouse; - $this->resetAfterTest(); - - $c1 = $this->getDataGenerator()->create_course(); - $c2 = $this->getDataGenerator()->create_course(); - $c3 = $this->getDataGenerator()->create_course(); - $u1 = $this->getDataGenerator()->create_user(); - $a1 = $this->getDataGenerator()->create_module('assign', array('course' => $c1, 'grade' => 100)); - $a2 = $this->getDataGenerator()->create_module('assign', array('course' => $c2, 'grade' => 100)); - $a3 = $this->getDataGenerator()->create_module('assign', array('course' => $c3, 'grade' => 100)); - - $cm1 = get_coursemodule_from_instance('assign', $a1->id); - $ctx1 = context_module::instance($cm1->id); - $assign1 = new assign($ctx1, $cm1, $c1); - - $cm2 = get_coursemodule_from_instance('assign', $a2->id); - $ctx2 = context_module::instance($cm2->id); - $assign2 = new assign($ctx2, $cm2, $c2); - - $cm3 = get_coursemodule_from_instance('assign', $a3->id); - $ctx3 = context_module::instance($cm3->id); - $assign3 = new assign($ctx3, $cm3, $c3); - - // Give a grade to the student. - $ug = $assign1->get_user_grade($u1->id, true); - $ug->grade = 10; - $assign1->update_grade($ug); - - $ug = $assign2->get_user_grade($u1->id, true); - $ug->grade = 20; - $assign2->update_grade($ug); - - $ug = $assign3->get_user_grade($u1->id, true); - $ug->grade = 30; - $assign3->update_grade($ug); - - - // Run the upgrade. - upgrade_minmaxgrade(); - - // Nothing has happened. - $this->assertFalse($DB->record_exists('config', array('name' => 'show_min_max_grades_changed_' . $c1->id))); - $this->assertSame(false, grade_get_setting($c1->id, 'minmaxtouse', false, true)); - $this->assertFalse($DB->record_exists('grade_items', array('needsupdate' => 1, 'courseid' => $c1->id))); - $this->assertFalse($DB->record_exists('config', array('name' => 'show_min_max_grades_changed_' . $c2->id))); - $this->assertSame(false, grade_get_setting($c2->id, 'minmaxtouse', false, true)); - $this->assertFalse($DB->record_exists('grade_items', array('needsupdate' => 1, 'courseid' => $c2->id))); - $this->assertFalse($DB->record_exists('config', array('name' => 'show_min_max_grades_changed_' . $c3->id))); - $this->assertSame(false, grade_get_setting($c3->id, 'minmaxtouse', false, true)); - $this->assertFalse($DB->record_exists('grade_items', array('needsupdate' => 1, 'courseid' => $c3->id))); - - // Create inconsistency in c1 and c2. - $giparams = array('itemtype' => 'mod', 'itemmodule' => 'assign', 'iteminstance' => $a1->id, - 'courseid' => $c1->id, 'itemnumber' => 0); - $gi = grade_item::fetch($giparams); - $gi->grademin = 5; - $gi->update(); - - $giparams = array('itemtype' => 'mod', 'itemmodule' => 'assign', 'iteminstance' => $a2->id, - 'courseid' => $c2->id, 'itemnumber' => 0); - $gi = grade_item::fetch($giparams); - $gi->grademax = 50; - $gi->update(); - - - // C1 and C2 should be updated, but the course setting should not be set. - $CFG->grade_minmaxtouse = GRADE_MIN_MAX_FROM_GRADE_GRADE; - - // Run the upgrade. - upgrade_minmaxgrade(); - - // C1 and C2 were partially updated. - $this->assertTrue($DB->record_exists('config', array('name' => 'show_min_max_grades_changed_' . $c1->id))); - $this->assertSame(false, grade_get_setting($c1->id, 'minmaxtouse', false, true)); - $this->assertTrue($DB->record_exists('grade_items', array('needsupdate' => 1, 'courseid' => $c1->id))); - $this->assertTrue($DB->record_exists('config', array('name' => 'show_min_max_grades_changed_' . $c2->id))); - $this->assertSame(false, grade_get_setting($c2->id, 'minmaxtouse', false, true)); - $this->assertTrue($DB->record_exists('grade_items', array('needsupdate' => 1, 'courseid' => $c2->id))); - - // Nothing has happened for C3. - $this->assertFalse($DB->record_exists('config', array('name' => 'show_min_max_grades_changed_' . $c3->id))); - $this->assertSame(false, grade_get_setting($c3->id, 'minmaxtouse', false, true)); - $this->assertFalse($DB->record_exists('grade_items', array('needsupdate' => 1, 'courseid' => $c3->id))); - - - // Course setting should not be set on a course that has the setting already. - $CFG->grade_minmaxtouse = GRADE_MIN_MAX_FROM_GRADE_ITEM; - grade_set_setting($c1->id, 'minmaxtouse', -1); // Sets different value than constant to check that it remained the same. - - // Run the upgrade. - upgrade_minmaxgrade(); - - // C2 was updated. - $this->assertSame((string) GRADE_MIN_MAX_FROM_GRADE_GRADE, grade_get_setting($c2->id, 'minmaxtouse', false, true)); - - // Nothing has happened for C1. - $this->assertSame('-1', grade_get_setting($c1->id, 'minmaxtouse', false, true)); - - // Nothing has happened for C3. - $this->assertFalse($DB->record_exists('config', array('name' => 'show_min_max_grades_changed_' . $c3->id))); - $this->assertSame(false, grade_get_setting($c3->id, 'minmaxtouse', false, true)); - $this->assertFalse($DB->record_exists('grade_items', array('needsupdate' => 1, 'courseid' => $c3->id))); - - - // Final check, this time we'll unset the default config. - unset($CFG->grade_minmaxtouse); - grade_set_setting($c1->id, 'minmaxtouse', null); - - // Run the upgrade. - upgrade_minmaxgrade(); - - // C1 was updated. - $this->assertSame((string) GRADE_MIN_MAX_FROM_GRADE_GRADE, grade_get_setting($c1->id, 'minmaxtouse', false, true)); - - // Nothing has happened for C3. - $this->assertFalse($DB->record_exists('config', array('name' => 'show_min_max_grades_changed_' . $c3->id))); - $this->assertSame(false, grade_get_setting($c3->id, 'minmaxtouse', false, true)); - $this->assertFalse($DB->record_exists('grade_items', array('needsupdate' => 1, 'courseid' => $c3->id))); - - // Restore value. - $CFG->grade_minmaxtouse = $initialminmax; - } - public function test_upgrade_extra_credit_weightoverride() { global $DB, $CFG; @@ -515,67 +342,6 @@ class core_upgradelib_testcase extends advanced_testcase { $this->assertEquals($gradecategoryitem->grademin, $grade->rawgrademin); } - public function test_upgrade_course_tags() { - global $DB, $CFG; - - $this->resetAfterTest(); - - require_once($CFG->libdir . '/db/upgradelib.php'); - - // Running upgrade script when there are no tags. - upgrade_course_tags(); - $this->assertFalse($DB->record_exists('tag_instance', array())); - - // No course entries. - $DB->insert_record('tag_instance', array('itemid' => 123, 'tagid' => 101, 'tiuserid' => 0, - 'itemtype' => 'post', 'component' => 'core', 'contextid' => 1)); - $DB->insert_record('tag_instance', array('itemid' => 333, 'tagid' => 103, 'tiuserid' => 1002, - 'itemtype' => 'post', 'component' => 'core', 'contextid' => 1)); - - upgrade_course_tags(); - $records = array_values($DB->get_records('tag_instance', array(), 'id', '*')); - $this->assertEquals(2, count($records)); - $this->assertEquals(123, $records[0]->itemid); - $this->assertEquals(333, $records[1]->itemid); - - // Imagine we have tags 101, 102, 103, ... and courses 1, 2, 3, ... and users 1001, 1002, ... . - $keys = array('itemid', 'tagid', 'tiuserid'); - $valuesets = array( - array(1, 101, 0), - array(1, 102, 0), - - array(2, 102, 0), - array(2, 103, 1001), - - array(3, 103, 0), - array(3, 103, 1001), - - array(3, 104, 1006), - array(3, 104, 1001), - array(3, 104, 1002), - ); - - foreach ($valuesets as $values) { - $DB->insert_record('tag_instance', array_combine($keys, $values) + - array('itemtype' => 'course', 'component' => 'core', 'contextid' => 1)); - } - - upgrade_course_tags(); - // There are 8 records in 'tag_instance' table and 7 of them do not have tiuserid (except for one 'post'). - $records = array_values($DB->get_records('tag_instance', array(), 'id', '*')); - $this->assertEquals(8, count($records)); - $this->assertEquals(7, $DB->count_records('tag_instance', array('tiuserid' => 0))); - // Course 1 is mapped to tags 101 and 102. - $this->assertEquals(array(101, 102), array_values($DB->get_fieldset_select('tag_instance', 'tagid', - 'itemtype = ? AND itemid = ? ORDER BY tagid', array('course', 1)))); - // Course 2 is mapped to tags 102 and 103. - $this->assertEquals(array(102, 103), array_values($DB->get_fieldset_select('tag_instance', 'tagid', - 'itemtype = ? AND itemid = ? ORDER BY tagid', array('course', 2)))); - // Course 1 is mapped to tags 101 and 102. - $this->assertEquals(array(103, 104), array_values($DB->get_fieldset_select('tag_instance', 'tagid', - 'itemtype = ? AND itemid = ? ORDER BY tagid', array('course', 3)))); - } - /** * Test that the upgrade script correctly flags courses to be frozen due to letter boundary problems. */ diff --git a/lib/upgrade.txt b/lib/upgrade.txt index fce1d3ae0b7..2f685333ac8 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -3,6 +3,13 @@ information provided here is intended especially for developers. === 3.4 === +* The following functions, previously used (exclusively) by upgrade steps are not available + anymore because of the upgrade cleanup performed for this version. See MDL-57432 for more info: + - upgrade_mimetypes() + - upgrade_fix_missing_root_folders_draft() + - upgrade_minmaxgrade() + - upgrade_course_tags() + * Added new moodleform element 'filetypes' and new admin setting widget 'admin_setting_filetypes'. These new widgets allow users to define a list of file types; either by typing them manually or selecting them from a list. The widgets directly support the syntax used to feed the 'accepted_types' option of the filemanager and filepicker elements. File diff --git a/lib/upgradelib.php b/lib/upgradelib.php index 0edd3323c8c..c9e9a3b2cc2 100644 --- a/lib/upgradelib.php +++ b/lib/upgradelib.php @@ -2116,39 +2116,6 @@ function admin_mnet_method_get_help(ReflectionFunctionAbstract $function) { return implode("\n", $helplines); } -/** - * Detect draft file areas with missing root directory records and add them. - */ -function upgrade_fix_missing_root_folders_draft() { - global $DB; - - $transaction = $DB->start_delegated_transaction(); - - $sql = "SELECT contextid, itemid, MAX(timecreated) AS timecreated, MAX(timemodified) AS timemodified - FROM {files} - WHERE (component = 'user' AND filearea = 'draft') - GROUP BY contextid, itemid - HAVING MAX(CASE WHEN filename = '.' AND filepath = '/' THEN 1 ELSE 0 END) = 0"; - - $rs = $DB->get_recordset_sql($sql); - $defaults = array('component' => 'user', - 'filearea' => 'draft', - 'filepath' => '/', - 'filename' => '.', - 'userid' => 0, // Don't rely on any particular user for these system records. - 'filesize' => 0, - // Note: This does not use the file_storage API's hash calculator - // because access to core APIs is not allowed during upgrade. - 'contenthash' => sha1(''), - ); - foreach ($rs as $r) { - $r->pathnamehash = sha1("/$r->contextid/user/draft/$r->itemid/."); - $DB->insert_record('files', (array)$r + $defaults); - } - $rs->close(); - $transaction->allow_commit(); -} - /** * This function verifies that the database is not using an unsupported storage engine. * @@ -2342,57 +2309,6 @@ function check_is_https(environment_results $result) { return null; } -/** - * Upgrade the minmaxgrade setting. - * - * This step should only be run for sites running 2.8 or later. Sites using 2.7 will be fine - * using the new default system setting $CFG->grade_minmaxtouse. - * - * @return void - */ -function upgrade_minmaxgrade() { - global $CFG, $DB; - - // 2 is a copy of GRADE_MIN_MAX_FROM_GRADE_GRADE. - $settingvalue = 2; - - // Set the course setting when: - // - The system setting does not exist yet. - // - The system seeting is not set to what we'd set the course setting. - $setcoursesetting = !isset($CFG->grade_minmaxtouse) || $CFG->grade_minmaxtouse != $settingvalue; - - // Identify the courses that have inconsistencies grade_item vs grade_grade. - $sql = "SELECT DISTINCT(gi.courseid) - FROM {grade_grades} gg - JOIN {grade_items} gi - ON gg.itemid = gi.id - WHERE gi.itemtype NOT IN (?, ?) - AND (gg.rawgrademax != gi.grademax OR gg.rawgrademin != gi.grademin)"; - - $rs = $DB->get_recordset_sql($sql, array('course', 'category')); - foreach ($rs as $record) { - // Flag the course to show a notice in the gradebook. - set_config('show_min_max_grades_changed_' . $record->courseid, 1); - - // Set the appropriate course setting so that grades displayed are not changed. - $configname = 'minmaxtouse'; - if ($setcoursesetting && - !$DB->record_exists('grade_settings', array('courseid' => $record->courseid, 'name' => $configname))) { - // Do not set the setting when the course already defines it. - $data = new stdClass(); - $data->courseid = $record->courseid; - $data->name = $configname; - $data->value = $settingvalue; - $DB->insert_record('grade_settings', $data); - } - - // Mark the grades to be regraded. - $DB->set_field('grade_items', 'needsupdate', 1, array('courseid' => $record->courseid)); - } - $rs->close(); -} - - /** * Assert the upgrade key is provided, if it is defined. * diff --git a/mod/lti/db/upgrade.php b/mod/lti/db/upgrade.php index 99c48d7fb10..31913a1d8d6 100644 --- a/mod/lti/db/upgrade.php +++ b/mod/lti/db/upgrade.php @@ -61,8 +61,6 @@ function xmldb_lti_upgrade($oldversion) { global $CFG, $DB; - require_once(__DIR__ . '/upgradelib.php'); - $dbman = $DB->get_manager(); if ($oldversion < 2016041800) { diff --git a/mod/lti/db/upgradelib.php b/mod/lti/db/upgradelib.php deleted file mode 100644 index 671728e692e..00000000000 --- a/mod/lti/db/upgradelib.php +++ /dev/null @@ -1,57 +0,0 @@ -. - -/** - * LTI upgrade script. - * - * @package mod_lti - * @copyright 2014 Vital Source Technologies http://vitalsource.com - * @author Stephen Vickers - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - - -defined('MOODLE_INTERNAL') || die(); - -/** - * Update any custom parameter settings separated by semicolons. - */ -function mod_lti_upgrade_custom_separator() { - global $DB; - - // Initialise parameter array. - $params = array('semicolon' => ';', 'likecr' => "%\r%", 'likelf' => "%\n%", 'lf' => "\n"); - - // Initialise NOT LIKE clauses to check for CR and LF characters. - $notlikecr = $DB->sql_like('value', ':likecr', true, true, true); - $notlikelf = $DB->sql_like('value', ':likelf', true, true, true); - - // Update any instances in the lti_types_config table. - $sql = 'UPDATE {lti_types_config} ' . - 'SET value = REPLACE(value, :semicolon, :lf) ' . - 'WHERE (name = \'customparameters\') AND (' . $notlikecr . ') AND (' . $notlikelf . ')'; - $DB->execute($sql, $params); - - // Initialise NOT LIKE clauses to check for CR and LF characters. - $notlikecr = $DB->sql_like('instructorcustomparameters', ':likecr', true, true, true); - $notlikelf = $DB->sql_like('instructorcustomparameters', ':likelf', true, true, true); - - // Update any instances in the lti table. - $sql = 'UPDATE {lti} ' . - 'SET instructorcustomparameters = REPLACE(instructorcustomparameters, :semicolon, :lf) ' . - 'WHERE (instructorcustomparameters IS NOT NULL) AND (' . $notlikecr . ') AND (' . $notlikelf . ')'; - $DB->execute($sql, $params); -} diff --git a/mod/lti/tests/upgradelib_test.php b/mod/lti/tests/upgradelib_test.php deleted file mode 100644 index 87accdda27c..00000000000 --- a/mod/lti/tests/upgradelib_test.php +++ /dev/null @@ -1,90 +0,0 @@ -. - -/** - * LTI upgrade script. - * - * @package mod_lti - * @copyright 2014 Vital Source Technologies http://vitalsource.com - * @author Stephen Vickers - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - - -defined('MOODLE_INTERNAL') || die(); - -global $CFG; -require_once($CFG->dirroot . '/mod/lti/locallib.php'); -require_once($CFG->dirroot . '/mod/lti/db/upgradelib.php'); - - -/** - * Unit tests for mod_lti upgrades. - * - * @package mod_lti - * @since Moodle 2.8 - * @copyright 2014 Vital Source Technologies http://vitalsource.com - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class mod_lti_upgradelib_testcase extends advanced_testcase { - - /** - * Test conversion of semicolon separated custom parameters. - */ - public function test_custom_parameter() { - global $DB, $SITE, $USER; - - $custom1 = 'a=one;b=two;three=3'; - $custom2 = "a=one\nb=two\nthree=3"; - - $this->resetAfterTest(true); - - $ltigenerator = $this->getDataGenerator()->get_plugin_generator('mod_lti'); - - // Create 2 tools with custom parameters. - $toolid1 = $DB->insert_record('lti_types', array('course' => $SITE->id, 'baseurl' => '', 'createdby' => $USER->id, - 'timecreated' => time(), 'timemodified' => time())); - $configid1 = $DB->insert_record('lti_types_config', array('typeid' => $toolid1, 'name' => 'customparameters', - 'value' => $custom1)); - $toolid2 = $DB->insert_record('lti_types', array('course' => $SITE->id, 'baseurl' => '', 'createdby' => $USER->id, - 'timecreated' => time(), 'timemodified' => time())); - $configid2 = $DB->insert_record('lti_types_config', array('typeid' => $toolid2, 'name' => 'customparameters', - 'value' => $custom2)); - - // Create 2 instances with custom parameters. - $activity1 = $ltigenerator->create_instance(array('course' => $SITE->id, 'name' => 'LTI activity 1', - 'typeid' => $toolid1, 'toolurl' => '', 'instructorcustomparameters' => $custom1)); - $activity2 = $ltigenerator->create_instance(array('course' => $SITE->id, 'name' => 'LTI activity 2', - 'typeid' => $toolid2, 'toolurl' => '', 'instructorcustomparameters' => $custom2)); - - // Run upgrade script. - mod_lti_upgrade_custom_separator(); - - // Check semicolon-separated custom parameters have been updated but others have not. - $config = $DB->get_record('lti_types_config', array('id' => $configid1)); - $this->assertEquals($config->value, $custom2); - - $config = $DB->get_record('lti_types_config', array('id' => $configid2)); - $this->assertEquals($config->value, $custom2); - - $config = $DB->get_record('lti', array('id' => $activity1->id)); - $this->assertEquals($config->instructorcustomparameters, $custom2); - - $config = $DB->get_record('lti', array('id' => $activity2->id)); - $this->assertEquals($config->instructorcustomparameters, $custom2); - } - -} diff --git a/mod/lti/upgrade.txt b/mod/lti/upgrade.txt index bb605a8eaf8..c6d2a52f875 100644 --- a/mod/lti/upgrade.txt +++ b/mod/lti/upgrade.txt @@ -1,5 +1,11 @@ This files describes API changes in the lti code. +=== 3.4 === + +* The following functions, previously used (exclusively) by upgrade steps are not available + anymore because of the upgrade cleanup performed for this version. See MDL-57432 for more info: + - mod_lti_upgrade_custom_separator() + === 3.2 === * Support for LTI ContentItem message type. diff --git a/version.php b/version.php index 55c053e5664..f3b3600a6aa 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2017070700.00; // YYYYMMDD = weekly release date of this DEV branch. +$version = 2017071000.00; // YYYYMMDD = weekly release date of this DEV branch. // RR = release increments - 00 in DEV branches. // .XX = incremental changes.