当前位置: 首页>>代码示例>>PHP>>正文


PHP build_context_path函数代码示例

本文整理汇总了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
        }
开发者ID:numbas,项目名称:moodle,代码行数:67,代码来源:accesslib_test.php

示例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);
}
开发者ID:nicolasconnault,项目名称:moodle2.0,代码行数:16,代码来源:accesslib.php

示例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)) {
开发者ID:nadavkav,项目名称:MoodleTAO,代码行数:67,代码来源:upgrade.php

示例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);
    }
}
开发者ID:edwinphillips,项目名称:moodle-485cb39,代码行数:36,代码来源:accesslib.php

示例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
开发者ID:vuchannguyen,项目名称:web,代码行数:67,代码来源:cronlib.php

示例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);
    }
}
开发者ID:vuchannguyen,项目名称:web,代码行数:56,代码来源:upgradelib.php

示例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());
开发者ID:rolandovanegas,项目名称:moodle,代码行数:67,代码来源:fulltestaccesslib.php

示例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;
 }
开发者ID:remotelearner,项目名称:elis.cm,代码行数:30,代码来源:cluster.class.php

示例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;
}
开发者ID:ajv,项目名称:Offline-Caching,代码行数:101,代码来源:upgrade.php


注:本文中的build_context_path函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。