From 45d4986761ac63297e7e2dc11d54eaab2e07ad81 Mon Sep 17 00:00:00 2001 From: robertall Date: Mon, 16 Jun 2008 18:33:26 +0000 Subject: [PATCH] [MDL-15258] Clean up data_presets_export() function. --- mod/data/preset.php | 156 +++++++++++++++++++++++++------------------- 1 file changed, 88 insertions(+), 68 deletions(-) diff --git a/mod/data/preset.php b/mod/data/preset.php index b6d660523f..08899bdb61 100644 --- a/mod/data/preset.php +++ b/mod/data/preset.php @@ -381,112 +381,132 @@ exit(0); function data_presets_export($course, $cm, $data) { global $CFG, $DB; + $tempfolder = $CFG->dataroot . '/temp'; + // ToDo: Don't write directly into moodledata/temp + + // Assemble "preset.xml": + $presetxmldata = "\n\n"; + + // Raw settings are not preprocessed during saving of presets + $raw_settings = array( + 'intro', + 'comments', + 'requiredentries', + 'requiredentriestoview', + 'maxentries', + 'rssarticles', + 'approval', + 'defaultsortdir' + ); - /* Info Collected. Now need to make files in moodledata/temp */ - $tempfolder = $CFG->dataroot.'/temp'; - $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); - fwrite($listtemplate, $data->listtemplate); - fwrite($listtemplateheader, $data->listtemplateheader); - fwrite($listtemplatefooter, $data->listtemplatefooter); - fwrite($addtemplate, $data->addtemplate); - fwrite($rsstemplate, $data->rsstemplate); - fwrite($rsstitletemplate, $data->rsstitletemplate); - fwrite($csstemplate, $data->csstemplate); - fwrite($jstemplate, $data->jstemplate); - fwrite($asearchtemplate, $data->asearchtemplate); - - fclose($singletemplate); - fclose($listtemplate); - 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 = "\n\n"; - - // raw settings are not preprocessed during saving of presets - $raw_settings = array('intro', 'comments', 'requiredentries', 'requiredentriestoview', - 'maxentries', 'rssarticles', 'approval', 'defaultsortdir'); - - $presetxml .= "\n"; - // first settings that do not require any conversion + $presetxmldata .= "\n"; + // First, settings that do not require any conversion foreach ($raw_settings as $setting) { - $presetxml .= "<$setting>".htmlspecialchars($data->$setting)."\n"; + $presetxmldata .= "<$setting>" . htmlspecialchars($data->$setting) . "\n"; } - // now specific settings - if ($data->defaultsort > 0 and $sortfield = data_get_field_from_id($data->defaultsort, $data)) { - $presetxml .= "".htmlspecialchars($sortfield->field->name)."\n"; + // Now specific settings + if ($data->defaultsort > 0 && $sortfield = data_get_field_from_id($data->defaultsort, $data)) { + $presetxmldata .= '' . htmlspecialchars($sortfield->field->name) . "\n"; } else { - $presetxml .= "0\n"; + $presetxmldata .= "0\n"; } - // note: grading settings are not exported intentionally - $presetxml .= "\n\n"; + $presetxmldata .= "\n\n"; // Now for the fields. Grab all that are non-empty $fields = $DB->get_records('data_fields', array('dataid'=>$data->id)); ksort($fields); if (!empty($fields)) { foreach ($fields as $field) { - $presetxml .= "\n"; + $presetxmldata .= "\n"; foreach ($field as $key => $value) { if ($value != '' && $key != 'id' && $key != 'dataid') { - $presetxml .= "<$key>".htmlspecialchars($value)."\n"; + $presetxmldata .= "<$key>" . htmlspecialchars($value) . "\n"; } } - $presetxml .= "\n\n"; + $presetxmldata .= "\n\n"; } } + $presetxmldata .= ''; + + // After opening a file in write mode, close it asap + $presetxmlfile = fopen($tempfolder . '/preset.xml', 'w'); + fwrite($presetxmlfile, $presetxmldata); + fclose($presetxmlfile); + + // Now write the template files + $singletemplate = fopen($tempfolder . '/singletemplate.html', 'w'); + fwrite($singletemplate, $data->singletemplate); + fclose($singletemplate); - $presetxml .= ""; - fwrite($presetfile, $presetxml); - fclose($presetfile); + $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); - /* Check all is well */ - if (!is_directory_a_preset($tempfolder)) { - error("Not all files generated!"); + $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( + 'preset.xml', 'singletemplate.html', - 'listtemplate.html', 'listtemplateheader.html', + 'listtemplate.html', 'listtemplatefooter.html', 'addtemplate.html', 'rsstemplate.html', 'rsstitletemplate.html', 'csstemplate.css', 'jstemplate.js', - 'preset.xml', 'asearchtemplate.html' ); foreach ($filelist as $key => $file) { - $filelist[$key] = $tempfolder.'/'.$filelist[$key]; + $filelist[$key] = $tempfolder . '/' . $filelist[$key]; } - @unlink($tempfolder.'/export.zip'); - $status = zip_files($filelist, $tempfolder.'/export.zip'); + $exportfile = $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 $tempfolder.'/export.zip'; + // Return the full path to the ZIP file to be exported: + return $exportfile; } ?> -- 2.39.5