You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

164 lines
6.7 KiB

<?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/>.
/**
* Upgrade scripts for course format "Tiles"
*
* @package format_tiles
* @copyright 2018 David Watson {@link http://evolutioncode.uk}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
/**
* Upgrade script for format_tiles
* Copied in part from the script for format "Topics"
*
* @param int $oldversion the version we are upgrading from
* @return bool result
* @throws coding_exception
* @throws dml_exception
* @throws downgrade_exception
* @throws file_exception
* @throws stored_file_creation_exception
* @throws upgrade_exception
*/
function xmldb_format_tiles_upgrade($oldversion) {
global $CFG, $DB;
require_once($CFG->dirroot . '/course/format/tiles/db/upgradelib.php');
if ($oldversion < 2017102700) {
// Remove 'numsections' option and hide or delete orphaned sections.
format_tiles_upgrade_remove_numsections();
// Where course format options not being used any more, clean up the old data.
format_tiles_remove_unused_format_options();
upgrade_plugin_savepoint(true, 2017102700, 'format', 'tiles');
}
// Automatically generated Moodle v3.3.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2018080103) {
// Rename the field "tiletopleftthistile" to "tileicon".
// The latter is much simpler and the former was only used for legacy reasons.
$DB->set_field('course_format_options', 'name', 'tileicon',
array('format' => 'tiles', 'name' => 'tiletopleftthistile'));
// Same for "defaulttiletopleftdisplay".
$DB->set_field('course_format_options', 'name', 'defaulttileicon',
array('format' => 'tiles', 'name' => 'defaulttiletopleftdisplay'));
// Delete any 'course default' records for tile icons as these are no longer used.
$DB->delete_records_select(
'course_format_options',
"format = 'tiles' AND name = 'tileicon' AND value = 'course default'"
);
// Delete any zero values for tile outcome id as these are no longer stored (represent no outcome selected).
$DB->delete_records_select(
'course_format_options',
"format = 'tiles' AND name = 'tileoutcomeid' AND value = '0'"
);
// Field headertextabovetiles and prefixtitlewithnumber were removed in this release so delete any settings.
$DB->delete_records_select(
'course_format_options',
"format = 'tiles' AND (name = 'headertextabovetiles' OR name = 'prefixtitlewithnumber')"
);
// Field courseusebarforheadings setting has been simplified to yes or no (1 or 0) instead of several options.
// So change all legacy values to 0 or 1.
$DB->set_field_select(
"course_format_options", "value", "1", "format='tiles' AND name = 'courseusebarforheadings' AND value != 'standard'"
);
$DB->set_field_select(
"course_format_options", "value", "0", "format='tiles' AND name = 'courseusebarforheadings' AND value = 'standard'"
);
// Which filter button a user previously had pressed is now stored in browser session storage.
// Same for whether sec zero is collapsed, so delete from database.
$DB->delete_records_select(
'user_preferences', $DB->sql_like("name", "?", false), array("format_tiles_filterbutton_%")
);
$DB->delete_records_select(
'user_preferences', $DB->sql_like("name", "?", false), array("format_tiles_collapseseczero_%")
);
$DB->set_field_select(
"course_format_options",
'value',
'handshake-o',
"format='tiles' AND value='handshake' and (name='tileicon' or name='defaulttileicon')"
);
$DB->set_field_select(
"course_format_options",
'value',
'calendar-check-o',
"format='tiles' AND value='calendar-check' and (name='tileicon' or name='defaulttileicon')"
);
unset_config('persistfilterbuttons', 'format_tiles'); // Removed functionality.
unset_config('fontimporttext', 'format_tiles'); // Removed functionality.
unset_config('fontfamilytext', 'format_tiles'); // Removed functionality.
unset_config('displaytileitems', 'format_tiles'); // Removed functionality.
unset_config('showiconslist', 'format_tiles'); // Removed functionality.
upgrade_plugin_savepoint(true, 2018080103, 'format', 'tiles');
}
if ($oldversion < 2019052100) {
// Check the "URL" box under admin settings "Modal resources" (this is a new setting we want on by default).
$setting = get_config('format_tiles', 'modalresources');
if ($setting == '') {
set_config('modalresources', 'url', 'format_tiles');
} else {
$setting = explode(",", get_config('format_tiles', 'modalresources'));
if (in_array('url', $setting) === false) {
$setting[] = 'url';
$setting = implode(",", $setting);
set_config('modalresources', $setting, 'format_tiles');
}
}
// Store the sample photo tile image in the database.
$fs = get_file_storage();
$filerecord = format_tiles\tile_photo::file_api_params();
$filerecord['contextid'] = \context_system::instance()->id;
$filerecord['itemid'] = 0;
$filerecord['mimetype'] = 'image/jpeg';
$filerecord['filename'] = 'sample_image.jpg';
$path = $CFG->dirroot . '/course/format/tiles/';
$existingfile = $fs->get_file(
$filerecord['contextid'],
$filerecord['component'],
$filerecord['filearea'],
$filerecord['itemid'],
$filerecord['filepath'],
$filerecord['filename']
);
if ($existingfile == false) {
$fs->create_file_from_pathname($filerecord, $path . $filerecord['filename']);
}
upgrade_plugin_savepoint(true, 2019052100, 'format', 'tiles');
}
return true;
}