973e8244edd35519f1549ef9586c148837c87c6a
[moodle.git] / mod / feedback / export.php
1 <?php
3 /**
4  * prints the form to export the items as xml-file
5  *
6  * @author Andreas Grabs
7  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
8  * @package feedback
9  */
11 require_once("../../config.php");
12 require_once("lib.php");
14 // get parameters
15 $id = required_param('id', PARAM_INT);
16 $action = optional_param('action', false, PARAM_ALPHA);
18 $url = new moodle_url('/mod/feedback/export.php', array('id'=>$id));
19 if ($action !== false) {
20     $url->param('action', $action);
21 }
22 $PAGE->set_url($url);
24 if (! $cm = get_coursemodule_from_id('feedback', $id)) {
25     print_error('invalidcoursemodule');
26 }
28 if (! $course = $DB->get_record("course", array("id"=>$cm->course))) {
29     print_error('coursemisconf');
30 }
32 if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) {
33     print_error('invalidcoursemodule');
34 }
36 if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) {
37         print_error('badcontext');
38 }
40 require_login($course->id, true, $cm);
42 require_capability('mod/feedback:edititems', $context);
44 if ($action == 'exportfile') {
45     if(!$exportdata = feedback_get_xml_data($feedback->id)) {
46         print_error('nodata');
47     }
48     @feedback_send_xml_data($exportdata, 'feedback_'.$feedback->id.'.xml');
49     exit;
50 }
52 redirect('view.php?id='.$id);
53 exit;
55 function feedback_get_xml_data($feedbackid) {
56     global $DB;
58     $space = '     ';
59     //get all items of the feedback
60     if(!$items = $DB->get_records('feedback_item', array('feedback'=>$feedbackid), 'position')) {
61         return false;
62     }
64     //writing the header of the xml file including the charset of the currrent used language
65     $data = '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
66     $data .= '<FEEDBACK VERSION="200701" COMMENT="XML-Importfile for mod/feedback">'."\n";
67     $data .= $space.'<ITEMS>'."\n";
69     //writing all the items
70     foreach($items as $item) {
71         //start of item
72         $data .= $space.$space.'<ITEM TYPE="'.$item->typ.'" REQUIRED="'.$item->required.'">'."\n";
74         //start of itemtext
75         $data .= $space.$space.$space.'<ITEMTEXT>'."\n";
76         //start of CDATA
77         $data .= $space.$space.$space.$space.'<![CDATA[';
78         $data .= $item->name;
79         //end of CDATA
80         $data .= ']]>'."\n";
81         //end of itemtext
82         $data .= $space.$space.$space.'</ITEMTEXT>'."\n";
84         //start of presentation
85         $data .= $space.$space.$space.'<PRESENTATION>'."\n";
86         //start of CDATA
87         $data .= $space.$space.$space.$space.'<![CDATA[';
88         $data .= $item->presentation;
89         //end of CDATA
90         $data .= ']]>'."\n";
91         //end of presentation
92         $data .= $space.$space.$space.'</PRESENTATION>'."\n";
94         //end of item
95         $data .= $space.$space.'</ITEM>'."\n";
96     }
98     //writing the footer of the xml file
99     $data .= $space.'</ITEMS>'."\n";
100     $data .= '</FEEDBACK>'."\n";
102     return $data;
105 function feedback_send_xml_data($data, $filename) {
106     @header('Content-Type: application/xml; charset=UTF-8');
107     @header('Content-Disposition: attachment; filename='.$filename);
108     print($data);