本文整理汇总了PHP中get_capability_info函数的典型用法代码示例。如果您正苦于以下问题:PHP get_capability_info函数的具体用法?PHP get_capability_info怎么用?PHP get_capability_info使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_capability_info函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: xmldb_forum_upgrade
/**
* This file keeps track of upgrades to
* the forum module
*
* Sometimes, changes between versions involve
* alterations to database structures and other
* major things that may break installations.
*
* The upgrade function in this file will attempt
* to perform all the necessary actions to upgrade
* your older installation to the current version.
*
* If there's something it cannot do itself, it
* will tell you what you need to do.
*
* The commands in here will all be database-neutral,
* using the methods of database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @package mod-forum
* @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
function xmldb_forum_upgrade($oldversion)
{
global $CFG, $DB, $OUTPUT;
$dbman = $DB->get_manager();
// Loads ddl manager and xmldb classes.
// Moodle v2.2.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.3.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.4.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2013020500) {
// Define field displaywordcount to be added to forum.
$table = new xmldb_table('forum');
$field = new xmldb_field('displaywordcount', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0', 'completionposts');
// Conditionally launch add field displaywordcount.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013020500, 'forum');
}
// Forcefully assign mod/forum:allowforcesubscribe to frontpage role, as we missed that when
// capability was introduced.
if ($oldversion < 2013021200) {
// If capability mod/forum:allowforcesubscribe is defined then set it for frontpage role.
if (get_capability_info('mod/forum:allowforcesubscribe')) {
assign_legacy_capabilities('mod/forum:allowforcesubscribe', array('frontpage' => CAP_ALLOW));
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013021200, 'forum');
}
// Moodle v2.5.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2013071000) {
// Define table forum_digests to be created.
$table = new xmldb_table('forum_digests');
// Adding fields to table forum_digests.
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('userid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
$table->add_field('forum', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
$table->add_field('maildigest', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '-1');
// Adding keys to table forum_digests.
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
$table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
$table->add_key('forum', XMLDB_KEY_FOREIGN, array('forum'), 'forum', array('id'));
$table->add_key('forumdigest', XMLDB_KEY_UNIQUE, array('forum', 'userid', 'maildigest'));
// Conditionally launch create table for forum_digests.
if (!$dbman->table_exists($table)) {
$dbman->create_table($table);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013071000, 'forum');
}
// Moodle v2.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
示例2: is_instantiable
/**
* Checks if the plugin is instantiable by the current user in the specified context.
* Checks capability addinstance. If the plugin doesn't have the capability, it cannot be instantiated.
*
* @param context $context Either course or dataform (module) context.
* @return boolean
*/
public function is_instantiable($context)
{
$capability = 'dataformview/' . $this->name . ':addinstance';
if (!get_capability_info($capability)) {
// If the capability does not exist, the plugin cannot be instantiated.
return false;
}
return has_capability($capability, $context);
}
示例3: test_capabilities_mutation
/**
* Check modifying capability record is not exposed to other code.
*/
public function test_capabilities_mutation()
{
$oldcap = get_capability_info('moodle/site:config');
$cap = get_capability_info('moodle/site:config');
unset($cap->name);
$newcap = get_capability_info('moodle/site:config');
$this->assertFalse(isset($cap->name));
$this->assertTrue(isset($newcap->name));
$this->assertTrue(isset($oldcap->name));
}
示例4: xmldb_block_demostudent_upgrade
function xmldb_block_demostudent_upgrade($oldversion = 0)
{
global $CFG;
$result = true;
// Assign moodle/course:viewhiddencourses capability to demostudent role.
if ($oldversion < 2013100201) {
if (get_capability_info('moodle/course:viewhiddencourses')) {
$demostudentroleid = get_roleid_by_roleshortname('demostudent');
assign_capability('moodle/course:viewhiddencourses', CAP_ALLOW, $demostudentroleid, 1);
}
upgrade_plugin_savepoint(true, 2013100201, 'block', 'demostudent');
}
return $result;
}
示例5: xmldb_forum_upgrade
/**
* This file keeps track of upgrades to
* the forum module
*
* Sometimes, changes between versions involve
* alterations to database structures and other
* major things that may break installations.
*
* The upgrade function in this file will attempt
* to perform all the necessary actions to upgrade
* your older installation to the current version.
*
* If there's something it cannot do itself, it
* will tell you what you need to do.
*
* The commands in here will all be database-neutral,
* using the methods of database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @package mod-forum
* @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
function xmldb_forum_upgrade($oldversion) {
global $CFG, $DB, $OUTPUT;
$dbman = $DB->get_manager(); // Loads ddl manager and xmldb classes.
// Moodle v2.2.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.3.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.4.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.5.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2013020500) {
// Define field displaywordcount to be added to forum.
$table = new xmldb_table('forum');
$field = new xmldb_field('displaywordcount', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0', 'completionposts');
// Conditionally launch add field displaywordcount.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013020500, 'forum');
}
// Forcefully assign mod/forum:allowforcesubscribe to frontpage role, as we missed that when
// capability was introduced.
if ($oldversion < 2013021200) {
// If capability mod/forum:allowforcesubscribe is defined then set it for frontpage role.
if (get_capability_info('mod/forum:allowforcesubscribe')) {
assign_legacy_capabilities('mod/forum:allowforcesubscribe', array('frontpage' => CAP_ALLOW));
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013021200, 'forum');
}
return true;
}
示例6: xmldb_forum_upgrade
/**
* This file keeps track of upgrades to
* the forum module
*
* Sometimes, changes between versions involve
* alterations to database structures and other
* major things that may break installations.
*
* The upgrade function in this file will attempt
* to perform all the necessary actions to upgrade
* your older installation to the current version.
*
* If there's something it cannot do itself, it
* will tell you what you need to do.
*
* The commands in here will all be database-neutral,
* using the methods of database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @package mod-forum
* @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
function xmldb_forum_upgrade($oldversion) {
global $CFG, $DB, $OUTPUT;
$dbman = $DB->get_manager(); // loads ddl manager and xmldb classes
// Moodle v2.2.0 release upgrade line
// Put any upgrade step following this
// Moodle v2.3.0 release upgrade line
// Put any upgrade step following this
// Forcefully assign mod/forum:allowforcesubscribe to frontpage role, as we missed that when
// capability was introduced.
if ($oldversion < 2012061702) {
// If capability mod/forum:allowforcesubscribe is defined then set it for frontpage role.
if (get_capability_info('mod/forum:allowforcesubscribe')) {
assign_legacy_capabilities('mod/forum:allowforcesubscribe', array('frontpage' => CAP_ALLOW));
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2012061702, 'forum');
}
return true;
}
示例7: clean_param
//.........这里部分代码省略.........
return '';
}
}
return implode("\n", $lines);
} else {
return '';
}
case PARAM_TAG:
$param = fix_utf8($param);
// Please note it is not safe to use the tag name directly anywhere,
// it must be processed with s(), urlencode() before embedding anywhere.
// Remove some nasties.
$param = preg_replace('~[[:cntrl:]]|[<>`]~u', '', $param);
// Convert many whitespace chars into one.
$param = preg_replace('/\\s+/u', ' ', $param);
$param = core_text::substr(trim($param), 0, TAG_MAX_LENGTH);
return $param;
case PARAM_TAGLIST:
$param = fix_utf8($param);
$tags = explode(',', $param);
$result = array();
foreach ($tags as $tag) {
$res = clean_param($tag, PARAM_TAG);
if ($res !== '') {
$result[] = $res;
}
}
if ($result) {
return implode(',', $result);
} else {
return '';
}
case PARAM_CAPABILITY:
if (get_capability_info($param)) {
return $param;
} else {
return '';
}
case PARAM_PERMISSION:
$param = (int) $param;
if (in_array($param, array(CAP_INHERIT, CAP_ALLOW, CAP_PREVENT, CAP_PROHIBIT))) {
return $param;
} else {
return CAP_INHERIT;
}
case PARAM_AUTH:
$param = clean_param($param, PARAM_PLUGIN);
if (empty($param)) {
return '';
} else {
if (exists_auth_plugin($param)) {
return $param;
} else {
return '';
}
}
case PARAM_LANG:
$param = clean_param($param, PARAM_SAFEDIR);
if (get_string_manager()->translation_exists($param)) {
return $param;
} else {
// Specified language is not installed or param malformed.
return '';
}
case PARAM_THEME:
$param = clean_param($param, PARAM_PLUGIN);
示例8: is_user_access_restricted_by_capability
/**
* Checks whether mod/...:view capability restricts the current user's access.
*
* @return bool True if the user access is restricted.
*/
public function is_user_access_restricted_by_capability() {
$userid = $this->modinfo->get_user_id();
if ($userid == -1) {
return null;
}
$capability = 'mod/' . $this->modname . ':view';
$capabilityinfo = get_capability_info($capability);
if (!$capabilityinfo) {
// Capability does not exist, no one is prevented from seeing the activity.
return false;
}
// You are blocked if you don't have the capability.
return !has_capability($capability, $this->get_context(), $userid);
}
示例9: clean_param
//.........这里部分代码省略.........
}
if (64 != strlen($lines[$i])) {
return '';
}
}
return implode("\n", $lines);
} else {
return '';
}
case PARAM_TAG:
// Please note it is not safe to use the tag name directly anywhere,
// it must be processed with s(), urlencode() before embedding anywhere.
// remove some nasties
$param = preg_replace('~[[:cntrl:]]|[<>`]~u', '', $param);
//convert many whitespace chars into one
$param = preg_replace('/\\s+/', ' ', $param);
$textlib = textlib_get_instance();
$param = $textlib->substr(trim($param), 0, TAG_MAX_LENGTH);
return $param;
case PARAM_TAGLIST:
$tags = explode(',', $param);
$result = array();
foreach ($tags as $tag) {
$res = clean_param($tag, PARAM_TAG);
if ($res !== '') {
$result[] = $res;
}
}
if ($result) {
return implode(',', $result);
} else {
return '';
}
case PARAM_CAPABILITY:
if (get_capability_info($param)) {
return $param;
} else {
return '';
}
case PARAM_PERMISSION:
$param = (int) $param;
if (in_array($param, array(CAP_INHERIT, CAP_ALLOW, CAP_PREVENT, CAP_PROHIBIT))) {
return $param;
} else {
return CAP_INHERIT;
}
case PARAM_AUTH:
$param = clean_param($param, PARAM_SAFEDIR);
if (exists_auth_plugin($param)) {
return $param;
} else {
return '';
}
case PARAM_LANG:
$param = clean_param($param, PARAM_SAFEDIR);
if (get_string_manager()->translation_exists($param)) {
return $param;
} else {
return '';
// Specified language is not installed or param malformed
}
case PARAM_THEME:
$param = clean_param($param, PARAM_SAFEDIR);
if (file_exists("{$CFG->dirroot}/theme/{$param}/config.php")) {
return $param;
} else {
if (!empty($CFG->themedir) and file_exists("{$CFG->themedir}/{$param}/config.php")) {
return $param;
} else {
return '';
// Specified theme is not installed
}
}
case PARAM_USERNAME:
$param = str_replace(" ", "", $param);
$param = moodle_strtolower($param);
// Convert uppercase to lowercase MDL-16919
if (empty($CFG->extendedusernamechars)) {
// regular expression, eliminate all chars EXCEPT:
// alphanum, dash (-), underscore (_), at sign (@) and period (.) characters.
$param = preg_replace('/[^-\\.@_a-z0-9]/', '', $param);
}
return $param;
case PARAM_EMAIL:
if (validate_email($param)) {
return $param;
} else {
return '';
}
case PARAM_STRINGID:
if (preg_match('|^[a-zA-Z][a-zA-Z0-9\\.:/_-]*$|', $param)) {
return $param;
} else {
return '';
}
default:
// throw error, switched parameters in optional_param or another serious problem
print_error("unknownparamtype", '', '', $type);
}
}
示例10: has_add_block_capability
/**
* Returns true if the user can add a block to a page.
*
* @param moodle_page $page
* @param string $capability the capability to check
* @return boolean true if user can add a block, false otherwise.
*/
private function has_add_block_capability($page, $capability)
{
// Check if the capability exists.
if (!get_capability_info($capability)) {
// Debug warning that the capability does not exist, but no more than once per page.
static $warned = array();
if (!isset($warned[$this->name()])) {
debugging('The block ' . $this->name() . ' does not define the standard capability ' . $capability, DEBUG_DEVELOPER);
$warned[$this->name()] = 1;
}
// If the capability does not exist, the block can always be added.
return true;
} else {
return has_capability($capability, $page->context);
}
}
示例11: has_capability
/**
* Check whether a user has a particular capability in a given context.
*
* For example::
* $context = get_context_instance(CONTEXT_MODULE, $cm->id);
* has_capability('mod/forum:replypost',$context)
*
* By default checks the capabilities of the current user, but you can pass a
* different userid. By default will return true for admin users, but you can override that with the fourth argument.
*
* Guest and not-logged-in users can never get any dangerous capability - that is any write capability
* or capabilities with XSS, config or data loss risks.
*
* @param string $capability the name of the capability to check. For example mod/forum:view
* @param object $context the context to check the capability in. You normally get this with {@link get_context_instance}.
* @param integer|object $user A user id or object. By default (null) checks the permissions of the current user.
* @param boolean $doanything If false, ignores effect of admin role assignment
* @return boolean true if the user has this capability. Otherwise false.
*/
function has_capability($capability, $context, $user = null, $doanything = true)
{
global $USER, $CFG, $DB, $SCRIPT, $ACCESSLIB_PRIVATE;
if (during_initial_install()) {
if ($SCRIPT === "/{$CFG->admin}/index.php" or $SCRIPT === "/{$CFG->admin}/cliupgrade.php") {
// we are in an installer - roles can not work yet
return true;
} else {
return false;
}
}
if (strpos($capability, 'moodle/legacy:') === 0) {
throw new coding_exception('Legacy capabilities can not be used any more!');
}
// the original $CONTEXT here was hiding serious errors
// for security reasons do not reuse previous context
if (empty($context)) {
debugging('Incorrect context specified');
return false;
}
if (!is_bool($doanything)) {
throw new coding_exception('Capability parameter "doanything" is wierd ("' . $doanything . '"). This has to be fixed in code.');
}
// make sure there is a real user specified
if ($user === null) {
$userid = isset($USER->id) ? $USER->id : 0;
} else {
$userid = is_object($user) ? $user->id : $user;
}
// capability must exist
if (!($capinfo = get_capability_info($capability))) {
debugging('Capability "' . $capability . '" was not found! This should be fixed in code.');
return false;
}
// make sure the guest account and not-logged-in users never get any risky caps no matter what the actual settings are.
if ($capinfo->captype === 'write' or (int) $capinfo->riskbitmask & (RISK_XSS | RISK_CONFIG | RISK_DATALOSS)) {
if (isguestuser($userid) or $userid == 0) {
return false;
}
}
if (is_null($context->path) or $context->depth == 0) {
//this should not happen
$contexts = array(SYSCONTEXTID, $context->id);
$context->path = '/' . SYSCONTEXTID . '/' . $context->id;
debugging('Context id ' . $context->id . ' does not have valid path, please use build_context_path()', DEBUG_DEVELOPER);
} else {
$contexts = explode('/', $context->path);
array_shift($contexts);
}
if (CLI_SCRIPT && !isset($USER->access)) {
// In cron, some modules setup a 'fake' $USER,
// ensure we load the appropriate accessdata.
if (isset($ACCESSLIB_PRIVATE->accessdatabyuser[$userid])) {
$ACCESSLIB_PRIVATE->dirtycontexts = null;
//load fresh dirty contexts
} else {
load_user_accessdata($userid);
$ACCESSLIB_PRIVATE->dirtycontexts = array();
}
$USER->access = $ACCESSLIB_PRIVATE->accessdatabyuser[$userid];
} else {
if (isset($USER->id) && $USER->id == $userid && !isset($USER->access)) {
// caps not loaded yet - better to load them to keep BC with 1.8
// not-logged-in user or $USER object set up manually first time here
load_all_capabilities();
$ACCESSLIB_PRIVATE->accessdatabyuser = array();
// reset the cache for other users too, the dirty contexts are empty now
$ACCESSLIB_PRIVATE->roledefinitions = array();
}
}
// Load dirty contexts list if needed
if (!isset($ACCESSLIB_PRIVATE->dirtycontexts)) {
if (isset($USER->access['time'])) {
$ACCESSLIB_PRIVATE->dirtycontexts = get_dirty_contexts($USER->access['time']);
} else {
$ACCESSLIB_PRIVATE->dirtycontexts = array();
}
}
// Careful check for staleness...
if (count($ACCESSLIB_PRIVATE->dirtycontexts) !== 0 and is_contextpath_dirty($contexts, $ACCESSLIB_PRIVATE->dirtycontexts)) {
// reload all capabilities - preserving loginas, roleswitches, etc
//.........这里部分代码省略.........
示例12: get_right_rows
/**
* Builds and returns the rows that will make up the right part of the grader report
* @param boolean $displayaverages whether to display average rows in the table
* @return array Array of html_table_row objects
*/
public function get_right_rows($displayaverages)
{
global $CFG, $USER, $OUTPUT, $DB, $PAGE;
$rows = array();
$this->rowcount = 0;
$numrows = count($this->gtree->get_levels());
$numusers = count($this->users);
$gradetabindex = 1;
$columnstounset = array();
$strgrade = $this->get_lang_string('grade');
$strfeedback = $this->get_lang_string("feedback");
$arrows = $this->get_sort_arrows();
$jsarguments = array('cfg' => array('ajaxenabled' => false), 'items' => array(), 'users' => array(), 'feedback' => array(), 'grades' => array());
$jsscales = array();
// Get preferences once.
$showactivityicons = $this->get_pref('showactivityicons');
$quickgrading = $this->get_pref('quickgrading');
$showquickfeedback = $this->get_pref('showquickfeedback');
$enableajax = $this->get_pref('enableajax');
$showanalysisicon = $this->get_pref('showanalysisicon');
// Get strings which are re-used inside the loop.
$strftimedatetimeshort = get_string('strftimedatetimeshort');
$strexcludedgrades = get_string('excluded', 'grades');
$strerror = get_string('error');
foreach ($this->gtree->get_levels() as $key => $row) {
$headingrow = new html_table_row();
$headingrow->attributes['class'] = 'heading_name_row';
foreach ($row as $columnkey => $element) {
$sortlink = clone $this->baseurl;
if (isset($element['object']->id)) {
$sortlink->param('sortitemid', $element['object']->id);
}
$eid = $element['eid'];
$object = $element['object'];
$type = $element['type'];
$categorystate = @$element['categorystate'];
if (!empty($element['colspan'])) {
$colspan = $element['colspan'];
} else {
$colspan = 1;
}
if (!empty($element['depth'])) {
$catlevel = 'catlevel' . $element['depth'];
} else {
$catlevel = '';
}
// Element is a filler
if ($type == 'filler' or $type == 'fillerfirst' or $type == 'fillerlast') {
$fillercell = new html_table_cell();
$fillercell->attributes['class'] = $type . ' ' . $catlevel;
$fillercell->colspan = $colspan;
$fillercell->text = ' ';
// This is a filler cell; don't use a <th>, it'll confuse screen readers.
$fillercell->header = false;
$headingrow->cells[] = $fillercell;
} else {
if ($type == 'category') {
// Make sure the grade category has a grade total or at least has child grade items.
if (grade_tree::can_output_item($element)) {
// Element is a category.
$categorycell = new html_table_cell();
$categorycell->attributes['class'] = 'category ' . $catlevel;
$categorycell->colspan = $colspan;
$categorycell->text = $this->get_course_header($element);
$categorycell->header = true;
$categorycell->scope = 'col';
// Print icons.
if ($USER->gradeediting[$this->courseid]) {
$categorycell->text .= $this->get_icons($element);
}
$headingrow->cells[] = $categorycell;
}
} else {
// Element is a grade_item
if ($element['object']->id == $this->sortitemid) {
if ($this->sortorder == 'ASC') {
$arrow = $this->get_sort_arrow('up', $sortlink);
} else {
$arrow = $this->get_sort_arrow('down', $sortlink);
}
} else {
$arrow = $this->get_sort_arrow('move', $sortlink);
}
$headerlink = $this->gtree->get_element_header($element, true, $showactivityicons, false, false, true);
$itemcell = new html_table_cell();
$itemcell->attributes['class'] = $type . ' ' . $catlevel . ' highlightable' . ' i' . $element['object']->id;
$itemcell->attributes['data-itemid'] = $element['object']->id;
if ($element['object']->is_hidden()) {
$itemcell->attributes['class'] .= ' dimmed_text';
}
$singleview = '';
// FIXME: MDL-52678 This is extremely hacky we should have an API for inserting grade column links.
if (get_capability_info('gradereport/singleview:view')) {
if (has_all_capabilities(array('gradereport/singleview:view', 'moodle/grade:viewall', 'moodle/grade:edit'), $this->context)) {
$url = new moodle_url('/grade/report/singleview/index.php', array('id' => $this->course->id, 'item' => 'grade', 'itemid' => $element['object']->id));
//.........这里部分代码省略.........
示例13: xmldb_forum_upgrade
/**
* This file keeps track of upgrades to
* the forum module
*
* Sometimes, changes between versions involve
* alterations to database structures and other
* major things that may break installations.
*
* The upgrade function in this file will attempt
* to perform all the necessary actions to upgrade
* your older installation to the current version.
*
* If there's something it cannot do itself, it
* will tell you what you need to do.
*
* The commands in here will all be database-neutral,
* using the methods of database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @package mod_forum
* @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
function xmldb_forum_upgrade($oldversion)
{
global $CFG, $DB, $OUTPUT;
$dbman = $DB->get_manager();
// Loads ddl manager and xmldb classes.
// Moodle v2.2.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.3.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.4.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2013020500) {
// Define field displaywordcount to be added to forum.
$table = new xmldb_table('forum');
$field = new xmldb_field('displaywordcount', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0', 'completionposts');
// Conditionally launch add field displaywordcount.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013020500, 'forum');
}
// Forcefully assign mod/forum:allowforcesubscribe to frontpage role, as we missed that when
// capability was introduced.
if ($oldversion < 2013021200) {
// If capability mod/forum:allowforcesubscribe is defined then set it for frontpage role.
if (get_capability_info('mod/forum:allowforcesubscribe')) {
assign_legacy_capabilities('mod/forum:allowforcesubscribe', array('frontpage' => CAP_ALLOW));
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013021200, 'forum');
}
// Moodle v2.5.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2013071000) {
// Define table forum_digests to be created.
$table = new xmldb_table('forum_digests');
// Adding fields to table forum_digests.
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('userid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
$table->add_field('forum', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
$table->add_field('maildigest', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '-1');
// Adding keys to table forum_digests.
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
$table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
$table->add_key('forum', XMLDB_KEY_FOREIGN, array('forum'), 'forum', array('id'));
$table->add_key('forumdigest', XMLDB_KEY_UNIQUE, array('forum', 'userid', 'maildigest'));
// Conditionally launch create table for forum_digests.
if (!$dbman->table_exists($table)) {
$dbman->create_table($table);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013071000, 'forum');
}
// Moodle v2.6.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2014040400) {
// Define index userid-postid (not unique) to be dropped form forum_read.
$table = new xmldb_table('forum_read');
$index = new xmldb_index('userid-postid', XMLDB_INDEX_NOTUNIQUE, array('userid', 'postid'));
// Conditionally launch drop index userid-postid.
if ($dbman->index_exists($table, $index)) {
$dbman->drop_index($table, $index);
}
// Define index postid-userid (not unique) to be added to forum_read.
$index = new xmldb_index('postid-userid', XMLDB_INDEX_NOTUNIQUE, array('postid', 'userid'));
// Conditionally launch add index postid-userid.
if (!$dbman->index_exists($table, $index)) {
$dbman->add_index($table, $index);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2014040400, 'forum');
}
// Moodle v2.7.0 release upgrade line.
// Put any upgrade step following this.
//.........这里部分代码省略.........
示例14: xmldb_hsuforum_upgrade
//.........这里部分代码省略.........
$table = new xmldb_table('hsuforum_posts');
$field = new xmldb_field('privatereply');
$field->set_attributes(XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0', 'flags');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// Define index privatereply (not unique) to be added to hsuforum_posts
$table = new xmldb_table('hsuforum_posts');
$index = new xmldb_index('privatereply', XMLDB_INDEX_NOTUNIQUE, array('privatereply'));
// Conditionally launch add index privatereply
if (!$dbman->index_exists($table, $index)) {
$dbman->add_index($table, $index);
}
// Rename field hsuforumid on table hsuforum_track_prefs to forumid
$table = new xmldb_table('hsuforum_track_prefs');
$field = new xmldb_field('hsuforumid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'userid');
// Conditionally launch rename field hsuforumid (if it exists)
if ($dbman->field_exists($table, $field)) {
$dbman->rename_field($table, $field, 'forumid');
}
// hsuforum savepoint reached
upgrade_mod_savepoint(true, 2011112907, 'hsuforum');
}
// Moodle v2.2.0 release upgrade line
// Put any upgrade step following this
// Moodle v2.3.0 release upgrade line
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
// Forcefully assign mod/hsuforum:allowforcesubscribe to frontpage role, as we missed that when
// capability was introduced.
if ($oldversion < 2012112901) {
// If capability mod/hsuforum:allowforcesubscribe is defined then set it for frontpage role.
if (get_capability_info('mod/hsuforum:allowforcesubscribe')) {
assign_legacy_capabilities('mod/hsuforum:allowforcesubscribe', array('frontpage' => CAP_ALLOW));
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2012112901, 'hsuforum');
}
if ($oldversion < 2012112902) {
// Forum and hsuforum were reading from the same $CFG values, create new ones for hsuforum.
$digestmailtime = 17;
// Default in settings.php
if (!empty($CFG->digestmailtime)) {
$digestmailtime = $CFG->digestmailtime;
}
set_config('hsuforum_digestmailtime', $digestmailtime);
$digestmailtimelast = 0;
if (!empty($CFG->digestmailtimelast)) {
$digestmailtimelast = $CFG->digestmailtimelast;
}
set_config('hsuforum_digestmailtimelast', $digestmailtimelast);
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2012112902, 'hsuforum');
}
if ($oldversion < 2013020500) {
// Define field displaywordcount to be added to forum.
$table = new xmldb_table('hsuforum');
$field = new xmldb_field('displaywordcount', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0', 'completionposts');
// Conditionally launch add field displaywordcount.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013020500, 'hsuforum');
}
示例15: xmldb_forum_upgrade
/**
* This file keeps track of upgrades to
* the forum module
*
* Sometimes, changes between versions involve
* alterations to database structures and other
* major things that may break installations.
*
* The upgrade function in this file will attempt
* to perform all the necessary actions to upgrade
* your older installation to the current version.
*
* If there's something it cannot do itself, it
* will tell you what you need to do.
*
* The commands in here will all be database-neutral,
* using the methods of database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @package mod_forum
* @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
function xmldb_forum_upgrade($oldversion)
{
global $CFG, $DB, $OUTPUT;
$dbman = $DB->get_manager();
// Loads ddl manager and xmldb classes.
// Moodle v2.2.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.3.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.4.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2013020500) {
// Define field displaywordcount to be added to forum.
$table = new xmldb_table('forum');
$field = new xmldb_field('displaywordcount', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0', 'completionposts');
// Conditionally launch add field displaywordcount.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013020500, 'forum');
}
// Forcefully assign mod/forum:allowforcesubscribe to frontpage role, as we missed that when
// capability was introduced.
if ($oldversion < 2013021200) {
// If capability mod/forum:allowforcesubscribe is defined then set it for frontpage role.
if (get_capability_info('mod/forum:allowforcesubscribe')) {
assign_legacy_capabilities('mod/forum:allowforcesubscribe', array('frontpage' => CAP_ALLOW));
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013021200, 'forum');
}
// Moodle v2.5.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2013071000) {
// Define table forum_digests to be created.
$table = new xmldb_table('forum_digests');
// Adding fields to table forum_digests.
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('userid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
$table->add_field('forum', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
$table->add_field('maildigest', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '-1');
// Adding keys to table forum_digests.
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
$table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
$table->add_key('forum', XMLDB_KEY_FOREIGN, array('forum'), 'forum', array('id'));
$table->add_key('forumdigest', XMLDB_KEY_UNIQUE, array('forum', 'userid', 'maildigest'));
// Conditionally launch create table for forum_digests.
if (!$dbman->table_exists($table)) {
$dbman->create_table($table);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2013071000, 'forum');
}
// Moodle v2.6.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2014040400) {
// Define index userid-postid (not unique) to be dropped form forum_read.
$table = new xmldb_table('forum_read');
$index = new xmldb_index('userid-postid', XMLDB_INDEX_NOTUNIQUE, array('userid', 'postid'));
// Conditionally launch drop index userid-postid.
if ($dbman->index_exists($table, $index)) {
$dbman->drop_index($table, $index);
}
// Define index postid-userid (not unique) to be added to forum_read.
$index = new xmldb_index('postid-userid', XMLDB_INDEX_NOTUNIQUE, array('postid', 'userid'));
// Conditionally launch add index postid-userid.
if (!$dbman->index_exists($table, $index)) {
$dbman->add_index($table, $index);
}
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2014040400, 'forum');
}
// Moodle v2.7.0 release upgrade line.
// Put any upgrade step following this.
//.........这里部分代码省略.........