diff --git a/backup/backup_check.html b/backup/backup_check.html index 42be80bbca7..c3be745ba26 100644 --- a/backup/backup_check.html +++ b/backup/backup_check.html @@ -4,6 +4,9 @@ //Check login require_login(); + // Init backupuserinfo + $backupuserinfo = false; + if (!empty($course->id)) { if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) { if (empty($to)) { @@ -14,10 +17,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, SITEID))) { error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php"); } + $backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_SYSTEM)); } @@ -58,6 +63,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 backups. A Warning is showed to //inform the user. diff --git a/backup/backup_form.html b/backup/backup_form.html index a1f2f120d3c..05747d23bca 100644 --- a/backup/backup_form.html +++ b/backup/backup_form.html @@ -4,6 +4,9 @@ //Check login require_login(); + //Init backupuserinfo + $backupuserinfo = false; + if (!empty($course->id)) { if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) { if (empty($to)) { @@ -14,10 +17,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, SITEID))) { error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php"); } + $backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_SYSTEM)); } //Check site @@ -127,12 +132,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; @@ -155,8 +164,8 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { echo " "; echo ""; $var = "backup_user_info_".$modname; - if (empty($to)) { - $backup_user_options[0] = get_string("withoutuserdata"); + if (empty($to) and $backupuserinfo) { + $backup_user_options[0] = get_string("withoutuserdata"); $backup_user_options[1] = get_string("withuserdata"); //choose_from_menu($backup_user_options, $var, $$var, ""); print_checkbox($var, $$var, $$var, get_string("userdata"),'','selectItemInCheckboxByName(\'form1\',\'backup_user_info_'.$modname.'\',this.checked)'); @@ -177,7 +186,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { echo ' '; $var = 'backup_user_info_'.$modname.'_instance_'.$instance->id; $$var = optional_param($var,1); - 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 ''; @@ -207,7 +216,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { $hidden_options .= ''; } - if (empty($to)) { + if (empty($to) and $backupuserinfo) { //Now print the Users tr echo ""; echo ""; @@ -220,10 +229,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,8 +246,8 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { else { $hidden_options .= ''; } - - if (empty($to)) { + + if (empty($to) and $backupuserinfo) { //Now print the User Files tr echo ""; echo ""; @@ -262,7 +271,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) { choose_from_menu($course_file_options, "backup_course_files", $backup_course_files, ""); echo ""; - 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 ""; diff --git a/lib/db/access.php b/lib/db/access.php index e55217144ce..5df5d490368 100644 --- a/lib/db/access.php +++ b/lib/db/access.php @@ -168,6 +168,17 @@ $moodle_capabilities = array( ) ), + '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 a32706b02c1..50139940ece 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 = 2007021599.11; // YYYYMMDD = date of the 1.8 branch (don't change) + $version = 2007021599.12; // YYYYMMDD = date of the 1.8 branch (don't change) // 99 = we reached a .10 release! (don't change) // .XX = release number 1.8.[10,11,12,..]