Index: question/export.php
===================================================================
RCS file: /cvsroot/moodle/moodle/question/export.php,v
retrieving revision 1.43.2.1
diff -u -r1.43.2.1 export.php
--- question/export.php 2 Nov 2007 16:20:19 -0000 1.43.2.1
+++ question/export.php 7 Jul 2008 16:35:07 -0000
@@ -17,20 +17,7 @@
// get display strings
- $txt = new object;
- $txt->category = get_string('category', 'quiz');
- $txt->download = get_string('download', 'quiz');
- $txt->downloadextra = get_string('downloadextra', 'quiz');
- $txt->exporterror = get_string('exporterror', 'quiz');
- $txt->exportname = get_string('exportname', 'quiz');
- $txt->exportquestions = get_string('exportquestions', 'quiz');
- $txt->fileformat = get_string('fileformat', 'quiz');
- $txt->exportcategory = get_string('exportcategory', 'quiz');
- $txt->modulename = get_string('modulename', 'quiz');
- $txt->modulenameplural = get_string('modulenameplural', 'quiz');
- $txt->tofile = get_string('tofile', 'quiz');
-
-
+ $strexportquestions = get_string('exportquestions', 'quiz');
// make sure we are using the user's most recent category choice
if (empty($categoryid)) {
@@ -52,9 +39,9 @@
$navlinks = array();
$navlinks[] = array('name' => get_string('modulenameplural', $cm->modname), 'link' => "$CFG->wwwroot/mod/{$cm->modname}/index.php?id=$COURSE->id", 'type' => 'activity');
$navlinks[] = array('name' => format_string($module->name), 'link' => "$CFG->wwwroot/mod/{$cm->modname}/view.php?id={$cm->id}", 'type' => 'title');
- $navlinks[] = array('name' => $txt->exportquestions, 'link' => '', 'type' => 'title');
+ $navlinks[] = array('name' => $strexportquestions, 'link' => '', 'type' => 'title');
$navigation = build_navigation($navlinks);
- print_header_simple($txt->exportquestions, '', $navigation, "", "", true, $strupdatemodule);
+ print_header_simple($strexportquestions, '', $navigation, "", "", true, $strupdatemodule);
$currenttab = 'edit';
$mode = 'export';
@@ -63,10 +50,10 @@
} else {
// Print basic page layout.
$navlinks = array();
- $navlinks[] = array('name' => $txt->exportquestions, 'link' => '', 'type' => 'title');
+ $navlinks[] = array('name' => $strexportquestions, 'link' => '', 'type' => 'title');
$navigation = build_navigation($navlinks);
- print_header_simple($txt->exportquestions, '', $navigation);
+ print_header_simple($strexportquestions, '', $navigation);
// print tabs
$currenttab = 'export';
include('tabs.php');
@@ -100,42 +87,62 @@
$from_form->exportfilename = default_export_filename($COURSE, $category);
}
$qformat->setFilename($from_form->exportfilename);
+ $canaccessbackupdata = has_capability('moodle/site:backup', $contexts->lowest());
+ $qformat->set_can_access_backupdata($canaccessbackupdata);
$qformat->setCattofile(!empty($from_form->cattofile));
$qformat->setContexttofile(!empty($from_form->contexttofile));
if (! $qformat->exportpreprocess()) { // Do anything before that we need to
- error($txt->exporterror, $thispageurl->out());
+ error(get_string('exporterror', 'quiz'), $thispageurl->out());
}
if (! $qformat->exportprocess()) { // Process the export data
- error($txt->exporterror, $thispageurl->out());
+ error(get_string('exporterror', 'quiz'), $thispageurl->out());
}
if (! $qformat->exportpostprocess()) { // In case anything needs to be done after
- error($txt->exporterror, $thispageurl->out());
+ error(get_string('exporterror', 'quiz'), $thispageurl->out());
}
echo "
";
// link to download the finished file
$file_ext = $qformat->export_file_extension();
- if ($CFG->slasharguments) {
- $efile = "{$CFG->wwwroot}/file.php/".$qformat->question_get_export_dir()."/$from_form->exportfilename".$file_ext."?forcedownload=1";
- }
- else {
- $efile = "{$CFG->wwwroot}/file.php?file=/".$qformat->question_get_export_dir()."/$from_form->exportfilename".$file_ext."&forcedownload=1";
+ $filename = $from_form->exportfilename . $file_ext;
+ if ($canaccessbackupdata) {
+ $efile = get_file_url($qformat->question_get_export_dir() . '/' . $filename,
+ array('forcedownload' => 1));
+ echo '';
+ echo '' .
+ get_string('downloadextra', 'quiz') . '
';
+ } else {
+ if ($CFG->slasharguments) {
+ $efile = $CFG->wwwroot . '/question/exportfile.php/' . rawurlencode($filename);
+ } else {
+ $efile = $CFG->wwwroot . '/question/exportfile.php/?file=' . rawurlencode($filename);
+ }
+
+ echo '' .
+ get_string('yourfileshoulddownload', 'question', $efile) . '
';
+ echo '
+';
}
- echo "";
- echo "$txt->downloadextra
";
- print_continue("edit.php?".$thispageurl->get_query_string());
+ print_continue('edit.php?' . $thispageurl->get_query_string());
print_footer($COURSE);
exit;
}
/// Display export form
-
-
- print_heading_with_help($txt->exportquestions, 'export', 'quiz');
+ print_heading_with_help($strexportquestions, 'export', 'quiz');
$export_form->display();
Index: question/format.php
===================================================================
RCS file: /cvsroot/moodle/moodle/question/format.php,v
retrieving revision 1.35.2.9
diff -u -r1.35.2.9 format.php
--- question/format.php 3 Jul 2008 14:47:09 -0000 1.35.2.9
+++ question/format.php 7 Jul 2008 16:35:07 -0000
@@ -24,6 +24,7 @@
var $importerrors = 0;
var $stoponerror = true;
var $translator = null;
+ var $canaccessbackupdata = true;
// functions to indicate import/export functionality
@@ -134,6 +135,14 @@
$this->stoponerror = $stoponerror;
}
+ /**
+ * @param boolean $canaccess Whether the current use can access the backup data folder. Determines
+ * where export files are saved.
+ */
+ function set_can_access_backupdata($canaccess) {
+ $this->canaccessbackupdata = $canaccess;
+ }
+
/***********************
* IMPORTING FUNCTIONS
***********************/
@@ -767,8 +776,13 @@
* @return string file path
*/
function question_get_export_dir() {
- $dirname = get_string("exportfilename","quiz");
- $path = $this->course->id.'/backupdata/'.$dirname; // backupdata is protected directory
+ global $USER;
+ if ($this->canaccessbackupdata) {
+ $dirname = get_string("exportfilename","quiz");
+ $path = $this->course->id.'/backupdata/'.$dirname; // backupdata is protected directory
+ } else {
+ $path = 'temp/questionexport/' . $USER->id;
+ }
return $path;
}
Index: lang/en_utf8/question.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lang/en_utf8/question.php,v
retrieving revision 1.7.2.4
diff -u -r1.7.2.4 question.php
--- lang/en_utf8/question.php 2 Jul 2008 09:14:57 -0000 1.7.2.4
+++ lang/en_utf8/question.php 7 Jul 2008 16:35:07 -0000
@@ -91,4 +91,5 @@
$string['unknown'] = 'Unknown';
$string['unknownquestiontype'] = 'Unknown question type: $a.';
$string['unpublished'] = 'unshared';
+$string['yourfileshoulddownload'] = 'Your export file should start to download shortly. If not, please click here.';
?>
Index: question/exportfile.php
===================================================================
RCS file: question/exportfile.php
diff -N question/exportfile.php
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ question/exportfile.php 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,17 @@
+libdir . '/filelib.php');
+
+ // Note: file.php always calls require_login() with $setwantsurltome=false
+ // in order to avoid messing redirects. MDL-14495
+ require_login(0, true, null, false);
+
+ $relativepath = get_file_argument('question/exportfile.php');
+ if (!$relativepath) {
+ error('No valid arguments supplied or incorrect server configuration');
+ }
+
+ $pathname = $CFG->dataroot . '/temp/questionexport/' . $USER->id . '/' . $relativepath;
+
+ send_temp_file($pathname, $relativepath);
+?>