<td><?php print_string('allow','role') ?></td>
<td><?php print_string('prevent','role') ?></td>
<td><?php print_string('prohibit','role') ?></td>
+<td><?php print_string('risks','role') ?></td>
</tr>
<?php
<td><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="1" <?php if (isset($localoverride->permission) && $localoverride->permission==1){ echo 'checked="checked"'; }?>></td>
<td ><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="-1" <?php if (isset($localoverride->permission) && $localoverride->permission==-1){ echo 'checked="checked"'; }?>></td>
<td ><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="-1000" <?php if (isset($localoverride->permission) && $localoverride->permission==-1000){ echo 'checked="checked"'; }?>></td>
+ <td><?php
+ if (RISK_MANAGETRUST & (int)$capability->riskbitmask) {
+ echo "T";
+ }
+ if (RISK_ADMIN & (int)$capability->riskbitmask) {
+ echo "A";
+ }
+ if (RISK_XSS & (int)$capability->riskbitmask) {
+ echo "X";
+ }
+ if (RISK_PERSONAL & (int)$capability->riskbitmask) {
+ echo "P";
+ }
+ if (RISK_SPAM & (int)$capability->riskbitmask) {
+ echo "S";
+ }
+ ?></td>
</tr>
<?php } ?>
<td><?php print_string('allow','role') ?></td>
<td><?php print_string('prevent','role') ?></td>
<td><?php print_string('prohibit','role') ?></td>
+ <td><?php print_string('risks','role') ?></td>
</tr>
<?php
if ($localpermission == CAP_PROHIBIT) {echo ' checked="checked"';}
if ($isdisabled) {echo ' disabled="disabled"';}?>>
</td>
+ <td><?php
+ if (RISK_MANAGETRUST & (int)$capability->riskbitmask) {
+ echo "T";
+ }
+ if (RISK_ADMIN & (int)$capability->riskbitmask) {
+ echo "A";
+ }
+ if (RISK_XSS & (int)$capability->riskbitmask) {
+ echo "X";
+ }
+ if (RISK_PERSONAL & (int)$capability->riskbitmask) {
+ echo "P";
+ }
+ if (RISK_SPAM & (int)$capability->riskbitmask) {
+ echo "S";
+ }
+ ?></td>
</tr>
<?php } ?>
define('CONTEXT_MODULE', 70);
define('CONTEXT_BLOCK', 80);
+// capability risks - see http://docs.moodle.org/en/Hardening_new_Roles_system
+define('RISK_MANAGETRUST', 0x0001);
+define('RISK_ADMIN', 0x0002);
+define('RISK_XSS', 0x0004);
+define('RISK_PERSONAL', 0x0008);
+define('RISK_SPAM', 0x0010);
+
+
$context_cache = array(); // Cache of all used context objects for performance (by level and instance)
$context_cache_id = array(); // Index to above cache by id
$moodle_capabilities = array(
'moodle/site:doanything' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_ADMIN,
'captype' => 'admin',
'contextlevel' => CONTEXT_SYSTEM
),
'moodle/legacy:student' => array(
+ 'riskbitmask' => RISK_SPAM,
'captype' => 'legacy',
'contextlevel' => CONTEXT_SYSTEM
),
'moodle/legacy:teacher' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL,
'captype' => 'legacy',
'contextlevel' => CONTEXT_SYSTEM
),
'moodle/legacy:editingteacher' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
'captype' => 'legacy',
'contextlevel' => CONTEXT_SYSTEM
),
'moodle/legacy:coursecreator' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
'captype' => 'legacy',
'contextlevel' => CONTEXT_SYSTEM
),
'moodle/legacy:admin' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_ADMIN,
'captype' => 'legacy',
'contextlevel' => CONTEXT_SYSTEM
),
'moodle/site:config' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_ADMIN,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/site:import' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/site:backup' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/site:restore' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/site:manageblocks' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/site:viewreports' => array(
+ 'riskbitmask' => RISK_PERSONAL,
+
'captype' => 'read',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/site:trustcontent' => array(
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/user:create' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_PERSONAL,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/user:update' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/user:viewhiddendetails' => array(
+ 'riskbitmask' => RISK_PERSONAL,
+
'captype' => 'read',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/course:create' => array(
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'moodle/course:update' => array(
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'moodle/course:viewhiddenuserfields' => array(
+ 'riskbitmask' => RISK_PERSONAL,
+
'captype' => 'read',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'moodle/course:managefiles' => array(
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'moodle/course:managequestions' => array(
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'moodle/course:manageactivities' => array(
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'moodle/blog:create' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/blog:manageofficialtags' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/blog:managepersonaltags' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/blog:manageentries' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/calendar:manageownentries' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
'moodle/calendar:manageentries' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'legacy' => array(
),
'moodle/user:editprofile' => array(
+
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'read',
'contextlevel' => CONTEXT_USER,
'legacy' => array(
),
'moodle/question:import' => array(
+
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
),
'moodle/question:manage' => array(
+
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'mod/chat:chat' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006091201; // The (date) version of this module
+$module->version = 2006091800; // The (date) version of this module
$module->requires = 2006080900; // Requires this Moodle version
$module->cron = 300; // How often should cron check this module (seconds)?
'mod/data:writeentry' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'mod/data:comment' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'mod/data:managetemplates' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
// This fragment is called by /admin/index.php
////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006091201;
+$module->version = 2006091800;
$module->requires = 2006080900; // Requires this Moodle version
$module->cron = 60;
'mod/forum:startdiscussion' => array(
- 'captype' => 'read',
+ 'riskbitmask' => RISK_SPAM,
+
+ 'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'guest' => CAP_PREVENT,
'mod/forum:replypost' => array(
- 'captype' => 'read',
+ 'riskbitmask' => RISK_SPAM,
+
+ 'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'guest' => CAP_PREVENT,
'mod/forum:rate' => array(
- 'captype' => 'read',
+ 'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'guest' => CAP_PREVENT,
'mod/forum:createattachment' => array(
- 'captype' => 'read',
+ 'riskbitmask' => RISK_SPAM,
+
+ 'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'guest' => CAP_PREVENT,
'mod/forum:editanypost' => array(
- 'captype' => 'read',
+ 'riskbitmask' => RISK_SPAM,
+
+ 'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'guest' => CAP_PREVENT,
// This fragment is called by /admin/index.php
////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006091201;
+$module->version = 2006091800;
$module->requires = 2006082600; // Requires this Moodle version
$module->cron = 60;
'mod/glossary:write' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'mod/glossary:comment' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'mod/glossary:import' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006091201;
+$module->version = 2006091800;
$module->requires = 2006082600; // Requires this Moodle version
$module->cron = 0; // Period for cron to check this module (secs)
'mod/lesson:edit' => array(
+ 'riskbitmask' => RISK_XSS,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006091202; // The current module version (Date: YYYYMMDDXX)
+$module->version = 2006091801; // The current module version (Date: YYYYMMDDXX)
$module->requires = 2006080900; // Requires this Moodle version
$module->cron = 0; // Period for cron to check this module (secs)
'mod/wiki:participate' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'mod/wiki:manage' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006091202; // The current module version (Date: YYYYMMDDXX)
+$module->version = 2006091800; // The current module version (Date: YYYYMMDDXX)
$module->requires = 2006080900; // The current module version (Date: YYYYMMDDXX)
$module->cron = 0; // Period for cron to check this module (secs)
'mod/workshop:participate' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'mod/workshop:manage' => array(
+ 'riskbitmask' => RISK_SPAM,
+
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
// This fragment is called by /admin/index.php
////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006091201;
+$module->version = 2006091800;
$module->requires = 2006080900; // Requires this Moodle version
$module->cron = 60;
// This is compared against the values stored in the database to determine
// whether upgrades should be performed (see lib/db/*.php)
- $version = 2006091804; // YYYYMMDD = date
+ $version = 2006091807; // YYYYMMDD = date
// XY = increments within a single day
$release = '1.7 dev'; // Human-friendly version name