Example #1
0
/**
* Function to generate the $preferences variable that
* backup uses.  This will back up all modules and instances in a course.
*
* @param object $course course object
* @param array $prefs can contain:
        backup_metacourse
        backup_users
        backup_logs
        backup_user_files
        backup_course_files
        backup_site_files
        backup_messages
* and if not provided, they will not be included.
*/
function backup_generate_preferences_artificially($course, $prefs)
{
    global $CFG, $DB;
    $preferences = new StdClass();
    $preferences->backup_unique_code = time();
    $preferences->backup_users = isset($prefs['backup_users']) ? $prefs['backup_users'] : 0;
    $preferences->backup_name = backup_get_zipfile_name($course, $preferences->backup_unique_code);
    $count = 0;
    if ($allmods = $DB->get_records("modules")) {
        foreach ($allmods as $mod) {
            $modname = $mod->name;
            $modfile = "{$CFG->dirroot}/mod/{$modname}/backuplib.php";
            $modbackup = $modname . "_backup_mods";
            $modbackupone = $modname . "_backup_one_mod";
            $modcheckbackup = $modname . "_check_backup_mods";
            if (!file_exists($modfile)) {
                continue;
            }
            include_once $modfile;
            if (!function_exists($modbackup) || !function_exists($modcheckbackup)) {
                continue;
            }
            $modcheckbackup($course->id, $preferences->backup_users, $preferences->backup_unique_code);
            $var = "exists_" . $modname;
            $preferences->{$var} = true;
            $count++;
            // check that there are instances and we can back them up individually
            if (!$DB->count_records('course_modules', array('course' => $course->id), array('module' => $mod->id)) || !function_exists($modbackupone)) {
                continue;
            }
            $var = 'exists_one_' . $modname;
            $preferences->{$var} = true;
            $varname = $modname . '_instances';
            $preferences->{$varname} = get_all_instances_in_course($modname, $course, NULL, true);
            foreach ($preferences->{$varname} as $instance) {
                $preferences->mods[$modname]->instances[$instance->id]->name = $instance->name;
                $var = 'backup_' . $modname . '_instance_' . $instance->id;
                $preferences->{$var} = true;
                $preferences->mods[$modname]->instances[$instance->id]->backup = true;
                $var = 'backup_user_info_' . $modname . '_instance_' . $instance->id;
                $preferences->{$var} = true;
                $preferences->mods[$modname]->instances[$instance->id]->userinfo = true;
                $var = 'backup_' . $modname . '_instances';
                $preferences->{$var} = 1;
                // we need this later to determine what to display in modcheckbackup.
            }
            //Check data
            //Check module info
            $preferences->mods[$modname]->name = $modname;
            $var = "backup_" . $modname;
            $preferences->{$var} = true;
            $preferences->mods[$modname]->backup = true;
            //Check include user info
            $var = "backup_user_info_" . $modname;
            $preferences->{$var} = true;
            $preferences->mods[$modname]->userinfo = true;
        }
    }
    //Check other parameters
    $preferences->backup_metacourse = isset($prefs['backup_metacourse']) ? $prefs['backup_metacourse'] : 0;
    $preferences->backup_logs = isset($prefs['backup_logs']) ? $prefs['backup_logs'] : 0;
    $preferences->backup_user_files = isset($prefs['backup_user_files']) ? $prefs['backup_user_files'] : 0;
    $preferences->backup_course_files = isset($prefs['backup_course_files']) ? $prefs['backup_course_files'] : 0;
    $preferences->backup_site_files = isset($prefs['backup_site_files']) ? $prefs['backup_site_files'] : 0;
    $preferences->backup_messages = isset($prefs['backup_messages']) ? $prefs['backup_messages'] : 0;
    $preferences->backup_gradebook_history = isset($prefs['backup_gradebook_history']) ? $prefs['backup_gradebook_history'] : 0;
    $preferences->backup_blogs = isset($prefs['backup_blogs']) ? $prefs['backup_blogs'] : 0;
    $preferences->backup_course = $course->id;
    //Check users
    user_check_backup($course->id, $preferences->backup_unique_code, $preferences->backup_users, $preferences->backup_messages, $preferences->backup_blogs);
    //Check logs
    log_check_backup($course->id);
    //Check user files
    user_files_check_backup($course->id, $preferences->backup_unique_code);
    //Check course files
    course_files_check_backup($course->id, $preferences->backup_unique_code);
    //Check site files
    site_files_check_backup($course->id, $preferences->backup_unique_code);
    //Role assignments
    $roles = get_records('role', '', '', 'sortorder');
    foreach ($roles as $role) {
        $preferences->backuproleassignments[$role->id] = $role;
    }
    backup_add_static_preferences($preferences);
    return $preferences;
}
Example #2
0
function schedule_inc_backup_course_configure($course, $starttime = 0)
{
    global $CFG;
    $status = true;
    backup_add_to_log($starttime, $course->id, "    checking parameters", 'incrementalbackup');
    //Check the required variable
    if (empty($course->id)) {
        $status = false;
    }
    //Get scheduled backup preferences
    $incremental_config = backup_get_config();
    //Checks backup_config pairs exist
    if ($status) {
        if (!isset($incremental_config->backup_inc_modules)) {
            $incremental_config->backup_inc_modules = 1;
        }
        if (!isset($incremental_config->backup_inc_withuserdata)) {
            $incremental_config->backup_inc_withuserdata = 1;
        }
        if (!isset($incremental_config->backup_inc_metacourse)) {
            $incremental_config->backup_inc_metacourse = 1;
        }
        if (!isset($incremental_config->backup_inc_users)) {
            $incremental_config->backup_inc_users = 1;
        }
        if (!isset($incremental_config->backup_inc_logs)) {
            $incremental_config->backup_inc_logs = 0;
        }
        if (!isset($incremental_config->backup_inc_userfiles)) {
            $incremental_config->backup_inc_userfiles = 1;
        }
        if (!isset($incremental_config->backup_inc_coursefiles)) {
            $incremental_config->backup_inc_coursefiles = 1;
        }
        if (!isset($incremental_config->backup_inc_sitefiles)) {
            $incremental_config->backup_inc_sitefiles = 1;
        }
        if (!isset($incremental_config->backup_inc_messages)) {
            $incremental_config->backup_inc_messages = 0;
        }
        if (!isset($incremental_config->backup_inc_weekdays)) {
            $incremental_config->backup_inc_weekdays = "0000000";
        }
        if (!isset($incremental_config->backup_inc_hour)) {
            $incremental_config->backup_inc_hour = 00;
        }
        if (!isset($incremental_config->backup_inc_minute)) {
            $incremental_config->backup_inc_minute = 00;
        }
        if (!isset($incremental_config->backup_inc_destination)) {
            $incremental_config->backup_inc_destination = "";
        }
        if (!isset($incremental_config->backup_inc_keep)) {
            $incremental_config->backup_inc_keep = 1;
        }
        if (!isset($incremental_config->backup_sche_incrementals)) {
            $incremental_config->backup_sche_incrementals = 0;
        }
        if (!isset($incremental_config->backup_inc_privatedata)) {
            $incremental_config->backup_inc_privatedata = 0;
        }
    }
    if ($status) {
        //Checks for the required files/functions to backup every mod
        //And check if there is data about it
        //use the configured modules to backup.
        $count = 0;
        if (!empty($incremental_config->backup_inc_modules)) {
            $moduleselect = 'id=' . str_replace(',', ' OR id=', $incremental_config->backup_inc_modules);
            if ($allmods = get_records_select("modules", $moduleselect)) {
                foreach ($allmods as $mod) {
                    $modname = $mod->name;
                    $modfile = "{$CFG->dirroot}/mod/{$modname}/backuplib.php";
                    $modbackup = $modname . "_backup_mods";
                    $modcheckbackup = $modname . "_check_backup_mods";
                    if (file_exists($modfile)) {
                        include_once $modfile;
                        if (function_exists($modbackup) and function_exists($modcheckbackup)) {
                            $var = "exists_" . $modname;
                            ${$var} = true;
                            $count++;
                            // PENNY NOTES: I have moved from here to the closing brace inside
                            // by two sets of ifs()
                            // to avoid the backup failing on a non existant backup.
                            // If the file/function/whatever doesn't exist, we don't want to set this
                            // this module in backup preferences at all.
                            //Check data
                            //Check module info
                            $var = "backup_" . $modname;
                            if (!isset(${$var})) {
                                ${$var} = $incremental_config->backup_inc_modules;
                            }
                            //Now stores all the mods preferences into an array into preferences
                            $preferences->mods[$modname]->backup = ${$var};
                            //Check include user info
                            $var = "backup_user_info_" . $modname;
                            if (!isset(${$var})) {
                                ${$var} = $incremental_config->backup_inc_withuserdata;
                            }
                            //Now stores all the mods preferences into an array into preferences
                            $preferences->mods[$modname]->userinfo = ${$var};
                            //And the name of the mod
                            $preferences->mods[$modname]->name = $modname;
                        }
                    }
                }
            }
        }
        // now set instances
        if ($coursemods = get_course_mods($course->id)) {
            foreach ($coursemods as $mod) {
                if (array_key_exists($mod->modname, $preferences->mods)) {
                    // we are to backup this module
                    if (empty($preferences->mods[$mod->modname]->instances)) {
                        $preferences->mods[$mod->modname]->instances = array();
                        // avoid warnings
                    }
                    $preferences->mods[$mod->modname]->instances[$mod->instance]->backup = $preferences->mods[$mod->modname]->backup;
                    $preferences->mods[$mod->modname]->instances[$mod->instance]->userinfo = $preferences->mods[$mod->modname]->userinfo;
                    // there isn't really a nice way to do this...
                    $preferences->mods[$mod->modname]->instances[$mod->instance]->name = get_field($mod->modname, 'name', 'id', $mod->instance);
                }
            }
        }
        // finally, clean all the $preferences->mods[] not having instances. Nothing to backup about them
        if (!empty($preferences->mods)) {
            foreach ($preferences->mods as $modname => $mod) {
                if (!isset($mod->instances)) {
                    unset($preferences->mods[$modname]);
                }
            }
        }
    }
    //Convert other parameters
    if ($status) {
        $preferences->backup_metacourse = $incremental_config->backup_inc_metacourse;
        $preferences->backup_users = $incremental_config->backup_inc_users;
        $preferences->backup_logs = $incremental_config->backup_inc_logs;
        $preferences->backup_user_files = $incremental_config->backup_inc_userfiles;
        $preferences->backup_course_files = $incremental_config->backup_inc_coursefiles;
        $preferences->backup_site_files = $incremental_config->backup_inc_sitefiles;
        $preferences->backup_messages = $incremental_config->backup_inc_messages;
        $preferences->backup_gradebook_history = 1;
        $preferences->backup_course = $course->id;
        $preferences->backup_private_user_data = $incremental_config->backup_inc_privatedata;
        if (!empty($incremental_config->backup_inc_destination)) {
            if (!check_dir_exists($incremental_config->backup_inc_destination . '/' . $course->id, true, true)) {
                error('failed to create backup destination directory');
            } else {
                $preferences->backup_destination = $incremental_config->backup_inc_destination . '/' . $course->id;
            }
        }
        $preferences->backup_keep = $incremental_config->backup_inc_keep;
        $preferences->backup_sche_incrementals = $incremental_config->backup_sche_incrementals;
    }
    //Calculate various backup preferences
    if ($status) {
        backup_add_to_log($starttime, $course->id, "    calculating backup name", 'incrementalbackup');
        //Calculate the backup file name
        $backup_name = backup_get_zipfile_name($course);
        //Calculate the string to match the keep preference
        $keep_name = backup_get_keep_name($course);
        //Set them
        $preferences->backup_name = $backup_name;
        $preferences->keep_name = $keep_name;
        //Roleasignments
        $roles = get_records('role', '', '', 'sortorder');
        foreach ($roles as $role) {
            $preferences->backuproleassignments[$role->id] = $role;
        }
        //Another Info
        backup_add_static_preferences($preferences);
    }
    //Calculate the backup unique code to allow simultaneus backups (to define
    //the temp-directory name and records in backup temp tables
    if ($status) {
        $backup_unique_code = time();
        $preferences->backup_unique_code = $backup_unique_code;
    }
    //Calculate necesary info to backup modules
    if ($status) {
        backup_add_to_log($starttime, $course->id, "    calculating modules data", 'incrementalbackup');
        if ($allmods = get_records("modules")) {
            foreach ($allmods as $mod) {
                $modname = $mod->name;
                $modbackup = $modname . "_backup_mods";
                //If exists the lib & function
                $var = "exists_" . $modname;
                if (isset(${$var}) && ${$var}) {
                    //Add hidden fields
                    $var = "backup_" . $modname;
                    //Only if selected
                    if (${$var} == 1) {
                        $var = "backup_user_info_" . $modname;
                        //Call the check function to show more info
                        $modcheckbackup = $modname . "_check_backup_mods";
                        backup_add_to_log($starttime, $course->id, "      {$modname}", 'incrementalbackup');
                        $modcheckbackup($course->id, ${$var}, $backup_unique_code);
                    }
                }
            }
        }
    }
    //Now calculate the users
    if ($status) {
        backup_add_to_log($starttime, $course->id, "    calculating users", 'incrementalbackup');
        //Decide about include users with messages, based on SITEID
        if ($preferences->backup_messages && $preferences->backup_course == SITEID) {
            $include_message_users = true;
        } else {
            $include_message_users = false;
        }
        //Decide about include users with blogs, based on SITEID
        if (isset($preferences->backup_blogs) && isset($preferences->backup_course) && $preferences->backup_blogs && $preferences->backup_course == SITEID) {
            $include_blog_users = true;
        } else {
            $include_blog_users = false;
        }
        user_check_backup($course->id, $backup_unique_code, $preferences->backup_users, $include_message_users, $include_blog_users);
    }
    //Now calculate the logs
    if ($status) {
        if ($preferences->backup_logs) {
            backup_add_to_log($starttime, $course->id, "    calculating logs", 'incrementalbackup');
            log_check_backup($course->id);
        }
    }
    //Now calculate the userfiles
    if ($status) {
        if ($preferences->backup_user_files) {
            backup_add_to_log($starttime, $course->id, "    calculating user files", 'incrementalbackup');
            user_files_check_backup($course->id, $preferences->backup_unique_code);
        }
    }
    //Now calculate the coursefiles
    if ($status) {
        if ($preferences->backup_course_files) {
            backup_add_to_log($starttime, $course->id, "    calculating course files", 'incrementalbackup');
            course_files_check_backup($course->id, $preferences->backup_unique_code);
        }
    }
    //Now calculate the sitefiles
    if ($status) {
        if ($preferences->backup_site_files) {
            backup_add_to_log($starttime, $course->id, "    calculating site files", 'incrementalbackup');
            site_files_check_backup($course->id, $preferences->backup_unique_code);
        }
    }
    //If everything is ok, return calculated preferences
    if ($status) {
        $status = $preferences;
    }
    return $status;
}
Example #3
0
    // if we're at the start, clear the cache of prefs
    if (isset($SESSION->backupprefs[$course->id])) {
        unset($SESSION->backupprefs[$course->id]);
    }
    // TODO use form api
    // START BACKUP FORM //
    ?>
