moodle-mod_hvp中db/upgrade.php代码详解
时间: 2023-12-03 07:45:02 浏览: 114
moodle-mod_hvp是Moodle平台上的一个模块,用于创建交互式视频内容。下面是db/upgrade.php文件的详细解释:
1. 文件头部分:定义了文件的版权信息和依赖关系。
```
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2020071000; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018051700; // Requires this Moodle version.
$plugin->component = 'mod_hvp'; // Full name of the plugin (used for diagnostics).
```
2. upgrade_plugin_savepoint()函数:该函数用于升级插件版本,如果需要在升级过程中执行SQL语句,则需要在该函数中添加。
```
function xmldb_hvp_upgrade($oldversion) {
global $DB;
$dbman = $DB->get_manager();
if ($oldversion < 2019072200) {
// Define table hvp_quiz_attempt to be created.
$table = new xmldb_table('hvp_quiz_attempt');
// Adding fields to table hvp_quiz_attempt.
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('hvpquiz', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
$table->add_field('userid', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
$table->add_field('started', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
$table->add_field('finished', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
$table->add_field('score', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null);
$table->add_field('status', XMLDB_TYPE_INTEGER, '2', null, null, null, null);
// Adding keys to table hvp_quiz_attempt.
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
// Conditionally launch create table for hvp_quiz_attempt.
if (!$dbman->table_exists($table)) {
$dbman->create_table($table);
}
// HVP savepoint reached.
upgrade_plugin_savepoint(true, 2019072200, 'mod', 'hvp');
}
}
```
3. 添加表格和字段:在该升级脚本中,我们创建了一个名为hvp_quiz_attempt的表格,并在该表格中添加了一些字段。
```
// Define table hvp_quiz_attempt to be created.
$table = new xmldb_table('hvp_quiz_attempt');
// Adding fields to table hvp_quiz_attempt.
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('hvpquiz', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
$table->add_field('userid', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
$table->add_field('started', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
$table->add_field('finished', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
$table->add_field('score', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null);
$table->add_field('status', XMLDB_TYPE_INTEGER, '2', null, null, null, null);
// Adding keys to table hvp_quiz_attempt.
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
// Conditionally launch create table for hvp_quiz_attempt.
if (!$dbman->table_exists($table)) {
$dbman->create_table($table);
}
```
4. 升级插件版本:在升级过程中,我们需要确保新的升级脚本只运行一次。这里使用upgrade_plugin_savepoint()函数来实现,该函数在第一次运行时创建一个保存点,然后将保存点的版本与插件版本进行比较。如果插件版本低于保存点版本,则运行升级脚本。
```
// HVP savepoint reached.
upgrade_plugin_savepoint(true, 2019072200, 'mod', 'hvp');
```
上述代码片段中的`2019072200`是一个版本号,它代表了插件的当前版本。当插件版本发生更改时,该版本号应更新为新的版本号。
总的来说,db/upgrade.php文件是用于升级Moodle模块的重要文件,它可以确保插件的数据库结构得到正确的更新和修改。
阅读全文