libdir.'/uploadlib.php');
require_once($CFG->libdir.'/xmlize.php');
$id = optional_param('id', 0, PARAM_INT); // course module id
$d = optional_param('d', 0, PARAM_INT); // database activity id
$action = optional_param('action', 'base', PARAM_ALPHANUM); // current action
$fullname = optional_param('fullname', '', PARAM_PATH); // directory the preset is in
$file = optional_param('file', '', PARAM_PATH); // uploaded file
// find out preset owner userid and shortname
$parts = explode('/', $fullname);
$userid = empty($parts[0]) ? 0 : (int)$parts[0];
$shortname = empty($parts[1]) ? '' : $parts[1];
unset($parts);
unset($fullname);
if ($id) {
if (! $cm = get_coursemodule_from_id('data', $id)) {
error('Course Module ID was incorrect');
}
if (! $course = get_record('course', 'id', $cm->course)) {
error('Course is misconfigured');
}
if (! $data = get_record('data', 'id', $cm->instance)) {
error('Module Incorrect');
}
} else if ($d) {
if (! $data = get_record('data', 'id', $d)) {
error('Database ID Incorrect');
}
if (! $course = get_record('course', 'id', $data->course)) {
error('Course is misconfigured');
}
if (! $cm = get_coursemodule_from_instance('data', $data->id, $course->id)) {
error('Course Module ID was incorrect');
}
} else {
error('Parameter missing');
}
// fill in missing properties needed for updating of instance
$data->course = $cm->course;
$data->cmidnumber = $cm->idnumber;
$data->instance = $cm->instance;
if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) {
error('Could not find context');
}
require_login($course->id, false, $cm);
require_capability('mod/data:managetemplates', $context);
if ($userid && ($userid != $USER->id) && !has_capability('mod/data:viewalluserpresets', $context)) {
error('You are not allowed to access presets from other users');
}
/* Need sesskey security check here for import instruction */
$sesskey = sesskey();
/********************************************************************/
/* Output */
if ($action !== 'export') {
data_print_header($course, $cm, $data, 'presets');
}
switch ($action) {
/***************** Deleting *****************/
case 'confirmdelete' :
if (!confirm_sesskey()) { // GET request ok here
error("Sesskey Invalid");
}
if ($userid > 0 and ($userid == $USER->id || has_capability('mod/data:manageuserpresets', $context))) {
//ok can delete
} else {
error("Invalid request");
}
$path = data_preset_path($course, $userid, $shortname);
$strwarning = get_string('deletewarning', 'data').'
'.
data_preset_name($shortname, $path);
$options = new object();
$options->fullname = $userid.'/'.$shortname;
$options->action = 'delete';
$options->d = $data->id;
$options->sesskey = sesskey();
$optionsno = new object();
$optionsno->d = $data->id;
notice_yesno($strwarning, 'preset.php', 'preset.php', $options, $optionsno, 'post', 'get');
print_footer($course);
exit(0);
break;
case 'delete' :
if (!data_submitted() and !confirm_sesskey()) {
error("Invalid request");
}
if ($userid > 0 and ($userid == $USER->id || has_capability('mod/data:manageuserpresets', $context))) {
//ok can delete
} else {
error("Invalid request");
}
$presetpath = data_preset_path($course, $userid, $shortname);
if (!clean_preset($presetpath)) {
error("Error deleting a preset!");
}
@rmdir($presetpath);
$strdeleted = get_string('deleted', 'data');
notify("$shortname $strdeleted", 'notifysuccess');
break;
/***************** Importing *****************/
case 'importpreset' :
if (!data_submitted() or !confirm_sesskey()) {
error("Invalid request");
}
$pimporter = new PresetImporter($course, $cm, $data, $userid, $shortname);
$pimporter->import_options();
print_footer($course);
exit(0);
break;
/* Imports a zip file. */
case 'importzip' :
if (!data_submitted() or !confirm_sesskey()) {
error("Invalid request");
}
if (!make_upload_directory('temp/data/'.$USER->id)) {
error("Can't Create Directory");
}
$presetfile = $CFG->dataroot.'/temp/data/'.$USER->id;
clean_preset($presetfile);
if (!unzip_file($CFG->dataroot."/$course->id/$file", $presetfile, false)) {
error("Can't unzip file");
}
$pimporter = new PresetImporter($course, $cm, $data, -$USER->id, $shortname);
$pimporter->import_options();
print_footer($course);
exit(0);
break;
case 'finishimport':
if (!data_submitted() or !confirm_sesskey()) {
error("Invalid request");
}
$pimporter = new PresetImporter($course, $cm, $data, $userid, $shortname);
$pimporter->import();
$strimportsuccess = get_string('importsuccess', 'data');
$straddentries = get_string('addentries', 'data');
$strtodatabase = get_string('todatabase', 'data');
if (!get_records('data_records', 'dataid', $data->id)) {
notify("$strimportsuccess $straddentries $strtodatabase", 'notifysuccess');
} else {
notify("$strimportsuccess", 'notifysuccess');
}
break;
/* Exports as a zip file ready for download. */
case 'export':
if (!data_submitted() or !confirm_sesskey()) {
error("Invalid request");
}
$exportfile = data_presets_export($course, $cm, $data);
$exportfilename = basename($exportfile);
header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=$exportfilename");
header('Expires: 0');
header('Cache-Control: must-revalidate,post-check=0,pre-check=0');
header('Pragma: public');
$exportfilehandler = fopen($exportfile, 'rb');
print fread($exportfilehandler, filesize($exportfile));
fclose($exportfilehandler);
unlink($exportfile);
exit(0);
break;
/***************** Exporting *****************/
case 'save1':
if (!data_submitted() or !confirm_sesskey()) {
error("Invalid request");
}
$strcontinue = get_string('continue');
$strwarning = get_string('presetinfo', 'data');
$strname = get_string('shortname');
echo '
'.$strwarning.'
'; echo ''.$strexport.' | |
'; helpbutton('exportzip', '', 'data', true, true); echo ' | '; $options = new object(); $options->action = 'export'; $options->d = $data->id; $options->sesskey = sesskey(); print_single_button('preset.php', $options, $strexport, 'post'); echo ' |
'; helpbutton('savepreset', '', 'data', true, true); echo ' | '; $options = new object(); $options->action = 'save1'; $options->d = $data->id; $options->sesskey = sesskey(); print_single_button('preset.php', $options, $strsave, 'post'); echo ' |
'.$strimport.' | |
'; helpbutton('importfromfile', '', 'data', true, true); echo ' | '; echo ''; echo ' |
'; helpbutton('usepreset', '', 'data', true, true); echo ' | '; echo ''; echo ' |