]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-15777 - whole database module export rejigged to use files api.
authormjollnir_ <mjollnir_>
Mon, 11 Aug 2008 10:40:04 +0000 (10:40 +0000)
committermjollnir_ <mjollnir_>
Mon, 11 Aug 2008 10:40:04 +0000 (10:40 +0000)
disabled ods and excel export for now until those libraries work with files api.
reverted a previous patch I had in this area.

lang/en_utf8/data.php
lang/en_utf8/portfolio.php
mod/data/export.php
mod/data/export_form.php
mod/data/lib.php

index 910addeedb21255e95cfeb2c7d472653b237e46b..af97d5943d3661f32de231ac118320bc796eb60d 100644 (file)
@@ -210,6 +210,7 @@ $string['pagesize'] = 'Entries per page';
 $string['participants'] = 'Participants';
 $string['picture'] = 'Picture';
 $string['pleaseaddsome'] = 'Please create some below or <a href=\"$a\">choose a predefined set</a> 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';
index 69dc3b71a017c619d509b3cae446ec0e45cb345c..71fd96005b44432a2a47aeb1527b5673b7f54708 100644 (file)
@@ -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';
index b819efacaee944a6956f8e2c7679779e5fcec9e2..9ba42f6f12da90389d4a972bbc5b5fb2c4d59d2f 100644 (file)
@@ -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);
 }
index ad53356f37f675a26bb015cec215d243af9e0641..a7641c32397a2b98615f40fe28279ec964dfcfa2 100644 (file)
@@ -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);
index 8a66872ad02bbe9a1f305c6806c2d698fbcaada7..dcc071e70286da9d07105cd52c91bcbea69f2c7e 100755 (executable)
@@ -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() {