get_record("course", array("id"=>$cm->course))) { print_error('coursemisconf'); } if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { print_error('invalidcoursemodule'); } } $capabilities = feedback_load_capabilities($cm->id); require_login($course->id, true, $cm); if(!$capabilities->edititems){ print_error('invalidaction'); } unset($filename); if ($action == 'choosefile' AND confirm_sesskey() ) { // file checks out ok $fileisgood = false; // work out if this is an uploaded file // or one from the filesarea. if ($choosefile) { $filename = "{$CFG->dataroot}/{$course->id}/{$choosefile}"; } } // process if we are happy file is ok if (isset($filename)) { if(!is_file($filename) OR !is_readable($filename)) { print_error('filenotreadable'); } if(!$xmldata = feedback_load_xml_data($filename)) { print_error('cannotloadxml', 'feedback', 'edit.php?id='.$id); } $importerror = feedback_import_loaded_data($xmldata, $feedback->id); if($importerror->stat == true) { redirect('edit.php?id='.$id.'&do_show=templates', get_string('import_successfully', 'feedback'), 3); exit; } } /// Print the page header $strfeedbacks = get_string("modulenameplural", "feedback"); $strfeedback = get_string("modulename", "feedback"); $buttontext = update_module_button($cm->id, $course->id, $strfeedback); $navlinks = array(); $navlinks[] = array('name' => $strfeedbacks, 'link' => "index.php?id=$course->id", 'type' => 'activity'); $navlinks[] = array('name' => format_string($feedback->name), 'link' => "", 'type' => 'activityinstance'); $navigation = build_navigation($navlinks); print_header_simple(format_string($feedback->name), "", $navigation, "", "", true, $buttontext, navmenu($course, $cm)); /// Print the main part of the page /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// print_heading(get_string('import_questions','feedback')); if(isset($importerror->msg) AND is_array($importerror->msg)) { // print_simple_box_start('center', '', '#FFAAAA', 5, 'notifyproblem'); print_box_start('generalbox errorboxcontent boxaligncenter'); foreach($importerror->msg as $msg) { echo $msg.'
'; } // print_simple_box_end(); print_box_end(); } ?>


:
  id}&choose=form.choosefile", "coursefiles", get_string('choosefile', 'feedback'), 500, 750, get_string('choosefile', 'feedback')); ?>
'; print_single_button('edit.php', array('id'=>$id, 'do_show'=>'templates'), get_string('cancel')); echo ''; print_footer($course); function feedback_load_xml_data($filename) { global $CFG; require_once($CFG->dirroot.'/lib/xmlize.php'); $datei = file_get_contents($filename); if(!$datei = feedback_check_xml_utf8($datei)) return false; $data = xmlize($datei, 1, 'UTF-8'); if(intval($data['FEEDBACK']['@']['VERSION']) != 200701) { return false; } $data = $data['FEEDBACK']['#']['ITEMS'][0]['#']['ITEM']; return $data; } function feedback_import_loaded_data(&$data, $feedbackid){ global $CFG, $DB; $deleteolditems = optional_param('deleteolditems', 0, PARAM_INT); $error = new object(); $error->stat = true; $error->msg = array(); if(!is_array($data)) { $error->msg[] = get_string('data_is_not_an_array', 'feedback'); $error->stat = false; return $error; } if($deleteolditems) { feedback_delete_all_items($feedbackid); $position = 0; } else { //items will be add to the end of the existing items $position = $DB->count_records('feedback_item', array('feedback'=>$feedbackid)); } foreach($data as $item) { $position++; //check the typ $typ = $item['@']['TYPE']; //check oldtypes first switch($typ) { case 'radio': $typ = 'multichoice'; $oldtyp = 'radio'; break; case 'dropdown': $typ = 'multichoice'; $oldtyp = 'dropdown'; break; case 'check': $typ = 'multichoice'; $oldtyp = 'check'; break; case 'radiorated': $typ = 'multichoicerated'; $oldtyp = 'radiorated'; break; case 'dropdownrated': $typ = 'multichoicerated'; $oldtyp = 'dropdownrated'; break; default: $oldtyp = $typ; } $itemclass = 'feedback_item_'.$typ; if($typ != 'pagebreak' AND !class_exists($itemclass)) { $error->stat = false; $error->msg[] = 'type ('.$typ.') not found'; continue; } $itemobj = new $itemclass(); $newitem = new object(); $newitem->feedback = $feedbackid; $newitem->template = 0; $newitem->typ = $typ; $newitem->name = trim($item['#']['ITEMTEXT'][0]['#']); $newitem->presentation = trim($item['#']['PRESENTATION'][0]['#']); //check old types of radio, check, and so on switch($oldtyp) { case 'radio': $newitem->presentation = 'r>>>>>'.$newitem->presentation; break; case 'dropdown': $newitem->presentation = 'd>>>>>'.$newitem->presentation; break; case 'check': $newitem->presentation = 'c>>>>>'.$newitem->presentation; break; case 'radiorated': $newitem->presentation = 'r>>>>>'.$newitem->presentation; break; case 'dropdownrated': $newitem->presentation = 'd>>>>>'.$newitem->presentation; break; } if($typ != 'pagebreak') { $newitem->hasvalue = $itemobj->get_hasvalue(); }else { $newitem->hasvalue = 0; } $newitem->required = intval($item['@']['REQUIRED']); $newitem->position = $position; if (!$DB->insert_record('feedback_item', $newitem)) { $error->stat = false; $error->msg[] = 'item ('.$newitem->name.') not imported'; } } return $error; } function feedback_check_xml_utf8($text) { //find the encoding $searchpattern = '/^\<\?xml.+(encoding=\"([a-z0-9-]*)\").+\?\>/is'; if(!preg_match($searchpattern, $text, $match)) return false; //no xml-file //$match[0] = \<\? xml ... \?\> (without \) //$match[1] = encoding="...." //$match[2] = ISO-8859-1 or so on if(isset($match[0]) AND !isset($match[1])){ //no encoding given. we assume utf-8 return $text; } if(isset($match[0]) AND isset($match[1]) AND isset($match[2])) { //encoding is given in $match[2] $enc = $match[2]; $textlib = textlib_get_instance(); return $textlib->convert($text, $enc); } } ?>