From a190e2defce9e0afe722eb008fa0502366d0244a Mon Sep 17 00:00:00 2001 From: Peter Dias Date: Fri, 25 Feb 2022 12:18:32 +0800 Subject: [PATCH] MDL-72092 timeline: Change the default location for the block Add/Change the default location of the block on /my pages --- blocks/timeline/db/upgrade.php | 94 ++++++++++++++++++++++++++++++++++ blocks/timeline/version.php | 2 +- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 blocks/timeline/db/upgrade.php diff --git a/blocks/timeline/db/upgrade.php b/blocks/timeline/db/upgrade.php new file mode 100644 index 00000000000..ac1512ef7ef --- /dev/null +++ b/blocks/timeline/db/upgrade.php @@ -0,0 +1,94 @@ +. + +/** + * This file keeps track of upgrades to the timeline block + * + * Sometimes, changes between versions involve alterations to database structures + * and other major things that may break installations. + * + * The upgrade function in this file will attempt to perform all the necessary + * actions to upgrade your older installation to the current version. + * + * If there's something it cannot do itself, it will tell you what you need to do. + * + * The commands in here will all be database-neutral, using the methods of + * database_manager class + * + * Please do not forget to use upgrade_set_timeout() + * before any action that may take longer time to finish. + * + * @package block_timeline + * @copyright 2022 Peter Dias + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +/** + * Upgrade the timeline block + * @param int $oldversion + * @param object $block + */ +function xmldb_block_timeline_upgrade($oldversion, $block) { + global $CFG, $DB; + + // Automatically generated Moodle v3.6.0 release upgrade line. + // Put any upgrade step following this. + + // Automatically generated Moodle v3.7.0 release upgrade line. + // Put any upgrade step following this. + + // Automatically generated Moodle v3.8.0 release upgrade line. + // Put any upgrade step following this. + + // Automatically generated Moodle v3.9.0 release upgrade line. + // Put any upgrade step following this. + + if ($oldversion < 2022030200) { + $context = context_system::instance(); + + // Begin looking for any and all customised /my pages. + $pageselect = 'name = :name and private = :private'; + $pageparams['name'] = '__default'; + $pageparams['private'] = 1; + $pages = $DB->get_recordset_select('my_pages', $pageselect, $pageparams); + foreach ($pages as $subpage) { + $blockinstance = $DB->get_record('block_instances', ['blockname' => 'timeline', + 'pagetypepattern' => 'my-index', 'subpagepattern' => $subpage->id]); + + if (!$blockinstance) { + // Insert the timeline into the default index page. + $blockinstance = new stdClass; + $blockinstance->blockname = 'timeline'; + $blockinstance->parentcontextid = $context->id; + $blockinstance->showinsubcontexts = false; + $blockinstance->pagetypepattern = 'my-index'; + $blockinstance->subpagepattern = $subpage->id; + $blockinstance->defaultregion = 'content'; + $blockinstance->defaultweight = -10; + $blockinstance->timecreated = time(); + $blockinstance->timemodified = time(); + $DB->insert_record('block_instances', $blockinstance); + } else if ($blockinstance->defaultregion !== 'content') { + $blockinstance->defaultregion = 'content'; + $DB->update_record('block_instances', $blockinstance); + } + } + $pages->close(); + upgrade_block_savepoint(true, 2022030200, 'timeline', false); + } + + return true; +} diff --git a/blocks/timeline/version.php b/blocks/timeline/version.php index b088df0d0c4..6509cef84cb 100644 --- a/blocks/timeline/version.php +++ b/blocks/timeline/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2021052500; // The current plugin version (Date: YYYYMMDDXX). +$plugin->version = 2022030200; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2021052500; // Requires this Moodle version. $plugin->component = 'block_timeline'; // Full name of the plugin (used for diagnostics).