Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

<?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/>.

/**
 * Database upgrade steps definition.
 *
 * @package    block_point_view
 * @copyright  2021 Astor Bizard
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

/**
 * Performs database actions to upgrade from older versions, if required.
 * @param int $oldversion Plugin version we are upgrading from.
 * @param object $block Block version information.
 * @return boolean
 */
function xmldb_block_point_view_upgrade($oldversion, $block) {
    global $DB, $OUTPUT;

    $v1x6 = 2021092308; // Block v1.6.
    if ($oldversion < $v1x6) {
        // Inform capability changes.
        echo $OUTPUT->notification('Some capabilities have changed
            (block/point_view:view -> X,
            block/point_view:access_menu -> block/point_view:access_overview),
            please check permissions on administration tab.', \core\output\notification::NOTIFY_INFO);

        $blockrecords = $DB->get_records('block_instances', [ 'blockname' => 'point_view' ]);
        foreach ($blockrecords as $blockrecord) {
            if (!empty($blockrecord->configdata)) {
                $blockinstance = block_instance('point_view', $blockrecord);

                // Rename some settings.
                $config = clone($blockinstance->config);
                if (isset($config->enable_point_views_checkbox)) {
                    $config->enable_point_views = $config->enable_point_views_checkbox;
                    unset($config->enable_point_views_checkbox);
                }

                if (isset($config->enable_difficulties_checkbox)) {
                    $config->enable_difficultytracks = $config->enable_difficulties_checkbox;
                    unset($config->enable_difficulties_checkbox);
                }

                // Emoji selection has changed, update corresponding settings.
                if (!isset($config->pixselect)) {
                    $custompix = isset($config->enable_pix_checkbox) && $config->enable_pix_checkbox;
                    if ($custompix) {
                        $config->pixselect = 'custom';
                    } else if (get_config('block_point_view', 'enable_pix_admin')) {
                        $config->pixselect = 'admin';
                    } else {
                        $config->pixselect = 'default';
                    }
                }
                unset($config->enable_pix_checkbox);

                $DB->update_record('block_instances', [
                        'id' => $blockrecord->id,
                        'configdata' => base64_encode(serialize($config)),
                        'timemodified' => time(),
                ]);
            }
        }
        upgrade_block_savepoint( true , $v1x6, 'point_view');
    }

    return true;
}