Proyectos de Subversion Moodle

Rev

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

<?php
// This file is part of Moodle - https://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 <https://www.gnu.org/licenses/>.

/**
 * Library of interface functions and constants.
 *
 * @package     mod_stickynotes
 * @copyright   2021 Olivier VALENTIN
 * @license     https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

defined('MOODLE_INTERNAL') || die();

/**
 * Execute mod_stickynotes upgrade from the given old version.
 *
 * @param int $oldversion
 * @return bool
 */
function xmldb_stickynotes_upgrade($oldversion) {
    global $DB;

    $dbman = $DB->get_manager();
    if ($oldversion < 2021051002) {
        $table = new xmldb_table('stickynotes_note');
        $field = $table->add_field('ordernote', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0');

        if (!$dbman->field_exists($table, $field)) {
            $dbman->add_field($table, $field);
        }

        $ids = $DB->get_fieldset_sql('SELECT sn.id FROM {stickynotes} sn WHERE sn.id > 0');
        if (!empty($ids)) {
            foreach ($ids as $id) {
                $cols = $DB->get_records('stickynotes_column', array('stickyid' => $id), '', '*');
                foreach ($cols as $col) {
                    $notes = $DB->get_records('stickynotes_note', array('stickycolid' => $col->id), '', '*');
                    $i = 0;
                    foreach ($notes as $note) {
                        $obj = new stdClass();
                        $obj->id = $note->id;
                        $obj->ordernote = $i + 1;
                        $DB->update_record('stickynotes_note', $obj);
                        $i = $obj->ordernote;
                    }
                }
            }
        }
        
        // Sticky notes savepoint reached.
        upgrade_mod_savepoint(true, 2021051002, 'stickynotes');
    }
    if ($oldversion < 2021110403) {
        $table = new xmldb_table('stickynotes');
        $field1 = $table->add_field('displaystickydesc', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0');
        $field2 = $table->add_field('displaystickycaption', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0');

        if (!$dbman->field_exists($table, $field1)) {
            $dbman->add_field($table, $field1);
        }
        if (!$dbman->field_exists($table, $field2)) {
            $dbman->add_field($table, $field2);
        }
        
        // Sticky notes savepoint reached.
        upgrade_mod_savepoint(true, 2021110403, 'stickynotes');
    }
    if ($oldversion < 2021110404) {
    // Upgrade code.
    upgrade_mod_savepoint(true, 2021110404, 'stickynotes');
    }
    if ($oldversion < 2022071804) {
    // Upgrade code.
    upgrade_mod_savepoint(true, 2022071804, 'stickynotes');
    }
    // Add feature to move all notes or not for students.
    if ($oldversion < 2023101706) {
        $table = new xmldb_table('stickynotes');
        $field1 = $table->add_field('moveallnotes', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0');
        $field2 = $table->add_field('seeallnotes', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '1');

        if (!$dbman->field_exists($table, $field1)) {
            $dbman->add_field($table, $field1);
        }
        if (!$dbman->field_exists($table, $field2)) {
            $dbman->add_field($table, $field2);
        }
        // Sticky notes savepoint reached.
        upgrade_mod_savepoint(true, 2023101706, 'stickynotes');
    }
    if ($oldversion < 2023101707) {
        // Upgrade code.
        upgrade_mod_savepoint(true, 2023112307, 'stickynotes');
        }
    // Add completion on notes creation.
    if ($oldversion < 2023112312) {
        $table = new xmldb_table('stickynotes');
        $field = $table->add_field('completionstickynotes', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0');

        if (!$dbman->field_exists($table, $field)) {
            $dbman->add_field($table, $field);
        }
        // Sticky notes savepoint reached.
        upgrade_mod_savepoint(true, 2023112312, 'stickynotes');
    }
    // Add locks functions for notes creation and votes.
    if ($oldversion < 2023121301) {
        $table = new xmldb_table('stickynotes');
        $field1 = $table->add_field('locknotes', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0');
        $field2 = $table->add_field('lockvotes', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0');

        if (!$dbman->field_exists($table, $field1)) {
            $dbman->add_field($table, $field1);
        }
        if (!$dbman->field_exists($table, $field2)) {
            $dbman->add_field($table, $field2);
        }
        // Sticky notes savepoint reached.
        upgrade_mod_savepoint(true, 2023121301, 'stickynotes');
    }
    // Upgrade version - Text color and strings bug.
    // Delete field to display description - function deleted in settings.
    if ($oldversion < 2024021501) {
        $table = new xmldb_table('stickynotes');
        $field = new xmldb_field('displaystickydesc');
        // Launch displaystickydesc field.
        $dbman->drop_field($table, $field);
        // Sticky notes savepoint reached.
        upgrade_mod_savepoint(true, 2024021501, 'stickynotes');
    }
    return true;
}