mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
[MDL-15258] Clean up data_presets_export() function.
This commit is contained in:
parent
eb203ee412
commit
45d4986761
1 changed files with 86 additions and 66 deletions
|
@ -381,112 +381,132 @@ exit(0);
|
||||||
|
|
||||||
function data_presets_export($course, $cm, $data) {
|
function data_presets_export($course, $cm, $data) {
|
||||||
global $CFG, $DB;
|
global $CFG, $DB;
|
||||||
|
$tempfolder = $CFG->dataroot . '/temp';
|
||||||
|
// ToDo: Don't write directly into moodledata/temp
|
||||||
|
|
||||||
/* Info Collected. Now need to make files in moodledata/temp */
|
// Assemble "preset.xml":
|
||||||
$tempfolder = $CFG->dataroot.'/temp';
|
$presetxmldata = "<preset>\n\n";
|
||||||
$singletemplate = fopen($tempfolder.'/singletemplate.html', 'w');
|
|
||||||
$listtemplate = fopen($tempfolder.'/listtemplate.html', 'w');
|
|
||||||
$listtemplateheader = fopen($tempfolder.'/listtemplateheader.html', 'w');
|
|
||||||
$listtemplatefooter = fopen($tempfolder.'/listtemplatefooter.html', 'w');
|
|
||||||
$addtemplate = fopen($tempfolder.'/addtemplate.html', 'w');
|
|
||||||
$rsstemplate = fopen($tempfolder.'/rsstemplate.html', 'w');
|
|
||||||
$rsstitletemplate = fopen($tempfolder.'/rsstitletemplate.html', 'w');
|
|
||||||
$csstemplate = fopen($tempfolder.'/csstemplate.css', 'w');
|
|
||||||
$jstemplate = fopen($tempfolder.'/jstemplate.js', 'w');
|
|
||||||
$asearchtemplate = fopen($tempfolder.'/asearchtemplate.html', 'w');
|
|
||||||
|
|
||||||
fwrite($singletemplate, $data->singletemplate);
|
// Raw settings are not preprocessed during saving of presets
|
||||||
fwrite($listtemplate, $data->listtemplate);
|
$raw_settings = array(
|
||||||
fwrite($listtemplateheader, $data->listtemplateheader);
|
'intro',
|
||||||
fwrite($listtemplatefooter, $data->listtemplatefooter);
|
'comments',
|
||||||
fwrite($addtemplate, $data->addtemplate);
|
'requiredentries',
|
||||||
fwrite($rsstemplate, $data->rsstemplate);
|
'requiredentriestoview',
|
||||||
fwrite($rsstitletemplate, $data->rsstitletemplate);
|
'maxentries',
|
||||||
fwrite($csstemplate, $data->csstemplate);
|
'rssarticles',
|
||||||
fwrite($jstemplate, $data->jstemplate);
|
'approval',
|
||||||
fwrite($asearchtemplate, $data->asearchtemplate);
|
'defaultsortdir'
|
||||||
|
);
|
||||||
|
|
||||||
fclose($singletemplate);
|
$presetxmldata .= "<settings>\n";
|
||||||
fclose($listtemplate);
|
// First, settings that do not require any conversion
|
||||||
fclose($listtemplateheader);
|
|
||||||
fclose($listtemplatefooter);
|
|
||||||
fclose($addtemplate);
|
|
||||||
fclose($rsstemplate);
|
|
||||||
fclose($rsstitletemplate);
|
|
||||||
fclose($csstemplate);
|
|
||||||
fclose($jstemplate);
|
|
||||||
fclose($asearchtemplate);
|
|
||||||
|
|
||||||
/* All the display data is now done. Now assemble preset.xml */
|
|
||||||
$presetfile = fopen($tempfolder.'/preset.xml', 'w');
|
|
||||||
$presetxml = "<preset>\n\n";
|
|
||||||
|
|
||||||
// raw settings are not preprocessed during saving of presets
|
|
||||||
$raw_settings = array('intro', 'comments', 'requiredentries', 'requiredentriestoview',
|
|
||||||
'maxentries', 'rssarticles', 'approval', 'defaultsortdir');
|
|
||||||
|
|
||||||
$presetxml .= "<settings>\n";
|
|
||||||
// first settings that do not require any conversion
|
|
||||||
foreach ($raw_settings as $setting) {
|
foreach ($raw_settings as $setting) {
|
||||||
$presetxml .= "<$setting>".htmlspecialchars($data->$setting)."</$setting>\n";
|
$presetxmldata .= "<$setting>" . htmlspecialchars($data->$setting) . "</$setting>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// now specific settings
|
// Now specific settings
|
||||||
if ($data->defaultsort > 0 and $sortfield = data_get_field_from_id($data->defaultsort, $data)) {
|
if ($data->defaultsort > 0 && $sortfield = data_get_field_from_id($data->defaultsort, $data)) {
|
||||||
$presetxml .= "<defaultsort>".htmlspecialchars($sortfield->field->name)."</defaultsort>\n";
|
$presetxmldata .= '<defaultsort>' . htmlspecialchars($sortfield->field->name) . "</defaultsort>\n";
|
||||||
} else {
|
} else {
|
||||||
$presetxml .= "<defaultsort>0</defaultsort>\n";
|
$presetxmldata .= "<defaultsort>0</defaultsort>\n";
|
||||||
}
|
}
|
||||||
// note: grading settings are not exported intentionally
|
$presetxmldata .= "</settings>\n\n";
|
||||||
$presetxml .= "</settings>\n\n";
|
|
||||||
|
|
||||||
// Now for the fields. Grab all that are non-empty
|
// Now for the fields. Grab all that are non-empty
|
||||||
$fields = $DB->get_records('data_fields', array('dataid'=>$data->id));
|
$fields = $DB->get_records('data_fields', array('dataid'=>$data->id));
|
||||||
ksort($fields);
|
ksort($fields);
|
||||||
if (!empty($fields)) {
|
if (!empty($fields)) {
|
||||||
foreach ($fields as $field) {
|
foreach ($fields as $field) {
|
||||||
$presetxml .= "<field>\n";
|
$presetxmldata .= "<field>\n";
|
||||||
foreach ($field as $key => $value) {
|
foreach ($field as $key => $value) {
|
||||||
if ($value != '' && $key != 'id' && $key != 'dataid') {
|
if ($value != '' && $key != 'id' && $key != 'dataid') {
|
||||||
$presetxml .= "<$key>".htmlspecialchars($value)."</$key>\n";
|
$presetxmldata .= "<$key>" . htmlspecialchars($value) . "</$key>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$presetxml .= "</field>\n\n";
|
$presetxmldata .= "</field>\n\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$presetxmldata .= '</preset>';
|
||||||
|
|
||||||
$presetxml .= "</preset>";
|
// After opening a file in write mode, close it asap
|
||||||
fwrite($presetfile, $presetxml);
|
$presetxmlfile = fopen($tempfolder . '/preset.xml', 'w');
|
||||||
fclose($presetfile);
|
fwrite($presetxmlfile, $presetxmldata);
|
||||||
|
fclose($presetxmlfile);
|
||||||
|
|
||||||
/* Check all is well */
|
// Now write the template files
|
||||||
if (!is_directory_a_preset($tempfolder)) {
|
$singletemplate = fopen($tempfolder . '/singletemplate.html', 'w');
|
||||||
error("Not all files generated!");
|
fwrite($singletemplate, $data->singletemplate);
|
||||||
|
fclose($singletemplate);
|
||||||
|
|
||||||
|
$listtemplateheader = fopen($tempfolder . '/listtemplateheader.html', 'w');
|
||||||
|
fwrite($listtemplateheader, $data->listtemplateheader);
|
||||||
|
fclose($listtemplateheader);
|
||||||
|
|
||||||
|
$listtemplate = fopen($tempfolder . '/listtemplate.html', 'w');
|
||||||
|
fwrite($listtemplate, $data->listtemplate);
|
||||||
|
fclose($listtemplate);
|
||||||
|
|
||||||
|
$listtemplatefooter = fopen($tempfolder . '/listtemplatefooter.html', 'w');
|
||||||
|
fwrite($listtemplatefooter, $data->listtemplatefooter);
|
||||||
|
fclose($listtemplatefooter);
|
||||||
|
|
||||||
|
$addtemplate = fopen($tempfolder . '/addtemplate.html', 'w');
|
||||||
|
fwrite($addtemplate, $data->addtemplate);
|
||||||
|
fclose($addtemplate);
|
||||||
|
|
||||||
|
$rsstemplate = fopen($tempfolder . '/rsstemplate.html', 'w');
|
||||||
|
fwrite($rsstemplate, $data->rsstemplate);
|
||||||
|
fclose($rsstemplate);
|
||||||
|
|
||||||
|
$rsstitletemplate = fopen($tempfolder . '/rsstitletemplate.html', 'w');
|
||||||
|
fwrite($rsstitletemplate, $data->rsstitletemplate);
|
||||||
|
fclose($rsstitletemplate);
|
||||||
|
|
||||||
|
$csstemplate = fopen($tempfolder . '/csstemplate.css', 'w');
|
||||||
|
fwrite($csstemplate, $data->csstemplate);
|
||||||
|
fclose($csstemplate);
|
||||||
|
|
||||||
|
$jstemplate = fopen($tempfolder . '/jstemplate.js', 'w');
|
||||||
|
fwrite($jstemplate, $data->jstemplate);
|
||||||
|
fclose($jstemplate);
|
||||||
|
|
||||||
|
$asearchtemplate = fopen($tempfolder . '/asearchtemplate.html', 'w');
|
||||||
|
fwrite($asearchtemplate, $data->asearchtemplate);
|
||||||
|
fclose($asearchtemplate);
|
||||||
|
|
||||||
|
// Check if all files have been generated
|
||||||
|
if (! is_directory_a_preset($tempfolder)) {
|
||||||
|
error('Not all files generated!');
|
||||||
|
// should be migrated to print_error()
|
||||||
}
|
}
|
||||||
|
|
||||||
$filelist = array(
|
$filelist = array(
|
||||||
|
'preset.xml',
|
||||||
'singletemplate.html',
|
'singletemplate.html',
|
||||||
'listtemplate.html',
|
|
||||||
'listtemplateheader.html',
|
'listtemplateheader.html',
|
||||||
|
'listtemplate.html',
|
||||||
'listtemplatefooter.html',
|
'listtemplatefooter.html',
|
||||||
'addtemplate.html',
|
'addtemplate.html',
|
||||||
'rsstemplate.html',
|
'rsstemplate.html',
|
||||||
'rsstitletemplate.html',
|
'rsstitletemplate.html',
|
||||||
'csstemplate.css',
|
'csstemplate.css',
|
||||||
'jstemplate.js',
|
'jstemplate.js',
|
||||||
'preset.xml',
|
|
||||||
'asearchtemplate.html'
|
'asearchtemplate.html'
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ($filelist as $key => $file) {
|
foreach ($filelist as $key => $file) {
|
||||||
$filelist[$key] = $tempfolder.'/'.$filelist[$key];
|
$filelist[$key] = $tempfolder . '/' . $filelist[$key];
|
||||||
}
|
}
|
||||||
|
|
||||||
@unlink($tempfolder.'/export.zip');
|
$exportfile = $tempfolder . '/export.zip';
|
||||||
$status = zip_files($filelist, $tempfolder.'/export.zip');
|
@unlink($exportfile);
|
||||||
|
$status = zip_files($filelist, $exportfile);
|
||||||
|
// ToDo: status check
|
||||||
|
// ToDo: remove temporary files
|
||||||
|
|
||||||
/* made the zip... now return the filename for storage.*/
|
// Return the full path to the ZIP file to be exported:
|
||||||
return $tempfolder.'/export.zip';
|
return $exportfile;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue