本文整理汇总了PHP中build_context_path函数的典型用法代码示例。如果您正苦于以下问题:PHP build_context_path函数的具体用法?PHP build_context_path怎么用?PHP build_context_path使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了build_context_path函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: test_everything_in_accesslib
//.........这里部分代码省略.........
// =================================================================
// ======= basic test of legacy functions ==========================
// =================================================================
// note: watch out, the fake site might be pretty borked already
$this->assertSame(get_system_context(), context_system::instance());
foreach ($DB->get_records('context') as $contextid=>$record) {
$context = context::instance_by_id($contextid);
$this->assertSame(get_context_instance_by_id($contextid), $context);
$this->assertSame(get_context_instance($record->contextlevel, $record->instanceid), $context);
$this->assertSame(get_parent_contexts($context), $context->get_parent_context_ids());
if ($context->id == SYSCONTEXTID) {
$this->assertSame(get_parent_contextid($context), false);
} else {
$this->assertSame(get_parent_contextid($context), $context->get_parent_context()->id);
}
}
$CFG->debug = 0;
$children = get_child_contexts($systemcontext);
$CFG->debug = DEBUG_DEVELOPER;
$this->assertEquals(count($children), $DB->count_records('context')-1);
unset($children);
$DB->delete_records('context', array('contextlevel'=>CONTEXT_BLOCK));
create_contexts();
$this->assertFalse($DB->record_exists('context', array('contextlevel'=>CONTEXT_BLOCK)));
$DB->set_field('context', 'depth', 0, array('contextlevel'=>CONTEXT_BLOCK));
build_context_path();
$this->assertFalse($DB->record_exists('context', array('depth'=>0)));
$lastcourse = $DB->get_field_sql("SELECT MAX(id) FROM {course}");
$DB->delete_records('course', array('id'=>$lastcourse));
$lastcategory = $DB->get_field_sql("SELECT MAX(id) FROM {course_categories}");
$DB->delete_records('course_categories', array('id'=>$lastcategory));
$lastuser = $DB->get_field_sql("SELECT MAX(id) FROM {user} WHERE deleted=0");
$DB->delete_records('user', array('id'=>$lastuser));
$DB->delete_records('block_instances', array('parentcontextid'=>$frontpagepagecontext->id));
$DB->delete_records('course_modules', array('id'=>$frontpagepagecontext->instanceid));
cleanup_contexts();
$count = 1; //system
$count += $DB->count_records('user', array('deleted'=>0));
$count += $DB->count_records('course_categories');
$count += $DB->count_records('course');
$count += $DB->count_records('course_modules');
$count += $DB->count_records('block_instances');
$this->assertEquals($DB->count_records('context'), $count);
context_helper::reset_caches();
preload_course_contexts($SITE->id);
$this->assertEquals(context_inspection::test_context_cache_size(), 1);
context_helper::reset_caches();
list($select, $join) = context_instance_preload_sql('c.id', CONTEXT_COURSECAT, 'ctx');
$sql = "SELECT c.id $select FROM {course_categories} c $join";
$records = $DB->get_records_sql($sql);
foreach ($records as $record) {
context_instance_preload($record);
$record = (array)$record;
$this->assertEquals(1, count($record)); // only id left
}
示例2: rebuild_contexts
/**
* Rebuild all related context depth and path caches
* @param array $fixcontexts array of contexts
*/
function rebuild_contexts(array $fixcontexts)
{
global $DB;
foreach ($fixcontexts as $context) {
if ($context->path) {
mark_context_dirty($context->path);
}
$DB->set_field_select('context', 'depth', 0, "path LIKE '%/{$context->id}/%'");
$DB->set_field('context', 'depth', 0, array('id' => $context->id));
}
build_context_path(false);
}
示例3: xmldb_main_upgrade
//.........这里部分代码省略.........
$index = new XMLDBIndex('idnumber-course');
$index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('idnumber', 'course'));
/// Launch add index idnumber-course
$result = $result && add_index($table, $index);
/// Define index idnumber-courseid (not unique) to be added to grade_items
$table = new XMLDBTable('grade_items');
$index = new XMLDBIndex('idnumber-courseid');
$index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('idnumber', 'courseid'));
/// Launch add index idnumber-courseid
$result = $result && add_index($table, $index);
upgrade_main_savepoint($result, 2007090600);
}
/// Create the permanent context_temp table to be used by build_context_path()
if ($result && $oldversion < 2007092001) {
/// Define table context_temp to be created
$table = new XMLDBTable('context_temp');
/// Adding fields to table context_temp
$table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
$table->addFieldInfo('path', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
$table->addFieldInfo('depth', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
/// Adding keys to table context_temp
$table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id'));
/// Launch create table for context_temp
$result = $result && create_table($table);
/// make sure category depths, parents and paths are ok, categories from 1.5 may not be properly initialized (MDL-12585)
upgrade_fix_category_depths();
/// Recalculate depths, paths and so on
if (!empty($CFG->rolesactive)) {
cleanup_contexts();
// make sure all course, category and user contexts exist - we need it for grade letter upgrade, etc.
create_contexts(CONTEXT_COURSE, false, true);
create_contexts(CONTEXT_USER, false, true);
// we need all contexts path/depths filled properly
build_context_path(true, true);
load_all_capabilities();
} else {
// upgrade from 1.6 - build all contexts
create_contexts(null, true, true);
}
upgrade_main_savepoint($result, 2007092001);
}
/**
* Merging of grade_grades_text back into grade_grades
*/
if ($result && $oldversion < 2007092002) {
/// Define field feedback to be added to grade_grades
$table = new XMLDBTable('grade_grades');
$field = new XMLDBField('feedback');
$field->setAttributes(XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null, 'excluded');
if (!field_exists($table, $field)) {
/// Launch add field feedback
$result = $result && add_field($table, $field);
}
/// Define field feedbackformat to be added to grade_grades
$table = new XMLDBTable('grade_grades');
$field = new XMLDBField('feedbackformat');
$field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'feedback');
if (!field_exists($table, $field)) {
/// Launch add field feedbackformat
$result = $result && add_field($table, $field);
}
/// Define field information to be added to grade_grades
$table = new XMLDBTable('grade_grades');
$field = new XMLDBField('information');
$field->setAttributes(XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null, 'feedbackformat');
if (!field_exists($table, $field)) {
示例4: create_contexts
/**
* Precreates all contexts including all parents
* @param int $contextlevel, empty means all
* @param bool $buildpaths update paths and depths
* @param bool $feedback show sql feedback
* @return void
*/
function create_contexts($contextlevel = null, $buildpaths = true, $feedback = false)
{
global $CFG;
//make sure system context exists
$syscontext = get_system_context(false);
if (empty($contextlevel) or $contextlevel == CONTEXT_COURSECAT or $contextlevel == CONTEXT_COURSE or $contextlevel == CONTEXT_MODULE or $contextlevel == CONTEXT_BLOCK) {
$sql = "INSERT INTO {$CFG->prefix}context (contextlevel, instanceid)\n SELECT " . CONTEXT_COURSECAT . ", cc.id\n FROM {$CFG->prefix}course_categories cc\n WHERE NOT EXISTS (SELECT 'x'\n FROM {$CFG->prefix}context cx\n WHERE cc.id = cx.instanceid AND cx.contextlevel=" . CONTEXT_COURSECAT . ")";
execute_sql($sql, $feedback);
}
if (empty($contextlevel) or $contextlevel == CONTEXT_COURSE or $contextlevel == CONTEXT_MODULE or $contextlevel == CONTEXT_BLOCK) {
$sql = "INSERT INTO {$CFG->prefix}context (contextlevel, instanceid)\n SELECT " . CONTEXT_COURSE . ", c.id\n FROM {$CFG->prefix}course c\n WHERE NOT EXISTS (SELECT 'x'\n FROM {$CFG->prefix}context cx\n WHERE c.id = cx.instanceid AND cx.contextlevel=" . CONTEXT_COURSE . ")";
execute_sql($sql, $feedback);
}
if (empty($contextlevel) or $contextlevel == CONTEXT_MODULE) {
$sql = "INSERT INTO {$CFG->prefix}context (contextlevel, instanceid)\n SELECT " . CONTEXT_MODULE . ", cm.id\n FROM {$CFG->prefix}course_modules cm\n WHERE NOT EXISTS (SELECT 'x'\n FROM {$CFG->prefix}context cx\n WHERE cm.id = cx.instanceid AND cx.contextlevel=" . CONTEXT_MODULE . ")";
execute_sql($sql, $feedback);
}
if (empty($contextlevel) or $contextlevel == CONTEXT_BLOCK) {
$sql = "INSERT INTO {$CFG->prefix}context (contextlevel, instanceid)\n SELECT " . CONTEXT_BLOCK . ", bi.id\n FROM {$CFG->prefix}block_instance bi\n WHERE NOT EXISTS (SELECT 'x'\n FROM {$CFG->prefix}context cx\n WHERE bi.id = cx.instanceid AND cx.contextlevel=" . CONTEXT_BLOCK . ")";
execute_sql($sql, $feedback);
}
if (empty($contextlevel) or $contextlevel == CONTEXT_USER) {
$sql = "INSERT INTO {$CFG->prefix}context (contextlevel, instanceid)\n SELECT " . CONTEXT_USER . ", u.id\n FROM {$CFG->prefix}user u\n WHERE u.deleted=0\n AND NOT EXISTS (SELECT 'x'\n FROM {$CFG->prefix}context cx\n WHERE u.id = cx.instanceid AND cx.contextlevel=" . CONTEXT_USER . ")";
execute_sql($sql, $feedback);
}
if ($buildpaths) {
build_context_path(false, $feedback);
}
}
示例5: cron_run
//.........这里部分代码省略.........
notify_login_failures();
mtrace('Notified login failured');
}
flush();
//
// generate new password emails for users
//
mtrace('checking for create_password');
if ($DB->count_records('user_preferences', array('name' => 'create_password', 'value' => '1'))) {
mtrace('creating passwords for new users');
$newusers = $DB->get_records_sql("SELECT u.id as id, u.email, u.firstname,\n u.lastname, u.username,\n p.id as prefid\n FROM {user} u\n JOIN {user_preferences} p ON u.id=p.userid\n WHERE p.name='create_password' AND p.value='1' AND u.email !='' ");
foreach ($newusers as $newuserid => $newuser) {
// email user
if (setnew_password_and_mail($newuser)) {
// remove user pref
$DB->delete_records('user_preferences', array('id' => $newuser->prefid));
} else {
trigger_error("Could not create and mail new user password!");
}
}
}
if (!empty($CFG->usetags)) {
require_once $CFG->dirroot . '/tag/lib.php';
tag_cron();
mtrace('Executed tag cron');
}
// Accesslib stuff
cleanup_contexts();
mtrace('Cleaned up contexts');
gc_cache_flags();
mtrace('Cleaned cache flags');
// If you suspect that the context paths are somehow corrupt
// replace the line below with: build_context_path(true);
build_context_path();
mtrace('Built context paths');
if (!empty($CFG->messagingdeletereadnotificationsdelay)) {
$notificationdeletetime = time() - $CFG->messagingdeletereadnotificationsdelay;
$DB->delete_records_select('message_read', 'notification=1 AND timeread<:notificationdeletetime', array('notificationdeletetime' => $notificationdeletetime));
mtrace('Cleaned up read notifications');
}
mtrace("Finished clean-up tasks...");
}
// End of occasional clean-up tasks
// Run automated backups if required.
require_once $CFG->dirroot . '/backup/util/includes/backup_includes.php';
require_once $CFG->dirroot . '/backup/util/helper/backup_cron_helper.class.php';
backup_cron_automated_helper::run_automated_backup();
/// Run the auth cron, if any
/// before enrolments because it might add users that will be needed in enrol plugins
$auths = get_enabled_auth_plugins();
mtrace("Running auth crons if required...");
foreach ($auths as $auth) {
$authplugin = get_auth_plugin($auth);
if (method_exists($authplugin, 'cron')) {
mtrace("Running cron for auth/{$auth}...");
$authplugin->cron();
if (!empty($authplugin->log)) {
mtrace($authplugin->log);
}
}
unset($authplugin);
}
mtrace("Running enrol crons if required...");
$enrols = enrol_get_plugins(true);
foreach ($enrols as $ename => $enrol) {
// do this for all plugins, disabled plugins might want to cleanup stuff such as roles
示例6: upgrade_core
/**
* Upgrade moodle core
* @param float $version target version
* @param bool $verbose
* @return void, may throw exception
*/
function upgrade_core($version, $verbose)
{
global $CFG;
raise_memory_limit(MEMORY_EXTRA);
require_once $CFG->libdir . '/db/upgrade.php';
// Defines upgrades
try {
// Reset caches before any output
purge_all_caches();
// Upgrade current language pack if we can
if (empty($CFG->skiplangupgrade)) {
if (get_string_manager()->translation_exists(current_language())) {
upgrade_language_pack(false);
}
}
print_upgrade_part_start('moodle', false, $verbose);
// one time special local migration pre 2.0 upgrade script
if ($version < 2007101600) {
$pre20upgradefile = "{$CFG->dirrot}/local/upgrade_pre20.php";
if (file_exists($pre20upgradefile)) {
set_time_limit(0);
require $pre20upgradefile;
// reset upgrade timeout to default
upgrade_set_timeout();
}
}
$result = xmldb_main_upgrade($CFG->version);
if ($version > $CFG->version) {
// store version if not already there
upgrade_main_savepoint($result, $version, false);
}
// perform all other component upgrade routines
update_capabilities('moodle');
log_update_descriptions('moodle');
external_update_descriptions('moodle');
events_update_definition('moodle');
message_update_providers('moodle');
// Reset caches again, just to be sure
purge_all_caches();
// Clean up contexts - more and more stuff depends on existence of paths and contexts
cleanup_contexts();
create_contexts();
build_context_path();
$syscontext = get_context_instance(CONTEXT_SYSTEM);
mark_context_dirty($syscontext->path);
print_upgrade_part_end('moodle', false, $verbose);
} catch (Exception $ex) {
upgrade_handle_exception($ex);
}
}
示例7: test_everything_in_accesslib
//.........这里部分代码省略.........
}
// We keep the first 100 cached
$prevsize = context_inspection::test_context_cache_size();
for ($i = 0; $i < 100; $i++) {
context_user::instance($testusers[$i]);
$this->assertEqual(context_inspection::test_context_cache_size(), $prevsize);
}
context_user::instance($testusers[102]);
$this->assertEqual(context_inspection::test_context_cache_size(), $prevsize + 1);
unset($testusers);
// =================================================================
// ======= basic test of legacy functions ==========================
// =================================================================
// note: watch out, the fake site might be pretty borked already
$this->assertIdentical(get_system_context(), context_system::instance());
foreach ($DB->get_records('context') as $contextid => $record) {
$context = context::instance_by_id($contextid);
$this->assertIdentical(get_context_instance_by_id($contextid), $context);
$this->assertIdentical(get_context_instance($record->contextlevel, $record->instanceid), $context);
$this->assertIdentical(get_parent_contexts($context), $context->get_parent_context_ids());
if ($context->id == SYSCONTEXTID) {
$this->assertIdentical(get_parent_contextid($context), false);
} else {
$this->assertIdentical(get_parent_contextid($context), $context->get_parent_context()->id);
}
}
$children = get_child_contexts($systemcontext);
$this->assertEqual(count($children), $DB->count_records('context') - 1);
unset($children);
$DB->delete_records('context', array('contextlevel' => CONTEXT_BLOCK));
create_contexts();
$this->assertFalse($DB->record_exists('context', array('contextlevel' => CONTEXT_BLOCK)));
$DB->set_field('context', 'depth', 0, array('contextlevel' => CONTEXT_BLOCK));
build_context_path();
$this->assertFalse($DB->record_exists('context', array('depth' => 0)));
$lastcourse = $DB->get_field_sql("SELECT MAX(id) FROM {course}");
$DB->delete_records('course', array('id' => $lastcourse));
$lastcategory = $DB->get_field_sql("SELECT MAX(id) FROM {course_categories}");
$DB->delete_records('course_categories', array('id' => $lastcategory));
$lastuser = $DB->get_field_sql("SELECT MAX(id) FROM {user} WHERE deleted=0");
$DB->delete_records('user', array('id' => $lastuser));
$DB->delete_records('block_instances', array('parentcontextid' => $frontpagepagecontext->id));
$DB->delete_records('course_modules', array('id' => $frontpagepagecontext->instanceid));
cleanup_contexts();
$count = 1;
//system
$count += $DB->count_records('user', array('deleted' => 0));
$count += $DB->count_records('course_categories');
$count += $DB->count_records('course');
$count += $DB->count_records('course_modules');
$count += $DB->count_records('block_instances');
$this->assertEqual($DB->count_records('context'), $count);
context_helper::reset_caches();
preload_course_contexts($SITE->id);
$this->assertEqual(context_inspection::test_context_cache_size(), 1);
context_helper::reset_caches();
list($select, $join) = context_instance_preload_sql('c.id', CONTEXT_COURSECAT, 'ctx');
$sql = "SELECT c.id {$select} FROM {course_categories} c {$join}";
$records = $DB->get_records_sql($sql);
foreach ($records as $record) {
context_instance_preload($record);
$record = (array) $record;
$this->assertEqual(1, count($record));
// only id left
}
$this->assertEqual(count($records), context_inspection::test_context_cache_size());
示例8: update
function update()
{
global $CFG;
global $CURMAN;
$old = new cluster($this->id);
$parent_obj = new cluster($this->parent);
$this->depth = empty($parent_obj->depth) ? 1 : $parent_obj->depth + 1;
$result = parent::update();
if ($this->parent != $old->parent) {
$cluster_context_level = context_level_base::get_custom_context_level('cluster', 'block_curr_admin');
$cluster_context_instance = get_context_instance($cluster_context_level, $this->id);
// find all subclusters and adjust their depth
$delta_depth = $this->depth - $old->depth;
$sql = "UPDATE {$CURMAN->db->prefix_table(CLSTTABLE)}\n SET depth = depth + {$delta_depth}\n WHERE id IN (SELECT instanceid\n FROM {$CURMAN->db->prefix_table('context')}\n WHERE contextlevel = {$cluster_context_level}\n AND path LIKE '{$cluster_context_instance->path}/%')";
execute_sql($sql, false);
// Blank out the depth and path for associated records and child records in context table
$sql = "UPDATE {$CFG->prefix}context\n SET depth=0, path=NULL\n WHERE id={$cluster_context_instance->id} OR path LIKE '{$cluster_context_instance->path}/%'";
execute_sql($sql, false);
// Rebuild any blanked out records in context table
build_context_path();
}
$plugins = cluster::get_plugins();
foreach ($plugins as $plugin) {
require_once CURMAN_DIRLOCATION . '/cluster/' . $plugin . '/lib.php';
call_user_func('cluster_' . $plugin . '_update', $this);
}
$result = $result && field_data::set_for_context_from_datarecord('cluster', $this);
events_trigger('crlm_cluster_updated', $this);
return $result;
}
示例9: xmldb_main_upgrade
//.........这里部分代码省略.........
if ($result && $oldversion < 2009061704) {
// change component string in capability records to new "_" format
if ($caps = $DB->get_records('capabilities')) {
foreach ($caps as $cap) {
$cap->component = str_replace('/', '_', $cap->component);
$DB->update_record('capabilities', $cap);
}
}
unset($caps);
upgrade_main_savepoint($result, 2009061704);
}
if ($result && $oldversion < 2009061705) {
// change component string in events_handlers records to new "_" format
if ($handlers = $DB->get_records('events_handlers')) {
foreach ($handlers as $handler) {
$handler->handlermodule = str_replace('/', '_', $handler->handlermodule);
$DB->update_record('events_handlers', $handler);
}
}
unset($handlers);
upgrade_main_savepoint($result, 2009061705);
}
if ($result && $oldversion < 2009061706) {
// change component string in message_providers records to new "_" format
if ($mps = $DB->get_records('message_providers')) {
foreach ($mps as $mp) {
$mp->component = str_replace('/', '_', $mp->component);
$DB->update_record('message_providers', $cap);
}
}
unset($caps);
upgrade_main_savepoint($result, 2009061706);
}
if ($result && $oldversion < 2009063000) {
// upgrade format of _with_advanced settings - quiz only
// note: this can be removed later, not needed for upgrades from 1.9.x
if ($quiz = get_config('quiz')) {
foreach ($quiz as $name => $value) {
if (strpos($name, 'fix_') !== 0) {
continue;
}
$newname = substr($name, 4) . '_adv';
set_config($newname, $value, 'quiz');
unset_config($name, 'quiz');
}
}
upgrade_main_savepoint($result, 2009063000);
}
if ($result && $oldversion < 2009070100) {
// MDL-19677 Change $CFG->bloglevel to BLOG_SITE_LEVEL if BLOG_COURSE_LEVEL or BLOG_GROUP_LEVEL
$current_bloglevel = get_config(null, 'bloglevel');
if ($current_bloglevel == BLOG_GROUP_LEVEL || $current_bloglevel == BLOG_COURSE_LEVEL) {
set_config('bloglevel', BLOG_SITE_LEVEL);
}
/// Main savepoint reached
upgrade_main_savepoint($result, 2009070100);
}
if ($result && $oldversion < 2009071000) {
/// Rename field contextid on table block_instances to parentcontextid
$table = new xmldb_table('block_instances');
$field = new xmldb_field('contextid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, 'blockname');
/// Launch rename field parentcontextid
$dbman->rename_field($table, $field, 'parentcontextid');
/// Main savepoint reached
upgrade_main_savepoint($result, 2009071000);
}
if ($result && $oldversion < 2009071300) {
/// Create contexts for every block. In the past, only non-sticky course block had contexts.
/// This is a copy of the code in create_contexts.
$sql = "INSERT INTO {context} (contextlevel, instanceid)\n SELECT " . CONTEXT_BLOCK . ", bi.id\n FROM {block_instances} bi\n WHERE NOT EXISTS (SELECT 'x'\n FROM {context} ctx\n WHERE bi.id = ctx.instanceid AND ctx.contextlevel=" . CONTEXT_BLOCK . ")";
$DB->execute($sql);
/// TODO MDL-19776 We should not really use API funcitons in upgrade.
/// If MDL-19776 is done, we can remove this whole upgrade block.
build_context_path();
/// Main savepoint reached
upgrade_main_savepoint($result, 2009071300);
}
if ($result && $oldversion < 2009072400) {
/// Define table comments to be created
$table = new xmldb_table('comments');
/// Adding fields to table comments
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('contextid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null);
$table->add_field('commentarea', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null);
$table->add_field('itemid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null);
$table->add_field('content', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null);
$table->add_field('format', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0');
$table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null);
$table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null);
/// Adding keys to table comments
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
/// Conditionally launch create table for comments
if (!$dbman->table_exists($table)) {
$dbman->create_table($table);
}
/// Main savepoint reached
upgrade_main_savepoint($result, 2009072400);
}
return $result;
}