From: mjollnir_ Date: Mon, 11 Aug 2008 10:40:04 +0000 (+0000) Subject: MDL-15777 - whole database module export rejigged to use files api. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=1bf8c6b2cb034712bd151fdfbc925dcf4ad3b4fa;p=moodle.git MDL-15777 - whole database module export rejigged to use files api. disabled ods and excel export for now until those libraries work with files api. reverted a previous patch I had in this area. --- diff --git a/lang/en_utf8/data.php b/lang/en_utf8/data.php index 910addeedb..af97d5943d 100644 --- a/lang/en_utf8/data.php +++ b/lang/en_utf8/data.php @@ -210,6 +210,7 @@ $string['pagesize'] = 'Entries per page'; $string['participants'] = 'Participants'; $string['picture'] = 'Picture'; $string['pleaseaddsome'] = 'Please create some below or choose a predefined set to get started.'; +$string['portfolionotfile'] = 'Export to a portfolio rather than a file (csv only)'; $string['presetinfo'] = 'Saving as a preset will publish this template. Other users may be able to use it in their databases.'; $string['presets'] = 'Presets'; $string['radiobutton'] = 'Radio buttons'; diff --git a/lang/en_utf8/portfolio.php b/lang/en_utf8/portfolio.php index 69dc3b71a0..71fd96005b 100644 --- a/lang/en_utf8/portfolio.php +++ b/lang/en_utf8/portfolio.php @@ -44,7 +44,6 @@ $string['nonprimative'] = 'A non primative value was passed as a callback argume $string['notexportable'] = 'Sorry, but the type of content you are trying to export is not exportable'; $string['nouploaddirectory'] = 'Could not create a temporary directory to package your data into'; $string['portfolio'] = 'Portfolio'; -$string['portfolionotfile'] = 'Export to a portfolio rather than a file'; $string['portfolios'] = 'Portfolios'; $string['plugin'] = 'Portfolio Plugin'; $string['plugincouldnotpackage'] = 'Failed to package up your data for export'; diff --git a/mod/data/export.php b/mod/data/export.php index b819efacae..9ba42f6f12 100644 --- a/mod/data/export.php +++ b/mod/data/export.php @@ -74,6 +74,7 @@ if($mform->is_cancelled()) { if (array_key_exists('portfolio', $formdata) && !empty($formdata['portfolio'])) { // fake portfolio callback stuff and redirect $formdata['id'] = $cm->id; + $formdata['exporttype'] = 'csv'; // force for now $url = portfolio_fake_add_url($formdata['portfolio'], 'data_portfolio_caller', '/mod/data/lib.php', $formdata); redirect($url); } diff --git a/mod/data/export_form.php b/mod/data/export_form.php index ad53356f37..a7641c3239 100644 --- a/mod/data/export_form.php +++ b/mod/data/export_form.php @@ -53,12 +53,12 @@ class mod_data_export_form extends moodleform { } $this->add_checkbox_controller(1, null, null, 1); require_once($CFG->libdir . '/portfoliolib.php'); - if (false) { // @todo penny replace with permissions check + if (true) { // @todo penny replace with permissions check if ($portfoliooptions = portfolio_instance_select( portfolio_instances(), call_user_func(array('data_portfolio_caller', 'supported_formats')), 'data_portfolio_caller', '', true, true)) { - $mform->addElement('header', 'notice', get_string('portfolionotfile', 'portfolio') . ':'); + $mform->addElement('header', 'notice', get_string('portfolionotfile', 'data') . ':'); $portfoliooptions[0] = get_string('none'); ksort($portfoliooptions); $mform->addElement('select', 'portfolio', get_string('portfolio', 'portfolio'), $portfoliooptions); diff --git a/mod/data/lib.php b/mod/data/lib.php index 8a66872ad0..dcc071e702 100755 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -2281,7 +2281,7 @@ function data_supports($feature) { default: return null; } } -function data_export_csv($export, $delimiter_name, $dataname, $count, $todir=false) { +function data_export_csv($export, $delimiter_name, $dataname, $count, $return=false) { global $CFG; require_once($CFG->libdir . '/csvlib.class.php'); $delimiter = csv_import_reader::get_delimiter($delimiter_name); @@ -2292,7 +2292,7 @@ function data_export_csv($export, $delimiter_name, $dataname, $count, $todir=fal $filename .= clean_filename('-' . gmdate("Ymd_Hi")); $filename .= clean_filename("-${delimiter_name}_separated"); $filename .= '.csv'; - if (!$todir) { + if (empty($return)) { header("Content-Type: application/download\n"); header("Content-Disposition: attachment; filename=$filename"); header('Expires: 0'); @@ -2307,22 +2307,15 @@ function data_export_csv($export, $delimiter_name, $dataname, $count, $todir=fal } $returnstr .= implode($delimiter, $row) . "\n"; } - if (empty($todir)) { + if (empty($return)) { echo $returnstr; return; } - // @todo - convert to files api. - $status = ($handle = fopen($todir . '/' . $filename, 'w')); - $status = $status && fwrite($handle, $returnstr); - $status = $status && fclose($handle); - if ($status) { - return $filename; - } - return false; + return $returnstr; } -function data_export_xls($export, $dataname, $count, $todir=false) { +function data_export_xls($export, $dataname, $count) { global $CFG; require_once("$CFG->libdir/excellib.class.php"); $filename = clean_filename("${dataname}-${count}_record"); @@ -2333,13 +2326,8 @@ function data_export_xls($export, $dataname, $count, $todir=false) { $filename .= '.xls'; $filearg = '-'; - if ($todir) { - $filearg = $todir . '/' . $filename; - } $workbook = new MoodleExcelWorkbook($filearg); - if (!$todir) { - $workbook->send($filename); - } + $workbook->send($filename); $worksheet = array(); $worksheet[0] =& $workbook->add_worksheet(''); $rowno = 0; @@ -2356,7 +2344,7 @@ function data_export_xls($export, $dataname, $count, $todir=false) { } -function data_export_ods($export, $dataname, $count, $todir=false) { +function data_export_ods($export, $dataname, $count) { global $CFG; require_once("$CFG->libdir/odslib.class.php"); $filename = clean_filename("${dataname}-${count}_record"); @@ -2366,13 +2354,8 @@ function data_export_ods($export, $dataname, $count, $todir=false) { $filename .= clean_filename('-' . gmdate("Ymd_Hi")); $filename .= '.ods'; $filearg = '-'; - if ($todir) { - $filearg = $todir . '/' . $filename; - } - $workbook = new MoodleODSWorkbook($filearg, (empty($todir))); - if (!$todir) { - $workbook->send($filename); - } + $workbook = new MoodleODSWorkbook($filearg); + $workbook->send($filename); $worksheet = array(); $worksheet[0] =& $workbook->add_worksheet(''); $rowno = 0; @@ -2475,19 +2458,23 @@ class data_portfolio_caller extends portfolio_module_caller_base { public function prepare_package() { global $DB; $count = count($this->exportdata); + $content = ''; + $filename = ''; switch ($this->exporttype) { case 'csv': - $return = data_export_csv($this->exportdata, $this->delimiter, $this->cm->name, $count, $tempdir); + $content = data_export_csv($this->exportdata, $this->delimiter, $this->cm->name, $count, true); + $filename = clean_filename($this->cm->name . '.csv'); break; case 'xls': - $return = data_export_xls($this->exportdata, $this->cm->name, $count, $tempdir); + portfolio_exporter::raise_error('notimplemented', 'portfolio'); + $content = data_export_xls($this->exportdata, $this->cm->name, $count, true); break; case 'ods': - $return = data_export_ods($this->exportdata, $this->cm->name, $count, $tempdir); + portfolio_exporter::raise_error('notimplemented', 'portfolio'); + $content = data_export_ods($this->exportdata, $this->cm->name, $count, true); break; } - return $return; - + return $this->exporter->write_new_file($content, $filename); } public function check_permissions() {