<form id="form1" method="post" action="<?php 
    echo $CFG->wwwroot;
    ?>
/course/view.php?action=backup">
<table cellpadding="5" style="margin-left:auto;margin-right:auto;">
</table>
<?php 
    $backup_unique_code = time();
    $backup_name = backup_get_zipfile_name($course, $backup_unique_code);
    // look for activities to backup
    // note: this is a bit of mish mash between hardcoding 'quiz' and using $modname.  left $modname there if we decide to
    //         change this to backup more than just quiz activities in the template
    if ($mods = get_records_sql("SELECT * FROM {$CFG->prefix}modules WHERE visible = 1")) {
        //print_object($mods);
        foreach ($mods as $mod) {
            $modname = $mod->name;
            $modfile = $CFG->dirroot . '/mod/' . $modname . '/backuplib.php';
            if (!file_exists($modfile)) {
                continue;
            }
            require_once $modfile;
            if ($instances = get_all_instances_in_course($modname, $course, NULL, true)) {
                print '<input type="hidden" name="backup_' . $modname . '" value="1" />';
                print '<input type="hidden" name="backup_user_info_' . $modname . '" value="1" />';
Example #4
0
 public function createMergeFileName($dataItemId)
 {
     // Create the file name for the merge.
     // For now we are assuming the $id is the dataItemId which contains the courseId
     $courseId = SynchContentHierarchy::getIdFromDataItemId($dataItemId);
     global $CFG;
     // If its's a remote course we won't find the details here.
     if (!($course = get_record('course', 'id', $courseId))) {
         // We can't find the course Id, there's a fair chance it will be a remote course so lets set the default
         $course = new stdClass();
         $course->id = $courseId;
         $course->shortname = $CFG->synch->course_shortname_default;
     }
     $fileName = backup_get_zipfile_name($course);
     return $fileName;
 }
Example #5
0
/**
* Function to generate the $preferences variable that
* backup uses.  This will back up all modules and instances in a course.
*
* @param object $course course object
* @param array $prefs can contain:
       backup_metacourse
       backup_users
       backup_logs
       backup_user_files
       backup_course_files
       backup_site_files
       backup_messages
* and if not provided, they will not be included.
*/
function rollover_backup_generate_preferences_artificially($course, $prefs)
{
    global $CFG;
    $preferences = new StdClass();
    $preferences->backup_unique_code = time();
    $preferences->backup_name = backup_get_zipfile_name($course, $preferences->backup_unique_code);
    $count = 0;
    if ($allmods = get_records("modules")) {
        foreach ($allmods as $mod) {
            $modname = $mod->name;
            $modfile = "{$CFG->dirroot}/mod/{$modname}/backuplib.php";
            $modbackup = $modname . "_backup_mods";
            $modbackupone = $modname . "_backup_one_mod";
            $modcheckbackup = $modname . "_check_backup_mods";
            if (!file_exists($modfile)) {
                continue;
            }
            include_once $modfile;
            if (!function_exists($modbackup) || !function_exists($modcheckbackup)) {
                continue;
            }
            $var = "exists_" . $modname;
            $preferences->{$var} = true;
            $count++;
            // check that there are instances and we can back them up individually
            if (!count_records('course_modules', 'course', $course->id, 'module', $mod->id) || !function_exists($modbackupone)) {
                continue;
            }
            $var = 'exists_one_' . $modname;
            $preferences->{$var} = true;
            $varname = $modname . '_instances';
            $preferences->{$varname} = get_all_instances_in_course($modname, $course, NULL, true);
            $instancestopass = array();
            $countinstances = 0;
            foreach ($preferences->{$varname} as $instance) {
                $preferences->mods[$modname]->instances[$instance->id]->name = $instance->name;
                $var = 'backup_' . $modname . '_instance_' . $instance->id;
                $preferences->{$var} = true;
                $preferences->mods[$modname]->instances[$instance->id]->backup = true;
                $var = 'backup_user_info_' . $modname . '_instance_' . $instance->id;
                $preferences->{$var} = false;
                $preferences->mods[$modname]->instances[$instance->id]->userinfo = false;
                $var = 'backup_' . $modname . '_instances';
                $preferences->{$var} = 1;
                // we need this later to determine what to display in modcheckbackup.
                $var1 = 'backup_' . $modname . '_instance_' . $instance->id;
                $var2 = 'backup_user_info_' . $modname . '_instance_' . $instance->id;
                if (!empty($preferences->{$var1})) {
                    $obj = new StdClass();
                    $obj->name = $instance->name;
                    $obj->userdata = $preferences->{$var2};
                    $obj->id = $instance->id;
                    $instancestopass[$instance->id] = $obj;
                    $countinstances++;
                }
            }
            $modcheckbackup($course->id, $preferences->{$varname}, $preferences->backup_unique_code, $instancestopass);
            //Check data
            //Check module info
            $preferences->mods[$modname]->name = $modname;
            $var = "backup_" . $modname;
            $preferences->{$var} = true;
            $preferences->mods[$modname]->backup = true;
            //Check include user info
            $var = "backup_user_info_" . $modname;
            $preferences->{$var} = false;
            $preferences->mods[$modname]->userinfo = false;
        }
    }
    //Check other parameters
    $preferences->backup_metacourse = isset($prefs['backup_metacourse']) ? $prefs['backup_metacourse'] : 0;
    $preferences->backup_users = isset($prefs['backup_users']) ? $prefs['backup_users'] : 0;
    $preferences->backup_logs = isset($prefs['backup_logs']) ? $prefs['backup_logs'] : 0;
    $preferences->backup_user_files = isset($prefs['backup_user_files']) ? $prefs['backup_user_files'] : 0;
    $preferences->backup_course_files = isset($prefs['backup_course_files']) ? $prefs['backup_course_files'] : 0;
    $preferences->backup_site_files = isset($prefs['backup_site_files']) ? $prefs['backup_site_files'] : 0;
    $preferences->backup_messages = isset($prefs['backup_messages']) ? $prefs['backup_messages'] : 0;
    $preferences->backup_gradebook_history = isset($prefs['backup_gradebook_history']) ? $prefs['backup_gradebook_history'] : 0;
    $preferences->backup_blogs = isset($prefs['backup_blogs']) ? $prefs['backup_blogs'] : 0;
    $preferences->backup_course = $course->id;
    backup_add_static_preferences($preferences);
    return $preferences;
}