Вызов неопределенной функции в upgradelib.php при обновлении

Я делаю обновление для плагина Moodle. В основном все, что я хочу сделать, это добавить некоторые поля в существующую таблицу в базе данных.

Вот мой upgrade.php, созданный из редактора XMLDB:

function xmldb_qtype_myqtype_upgrade($oldversion = 0) {
global $DB;
$dbman = $DB->get_manager();

$result = true;

if ($oldversion < 2013031601) {

    // Define table solib to be created
    $table = new xmldb_table('solib');

    // Adding fields to table solib
    $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
    $table->add_field('course', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0');
    $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null);
    $table->add_field('timestamp', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
    $table->add_field('server_addr', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null);
    $table->add_field('access_token', XMLDB_TYPE_INTEGER, '20', null, XMLDB_NOTNULL, null, null);

    // Adding keys to table solib
    $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));

    // Conditionally launch create table for solib
    if (!$dbman->table_exists($table)) {
        $dbman->create_table($table);
    }

    // solib savepoint reached
    upgrade_mod_savepoint(true, 2013031601, 'solib');
}

return $result;
}

Я также обновил файл install.xml, даже если я не уверен, что это мешает обновлению, это только для новых пользователей плагина.

Затем я меняю номер версии в version.php и запускаю обновление, но всегда сталкиваюсь с этой ошибкой:

Fatal error: Call to undefined function xmldb_solib_upgrade() in /var/www/moodle/lib/upgradelib.php on line 629

Я предполагаю, что это не ошибка Moodle, и я что-то упускаю. Но что? Я сделал что-то неправильно?


person thibaultcha    schedule 18.03.2013    source источник


Ответы (1)


Решено.

xmldb_qtype_myqtype_upgrade()

необходимо определить как:

xmldb_solib_upgrade() // plugin name as 'qtype_myqtype'

Основная причина, по которой я не понял ошибку, заключалась в том, что она находилась в /moodle/lib/upgradelib.php, а не в файле дампа: /moodle/mod/solib/db/upgrade.php. Эта точность также не очень ясна в документации.

person thibaultcha    schedule 19.03.2013