From f2a0da6c41022a794c4b8ea5bdd80b17964eda55 Mon Sep 17 00:00:00 2001 From: Eloy Lafuente Date: Wed, 18 Nov 2009 19:38:51 +0000 Subject: [PATCH] MDL-20834 new cap moodle/backup:userinfo - controls who can backupuser related info. Disabled by default to teachers, oh my! :-( Merged from 19_STABLE --- backup/backup_check.html | 10 ++++++++++ backup/backup_form.html | 39 ++++++++++++++++++++++++--------------- lib/db/access.php | 11 +++++++++++ version.php | 2 +- 4 files changed, 46 insertions(+), 16 deletions(-) diff --git a/backup/backup_check.html b/backup/backup_check.html index 59b8515d19..368a20b18c 100644 --- a/backup/backup_check.html +++ b/backup/backup_check.html @@ -6,6 +6,9 @@ $loginurl = get_login_url(); + // Init backupuserinfo + $backupuserinfo = false; + if (!empty($course->id)) { if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) { if (empty($to)) { @@ -16,10 +19,12 @@ } } } + $backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_COURSE, $course->id)); } else { if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) { print_error("cannotuseadmin", '', $loginurl); } + $backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_SYSTEM)); } @@ -65,6 +70,11 @@ } + // Re-enforce moodle/backup:userinfo capability + if (!$backupuserinfo) { + $backupprefs->backup_users = 2; // users => none + } + //Here we check if backup_users = None. Then, we switch off every module //user info, user_files, logs and exercises, workshop and messages & blogs backups. A Warning is showed to //inform the user. diff --git a/backup/backup_form.html b/backup/backup_form.html index 0974e7f89f..20c0a38825 100644 --- a/backup/backup_form.html +++ b/backup/backup_form.html @@ -7,6 +7,9 @@ $loginurl = get_login_url(); + //Init backupuserinfo + $backupuserinfo = false; + if (!empty($course->id)) { if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) { if (empty($to)) { @@ -17,10 +20,12 @@ } } } + $backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_COURSE, $course->id)); } else { if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) { print_error("cannotuseadmin", '', $loginurl); } + $backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_SYSTEM)); } //Check site @@ -131,12 +136,16 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { echo "". get_string("all")."/"; echo "". get_string("none").""; echo ""; - echo ""; - echo ' '; - echo ""; - echo "". get_string("all")."/"; - echo "". get_string("none").""; - echo ""; + if (empty($to) and $backupuserinfo) { + echo ""; + echo ' '; + echo ""; + echo "". get_string("all")."/"; + echo "". get_string("none").""; + echo ""; + } else { + echo " "; + } echo ""; echo "
"; $currentrow = 0; @@ -159,7 +168,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { echo " "; echo ""; $var = "backup_user_info_".$modname; - if (empty($to)) { + if (empty($to) and $backupuserinfo) { $backup_user_options[0] = get_string("withoutuserdata"); $backup_user_options[1] = get_string("withuserdata"); print_checkbox($var, $$var, $$var, get_string("userdata"),'','selectItemInCheckboxByName(\'form1\',\'backup_user_info_'.$modname.'\',this.checked)'); @@ -178,7 +187,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { echo ' '; $var = 'backup_user_info_'.$modname.'_instance_'.$instance->id; $$var = optional_param($var,1, PARAM_CLEAN); - if (empty($to)) { + if (empty($to) and $backupuserinfo) { print_checkbox($var,$$var,$$var,get_string('userdata'),'','this.form.elements[\'backup_user_info_'.$modname.'\'].checked=1;'); } else { echo ''; @@ -206,7 +215,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { $hidden_options .= ''; } - if (empty($to)) { + if (empty($to) and $backupuserinfo) { //Now print the Users tr echo ""; echo ""; @@ -219,10 +228,10 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { echo ""; } else { - $hidden_options .= ''; + $hidden_options .= ''; } - if (empty($to)) { + if (empty($to) and $backupuserinfo) { //Now print the Logs tr echo ""; echo ""; @@ -237,7 +246,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { $hidden_options .= ''; } - if (empty($to)) { + if (empty($to) and $backupuserinfo) { //Now print the User Files tr echo ""; echo ""; @@ -290,7 +299,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { $hidden_options .= ''; } - if (empty($to) && $course->id == SITEID) { + if (empty($to) and $backupuserinfo and $course->id == SITEID) { //If we are in a SITEID backup print the Messages tr echo ""; echo ""; @@ -305,7 +314,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { $hidden_options .= ''; } - if (empty($to) && $course->id == SITEID && !empty($CFG->bloglevel)) { + if (empty($to) and $backupuserinfo and $course->id == SITEID and !empty($CFG->bloglevel)) { //If we are in a SITEID backup and blogs are enabled print the Blogs tr echo ""; echo ""; @@ -322,7 +331,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { } //Now print a place to select which role assignments to back up. - if (empty($to)) { + if (empty($to) and $backupuserinfo) { //Line echo "
\n"; diff --git a/lib/db/access.php b/lib/db/access.php index 05f014001a..a67b6f232a 100644 --- a/lib/db/access.php +++ b/lib/db/access.php @@ -193,6 +193,17 @@ $capabilities = array( 'clonepermissionsfrom' => 'moodle/site:restore' ), + 'moodle/backup:userinfo' => array( + + 'riskbitmask' => RISK_PERSONAL | RISK_CONFIG, + + 'captype' => 'write', + 'contextlevel' => CONTEXT_COURSE, + 'legacy' => array( + 'admin' => CAP_ALLOW + ) + ), + 'moodle/site:restore' => array( 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS, diff --git a/version.php b/version.php index 7997aaaf31..e0ad2b46a7 100644 --- a/version.php +++ b/version.php @@ -6,7 +6,7 @@ // This is compared against the values stored in the database to determine // whether upgrades should be performed (see lib/db/*.php) - $version = 2009111702; // YYYYMMDD = date of the last version bump + $version = 2009111800; // YYYYMMDD = date of the last version bump // XX = daily increments $release = '2.0 dev (Build: 20091117)'; // Human-friendly version name -- 2.39.5