diff --git a/mod/feedback/README.txt b/mod/feedback/README.txt index 9a0c603be7e..c88bf751dcc 100644 --- a/mod/feedback/README.txt +++ b/mod/feedback/README.txt @@ -135,7 +135,8 @@ Now it only runs on Moodle 1.8 or later - roles are full implemented - now radiobuttons and checkboxes can be aligned horizontally or vertically - now you can insert pagebreakes -- a feedback what is switch to the next page is saved temporary. the user can cancel the completion and later continue at the last filled page. +- a feedback what is switch to the next page is saved temporary. + the user can cancel the completion and later continue at the last filled page. - now you can ex-/import feedbacks into/from a xml-file - course-reseting is supported diff --git a/mod/feedback/analysis.php b/mod/feedback/analysis.php index 78f46d52b39..da86ecf7f4a 100644 --- a/mod/feedback/analysis.php +++ b/mod/feedback/analysis.php @@ -1,4 +1,18 @@ . /** * shows an analysed view of feedback @@ -11,7 +25,6 @@ require_once("../../config.php"); require_once("lib.php"); -// $SESSION->feedback->current_tab = 'analysis'; $current_tab = 'analysis'; $id = required_param('id', PARAM_INT); //the POST dominated the GET @@ -39,23 +52,23 @@ if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { print_error('badcontext'); } -if($course->id == SITEID) { +if ($course->id == SITEID) { require_login($course->id, true); -}else{ +} else { require_login($course->id, true, $cm); } //check whether the given courseid exists -if($courseid AND $courseid != SITEID) { - if($course2 = $DB->get_record('course', array('id'=>$courseid))){ +if ($courseid AND $courseid != SITEID) { + if ($course2 = $DB->get_record('course', array('id'=>$courseid))) { require_course_login($course2); //this overwrites the object $course :-( $course = $DB->get_record("course", array("id"=>$cm->course)); // the workaround - }else { + } else { print_error('invalidcourseid'); } } -if( !( ((intval($feedback->publish_stats) == 1) AND +if ( !( ((intval($feedback->publish_stats) == 1) AND has_capability('mod/feedback:viewanalysepage', $context)) OR has_capability('mod/feedback:viewreports', $context))) { print_error('error'); @@ -65,30 +78,29 @@ if( !( ((intval($feedback->publish_stats) == 1) AND $strfeedbacks = get_string("modulenameplural", "feedback"); $strfeedback = get_string("modulename", "feedback"); -$PAGE->navbar->add(get_string('analysis','feedback')); +$PAGE->navbar->add(get_string('analysis', 'feedback')); $PAGE->set_heading(format_string($course->fullname)); $PAGE->set_title(format_string($feedback->name)); echo $OUTPUT->header(); /// print the tabs -include('tabs.php'); +require('tabs.php'); //print analysed items echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); //get the groupid -$groupselect = groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/feedback/analysis.php?id=' . $cm->id.'&do_show=analysis', true); +$myurl = $CFG->wwwroot.'/mod/feedback/analysis.php?id='.$cm->id.'&do_show=analysis'; +$groupselect = groups_print_activity_menu($cm, $myurl, true); $mygroupid = groups_get_activity_group($cm); -if( has_capability('mod/feedback:viewreports', $context) ) { +if ( has_capability('mod/feedback:viewreports', $context) ) { echo isset($groupselect) ? $groupselect : ''; echo '
'; //button "export to excel" - //echo '
'; - // echo '
'; echo $OUTPUT->container_start('form-buttons'); $aurl = new moodle_url('analysis_to_excel.php', array('sesskey'=>sesskey(), 'id'=>$id)); echo $OUTPUT->single_button($aurl, get_string('export_to_excel', 'feedback')); @@ -99,50 +111,55 @@ if( has_capability('mod/feedback:viewreports', $context) ) { $completedscount = feedback_get_completeds_group_count($feedback, $mygroupid); //show the group, if available -if($mygroupid and $group = $DB->get_record('groups', array('id'=>$mygroupid))) { +if ($mygroupid and $group = $DB->get_record('groups', array('id'=>$mygroupid))) { echo ''.get_string('group').': '.$group->name. '
'; } //show the count echo ''.get_string('completed_feedbacks', 'feedback').': '.$completedscount. '
'; // get the items of the feedback -$items = $DB->get_records('feedback_item', array('feedback'=>$feedback->id, 'hasvalue'=>1), 'position'); +$items = $DB->get_records('feedback_item', + array('feedback'=>$feedback->id, 'hasvalue'=>1), + 'position'); //show the count -if(is_array($items)){ - echo ''.get_string('questions', 'feedback').': ' .sizeof($items). '
'; +if (is_array($items)) { + echo ''.get_string('questions', 'feedback').': ' .count($items). '
'; } else { $items=array(); } $check_anonymously = true; -if($mygroupid > 0 AND $feedback->anonymous == FEEDBACK_ANONYMOUS_YES) { - if($completedscount < FEEDBACK_MIN_ANONYMOUS_COUNT_IN_GROUP) { +if ($mygroupid > 0 AND $feedback->anonymous == FEEDBACK_ANONYMOUS_YES) { + if ($completedscount < FEEDBACK_MIN_ANONYMOUS_COUNT_IN_GROUP) { $check_anonymously = false; } } -// echo '
'; echo ''; } else { @@ -138,7 +166,8 @@ if ($courseitemfilter > 0) { } else { echo get_string('search_course', 'feedback') . ': '; - echo ''; + echo ' '; + echo ''; echo ''; echo ''; echo ''; @@ -158,28 +187,40 @@ if ($courseitemfilter > 0) { echo ' ' . get_string('filter_by_course', 'feedback') . ': '; - echo html_writer::select($courses, 'coursefilter', $coursefilter, null, array('id'=>'coursefilterid')); - $PAGE->requires->js_init_call('M.util.init_select_autosubmit', array('analysis-form', 'coursefilterid', false)); + echo html_writer::select($courses, 'coursefilter', $coursefilter, + null, array('id'=>'coursefilterid')); + + $PAGE->requires->js_init_call('M.util.init_select_autosubmit', + array('analysis-form', 'coursefilterid', false)); } echo '
'; $itemnr = 0; //print the items in an analysed form echo '
'; + echo '
'; -if($check_anonymously) { +if ($check_anonymously) { $itemnr = 0; //print the items in an analysed form - foreach($items as $item) { - if($item->hasvalue == 0) continue; + foreach ($items as $item) { + if ($item->hasvalue == 0) { + continue; + } echo ''; - + //get the class of item-typ $itemobj = feedback_get_item_class($item->typ); - + $itemnr++; - if($feedback->autonumbering) { + if ($feedback->autonumbering) { $printnr = $itemnr.'.'; } else { $printnr = ''; } $itemobj->print_analysed($item, $printnr, $mygroupid); - // $itemnr = $itemobj->print_analysed($item, $itemnr, $mygroupid); echo '
'; } -}else { - echo $OUTPUT->heading_with_help(get_string('insufficient_responses_for_this_group', 'feedback'), 'insufficient_responses', 'feedback'); +} else { + echo $OUTPUT->heading_with_help(get_string('insufficient_responses_for_this_group', 'feedback'), + 'insufficient_responses', + 'feedback'); } echo '
'; echo $OUTPUT->box_end(); diff --git a/mod/feedback/analysis_course.php b/mod/feedback/analysis_course.php index 548d4c8964b..831863b8654 100644 --- a/mod/feedback/analysis_course.php +++ b/mod/feedback/analysis_course.php @@ -1,24 +1,36 @@ . /** -* shows an analysed view of a feedback on the mainsite -* -* @author Andreas Grabs -* @license http://www.gnu.org/copyleft/gpl.html GNU Public License -* @package feedback -*/ + * shows an analysed view of a feedback on the mainsite + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ require_once("../../config.php"); require_once("lib.php"); -// $SESSION->feedback->current_tab = 'analysis'; $current_tab = 'analysis'; $id = required_param('id', PARAM_INT); //the POST dominated the GET $coursefilter = optional_param('coursefilter', '0', PARAM_INT); $courseitemfilter = optional_param('courseitemfilter', '0', PARAM_INT); $courseitemfiltertyp = optional_param('courseitemfiltertyp', '0', PARAM_ALPHANUM); -// $searchcourse = optional_param('searchcourse', '', PARAM_ALPHAEXT); $searchcourse = optional_param('searchcourse', '', PARAM_RAW); $courseid = optional_param('courseid', false, PARAM_INT); @@ -40,7 +52,7 @@ if ($searchcourse !== '') { } $PAGE->set_url($url); -if(($searchcourse OR $courseitemfilter OR $coursefilter) AND !confirm_sesskey()) { +if (($searchcourse OR $courseitemfilter OR $coursefilter) AND !confirm_sesskey()) { print_error('invalidsesskey'); } @@ -62,7 +74,7 @@ if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { require_login($course->id, true, $cm); -if( !( (intval($feedback->publish_stats) == 1) OR has_capability('mod/feedback:viewreports', $context))) { +if (!($feedback->publish_stats OR has_capability('mod/feedback:viewreports', $context))) { print_error('error'); } @@ -75,15 +87,19 @@ $PAGE->set_title(format_string($feedback->name)); echo $OUTPUT->header(); /// print the tabs -include('tabs.php'); +require('tabs.php'); //print the analysed items echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); -if( has_capability('mod/feedback:viewreports', $context) ) { +if (has_capability('mod/feedback:viewreports', $context)) { //button "export to excel" echo $OUTPUT->container_start('mdl-align'); - $aurl = new moodle_url('analysis_to_excel.php', array('sesskey'=>sesskey(), 'id'=>$id, 'coursefilter'=>$coursefilter)); + $aurl = new moodle_url('analysis_to_excel.php', + array('sesskey' => sesskey(), + 'id' => $id, + 'coursefilter' => $coursefilter)); + echo $OUTPUT->single_button($aurl, get_string('export_to_excel', 'feedback')); echo $OUTPUT->container_end(); } @@ -98,11 +114,14 @@ $completedscount = feedback_get_completeds_group_count($feedback, $mygroupid, $c echo ''.get_string('completed_feedbacks', 'feedback').': '.$completedscount. '
'; // get the items of the feedback -$items = $DB->get_records('feedback_item', array('feedback'=>$feedback->id, 'hasvalue'=>1), 'position'); +$params = array('feedback' => $feedback->id, 'hasvalue' => 1); +$items = $DB->get_records('feedback_item', $params, 'position'); //show the count -if(is_array($items)){ - echo ''.get_string('questions', 'feedback').': ' .sizeof($items). '
'; - echo ''.get_string('show_all', 'feedback').''; +if (is_array($items)) { + echo ''.get_string('questions', 'feedback').': ' .count($items). '
'; + echo ''; + echo get_string('show_all', 'feedback'); + echo ''; } else { $items=array(); } @@ -114,12 +133,14 @@ if ($courseitemfilter > 0) { if ($DB->get_dbfamily() == 'postgres') { // TODO: this should be moved to standard sql DML function ;-) $avgvalue = 'avg(cast (value as integer))'; } - if ($courses = $DB->get_records_sql ("SELECT fv.course_id, c.shortname, $avgvalue AS avgvalue - FROM {feedback_value} fv, {course} c, {feedback_item} fi - WHERE fv.course_id = c.id AND fi.id = fv.item AND fi.typ = ? AND fv.item = ? - GROUP BY course_id, shortname - ORDER BY avgvalue desc", - array($courseitemfiltertyp, $courseitemfilter))) { + + $sql = "SELECT fv.course_id, c.shortname, $avgvalue AS avgvalue + FROM {feedback_value} fv, {course} c, {feedback_item} fi + WHERE fv.course_id = c.id AND fi.id = fv.item AND fi.typ = ? AND fv.item = ? + GROUP BY course_id, shortname + ORDER BY avgvalue desc"; + + if ($courses = $DB->get_records_sql($sql, array($courseitemfiltertyp, $courseitemfilter))) { $item = $DB->get_record('feedback_item', array('id'=>$courseitemfilter)); echo '
'.$item->name.'
'; @@ -128,8 +149,15 @@ if ($courseitemfilter > 0) { $sep_thous = get_string('separator_thousand', 'feedback'); foreach ($courses as $c) { - $shortname = format_string($c->shortname, true, array('context' => get_context_instance(CONTEXT_COURSE, $c->course_id))); - echo ''; + $coursecontext = get_context_instance(CONTEXT_COURSE, $c->course_id); + $shortname = format_string($c->shortname, true, array('context' => $coursecontext)); + + echo ''; + echo ''; + echo ''; + echo ''; } echo '
'.$shortname.''.number_format(($c->avgvalue), 2, $sep_dec, $sep_thous).'
'.$shortname.'' + echo number_format(($c->avgvalue), 2, $sep_dec, $sep_thous); + echo '
'; - foreach($items as $item) { - if($item->hasvalue == 0) continue; + foreach ($items as $item) { + if ($item->hasvalue == 0) { + continue; + } echo ''; //get the class from item-typ $itemobj = feedback_get_item_class($item->typ); $itemnr++; - if($feedback->autonumbering) { + if ($feedback->autonumbering) { $printnr = $itemnr.'.'; } else { $printnr = ''; } $itemobj->print_analysed($item, $printnr, $mygroupid, $coursefilter); if (preg_match('/rated$/i', $item->typ)) { - echo ''; + $onclick = 'onclick="setcourseitemfilter'. + "(".$item->id.",'".$item->typ."');". + ' return false;"'; + + $anker = ''. + get_string('sort_by_course', 'feedback'). + ''; + + echo ''; } echo '
'. - get_string('sort_by_course', 'feedback').'
'.$anker.'
'; } diff --git a/mod/feedback/analysis_to_excel.php b/mod/feedback/analysis_to_excel.php index 887735eca03..089bc9d601f 100644 --- a/mod/feedback/analysis_to_excel.php +++ b/mod/feedback/analysis_to_excel.php @@ -1,16 +1,29 @@ . /** -* prints an analysed excel-spreadsheet of the feedback -* -* @author Andreas Grabs -* @license http://www.gnu.org/copyleft/gpl.html GNU Public License -* @package feedback -*/ + * prints an analysed excel-spreadsheet of the feedback + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ require_once("../../config.php"); require_once("lib.php"); -// require_once('easy_excel.php'); require_once("$CFG->libdir/excellib.class.php"); feedback_load_feedback_items(); @@ -63,12 +76,15 @@ $fstring->username = get_string('username'); $fstring->fullname = get_string('fullnameuser'); $fstring->courseid = get_string('courseid', 'feedback'); $fstring->course = get_string('course'); -$fstring->anonymous_user = get_string('anonymous_user','feedback'); +$fstring->anonymous_user = get_string('anonymous_user', 'feedback'); ob_end_clean(); //get the questions (item-names) -if(!$items = $DB->get_records('feedback_item', array('feedback'=>$feedback->id, 'hasvalue'=>1), 'position')) { - print_error('no_items_available_yet', 'feedback', $CFG->wwwroot.'/mod/feedback/view.php?id='.$id); +$params = array('feedback' => $feedback->id, 'hasvalue' => 1); +if (!$items = $DB->get_records('feedback_item', $params, 'position')) { + print_error('no_items_available_yet', + 'feedback', + $CFG->wwwroot.'/mod/feedback/view.php?id='.$id); exit; } @@ -77,54 +93,30 @@ $filename = "feedback.xls"; $mygroupid = groups_get_activity_group($cm); // Creating a workbook -// $workbook = new EasyWorkbook("-"); $workbook = new MoodleExcelWorkbook('-'); -// $workbook->setTempDir($CFG->tempdir.''); $workbook->send($filename); -// $workbook->setVersion(8); //creating the needed formats -$xlsFormats = new stdClass(); -$xlsFormats->head1 = $workbook->add_format(array( +$xls_formats = new stdClass(); +$xls_formats->head1 = $workbook->add_format(array( 'bold'=>1, 'size'=>12)); -$xlsFormats->head2 = $workbook->add_format(array( +$xls_formats->head2 = $workbook->add_format(array( 'align'=>'left', 'bold'=>1, 'bottum'=>2)); -$xlsFormats->default = $workbook->add_format(array( +$xls_formats->default = $workbook->add_format(array( 'align'=>'left', 'v_align'=>'top')); -// $xlsFormats->head2_green = $workbook->add_format(array( - // 'align'=>'left', - // 'bold'=>1, - // 'v_align'=>'top', - // 'bottum'=>2, - // 'fg_color'=>'green')); - -$xlsFormats->value_bold = $workbook->add_format(array( +$xls_formats->value_bold = $workbook->add_format(array( 'align'=>'left', 'bold'=>1, 'v_align'=>'top')); -// $xlsFormats->value_blue = $workbook->add_format(array( - // 'align'=>'left', - // 'bold'=>1, - // 'v_align'=>'top', - // 'top'=>2, - // 'fg_color'=>'blue')); - -// $xlsFormats->value_red = $workbook->add_format(array( - // 'align'=>'left', - // 'bold'=>1, - // 'v_align'=>'top', - // 'top'=>2, - // 'fg_color'=>'red')); - -$xlsFormats->procent = $workbook->add_format(array( +$xls_formats->procent = $workbook->add_format(array( 'align'=>'left', 'bold'=>1, 'v_align'=>'top', @@ -134,59 +126,57 @@ $xlsFormats->procent = $workbook->add_format(array( $sheetname = clean_param($feedback->name, PARAM_ALPHANUM); error_reporting(0); $worksheet1 =& $workbook->add_worksheet(substr($sheetname, 0, 31)); -// $worksheet1->set_workbook($workbook); $worksheet2 =& $workbook->add_worksheet('detailed'); -// $worksheet2->set_workbook($workbook); error_reporting($CFG->debug); -// $worksheet1->pear_excel_worksheet->set_portrait(); -// $worksheet1->pear_excel_worksheet->set_paper(9); -// $worksheet1->pear_excel_worksheet->center_horizontally(); $worksheet1->hide_gridlines(); -// $worksheet1->pear_excel_worksheet->set_header("&\"Arial," . $fstring->bold . "\"&14".$feedback->name); -// $worksheet1->pear_excel_worksheet->set_footer($fstring->page." &P " . $fstring->of . " &N"); $worksheet1->set_column(0, 0, 10); $worksheet1->set_column(1, 1, 30); $worksheet1->set_column(2, 20, 15); -// $worksheet1->set_margins_LR(0.10); - -// $worksheet2->pear_excel_worksheet->set_landscape(); -// $worksheet2->pear_excel_worksheet->set_paper(9); -// $worksheet2->pear_excel_worksheet->center_horizontally(); //writing the table header -$rowOffset1 = 0; -// $worksheet1->setFormat("",12,false); -$worksheet1->write_string($rowOffset1, 0, UserDate(time()), $xlsFormats->head1); +$row_offset1 = 0; +$worksheet1->write_string($row_offset1, 0, userdate(time()), $xls_formats->head1); //////////////////////////////////////////////////////////////////////// //print the analysed sheet //////////////////////////////////////////////////////////////////////// //get the completeds $completedscount = feedback_get_completeds_group_count($feedback, $mygroupid, $coursefilter); -if($completedscount > 0){ +if ($completedscount > 0) { //write the count of completeds - $rowOffset1++; - $worksheet1->write_string($rowOffset1, 0, $fstring->modulenameplural.': '.strval($completedscount), $xlsFormats->head1); + $row_offset1++; + $worksheet1->write_string($row_offset1, + 0, + $fstring->modulenameplural.': '.strval($completedscount), + $xls_formats->head1); } -if(is_array($items)){ - $rowOffset1++; - $worksheet1->write_string($rowOffset1, 0, $fstring->questions.': '. strval(sizeof($items)), $xlsFormats->head1); +if (is_array($items)) { + $row_offset1++; + $worksheet1->write_string($row_offset1, + 0, + $fstring->questions.': '. strval(count($items)), + $xls_formats->head1); } -$rowOffset1 += 2; -$worksheet1->write_string($rowOffset1, 0, $fstring->itemlabel, $xlsFormats->head1); -$worksheet1->write_string($rowOffset1, 1, $fstring->question, $xlsFormats->head1); -$worksheet1->write_string($rowOffset1, 2, $fstring->responses, $xlsFormats->head1); -$rowOffset1++ ; +$row_offset1 += 2; +$worksheet1->write_string($row_offset1, 0, $fstring->itemlabel, $xls_formats->head1); +$worksheet1->write_string($row_offset1, 1, $fstring->question, $xls_formats->head1); +$worksheet1->write_string($row_offset1, 2, $fstring->responses, $xls_formats->head1); +$row_offset1++; if (empty($items)) { $items=array(); } -foreach($items as $item) { +foreach ($items as $item) { //get the class of item-typ $itemobj = feedback_get_item_class($item->typ); - $rowOffset1 = $itemobj->excelprint_item($worksheet1, $rowOffset1, $xlsFormats, $item, $mygroupid, $coursefilter); + $row_offset1 = $itemobj->excelprint_item($worksheet1, + $row_offset1, + $xls_formats, + $item, + $mygroupid, + $coursefilter); } //////////////////////////////////////////////////////////////////////// @@ -199,14 +189,18 @@ $completeds = feedback_get_completeds_group($feedback, $mygroupid, $coursefilter //therefor for each completed we have to iterate over all items of the feedback //this is done by feedback_excelprint_detailed_items -$rowOffset2 = 0; +$row_offset2 = 0; //first we print the table-header -$rowOffset2 = feedback_excelprint_detailed_head($worksheet2, $xlsFormats, $items, $rowOffset2); +$row_offset2 = feedback_excelprint_detailed_head($worksheet2, $xls_formats, $items, $row_offset2); -if(is_array($completeds)){ - foreach($completeds as $completed) { - $rowOffset2 = feedback_excelprint_detailed_items($worksheet2, $xlsFormats, $completed, $items, $rowOffset2); +if (is_array($completeds)) { + foreach ($completeds as $completed) { + $row_offset2 = feedback_excelprint_detailed_items($worksheet2, + $xls_formats, + $completed, + $items, + $row_offset2); } } @@ -219,100 +213,102 @@ exit; //////////////////////////////////////////////////////////////////////////////// -function feedback_excelprint_detailed_head(&$worksheet, $xlsFormats, $items, $rowOffset) { +function feedback_excelprint_detailed_head(&$worksheet, $xls_formats, $items, $row_offset) { global $fstring, $feedback; - if(!$items) return; - $colOffset = 0; + if (!$items) { + return; + } + $col_offset = 0; - // $worksheet->setFormat(''); + $worksheet->write_string($row_offset + 1, $col_offset, $fstring->idnumber, $xls_formats->head2); + $col_offset++; - $worksheet->write_string($rowOffset + 1, $colOffset, $fstring->idnumber, $xlsFormats->head2); - $colOffset++; + $worksheet->write_string($row_offset + 1, $col_offset, $fstring->username, $xls_formats->head2); + $col_offset++; - $worksheet->write_string($rowOffset + 1, $colOffset, $fstring->username, $xlsFormats->head2); - $colOffset++; + $worksheet->write_string($row_offset + 1, $col_offset, $fstring->fullname, $xls_formats->head2); + $col_offset++; - $worksheet->write_string($rowOffset + 1, $colOffset, $fstring->fullname, $xlsFormats->head2); - $colOffset++; - - foreach($items as $item) { - // $worksheet->setFormat(''); - $worksheet->write_string($rowOffset, $colOffset, $item->name, $xlsFormats->head2); - $worksheet->write_string($rowOffset + 1, $colOffset, $item->label, $xlsFormats->head2); - $colOffset++; + foreach ($items as $item) { + $worksheet->write_string($row_offset, $col_offset, $item->name, $xls_formats->head2); + $worksheet->write_string($row_offset + 1, $col_offset, $item->label, $xls_formats->head2); + $col_offset++; } - // $worksheet->setFormat(''); - $worksheet->write_string($rowOffset + 1, $colOffset, $fstring->courseid, $xlsFormats->head2); - $colOffset++; + $worksheet->write_string($row_offset + 1, $col_offset, $fstring->courseid, $xls_formats->head2); + $col_offset++; - // $worksheet->setFormat(''); - $worksheet->write_string($rowOffset + 1, $colOffset, $fstring->course, $xlsFormats->head2); - $colOffset++; + $worksheet->write_string($row_offset + 1, $col_offset, $fstring->course, $xls_formats->head2); + $col_offset++; - return $rowOffset + 2; + return $row_offset + 2; } -function feedback_excelprint_detailed_items(&$worksheet, $xlsFormats, $completed, $items, $rowOffset) { +function feedback_excelprint_detailed_items(&$worksheet, $xls_formats, + $completed, $items, $row_offset) { global $DB, $fstring; - if(!$items) return; - $colOffset = 0; + if (!$items) { + return; + } + $col_offset = 0; $courseid = 0; $feedback = $DB->get_record('feedback', array('id'=>$completed->feedback)); //get the username //anonymous users are separated automatically because the userid in the completed is "0" - // $worksheet->setFormat(''); - if($user = $DB->get_record('user', array('id'=>$completed->userid))) { + if ($user = $DB->get_record('user', array('id'=>$completed->userid))) { if ($completed->anonymous_response == FEEDBACK_ANONYMOUS_NO) { - $worksheet->write_string($rowOffset, $colOffset, $user->idnumber, $xlsFormats->head2); - $colOffset++; + $worksheet->write_string($row_offset, $col_offset, $user->idnumber, $xls_formats->head2); + $col_offset++; $userfullname = fullname($user); - $worksheet->write_string($rowOffset, $colOffset, $user->username, $xlsFormats->head2); - $colOffset++; + $worksheet->write_string($row_offset, $col_offset, $user->username, $xls_formats->head2); + $col_offset++; } else { $userfullname = $fstring->anonymous_user; - $worksheet->write_string($rowOffset, $colOffset, '-', $xlsFormats->head2); - $colOffset++; - $worksheet->write_string($rowOffset, $colOffset, '-', $xlsFormats->head2); - $colOffset++; + $worksheet->write_string($row_offset, $col_offset, '-', $xls_formats->head2); + $col_offset++; + $worksheet->write_string($row_offset, $col_offset, '-', $xls_formats->head2); + $col_offset++; } - }else { + } else { $userfullname = $fstring->anonymous_user; - $worksheet->write_string($rowOffset, $colOffset, '-', $xlsFormats->head2); - $colOffset++; - $worksheet->write_string($rowOffset, $colOffset, '-', $xlsFormats->head2); - $colOffset++; + $worksheet->write_string($row_offset, $col_offset, '-', $xls_formats->head2); + $col_offset++; + $worksheet->write_string($row_offset, $col_offset, '-', $xls_formats->head2); + $col_offset++; } - $worksheet->write_string($rowOffset, $colOffset, $userfullname, $xlsFormats->head2); + $worksheet->write_string($row_offset, $col_offset, $userfullname, $xls_formats->head2); - $colOffset++; - foreach($items as $item) { - $value = $DB->get_record('feedback_value', array('item'=>$item->id, 'completed'=>$completed->id)); + $col_offset++; + foreach ($items as $item) { + $params = array('item' => $item->id, 'completed' => $completed->id); + $value = $DB->get_record('feedback_value', $params); $itemobj = feedback_get_item_class($item->typ); $printval = $itemobj->get_printval($item, $value); $printval = trim($printval); - // $worksheet->setFormat(''); - if(is_numeric($printval)) { - $worksheet->write_number($rowOffset, $colOffset, $printval, $xlsFormats->default); - } elseif($printval != '') { - $worksheet->write_string($rowOffset, $colOffset, $printval, $xlsFormats->default); + if (is_numeric($printval)) { + $worksheet->write_number($row_offset, $col_offset, $printval, $xls_formats->default); + } else if ($printval != '') { + $worksheet->write_string($row_offset, $col_offset, $printval, $xls_formats->default); } $printval = ''; - $colOffset++; + $col_offset++; $courseid = isset($value->course_id) ? $value->course_id : 0; - if($courseid == 0) $courseid = $feedback->course; + if ($courseid == 0) { + $courseid = $feedback->course; + } } - $worksheet->write_number($rowOffset, $colOffset, $courseid, $xlsFormats->default); - $colOffset++; + $worksheet->write_number($row_offset, $col_offset, $courseid, $xls_formats->default); + $col_offset++; if (isset($courseid) AND $course = $DB->get_record('course', array('id' => $courseid))) { - $shortname = format_string($course->shortname, true, array('context' => get_context_instance(CONTEXT_COURSE, $courseid))); - $worksheet->write_string($rowOffset, $colOffset, $shortname, $xlsFormats->default); + $coursecontext = get_context_instance(CONTEXT_COURSE, $courseid); + $shortname = format_string($course->shortname, true, array('context' => $coursecontext)); + $worksheet->write_string($row_offset, $col_offset, $shortname, $xls_formats->default); } - return $rowOffset + 1; + return $row_offset + 1; } diff --git a/mod/feedback/backup/moodle1/lib.php b/mod/feedback/backup/moodle1/lib.php index 5ddd20fde85..ad6da8fc26d 100644 --- a/mod/feedback/backup/moodle1/lib.php +++ b/mod/feedback/backup/moodle1/lib.php @@ -1,5 +1,4 @@ wwwroot,"/"); + $base = preg_quote($CFG->wwwroot, "/"); // Link to the list of feedbacks $search="/(".$base."\/mod\/feedback\/index.php\?id\=)([0-9]+)/"; diff --git a/mod/feedback/backup/moodle2/backup_feedback_settingslib.php b/mod/feedback/backup/moodle2/backup_feedback_settingslib.php index b66e78ab5fe..c683516576f 100644 --- a/mod/feedback/backup/moodle2/backup_feedback_settingslib.php +++ b/mod/feedback/backup/moodle2/backup_feedback_settingslib.php @@ -1,5 +1,4 @@ add_child($items); $items->add_child($item); diff --git a/mod/feedback/backup/moodle2/restore_feedback_activity_task.class.php b/mod/feedback/backup/moodle2/restore_feedback_activity_task.class.php index 362b3a864d0..83c18d058b7 100644 --- a/mod/feedback/backup/moodle2/restore_feedback_activity_task.class.php +++ b/mod/feedback/backup/moodle2/restore_feedback_activity_task.class.php @@ -1,5 +1,4 @@ . + /** -* prints the form to choose the group you want to analyse -* -* @author Andreas Grabs -* @license http://www.gnu.org/copyleft/gpl.html GNU Public License -* @package feedback -*/ - -if (!defined('MOODLE_INTERNAL')) { - die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page -} - -require_once $CFG->libdir.'/formslib.php'; - -class feedback_choose_group_form extends moodleform { - var $feedbackdata; - - function definition() { - $this->feedbackdata = new stdClass(); - //this function can not be called, because not all data are available at this time - //I use set_form_elements instead - } - - //this function set the data used in set_form_elements() - //in this form the only value have to set is course - //eg: array('course' => $course) - function set_feedbackdata($data) { - if(is_array($data)) { - foreach($data as $key => $val) { - $this->feedbackdata->{$key} = $val; - } - } - } - - //here the elements will be set - //this function have to be called manually - //the advantage is that the data are already set - function set_form_elements(){ - $mform =& $this->_form; - - $elementgroup = array(); - //headline - // $mform->addElement('header', 'general', get_string('choose_group', 'feedback')); - // hidden elements - $mform->addElement('hidden', 'id'); - $mform->setType('id', PARAM_INT); - $mform->addElement('hidden', 'do_show'); - $mform->setType('do-show', PARAM_INT); - - // visible elements - $groups_options = array(); - if(isset($this->feedbackdata->groups)){ - $groups_options['-1'] = get_string('allgroups'); - foreach($this->feedbackdata->groups as $group) { - $groups_options[$group->id] = $group->name; - } - } - $attributes = 'onChange="this.form.submit()"'; - $elementgroup[] =& $mform->createElement('select', 'lstgroupid', '', $groups_options, $attributes); - // buttons - $elementgroup[] =& $mform->createElement('submit', 'switch_group', get_string('switch_group', 'feedback')); - $mform->addGroup($elementgroup, 'elementgroup', '', array(' '), false); - -//------------------------------------------------------------------------------- - } -} + * prints the form to choose the group you want to analyse + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ +//This file can be deleted diff --git a/mod/feedback/complete.php b/mod/feedback/complete.php index 7f81b9b9a04..e6fe6cd8cbf 100644 --- a/mod/feedback/complete.php +++ b/mod/feedback/complete.php @@ -1,237 +1,283 @@ . - /** - * prints the form so the user can fill out the feedback - * - * @author Andreas Grabs - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License - * @package feedback - */ +/** + * prints the form so the user can fill out the feedback + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ - require_once("../../config.php"); - require_once("lib.php"); - require_once($CFG->libdir . '/completionlib.php'); +require_once("../../config.php"); +require_once("lib.php"); +require_once($CFG->libdir . '/completionlib.php'); - feedback_init_feedback_session(); +feedback_init_feedback_session(); - $id = required_param('id', PARAM_INT); - $completedid = optional_param('completedid', false, PARAM_INT); - $preservevalues = optional_param('preservevalues', 0, PARAM_INT); - $courseid = optional_param('courseid', false, PARAM_INT); - $gopage = optional_param('gopage', -1, PARAM_INT); - $lastpage = optional_param('lastpage', false, PARAM_INT); - $startitempos = optional_param('startitempos', 0, PARAM_INT); - $lastitempos = optional_param('lastitempos', 0, PARAM_INT); - $anonymous_response = optional_param('anonymous_response', 0, PARAM_INT); //arb +$id = required_param('id', PARAM_INT); +$completedid = optional_param('completedid', false, PARAM_INT); +$preservevalues = optional_param('preservevalues', 0, PARAM_INT); +$courseid = optional_param('courseid', false, PARAM_INT); +$gopage = optional_param('gopage', -1, PARAM_INT); +$lastpage = optional_param('lastpage', false, PARAM_INT); +$startitempos = optional_param('startitempos', 0, PARAM_INT); +$lastitempos = optional_param('lastitempos', 0, PARAM_INT); +$anonymous_response = optional_param('anonymous_response', 0, PARAM_INT); //arb - $highlightrequired = false; +$highlightrequired = false; - if(($formdata = data_submitted()) AND !confirm_sesskey()) { - print_error('invalidsesskey'); - } +if (($formdata = data_submitted()) AND !confirm_sesskey()) { + print_error('invalidsesskey'); +} - //if the use hit enter into a textfield so the form should not submit - if(isset($formdata->sesskey) AND !isset($formdata->savevalues) AND !isset($formdata->gonextpage) AND !isset($formdata->gopreviouspage)) { - $gopage = $formdata->lastpage; - } +//if the use hit enter into a textfield so the form should not submit +if (isset($formdata->sesskey) AND + !isset($formdata->savevalues) AND + !isset($formdata->gonextpage) AND + !isset($formdata->gopreviouspage)) { - if(isset($formdata->savevalues)) { - $savevalues = true; - }else { - $savevalues = false; - } + $gopage = $formdata->lastpage; +} - if($gopage < 0 AND !$savevalues) { - if(isset($formdata->gonextpage)){ - $gopage = $lastpage + 1; - $gonextpage = true; - $gopreviouspage = false; - }else if(isset($formdata->gopreviouspage)){ - $gopage = $lastpage - 1; - $gonextpage = false; - $gopreviouspage = true; - }else { - print_error('missingparameter'); - } - }else { - $gonextpage = $gopreviouspage = false; - } +if (isset($formdata->savevalues)) { + $savevalues = true; +} else { + $savevalues = false; +} - if (! $cm = get_coursemodule_from_id('feedback', $id)) { - print_error('invalidcoursemodule'); - } - - if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { - print_error('coursemisconf'); - } - - if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { - print_error('invalidcoursemodule'); - } - - if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { - print_error('badcontext'); - } - - $feedback_complete_cap = false; - - if(has_capability('mod/feedback:complete', $context)) { - $feedback_complete_cap = true; - } - - //check whether the feedback is located and! started from the mainsite - if($course->id == SITEID AND !$courseid) { - $courseid = SITEID; - } - - //check whether the feedback is mapped to the given courseid - if($course->id == SITEID AND !has_capability('mod/feedback:edititems', $context)) { - if($DB->get_records('feedback_sitecourse_map', array('feedbackid'=>$feedback->id))) { - if(!$DB->get_record('feedback_sitecourse_map', array('feedbackid'=>$feedback->id, 'courseid'=>$courseid))){ - print_error('notavailable', 'feedback'); - } - } - } - - if($feedback->anonymous != FEEDBACK_ANONYMOUS_YES) { - if($course->id == SITEID) { - require_login($course->id, true); - }else { - require_login($course->id, true, $cm); - } +if ($gopage < 0 AND !$savevalues) { + if (isset($formdata->gonextpage)) { + $gopage = $lastpage + 1; + $gonextpage = true; + $gopreviouspage = false; + } else if (isset($formdata->gopreviouspage)) { + $gopage = $lastpage - 1; + $gonextpage = false; + $gopreviouspage = true; } else { - if($course->id == SITEID) { - require_course_login($course, true); - }else { - require_course_login($course, true, $cm); + print_error('missingparameter'); + } +} else { + $gonextpage = $gopreviouspage = false; +} + +if (! $cm = get_coursemodule_from_id('feedback', $id)) { + print_error('invalidcoursemodule'); +} + +if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { + print_error('coursemisconf'); +} + +if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { + print_error('invalidcoursemodule'); +} + +if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { + print_error('badcontext'); +} + +$feedback_complete_cap = false; + +if (has_capability('mod/feedback:complete', $context)) { + $feedback_complete_cap = true; +} + +//check whether the feedback is located and! started from the mainsite +if ($course->id == SITEID AND !$courseid) { + $courseid = SITEID; +} + +//check whether the feedback is mapped to the given courseid +if ($course->id == SITEID AND !has_capability('mod/feedback:edititems', $context)) { + if ($DB->get_records('feedback_sitecourse_map', array('feedbackid'=>$feedback->id))) { + $params = array('feedbackid'=>$feedback->id, 'courseid'=>$courseid); + if (!$DB->get_record('feedback_sitecourse_map', $params)) { + print_error('notavailable', 'feedback'); } } +} - //check whether the given courseid exists - if($courseid AND $courseid != SITEID) { - if($course2 = $DB->get_record('course', array('id'=>$courseid))){ - require_course_login($course2); //this overwrites the object $course :-( - $course = $DB->get_record("course", array("id"=>$cm->course)); // the workaround - }else { - print_error('invalidcourseid'); +if ($feedback->anonymous != FEEDBACK_ANONYMOUS_YES) { + if ($course->id == SITEID) { + require_login($course->id, true); + } else { + require_login($course->id, true, $cm); + } +} else { + if ($course->id == SITEID) { + require_course_login($course, true); + } else { + require_course_login($course, true, $cm); + } +} + +//check whether the given courseid exists +if ($courseid AND $courseid != SITEID) { + if ($course2 = $DB->get_record('course', array('id'=>$courseid))) { + require_course_login($course2); //this overwrites the object $course :-( + $course = $DB->get_record("course", array("id"=>$cm->course)); // the workaround + } else { + print_error('invalidcourseid'); + } +} + +if (!$feedback_complete_cap) { + print_error('error'); +} + +// Mark activity viewed for completion-tracking +$completion = new completion_info($course); +$completion->set_module_viewed($cm); + +/// Print the page header +$strfeedbacks = get_string("modulenameplural", "feedback"); +$strfeedback = get_string("modulename", "feedback"); + +if ($course->id == SITEID) { + $PAGE->set_cm($cm, $course); // set's up global $COURSE + $PAGE->set_pagelayout('incourse'); +} + +$PAGE->navbar->add(get_string('feedback:complete', 'feedback')); +$urlparams = array('id'=>$cm->id, 'gopage'=>$gopage, 'courseid'=>$course->id); +$PAGE->set_url('/mod/feedback/complete.php', $urlparams); +$PAGE->set_heading(format_string($course->fullname)); +$PAGE->set_title(format_string($feedback->name)); +echo $OUTPUT->header(); + +//ishidden check. +//feedback in courses +if ((empty($cm->visible) AND + !has_capability('moodle/course:viewhiddenactivities', $context)) AND + $course->id != SITEID) { + notice(get_string("activityiscurrentlyhidden")); +} + +//ishidden check. +//feedback on mainsite +if ((empty($cm->visible) AND + !has_capability('moodle/course:viewhiddenactivities', $context)) AND + $courseid == SITEID) { + notice(get_string("activityiscurrentlyhidden")); +} + +//check, if the feedback is open (timeopen, timeclose) +$checktime = time(); +$feedback_is_closed = ($feedback->timeopen > $checktime) OR + ($feedback->timeclose < $checktime AND + $feedback->timeclose > 0); + +if ($feedback_is_closed) { + echo $OUTPUT->box_start('generalbox boxaligncenter'); + echo '

'; + echo get_string('feedback_is_not_open', 'feedback'); + echo '

'; + echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); + echo $OUTPUT->box_end(); + echo $OUTPUT->footer(); + exit; +} + +//additional check for multiple-submit (prevent browsers back-button). +//the main-check is in view.php +$feedback_can_submit = true; +if ($feedback->multiple_submit == 0 ) { + if (feedback_is_already_submitted($feedback->id, $courseid)) { + $feedback_can_submit = false; + } +} +if ($feedback_can_submit) { + //preserving the items + if ($preservevalues == 1) { + if (!isset($SESSION->feedback->is_started) OR !$SESSION->feedback->is_started == true) { + print_error('error', '', $CFG->wwwroot.'/course/view.php?id='.$course->id); } - } - - if(!$feedback_complete_cap) { - print_error('error'); - } - - // Mark activity viewed for completion-tracking - $completion = new completion_info($course); - $completion->set_module_viewed($cm); - - /// Print the page header - $strfeedbacks = get_string("modulenameplural", "feedback"); - $strfeedback = get_string("modulename", "feedback"); - - if($course->id == SITEID) { - $PAGE->set_cm($cm, $course); // set's up global $COURSE - $PAGE->set_pagelayout('incourse'); - } - - $PAGE->navbar->add(get_string('feedback:complete', 'feedback')); - $PAGE->set_url('/mod/feedback/complete.php', array('id'=>$cm->id, 'gopage'=>$gopage, 'courseid'=>$course->id)); - $PAGE->set_heading(format_string($course->fullname)); - $PAGE->set_title(format_string($feedback->name)); - echo $OUTPUT->header(); - - //ishidden check. - //feedback in courses - if ((empty($cm->visible) AND - !has_capability('moodle/course:viewhiddenactivities', $context)) AND - $course->id != SITEID) { - notice(get_string("activityiscurrentlyhidden")); - } - - //ishidden check. - //feedback on mainsite - if ((empty($cm->visible) AND - !has_capability('moodle/course:viewhiddenactivities', $context)) AND - $courseid == SITEID) { - notice(get_string("activityiscurrentlyhidden")); - } - - feedback_print_errors(); - - //check, if the feedback is open (timeopen, timeclose) - $checktime = time(); - if(($feedback->timeopen > $checktime) OR ($feedback->timeclose < $checktime AND $feedback->timeclose > 0)) { - echo $OUTPUT->box_start('generalbox boxaligncenter'); - echo '

'.get_string('feedback_is_not_open', 'feedback').'

'; - echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); - echo $OUTPUT->box_end(); - echo $OUTPUT->footer(); - exit; - } - - //additional check for multiple-submit (prevent browsers back-button). the main-check is in view.php - $feedback_can_submit = true; - if($feedback->multiple_submit == 0 ) { - if(feedback_is_already_submitted($feedback->id, $courseid)) { - $feedback_can_submit = false; - } - } - if($feedback_can_submit) { - //preserving the items - if($preservevalues == 1){ - if(!$SESSION->feedback->is_started == true) - print_error('error', '', $CFG->wwwroot.'/course/view.php?id='.$course->id); - //checken, ob alle required items einen wert haben - if(feedback_check_values($startitempos, $lastitempos)) { - $userid = $USER->id; //arb - if($completedid = feedback_save_values($USER->id, true)){ - if($userid > 0) { - add_to_log($course->id, 'feedback', 'startcomplete', 'view.php?id='.$cm->id, $feedback->id, $cm->id, $userid); - } - if(!$gonextpage AND !$gopreviouspage) $preservevalues = false;//es kann gespeichert werden - - }else { - $savereturn = 'failed'; - if(isset($lastpage)) { - $gopage = $lastpage; - }else { - print_error('missingparameter'); - } + //checken, ob alle required items einen wert haben + if (feedback_check_values($startitempos, $lastitempos)) { + $userid = $USER->id; //arb + if ($completedid = feedback_save_values($USER->id, true)) { + if ($userid > 0) { + add_to_log($course->id, + 'feedback', + 'startcomplete', + 'view.php?id='.$cm->id, + $feedback->id, + $cm->id, + $userid); } - }else { - $savereturn = 'missing'; - $highlightrequired = true; - if(isset($lastpage)) { + if (!$gonextpage AND !$gopreviouspage) { + $preservevalues = false;//es kann gespeichert werden + } + + } else { + $savereturn = 'failed'; + if (isset($lastpage)) { $gopage = $lastpage; - }else { + } else { print_error('missingparameter'); } - } + } else { + $savereturn = 'missing'; + $highlightrequired = true; + if (isset($lastpage)) { + $gopage = $lastpage; + } else { + print_error('missingparameter'); + } + } + } - //saving the items - if($savevalues AND !$preservevalues){ - //exists there any pagebreak, so there are values in the feedback_valuetmp - $userid = $USER->id; //arb + //saving the items + if ($savevalues AND !$preservevalues) { + //exists there any pagebreak, so there are values in the feedback_valuetmp + $userid = $USER->id; //arb - if($feedback->anonymous == FEEDBACK_ANONYMOUS_NO) { - $feedbackcompleted = feedback_get_current_completed($feedback->id, false, $courseid); - }else{ - $feedbackcompleted = false; - } - $feedbackcompletedtmp = $DB->get_record('feedback_completedtmp', array('id'=>$completedid)); - //fake saving for switchrole - $is_switchrole = feedback_check_is_switchrole(); - if($is_switchrole) { + if ($feedback->anonymous == FEEDBACK_ANONYMOUS_NO) { + $feedbackcompleted = feedback_get_current_completed($feedback->id, false, $courseid); + } else { + $feedbackcompleted = false; + } + $params = array('id' => $completedid); + $feedbackcompletedtmp = $DB->get_record('feedback_completedtmp', $params); + //fake saving for switchrole + $is_switchrole = feedback_check_is_switchrole(); + if ($is_switchrole) { + $savereturn = 'saved'; + feedback_delete_completedtmp($completedid); + } else { + $new_completed_id = feedback_save_tmp_values($feedbackcompletedtmp, + $feedbackcompleted, + $userid); + if ($new_completed_id) { $savereturn = 'saved'; - feedback_delete_completedtmp($completedid); - }else if($new_completed_id = feedback_save_tmp_values($feedbackcompletedtmp, $feedbackcompleted, $userid)) { - $savereturn = 'saved'; - if($feedback->anonymous == FEEDBACK_ANONYMOUS_NO) { - add_to_log($course->id, 'feedback', 'submit', 'view.php?id='.$cm->id, $feedback->id, $cm->id, $userid); + if ($feedback->anonymous == FEEDBACK_ANONYMOUS_NO) { + add_to_log($course->id, + 'feedback', + 'submit', + 'view.php?id='.$cm->id, + $feedback->id, + $cm->id, + $userid); + feedback_send_email($cm, $feedback, $course, $userid); - }else { + } else { feedback_send_email_anonym($cm, $feedback, $course, $userid); } //tracking the submit @@ -241,270 +287,316 @@ $tracking->completed = $new_completed_id; $DB->insert_record('feedback_tracking', $tracking); unset($SESSION->feedback->is_started); - + // Update completion state $completion = new completion_info($course); if ($completion->is_enabled($cm) && $feedback->completionsubmit) { $completion->update_state($cm, COMPLETION_COMPLETE); } - }else { + } else { $savereturn = 'failed'; } - } - - if($allbreaks = feedback_get_all_break_positions($feedback->id)){ - if($gopage <= 0) { - $startposition = 0; - }else { - if(!isset($allbreaks[$gopage - 1])) { - $gopage = count($allbreaks); - } - $startposition = $allbreaks[$gopage - 1]; - } - $ispagebreak = true; - }else { - $startposition = 0; - $newpage = 0; - $ispagebreak = false; - } - - //get the feedbackitems after the last shown pagebreak - $feedbackitems = $DB->get_records_select('feedback_item', 'feedback = ? AND position > ?', array($feedback->id, $startposition), 'position'); - - //get the first pagebreak - if($pagebreaks = $DB->get_records('feedback_item', array('feedback'=>$feedback->id, 'typ'=>'pagebreak'), 'position')) { - $pagebreaks = array_values($pagebreaks); - $firstpagebreak = $pagebreaks[0]; - }else { - $firstpagebreak = false; - } - $maxitemcount = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); - - //get the values of completeds before done. Anonymous user can not get these values. - if((!isset($SESSION->feedback->is_started)) AND (!isset($savereturn)) AND ($feedback->anonymous == FEEDBACK_ANONYMOUS_NO)) { - if(!$feedbackcompletedtmp = feedback_get_current_completed($feedback->id, true, $courseid)) { - if($feedbackcompleted = feedback_get_current_completed($feedback->id, false, $courseid)) { - //copy the values to feedback_valuetmp create a completedtmp - $feedbackcompletedtmp = feedback_set_tmp_values($feedbackcompleted); - } - } - }else { - $feedbackcompletedtmp = feedback_get_current_completed($feedback->id, true, $courseid); - } - - /// Print the main part of the page - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - $analysisurl = new moodle_url('/mod/feedback/analysis.php', array('id'=>$id)); - if($courseid > 0) { - $analysisurl->param('courseid', $courseid); - } - echo $OUTPUT->heading(format_text($feedback->name)); - - if( (intval($feedback->publish_stats) == 1) AND - ( has_capability('mod/feedback:viewanalysepage', $context)) AND - !( has_capability('mod/feedback:viewreports', $context)) ) { - if($multiple_count = $DB->count_records('feedback_tracking', array('userid'=>$USER->id, 'feedback'=>$feedback->id))) { - echo $OUTPUT->box_start('mdl-align'); - echo ''; - echo get_string('completed_feedbacks', 'feedback').''; - echo $OUTPUT->box_end(); - } - } - - if(isset($savereturn) && $savereturn == 'saved') { - if($feedback->page_after_submit) { - echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); - echo format_text($feedback->page_after_submit, $feedback->page_after_submitformat, array('overflowdiv'=>true)); - echo $OUTPUT->box_end(); - } else { - echo '

'.get_string('entries_saved','feedback').'

'; - if( intval($feedback->publish_stats) == 1) { - echo '

'; - echo get_string('completed_feedbacks', 'feedback').''; - echo '

'; - } - } - - if($feedback->site_after_submit) { - echo $OUTPUT->continue_button(feedback_encode_target_url($feedback->site_after_submit)); - }else { - if($courseid) { - if($courseid == SITEID) { - echo $OUTPUT->continue_button($CFG->wwwroot); - }else { - echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$courseid); - } - }else { - if($course->id == SITEID) { - echo $OUTPUT->continue_button($CFG->wwwroot); - } else { - echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); - } - } - } - }else { - if(isset($savereturn) && $savereturn == 'failed') { - echo $OUTPUT->box_start('mform error'); - echo get_string('saving_failed','feedback'); - echo $OUTPUT->box_end(); - } - - if(isset($savereturn) && $savereturn == 'missing') { - echo $OUTPUT->box_start('mform error'); - echo get_string('saving_failed_because_missing_or_false_values','feedback'); - echo $OUTPUT->box_end(); - } - - //print the items - if(is_array($feedbackitems)){ - // echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); - echo $OUTPUT->box_start('feedback_form'); - echo '
'; - echo '
'; - echo ''; - echo $OUTPUT->box_start('feedback_anonymousinfo'); - switch ($feedback->anonymous) { - case FEEDBACK_ANONYMOUS_YES: - echo ''; - echo ''; - echo get_string('mode', 'feedback').': '.get_string('anonymous', 'feedback'); - break; - case FEEDBACK_ANONYMOUS_NO: - echo ''; - echo ''; - echo get_string('mode', 'feedback').': '.get_string('non_anonymous', 'feedback'); - break; - } - echo $OUTPUT->box_end(); - //check, if there exists required-elements - $countreq = $DB->count_records('feedback_item', array('feedback'=>$feedback->id, 'required'=>1)); - if($countreq > 0) { - echo ''; - } - echo $OUTPUT->box_start('feedback_items'); - - unset($startitem); - $itemnr = $DB->count_records_select('feedback_item', 'feedback = ? AND hasvalue = 1 AND position < ?', array($feedback->id, $startposition)); - $lastbreakposition = 0; - $align = right_to_left() ? 'right' : 'left'; - - foreach($feedbackitems as $feedbackitem){ - if(!isset($startitem)) { - //avoid showing double pagebreaks - if($feedbackitem->typ == 'pagebreak') { - continue; - } - $startitem = $feedbackitem; - } - - if($feedbackitem->dependitem > 0) { - //chech if the conditions are ok - if(!isset($feedbackcompletedtmp->id) OR !feedback_compare_item_value($feedbackcompletedtmp->id, $feedbackitem->dependitem, $feedbackitem->dependvalue, true)) { - $lastitem = $feedbackitem; - $lastbreakposition = $feedbackitem->position; - continue; - } - } - - if($feedbackitem->dependitem > 0) { - $dependstyle = ' feedback_complete_depend'; - }else { - $dependstyle = ''; - } - - echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle); - $value = ''; - //get the value - $frmvaluename = $feedbackitem->typ . '_'. $feedbackitem->id; - if(isset($savereturn)) { - $value = isset($formdata->{$frmvaluename})?$formdata->{$frmvaluename}:NULL; - }else { - if(isset($feedbackcompletedtmp->id)) { - $value = feedback_get_item_value($feedbackcompletedtmp->id, $feedbackitem->id, true); - } - } - if($feedbackitem->hasvalue == 1 AND $feedback->autonumbering) { - $itemnr++; - echo $OUTPUT->box_start('feedback_item_number_'.$align); - echo $itemnr; - echo $OUTPUT->box_end(); - } - if($feedbackitem->typ != 'pagebreak') { - echo $OUTPUT->box_start('box generalbox boxalign_'.$align); - feedback_print_item_complete($feedbackitem, $value, $highlightrequired); - echo $OUTPUT->box_end(); - } - echo $OUTPUT->box_end(); - - $lastbreakposition = $feedbackitem->position; //last item-pos (item or pagebreak) - if($feedbackitem->typ == 'pagebreak'){ - break; - }else { - $lastitem = $feedbackitem; - } - } - echo $OUTPUT->box_end(); - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if(isset($startitem)) { - echo ''; - echo ''; - } - - if( $ispagebreak AND $lastbreakposition > $firstpagebreak->position) { - echo ''; - } - if($lastbreakposition < $maxitemcount){ - echo ''; - } - if($lastbreakposition >= $maxitemcount) { //last page - echo ''; - } - - echo '
'; - echo '
'; - echo $OUTPUT->box_end(); - - echo $OUTPUT->box_start('feedback_complete_cancel'); - if($courseid) { - echo '
'; - }else{ - if($course->id == SITEID) { - echo ''; - } else { - echo ''; - } - } - echo '
'; - echo ''; - echo ''; - echo ''; - echo '
'; - echo '
'; - echo $OUTPUT->box_end(); - $SESSION->feedback->is_started = true; - // echo $OUTPUT->box_end(); - } - } - }else { - echo $OUTPUT->box_start('generalbox boxaligncenter'); - echo '

'.get_string('this_feedback_is_already_submitted', 'feedback').'

'; - echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); - echo $OUTPUT->box_end(); } - /// Finish the page - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - echo $OUTPUT->footer(); + if ($allbreaks = feedback_get_all_break_positions($feedback->id)) { + if ($gopage <= 0) { + $startposition = 0; + } else { + if (!isset($allbreaks[$gopage - 1])) { + $gopage = count($allbreaks); + } + $startposition = $allbreaks[$gopage - 1]; + } + $ispagebreak = true; + } else { + $startposition = 0; + $newpage = 0; + $ispagebreak = false; + } + + //get the feedbackitems after the last shown pagebreak + $select = 'feedback = ? AND position > ?'; + $params = array($feedback->id, $startposition); + $feedbackitems = $DB->get_records_select('feedback_item', $select, $params, 'position'); + + //get the first pagebreak + $params = array('feedback' => $feedback->id, 'typ' => 'pagebreak'); + if ($pagebreaks = $DB->get_records('feedback_item', $params, 'position')) { + $pagebreaks = array_values($pagebreaks); + $firstpagebreak = $pagebreaks[0]; + } else { + $firstpagebreak = false; + } + $maxitemcount = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); + + //get the values of completeds before done. Anonymous user can not get these values. + if ((!isset($SESSION->feedback->is_started)) AND + (!isset($savereturn)) AND + ($feedback->anonymous == FEEDBACK_ANONYMOUS_NO)) { + + $feedbackcompletedtmp = feedback_get_current_completed($feedback->id, true, $courseid); + if (!$feedbackcompletedtmp) { + $feedbackcompleted = feedback_get_current_completed($feedback->id, false, $courseid); + if ($feedbackcompleted) { + //copy the values to feedback_valuetmp create a completedtmp + $feedbackcompletedtmp = feedback_set_tmp_values($feedbackcompleted); + } + } + } else { + $feedbackcompletedtmp = feedback_get_current_completed($feedback->id, true, $courseid); + } + + /// Print the main part of the page + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + $analysisurl = new moodle_url('/mod/feedback/analysis.php', array('id'=>$id)); + if ($courseid > 0) { + $analysisurl->param('courseid', $courseid); + } + echo $OUTPUT->heading(format_text($feedback->name)); + + if ( (intval($feedback->publish_stats) == 1) AND + ( has_capability('mod/feedback:viewanalysepage', $context)) AND + !( has_capability('mod/feedback:viewreports', $context)) ) { + + $params = array('userid' => $USER->id, 'feedback' => $feedback->id); + if ($multiple_count = $DB->count_records('feedback_tracking', $params)) { + echo $OUTPUT->box_start('mdl-align'); + echo ''; + echo get_string('completed_feedbacks', 'feedback').''; + echo $OUTPUT->box_end(); + } + } + + if (isset($savereturn) && $savereturn == 'saved') { + if ($feedback->page_after_submit) { + echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); + echo format_text($feedback->page_after_submit, + $feedback->page_after_submitformat, + array('overflowdiv' => true)); + echo $OUTPUT->box_end(); + } else { + echo '

'; + echo ''; + echo get_string('entries_saved', 'feedback'); + echo ''; + echo '

'; + if ( intval($feedback->publish_stats) == 1) { + echo '

'; + echo get_string('completed_feedbacks', 'feedback').''; + echo '

'; + } + } + + if ($feedback->site_after_submit) { + $url = feedback_encode_target_url($feedback->site_after_submit); + } else { + if ($courseid) { + if ($courseid == SITEID) { + $url = $CFG->wwwroot; + } else { + $url = $CFG->wwwroot.'/course/view.php?id='.$courseid; + } + } else { + if ($course->id == SITEID) { + $url = $CFG->wwwroot; + } else { + $url = $CFG->wwwroot.'/course/view.php?id='.$course->id; + } + } + } + echo $OUTPUT->continue_button($url); + } else { + if (isset($savereturn) && $savereturn == 'failed') { + echo $OUTPUT->box_start('mform error'); + echo get_string('saving_failed', 'feedback'); + echo $OUTPUT->box_end(); + } + + if (isset($savereturn) && $savereturn == 'missing') { + echo $OUTPUT->box_start('mform error'); + echo get_string('saving_failed_because_missing_or_false_values', 'feedback'); + echo $OUTPUT->box_end(); + } + + //print the items + if (is_array($feedbackitems)) { + echo $OUTPUT->box_start('feedback_form'); + echo '
'; + echo '
'; + echo ''; + echo $OUTPUT->box_start('feedback_anonymousinfo'); + switch ($feedback->anonymous) { + case FEEDBACK_ANONYMOUS_YES: + echo ''; + $inputvalue = 'value="'.FEEDBACK_ANONYMOUS_YES.'"'; + echo ''; + echo get_string('mode', 'feedback').': '.get_string('anonymous', 'feedback'); + break; + case FEEDBACK_ANONYMOUS_NO: + echo ''; + $inputvalue = 'value="'.FEEDBACK_ANONYMOUS_NO.'"'; + echo ''; + echo get_string('mode', 'feedback').': '; + echo get_string('non_anonymous', 'feedback'); + break; + } + echo $OUTPUT->box_end(); + //check, if there exists required-elements + $params = array('feedback' => $feedback->id, 'required' => 1); + $countreq = $DB->count_records('feedback_item', $params); + if ($countreq > 0) { + echo ''; + } + echo $OUTPUT->box_start('feedback_items'); + + unset($startitem); + $select = 'feedback = ? AND hasvalue = 1 AND position < ?'; + $params = array($feedback->id, $startposition); + $itemnr = $DB->count_records_select('feedback_item', $select, $params); + $lastbreakposition = 0; + $align = right_to_left() ? 'right' : 'left'; + + foreach ($feedbackitems as $feedbackitem) { + if (!isset($startitem)) { + //avoid showing double pagebreaks + if ($feedbackitem->typ == 'pagebreak') { + continue; + } + $startitem = $feedbackitem; + } + + if ($feedbackitem->dependitem > 0) { + //chech if the conditions are ok + $fb_compare_value = feedback_compare_item_value($feedbackcompletedtmp->id, + $feedbackitem->dependitem, + $feedbackitem->dependvalue, + true); + if (!isset($feedbackcompletedtmp->id) OR !$fb_compare_value) { + $lastitem = $feedbackitem; + $lastbreakposition = $feedbackitem->position; + continue; + } + } + + if ($feedbackitem->dependitem > 0) { + $dependstyle = ' feedback_complete_depend'; + } else { + $dependstyle = ''; + } + + echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle); + $value = ''; + //get the value + $frmvaluename = $feedbackitem->typ . '_'. $feedbackitem->id; + if (isset($savereturn)) { + if (isset($formdata->{$frmvaluename})) { + $value = $formdata->{$frmvaluename}; + } else { + $value = null; + } + } else { + if (isset($feedbackcompletedtmp->id)) { + $value = feedback_get_item_value($feedbackcompletedtmp->id, + $feedbackitem->id, + true); + } + } + if ($feedbackitem->hasvalue == 1 AND $feedback->autonumbering) { + $itemnr++; + echo $OUTPUT->box_start('feedback_item_number_'.$align); + echo $itemnr; + echo $OUTPUT->box_end(); + } + if ($feedbackitem->typ != 'pagebreak') { + echo $OUTPUT->box_start('box generalbox boxalign_'.$align); + feedback_print_item_complete($feedbackitem, $value, $highlightrequired); + echo $OUTPUT->box_end(); + } + echo $OUTPUT->box_end(); + + $lastbreakposition = $feedbackitem->position; //last item-pos (item or pagebreak) + if ($feedbackitem->typ == 'pagebreak') { + break; + } else { + $lastitem = $feedbackitem; + } + } + echo $OUTPUT->box_end(); + echo ''; + echo ''; + echo ''; + if (isset($feedbackcompletedtmp->id)) { + $inputvalue = 'value="'.$feedbackcompletedtmp->id.'"'; + } else { + $inputvalue = 'value=""'; + } + echo ''; + echo ''; + echo ''; + if (isset($startitem)) { + echo ''; + echo ''; + } + + if ( $ispagebreak AND $lastbreakposition > $firstpagebreak->position) { + $inputvalue = 'value="'.get_string('previous_page', 'feedback').'"'; + echo ''; + } + if ($lastbreakposition < $maxitemcount) { + $inputvalue = 'value="'.get_string('next_page', 'feedback').'"'; + echo ''; + } + if ($lastbreakposition >= $maxitemcount) { //last page + $inputvalue = 'value="'.get_string('save_entries', 'feedback').'"'; + echo ''; + } + + echo '
'; + echo '
'; + echo $OUTPUT->box_end(); + + echo $OUTPUT->box_start('feedback_complete_cancel'); + if ($courseid) { + $action = 'action="'.$CFG->wwwroot.'/course/view.php?id='.$courseid.'"'; + } else { + if ($course->id == SITEID) { + $action = 'action="'.$CFG->wwwroot.'"'; + } else { + $action = 'action="'.$CFG->wwwroot.'/course/view.php?id='.$course->id.'"'; + } + } + echo '
'; + echo '
'; + echo ''; + echo ''; + echo ''; + echo '
'; + echo '
'; + echo $OUTPUT->box_end(); + $SESSION->feedback->is_started = true; + } + } +} else { + echo $OUTPUT->box_start('generalbox boxaligncenter'); + echo '

'; + echo ''; + echo get_string('this_feedback_is_already_submitted', 'feedback'); + echo ''; + echo '

'; + echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); + echo $OUTPUT->box_end(); +} +/// Finish the page +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// + +echo $OUTPUT->footer(); diff --git a/mod/feedback/complete_guest.php b/mod/feedback/complete_guest.php index a25946d2920..a1d85863d45 100644 --- a/mod/feedback/complete_guest.php +++ b/mod/feedback/complete_guest.php @@ -1,459 +1,538 @@ . - /** - * prints the form so an anonymous user can fill out the feedback on the mainsite - * - * @author Andreas Grabs - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License - * @package feedback - */ +/** + * prints the form so an anonymous user can fill out the feedback on the mainsite + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ - require_once("../../config.php"); - require_once("lib.php"); +require_once("../../config.php"); +require_once("lib.php"); - feedback_init_feedback_session(); +feedback_init_feedback_session(); - $id = required_param('id', PARAM_INT); - $completedid = optional_param('completedid', false, PARAM_INT); - $preservevalues = optional_param('preservevalues', 0, PARAM_INT); - $courseid = optional_param('courseid', false, PARAM_INT); - $gopage = optional_param('gopage', -1, PARAM_INT); - $lastpage = optional_param('lastpage', false, PARAM_INT); - $startitempos = optional_param('startitempos', 0, PARAM_INT); - $lastitempos = optional_param('lastitempos', 0, PARAM_INT); +$id = required_param('id', PARAM_INT); +$completedid = optional_param('completedid', false, PARAM_INT); +$preservevalues = optional_param('preservevalues', 0, PARAM_INT); +$courseid = optional_param('courseid', false, PARAM_INT); +$gopage = optional_param('gopage', -1, PARAM_INT); +$lastpage = optional_param('lastpage', false, PARAM_INT); +$startitempos = optional_param('startitempos', 0, PARAM_INT); +$lastitempos = optional_param('lastitempos', 0, PARAM_INT); - $url = new moodle_url('/mod/feedback/complete_guest.php', array('id'=>$id)); - if ($completedid !== false) { - $url->param('completedid', $completedid); - } - if ($preservevalues !== 0) { - $url->param('preservevalues', $preservevalues); - } - if ($courseid !== false) { - $url->param('courseid', $courseid); - } - if ($gopage !== -1) { - $url->param('gopage', $gopage); - } - if ($lastpage !== false) { - $url->param('lastpage', $lastpage); - } - if ($startitempos !== 0) { - $url->param('startitempos', $startitempos); - } - if ($lastitempos !== 0) { - $url->param('lastitempos', $lastitempos); - } - $PAGE->set_url($url); +$url = new moodle_url('/mod/feedback/complete_guest.php', array('id'=>$id)); +if ($completedid !== false) { + $url->param('completedid', $completedid); +} +if ($preservevalues !== 0) { + $url->param('preservevalues', $preservevalues); +} +if ($courseid !== false) { + $url->param('courseid', $courseid); +} +if ($gopage !== -1) { + $url->param('gopage', $gopage); +} +if ($lastpage !== false) { + $url->param('lastpage', $lastpage); +} +if ($startitempos !== 0) { + $url->param('startitempos', $startitempos); +} +if ($lastitempos !== 0) { + $url->param('lastitempos', $lastitempos); +} +$PAGE->set_url($url); - $highlightrequired = false; +$highlightrequired = false; - if(($formdata = data_submitted()) AND !confirm_sesskey()) { - print_error('invalidsesskey'); +if (($formdata = data_submitted()) AND !confirm_sesskey()) { + print_error('invalidsesskey'); +} + +//if the use hit enter into a textfield so the form should not submit +if (isset($formdata->sesskey) AND + !isset($formdata->savevalues) AND + !isset($formdata->gonextpage) AND + !isset($formdata->gopreviouspage)) { + + $gopage = $formdata->lastpage; +} +if (isset($formdata->savevalues)) { + $savevalues = true; +} else { + $savevalues = false; +} + +if ($gopage < 0 AND !$savevalues) { + if (isset($formdata->gonextpage)) { + $gopage = $lastpage + 1; + $gonextpage = true; + $gopreviouspage = false; + } else if (isset($formdata->gopreviouspage)) { + $gopage = $lastpage - 1; + $gonextpage = false; + $gopreviouspage = true; + } else { + print_error('parameters_missing', 'feedback'); } +} else { + $gonextpage = $gopreviouspage = false; +} - //if the use hit enter into a textfield so the form should not submit - if(isset($formdata->sesskey) AND !isset($formdata->savevalues) AND !isset($formdata->gonextpage) AND !isset($formdata->gopreviouspage)) { - $gopage = $formdata->lastpage; - } - if(isset($formdata->savevalues)) { - $savevalues = true; - }else { - $savevalues = false; - } +if (! $cm = get_coursemodule_from_id('feedback', $id)) { + print_error('invalidcoursemodule'); +} - if($gopage < 0 AND !$savevalues) { - if(isset($formdata->gonextpage)){ - $gopage = $lastpage + 1; - $gonextpage = true; - $gopreviouspage = false; - }else if(isset($formdata->gopreviouspage)){ - $gopage = $lastpage - 1; - $gonextpage = false; - $gopreviouspage = true; - }else { - print_error('parameters_missing', 'feedback'); - } - }else { - $gonextpage = $gopreviouspage = false; - } +if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { + print_error('coursemisconf'); +} - if (! $cm = get_coursemodule_from_id('feedback', $id)) { - print_error('invalidcoursemodule'); - } +if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { + print_error('invalidcoursemodule'); +} - if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { - print_error('coursemisconf'); - } +if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { + print_error('badcontext'); +} - if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { - print_error('invalidcoursemodule'); - } +$feedback_complete_cap = false; - if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { - print_error('badcontext'); - } +if (isset($CFG->feedback_allowfullanonymous) + AND $CFG->feedback_allowfullanonymous + AND $course->id == SITEID + AND (!$courseid OR $courseid == SITEID) + AND $feedback->anonymous == FEEDBACK_ANONYMOUS_YES ) { + $feedback_complete_cap = true; +} - $feedback_complete_cap = false; - - if(isset($CFG->feedback_allowfullanonymous) +//check whether the feedback is anonymous +if (isset($CFG->feedback_allowfullanonymous) AND $CFG->feedback_allowfullanonymous - AND $course->id == SITEID - AND (!$courseid OR $courseid == SITEID) - AND $feedback->anonymous == FEEDBACK_ANONYMOUS_YES ) { - $feedback_complete_cap = true; + AND $feedback->anonymous == FEEDBACK_ANONYMOUS_YES + AND $course->id == SITEID ) { + $feedback_complete_cap = true; +} +if ($feedback->anonymous != FEEDBACK_ANONYMOUS_YES) { + print_error('feedback_is_not_for_anonymous', 'feedback'); +} + +//check whether the user has a session +// there used to be a sesskey test - this could not work - sorry + +//check whether the feedback is located and! started from the mainsite +if ($course->id == SITEID AND !$courseid) { + $courseid = SITEID; +} + +require_course_login($course); + +if ($courseid AND $courseid != SITEID) { + $course2 = $DB->get_record('course', array('id'=>$courseid)); + require_course_login($course2); //this overwrites the object $course :-( + $course = $DB->get_record("course", array("id"=>$cm->course)); // the workaround +} + +if (!$feedback_complete_cap) { + print_error('error'); +} + + +/// Print the page header +$strfeedbacks = get_string("modulenameplural", "feedback"); +$strfeedback = get_string("modulename", "feedback"); + +$PAGE->set_cm($cm, $course); // set's up global $COURSE +$PAGE->set_pagelayout('incourse'); + +$urlparams = array('id'=>$course->id); +$PAGE->navbar->add($strfeedbacks, new moodle_url('/mod/feedback/index.php', $urlparams)); +$PAGE->navbar->add(format_string($feedback->name)); +$PAGE->set_heading(format_string($course->fullname)); +$PAGE->set_title(format_string($feedback->name)); +echo $OUTPUT->header(); + +//ishidden check. +//hidden feedbacks except feedbacks on mainsite are only accessible with related capabilities +if ((empty($cm->visible) AND + !has_capability('moodle/course:viewhiddenactivities', $context)) AND + $course->id != SITEID) { + notice(get_string("activityiscurrentlyhidden")); +} + +//check, if the feedback is open (timeopen, timeclose) +$checktime = time(); + +$feedback_is_closed = ($feedback->timeopen > $checktime) OR + ($feedback->timeclose < $checktime AND + $feedback->timeclose > 0); + +if ($feedback_is_closed) { + echo $OUTPUT->box_start('generalbox boxaligncenter'); + echo '

'; + echo get_string('feedback_is_not_open', 'feedback'); + echo '

'; + echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); + echo $OUTPUT->box_end(); + echo $OUTPUT->footer(); + exit; +} + +//additional check for multiple-submit (prevent browsers back-button). +//the main-check is in view.php +$feedback_can_submit = true; +if ($feedback->multiple_submit == 0 ) { + if (feedback_is_already_submitted($feedback->id, $courseid)) { + $feedback_can_submit = false; } - - //check whether the feedback is anonymous - if(isset($CFG->feedback_allowfullanonymous) - AND $CFG->feedback_allowfullanonymous - AND $feedback->anonymous == FEEDBACK_ANONYMOUS_YES - AND $course->id == SITEID ) { - $feedback_complete_cap = true; - } - if($feedback->anonymous != FEEDBACK_ANONYMOUS_YES) { - print_error('feedback_is_not_for_anonymous', 'feedback'); - } - - //check whether the user has a session - // there used to be a sesskey test - this could not work - sorry - - //check whether the feedback is located and! started from the mainsite - if($course->id == SITEID AND !$courseid) { - $courseid = SITEID; - } - - require_course_login($course); - - if($courseid AND $courseid != SITEID) { - $course2 = $DB->get_record('course', array('id'=>$courseid)); - require_course_login($course2); //this overwrites the object $course :-( - $course = $DB->get_record("course", array("id"=>$cm->course)); // the workaround - } - - if(!$feedback_complete_cap) { - print_error('error'); - } - - - /// Print the page header - $strfeedbacks = get_string("modulenameplural", "feedback"); - $strfeedback = get_string("modulename", "feedback"); - - $PAGE->set_cm($cm, $course); // set's up global $COURSE - $PAGE->set_pagelayout('incourse'); - - $PAGE->navbar->add($strfeedbacks, new moodle_url('/mod/feedback/index.php', array('id'=>$course->id))); - $PAGE->navbar->add(format_string($feedback->name)); - $PAGE->set_heading(format_string($course->fullname)); - $PAGE->set_title(format_string($feedback->name)); - echo $OUTPUT->header(); - - //ishidden check. hidden feedbacks except feedbacks on mainsite are only accessible with related capabilities - if ((empty($cm->visible) AND - !has_capability('moodle/course:viewhiddenactivities', $context)) AND - $course->id != SITEID) { - notice(get_string("activityiscurrentlyhidden")); - } - - feedback_print_errors(); - - //check, if the feedback is open (timeopen, timeclose) - $checktime = time(); - if(($feedback->timeopen > $checktime) OR ($feedback->timeclose < $checktime AND $feedback->timeclose > 0)) { - echo $OUTPUT->box_start('generalbox boxaligncenter'); - echo '

'.get_string('feedback_is_not_open', 'feedback').'

'; - echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); - echo $OUTPUT->box_end(); - echo $OUTPUT->footer(); - exit; - } - - //additional check for multiple-submit (prevent browsers back-button). the main-check is in view.php - $feedback_can_submit = true; - if($feedback->multiple_submit == 0 ) { - // if($multiple_count = $DB->get_record('feedback_tracking', array('userid'=>$USER->id, 'feedback'=>$feedback->id))) { - if(feedback_is_already_submitted($feedback->id, $courseid)) { - $feedback_can_submit = false; +} +if ($feedback_can_submit) { + //preserving the items + if ($preservevalues == 1) { + if (!$SESSION->feedback->is_started == true) { + print_error('error', 'error', $CFG->wwwroot.'/course/view.php?id='.$course->id); } - } - if($feedback_can_submit) { - //preserving the items - if($preservevalues == 1){ - if (!$SESSION->feedback->is_started == true) { - print_error('error', 'error', $CFG->wwwroot.'/course/view.php?id='.$course->id); - } - //check, if all required items have a value - if(feedback_check_values($startitempos, $lastitempos)) { - $userid = $USER->id; //arb - if($completedid = feedback_save_guest_values(sesskey())){ - add_to_log($course->id, 'feedback', 'startcomplete', 'view.php?id='.$cm->id, $feedback->id); //arb: log even guest submissions or at least the startcomplete since the other add log event is elsewhere + //check, if all required items have a value + if (feedback_check_values($startitempos, $lastitempos)) { + $userid = $USER->id; //arb + if ($completedid = feedback_save_guest_values(sesskey())) { + add_to_log($course->id, + 'feedback', + 'startcomplete', + 'view.php?id='.$cm->id, + $feedback->id); - if(!$gonextpage AND !$gopreviouspage) $preservevalues = false;//es kann gespeichert werden - - }else { - $savereturn = 'failed'; - if(isset($lastpage)) { - $gopage = $lastpage; - }else { - print_error('parameters_missing', 'feedback'); - } + //now it can be saved + if (!$gonextpage AND !$gopreviouspage) { + $preservevalues = false; } - }else { - $savereturn = 'missing'; - $highlightrequired = true; - if(isset($lastpage)) { + + } else { + $savereturn = 'failed'; + if (isset($lastpage)) { $gopage = $lastpage; - }else { + } else { print_error('parameters_missing', 'feedback'); } } + } else { + $savereturn = 'missing'; + $highlightrequired = true; + if (isset($lastpage)) { + $gopage = $lastpage; + } else { + print_error('parameters_missing', 'feedback'); + } } + } - //saving the items - if($savevalues AND !$preservevalues){ - //exists there any pagebreak, so there are values in the feedback_valuetmp - $userid = $USER->id; //arb changed from 0 to $USER->id - no strict anonymous feedbacks - if it is a guest taking it then I want to know that it was a guest (at least in the data saved in the feedback tables) + //saving the items + if ($savevalues AND !$preservevalues) { + //exists there any pagebreak, so there are values in the feedback_valuetmp + //arb changed from 0 to $USER->id + //no strict anonymous feedbacks + //if it is a guest taking it then I want to know that it was + //a guest (at least in the data saved in the feedback tables) + $userid = $USER->id; - $feedbackcompletedtmp = $DB->get_record('feedback_completedtmp', array('id'=>$completedid)); + $params = array('id'=>$completedid); + $feedbackcompletedtmp = $DB->get_record('feedback_completedtmp', $params); - //fake saving for switchrole - $is_switchrole = feedback_check_is_switchrole(); - if($is_switchrole) { - $savereturn = 'saved'; - feedback_delete_completedtmp($completedid); - }else if($new_completed_id = feedback_save_tmp_values($feedbackcompletedtmp, false, $userid)) { + //fake saving for switchrole + $is_switchrole = feedback_check_is_switchrole(); + if ($is_switchrole) { + $savereturn = 'saved'; + feedback_delete_completedtmp($completedid); + } else { + $new_completed_id = feedback_save_tmp_values($feedbackcompletedtmp, false, $userid); + if ($new_completed_id) { $savereturn = 'saved'; feedback_send_email_anonym($cm, $feedback, $course, $userid); unset($SESSION->feedback->is_started); - }else { + } else { $savereturn = 'failed'; } } + } - if($allbreaks = feedback_get_all_break_positions($feedback->id)){ - if($gopage <= 0) { - $startposition = 0; - }else { - if(!isset($allbreaks[$gopage - 1])) { - $gopage = count($allbreaks); - } - $startposition = $allbreaks[$gopage - 1]; - } - $ispagebreak = true; - }else { + if ($allbreaks = feedback_get_all_break_positions($feedback->id)) { + if ($gopage <= 0) { $startposition = 0; - $newpage = 0; - $ispagebreak = false; + } else { + if (!isset($allbreaks[$gopage - 1])) { + $gopage = count($allbreaks); + } + $startposition = $allbreaks[$gopage - 1]; } + $ispagebreak = true; + } else { + $startposition = 0; + $newpage = 0; + $ispagebreak = false; + } - //get the feedbackitems after the last shown pagebreak - $feedbackitems = $DB->get_records_select('feedback_item', 'feedback = ? AND position > ?', array($feedback->id, $startposition), 'position'); + //get the feedbackitems after the last shown pagebreak + $select = 'feedback = ? AND position > ?'; + $params = array($feedback->id, $startposition); + $feedbackitems = $DB->get_records_select('feedback_item', $select, $params, 'position'); - //get the first pagebreak - if($pagebreaks = $DB->get_records('feedback_item', array('feedback'=>$feedback->id, 'typ'=>'pagebreak'), 'position')) { - $pagebreaks = array_values($pagebreaks); - $firstpagebreak = $pagebreaks[0]; - }else { - $firstpagebreak = false; + //get the first pagebreak + $params = array('feedback'=>$feedback->id, 'typ'=>'pagebreak'); + if ($pagebreaks = $DB->get_records('feedback_item', $params, 'position')) { + $pagebreaks = array_values($pagebreaks); + $firstpagebreak = $pagebreaks[0]; + } else { + $firstpagebreak = false; + } + $maxitemcount = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); + $feedbackcompletedtmp = feedback_get_current_completed($feedback->id, + true, + $courseid, + sesskey()); + + /// Print the main part of the page + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + $analysisurl = new moodle_url('/mod/feedback/analysis.php', array('id'=>$id)); + if ($courseid > 0) { + $analysisurl->param('courseid', $courseid); + } + echo $OUTPUT->heading(format_text($feedback->name)); + + if ( (intval($feedback->publish_stats) == 1) AND + ( has_capability('mod/feedback:viewanalysepage', $context)) AND + !( has_capability('mod/feedback:viewreports', $context)) ) { + echo $OUTPUT->box_start('mdl-align'); + echo ''; + echo get_string('completed_feedbacks', 'feedback'); + echo ''; + echo $OUTPUT->box_end(); + } + + if (isset($savereturn) && $savereturn == 'saved') { + if ($feedback->page_after_submit) { + echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); + echo format_text($feedback->page_after_submit, + $feedback->page_after_submitformat, + array('overflowdiv' => true)); + echo $OUTPUT->box_end(); + } else { + echo '

'; + echo get_string('entries_saved', 'feedback'); + echo '

'; + if ( intval($feedback->publish_stats) == 1) { + echo '

'; + echo get_string('completed_feedbacks', 'feedback').''; + echo '

'; + } } - $maxitemcount = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); - $feedbackcompletedtmp = feedback_get_current_completed($feedback->id, true, $courseid, sesskey()); - - /// Print the main part of the page - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - $analysisurl = new moodle_url('/mod/feedback/analysis.php', array('id'=>$id)); - if($courseid > 0) { - $analysisurl->param('courseid', $courseid); + if ($feedback->site_after_submit) { + $url = feedback_encode_target_url($feedback->site_after_submit); + } else { + if ($courseid) { + if ($courseid == SITEID) { + $url = $CFG->wwwroot; + } else { + $url = $CFG->wwwroot.'/course/view.php?id='.$courseid; + } + } else { + if ($course->id == SITEID) { + $url = $CFG->wwwroot; + } else { + $url = $CFG->wwwroot.'/course/view.php?id='.$course->id; + } + } } - echo $OUTPUT->heading(format_text($feedback->name)); - - if( (intval($feedback->publish_stats) == 1) AND - ( has_capability('mod/feedback:viewanalysepage', $context)) AND - !( has_capability('mod/feedback:viewreports', $context)) ) { - echo $OUTPUT->box_start('mdl-align'); - echo ''.get_string('completed_feedbacks', 'feedback').''; + echo $OUTPUT->continue_button($url); + } else { + if (isset($savereturn) && $savereturn == 'failed') { + echo $OUTPUT->box_start('mform error'); + echo get_string('saving_failed', 'feedback'); echo $OUTPUT->box_end(); } - if(isset($savereturn) && $savereturn == 'saved') { - if($feedback->page_after_submit) { - echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); - echo format_text($feedback->page_after_submit, $feedback->page_after_submitformat, array('overflowdiv'=>true)); - echo $OUTPUT->box_end(); - } else { - echo '

'.get_string('entries_saved','feedback').'

'; - if( intval($feedback->publish_stats) == 1) { - echo '

'; - echo get_string('completed_feedbacks', 'feedback').''; - echo '

'; - } + if (isset($savereturn) && $savereturn == 'missing') { + echo $OUTPUT->box_start('mform error'); + echo get_string('saving_failed_because_missing_or_false_values', 'feedback'); + echo $OUTPUT->box_end(); + } + + //print the items + if (is_array($feedbackitems)) { + echo $OUTPUT->box_start('feedback_form'); + echo '
'; + echo '
'; + echo ''; + $inputvalue = 'value="'.FEEDBACK_ANONYMOUS_YES.'"'; + echo ''; + echo ''; + //check, if there exists required-elements + $params = array('feedback'=>$feedback->id, 'required'=>1); + $countreq = $DB->count_records('feedback_item', $params); + if ($countreq > 0) { + echo ''; } - if($feedback->site_after_submit) { - echo $OUTPUT->continue_button(feedback_encode_target_url($feedback->site_after_submit)); - }else { - if($courseid) { - if($courseid == SITEID) { - echo $OUTPUT->continue_button($CFG->wwwroot); - }else { - echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$courseid); + echo $OUTPUT->box_start('feedback_items'); + + $startitem = null; + $select = 'feedback = ? AND hasvalue = 1 AND position < ?'; + $params = array($feedback->id, $startposition); + $itemnr = $DB->count_records_select('feedback_item', $select, $params); + $lastbreakposition = 0; + $align = right_to_left() ? 'right' : 'left'; + + foreach ($feedbackitems as $feedbackitem) { + if (!isset($startitem)) { + //avoid showing double pagebreaks + if ($feedbackitem->typ == 'pagebreak') { + continue; } - }else { - if($course->id == SITEID) { - echo $OUTPUT->continue_button($CFG->wwwroot); - } else { - echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); + $startitem = $feedbackitem; + } + + if ($feedbackitem->dependitem > 0) { + //chech if the conditions are ok + $fb_compare_value = feedback_compare_item_value($feedbackcompletedtmp->id, + $feedbackitem->dependitem, + $feedbackitem->dependvalue, + true); + if (!isset($feedbackcompletedtmp->id) OR !$fb_compare_value) { + $lastitem = $feedbackitem; + $lastbreakposition = $feedbackitem->position; + continue; } } - } - }else { - if(isset($savereturn) && $savereturn == 'failed') { - echo $OUTPUT->box_start('mform error'); - echo get_string('saving_failed','feedback'); - echo $OUTPUT->box_end(); - } - - if(isset($savereturn) && $savereturn == 'missing') { - echo $OUTPUT->box_start('mform error'); - echo get_string('saving_failed_because_missing_or_false_values','feedback'); - echo $OUTPUT->box_end(); - } - //print the items - if(is_array($feedbackitems)){ - // echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); - echo $OUTPUT->box_start('feedback_form'); - echo ''; - echo '
'; - echo ''; - echo ''; - echo ''; - //check, if there exists required-elements - $countreq = $DB->count_records('feedback_item', array('feedback'=>$feedback->id, 'required'=>1)); - if($countreq > 0) { - echo ''; + if ($feedbackitem->dependitem > 0) { + $dependstyle = ' feedback_complete_depend'; + } else { + $dependstyle = ''; } - echo $OUTPUT->box_start('feedback_items'); - $startitem = null; - $itemnr = $DB->count_records_select('feedback_item', 'feedback = ? AND hasvalue = 1 AND position < ?', array($feedback->id, $startposition)); - $lastbreakposition = 0; - $align = right_to_left() ? 'right' : 'left'; - - foreach($feedbackitems as $feedbackitem){ - if(!isset($startitem)) { - //avoid showing double pagebreaks - if($feedbackitem->typ == 'pagebreak') { - continue; - } - $startitem = $feedbackitem; + echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle); + $value = ''; + //get the value + $frmvaluename = $feedbackitem->typ.'_'.$feedbackitem->id; + if (isset($savereturn)) { + if (isset($formdata->{$frmvaluename})) { + $value = $formdata->{$frmvaluename}; + } else { + $value = null; } - - if($feedbackitem->dependitem > 0) { - //chech if the conditions are ok - if(!isset($feedbackcompletedtmp->id) OR !feedback_compare_item_value($feedbackcompletedtmp->id, $feedbackitem->dependitem, $feedbackitem->dependvalue, true)) { - $lastitem = $feedbackitem; - $lastbreakposition = $feedbackitem->position; - continue; - } + } else { + if (isset($feedbackcompletedtmp->id)) { + $value = feedback_get_item_value($feedbackcompletedtmp->id, + $feedbackitem->id, + sesskey()); } - - if($feedbackitem->dependitem > 0) { - $dependstyle = ' feedback_complete_depend'; - }else { - $dependstyle = ''; - } - - echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle); - $value = ''; - //get the value - $frmvaluename = $feedbackitem->typ . '_'. $feedbackitem->id; - if(isset($savereturn)) { - $value = isset($formdata->{$frmvaluename})?$formdata->{$frmvaluename}:NULL; - }else { - if(isset($feedbackcompletedtmp->id)) { - $value = feedback_get_item_value($feedbackcompletedtmp->id, $feedbackitem->id, sesskey()); - } - } - if($feedbackitem->hasvalue == 1 AND $feedback->autonumbering) { - $itemnr++; - echo $OUTPUT->box_start('feedback_item_number_'.$align); - echo $itemnr; - echo $OUTPUT->box_end(); - } - if($feedbackitem->typ != 'pagebreak') { - echo $OUTPUT->box_start('box generalbox boxalign_'.$align); - feedback_print_item_complete($feedbackitem, $value, $highlightrequired); - echo $OUTPUT->box_end(); - } + } + if ($feedbackitem->hasvalue == 1 AND $feedback->autonumbering) { + $itemnr++; + echo $OUTPUT->box_start('feedback_item_number_'.$align); + echo $itemnr; + echo $OUTPUT->box_end(); + } + if ($feedbackitem->typ != 'pagebreak') { + echo $OUTPUT->box_start('box generalbox boxalign_'.$align); + feedback_print_item_complete($feedbackitem, $value, $highlightrequired); echo $OUTPUT->box_end(); - - $lastbreakposition = $feedbackitem->position; //last item-pos (item or pagebreak) - if($feedbackitem->typ == 'pagebreak'){ - break; - }else { - $lastitem = $feedbackitem; - } } echo $OUTPUT->box_end(); - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if(isset($startitem)) { - echo ''; - echo ''; + + $lastbreakposition = $feedbackitem->position; //last item-pos (item or pagebreak) + if ($feedbackitem->typ == 'pagebreak') { + break; + } else { + $lastitem = $feedbackitem; } + } + echo $OUTPUT->box_end(); + echo ''; + echo ''; + echo ''; + if (isset($feedbackcompletedtmp->id)) { + $inputvalue = 'value="'.$feedbackcompletedtmp->id; + } else { + $inputvalue = 'value=""'; + } + echo ''; + echo ''; + echo ''; + if (isset($startitem)) { + echo ''; + echo ''; + } - if($ispagebreak AND $lastbreakposition > $firstpagebreak->position) { - echo ''; - } - if($lastbreakposition < $maxitemcount){ - echo ''; - } - if($lastbreakposition >= $maxitemcount) { //last page - echo ''; - } + if ($ispagebreak AND $lastbreakposition > $firstpagebreak->position) { + $inputvalue = 'value="'.get_string('previous_page', 'feedback').'"'; + echo ''; + } + if ($lastbreakposition < $maxitemcount) { + $inputvalue = 'value="'.get_string('next_page', 'feedback').'"'; + echo ''; + } + if ($lastbreakposition >= $maxitemcount) { //last page + $inputvalue = 'value="'.get_string('save_entries', 'feedback').'"'; + echo ''; + } - echo '
'; - echo ''; - echo $OUTPUT->box_end(); + echo '
'; + echo ''; + echo $OUTPUT->box_end(); - echo $OUTPUT->box_start('feedback_complete_cancel'); - if($courseid) { - echo '
'; - }else{ - if($course->id == SITEID) { - echo ''; - } else { - echo ''; - } + echo $OUTPUT->box_start('feedback_complete_cancel'); + if ($courseid) { + $action = 'action="'.$CFG->wwwroot.'/course/view.php?id='.$courseid.'"'; + } else { + if ($course->id == SITEID) { + $action = 'action="'.$CFG->wwwroot.'"'; + } else { + $action = 'action="'.$CFG->wwwroot.'/course/view.php?id='.$course->id.'"'; } - echo '
'; - echo ''; - echo ''; - echo ''; - echo '
'; - echo '
'; - echo $OUTPUT->box_end(); - $SESSION->feedback->is_started = true; } + echo '
'; + echo '
'; + echo ''; + echo ''; + echo ''; + echo '
'; + echo '
'; + echo $OUTPUT->box_end(); + $SESSION->feedback->is_started = true; } - }else { - echo $OUTPUT->box_start('generalbox boxaligncenter'); - echo '

'.get_string('this_feedback_is_already_submitted', 'feedback').'

'; - echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); - echo $OUTPUT->box_end(); } - /// Finish the page - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// +} else { + echo $OUTPUT->box_start('generalbox boxaligncenter'); + echo '

'; + echo get_string('this_feedback_is_already_submitted', 'feedback'); + echo '

'; + echo $OUTPUT->continue_button($CFG->wwwroot.'/course/view.php?id='.$course->id); + echo $OUTPUT->box_end(); +} +/// Finish the page +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// - echo $OUTPUT->footer(); +echo $OUTPUT->footer(); diff --git a/mod/feedback/db/access.php b/mod/feedback/db/access.php index 16986b5342c..9921b2ae5ed 100644 --- a/mod/feedback/db/access.php +++ b/mod/feedback/db/access.php @@ -1,4 +1,19 @@ . + // // Capability definitions for the feedback module. // diff --git a/mod/feedback/db/install.php b/mod/feedback/db/install.php index 696d3f33c8f..05f666537d8 100644 --- a/mod/feedback/db/install.php +++ b/mod/feedback/db/install.php @@ -1,9 +1,23 @@ . function xmldb_feedback_install() { global $DB; -/// Disable this module by default (because it's not technically part of Moodle 2.0) + /// Disable this module by default (because it's not technically part of Moodle 2.0) $DB->set_field('modules', 'visible', 0, array('name'=>'feedback')); } diff --git a/mod/feedback/db/install.xml b/mod/feedback/db/install.xml index 97d31b3f360..9aaba279aa4 100644 --- a/mod/feedback/db/install.xml +++ b/mod/feedback/db/install.xml @@ -168,4 +168,4 @@
- \ No newline at end of file + diff --git a/mod/feedback/db/log.php b/mod/feedback/db/log.php index 79f18912274..a27ce3e7847 100644 --- a/mod/feedback/db/log.php +++ b/mod/feedback/db/log.php @@ -1,5 +1,4 @@ . // This file keeps track of upgrades to // the feedback module @@ -31,15 +45,18 @@ function xmldb_feedback_upgrade($oldversion) { $table = new xmldb_table('feedback_completedtmp'); $field = new xmldb_field('id'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, true, null, null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, true, null, null); $table->addField($field); $field = new xmldb_field('feedback'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, false, '0', null); $table->addField($field); $field = new xmldb_field('userid'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, false, '0', null); $table->addField($field); $field = new xmldb_field('guestid'); @@ -47,7 +64,8 @@ function xmldb_feedback_upgrade($oldversion) { $table->addField($field); $field = new xmldb_field('timemodified'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, false, '0', null); $table->addField($field); $key = new xmldb_key('PRIMARY'); @@ -65,23 +83,28 @@ function xmldb_feedback_upgrade($oldversion) { $table = new xmldb_table('feedback_valuetmp'); $field = new xmldb_field('id'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, true, null, null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, true, null, null); $table->addField($field); $field = new xmldb_field('course_id'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, false, '0', null); $table->addField($field); $field = new xmldb_field('item'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, false, '0', null); $table->addField($field); $field = new xmldb_field('completed'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, false, '0', null); $table->addField($field); $field = new xmldb_field('tmp_completed'); - $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, + XMLDB_NOTNULL, false, '0', null); $table->addField($field); $field = new xmldb_field('value'); @@ -105,25 +128,29 @@ function xmldb_feedback_upgrade($oldversion) { /// Define field random_response to be added to feedback_completed $table = new xmldb_table('feedback_completed'); - $field = new xmldb_field('random_response', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field = new xmldb_field('random_response', XMLDB_TYPE_INTEGER, '10', + XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); /// Launch add field1 $dbman->add_field($table, $field); /// Define field anonymous_response to be added to feedback_completed $table = new xmldb_table('feedback_completed'); - $field = new xmldb_field('anonymous_response', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '1', null); + $field = new xmldb_field('anonymous_response', XMLDB_TYPE_INTEGER, '1', + XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '1', null); /// Launch add field2 $dbman->add_field($table, $field); /// Define field random_response to be added to feedback_completed $table = new xmldb_table('feedback_completedtmp'); - $field = new xmldb_field('random_response', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); + $field = new xmldb_field('random_response', XMLDB_TYPE_INTEGER, '10', + XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null); /// Launch add field1 $dbman->add_field($table, $field); /// Define field anonymous_response to be added to feedback_completed $table = new xmldb_table('feedback_completedtmp'); - $field = new xmldb_field('anonymous_response', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '1', null); + $field = new xmldb_field('anonymous_response', XMLDB_TYPE_INTEGER, '1', + XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '1', null); /// Launch add field2 $dbman->add_field($table, $field); @@ -135,7 +162,8 @@ function xmldb_feedback_upgrade($oldversion) { // public is a reserved word on Oracle $table = new xmldb_table('feedback_template'); - $field = new xmldb_field('ispublic', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '1', null); + $field = new xmldb_field('ispublic', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, + XMLDB_NOTNULL, false, '1', null); if (!$dbman->field_exists($table, $field)) { $dbman->add_field($table, $field); } @@ -144,7 +172,9 @@ function xmldb_feedback_upgrade($oldversion) { if ($oldversion < 2008042400) { //New version in version.php if ($all_nonanonymous_feedbacks = $DB->get_records('feedback', array('anonymous'=>2))) { - $update_sql = 'UPDATE {feedback_completed} SET anonymous_response = 2 WHERE feedback = '; + $update_sql = 'UPDATE {feedback_completed} + SET anonymous_response = 2 + WHERE feedback = '; foreach ($all_nonanonymous_feedbacks as $fb) { $DB->execute($update_sql.$fb->id); } @@ -153,20 +183,34 @@ function xmldb_feedback_upgrade($oldversion) { } if ($oldversion < 2008042401) { //New version in version.php - $concat_radio = $DB->sql_concat("'r>>>>>'",'presentation'); - $concat_check = $DB->sql_concat("'c>>>>>'",'presentation'); - $concat_dropdown = $DB->sql_concat("'d>>>>>'",'presentation'); + $concat_radio = $DB->sql_concat("'r>>>>>'", 'presentation'); + $concat_check = $DB->sql_concat("'c>>>>>'", 'presentation'); + $concat_dropdown = $DB->sql_concat("'d>>>>>'", 'presentation'); - $update_sql1 = "UPDATE {feedback_item} SET presentation = ".$concat_radio." WHERE typ IN('radio','radiorated')"; - $update_sql2 = "UPDATE {feedback_item} SET presentation = ".$concat_dropdown." WHERE typ IN('dropdown','dropdownrated')"; - $update_sql3 = "UPDATE {feedback_item} SET presentation = ".$concat_check." WHERE typ = 'check'"; + $update_sql1 = "UPDATE {feedback_item} + SET presentation = ".$concat_radio." + WHERE typ IN('radio','radiorated')"; + + $update_sql2 = "UPDATE {feedback_item} + SET presentation = ".$concat_dropdown." + WHERE typ IN('dropdown','dropdownrated')"; + + $update_sql3 = "UPDATE {feedback_item} + SET presentation = ".$concat_check." + WHERE typ = 'check'"; $DB->execute($update_sql1); $DB->execute($update_sql2); $DB->execute($update_sql3); - $update_sql1 = "UPDATE {feedback_item} SET typ = 'multichoice' WHERE typ IN('radio','check','dropdown')"; - $update_sql2 = "UPDATE {feedback_item} SET typ = 'multichoicerated' WHERE typ IN('radiorated','dropdownrated')"; + $update_sql1 = "UPDATE {feedback_item} + SET typ = 'multichoice' + WHERE typ IN('radio','check','dropdown')"; + + $update_sql2 = "UPDATE {feedback_item} + SET typ = 'multichoicerated' + WHERE typ IN('radiorated','dropdownrated')"; + $DB->execute($update_sql1); $DB->execute($update_sql2); @@ -176,7 +220,8 @@ function xmldb_feedback_upgrade($oldversion) { if ($oldversion < 2008042900) { /// Define field autonumbering to be added to feedback $table = new xmldb_table('feedback'); - $field = new xmldb_field('autonumbering', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '1', 'multiple_submit'); + $field = new xmldb_field('autonumbering', XMLDB_TYPE_INTEGER, '1', + XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '1', 'multiple_submit'); /// Launch add field2 $dbman->add_field($table, $field); @@ -186,7 +231,8 @@ function xmldb_feedback_upgrade($oldversion) { if ($oldversion < 2008050104) { /// Define field site_after_submit to be added to feedback $table = new xmldb_table('feedback'); - $field = new xmldb_field('site_after_submit', XMLDB_TYPE_CHAR, '255', null, null, false, '', 'autonumbering'); + $field = new xmldb_field('site_after_submit', XMLDB_TYPE_CHAR, '255', + null, null, false, '', 'autonumbering'); /// Launch add field2 $dbman->add_field($table, $field); @@ -203,7 +249,11 @@ function xmldb_feedback_upgrade($oldversion) { } if ($oldversion < 2008073002) { - $update_sql = "UPDATE {feedback_item} SET presentation = '-|-' WHERE " . $DB->sql_compare_text('presentation') . " = '0|0' AND typ = 'numeric'"; + $update_sql = "UPDATE {feedback_item} + SET presentation = '-|-' + WHERE " . $DB->sql_compare_text('presentation') . " = '0|0' AND + typ = 'numeric'"; + $DB->execute($update_sql); upgrade_mod_savepoint(true, 2008073002, 'feedback'); @@ -221,34 +271,37 @@ function xmldb_feedback_upgrade($oldversion) { if ($oldversion < 2009042000) { - /// Rename field summary on table feedback to intro + /// Rename field summary on table feedback to intro $table = new xmldb_table('feedback'); - $field = new xmldb_field('summary', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, 'name'); + $field = new xmldb_field('summary', XMLDB_TYPE_TEXT, 'small', null, + XMLDB_NOTNULL, null, null, 'name'); - /// Launch rename field summary + /// Launch rename field summary $dbman->rename_field($table, $field, 'intro'); - /// feedback savepoint reached + /// feedback savepoint reached upgrade_mod_savepoint(true, 2009042000, 'feedback'); } if ($oldversion < 2009042001) { - /// Define field introformat to be added to feedback + /// Define field introformat to be added to feedback $table = new xmldb_table('feedback'); - $field = new xmldb_field('introformat', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'intro'); + $field = new xmldb_field('introformat', XMLDB_TYPE_INTEGER, '4', + XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'intro'); - /// Launch add field introformat + /// Launch add field introformat $dbman->add_field($table, $field); - /// feedback savepoint reached + /// feedback savepoint reached upgrade_mod_savepoint(true, 2009042001, 'feedback'); } if ($oldversion < 2009112000) { /// Define field page_after_submitformat to be added to feedback $table = new xmldb_table('feedback'); - $field = new xmldb_field('page_after_submitformat', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'page_after_submit'); + $field = new xmldb_field('page_after_submitformat', XMLDB_TYPE_INTEGER, '2', + XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'page_after_submit'); if (!$dbman->field_exists($table, $field)) { // Launch add field page_after_submitformat @@ -262,7 +315,8 @@ function xmldb_feedback_upgrade($oldversion) { if ($oldversion < 2010051101) { /// Define field options to be added to feedback_item $table = new xmldb_table('feedback_item'); - $field = new xmldb_field('options', XMLDB_TYPE_CHAR, '255', null, null, false, '', 'required'); + $field = new xmldb_field('options', XMLDB_TYPE_CHAR, '255', + null, null, false, '', 'required'); /// Launch add field $dbman->add_field($table, $field); @@ -272,7 +326,8 @@ function xmldb_feedback_upgrade($oldversion) { if ($oldversion < 2010051600) { /// Define field options to be added to feedback_item $table = new xmldb_table('feedback_item'); - $field = new xmldb_field('dependitem', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'required'); + $field = new xmldb_field('dependitem', XMLDB_TYPE_INTEGER, '10', + XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'required'); /// Launch add field $dbman->add_field($table, $field); @@ -282,7 +337,8 @@ function xmldb_feedback_upgrade($oldversion) { if ($oldversion < 2010051601) { /// Define field options to be added to feedback_item $table = new xmldb_table('feedback_item'); - $field = new xmldb_field('dependvalue', XMLDB_TYPE_CHAR, '255', null, null, false, '', 'dependitem'); + $field = new xmldb_field('dependvalue', XMLDB_TYPE_CHAR, '255', + null, null, false, '', 'dependitem'); /// Launch add field $dbman->add_field($table, $field); @@ -293,7 +349,8 @@ function xmldb_feedback_upgrade($oldversion) { // Define field completionsubmit to be added to feedback $table = new xmldb_table('feedback'); - $field = new xmldb_field('completionsubmit', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0', 'timemodified'); + $field = new xmldb_field('completionsubmit', XMLDB_TYPE_INTEGER, '1', + null, XMLDB_NOTNULL, null, '0', 'timemodified'); // Conditionally launch add field completionsubmit if (!$dbman->field_exists($table, $field)) { @@ -303,7 +360,6 @@ function xmldb_feedback_upgrade($oldversion) { // feedback savepoint reached upgrade_mod_savepoint(true, 2010102300, 'feedback'); } - // Moodle v2.1.0 release upgrade line // Put any upgrade step following this diff --git a/mod/feedback/delete_completed.php b/mod/feedback/delete_completed.php index cbc3a027a16..a571b2a38ea 100644 --- a/mod/feedback/delete_completed.php +++ b/mod/feedback/delete_completed.php @@ -1,97 +1,116 @@ . - /** - * prints the form to confirm the deleting of a completed - * - * @author Andreas Grabs - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License - * @package feedback - */ +/** + * prints the form to confirm the deleting of a completed + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ - require_once("../../config.php"); - require_once("lib.php"); - require_once('delete_completed_form.php'); +require_once("../../config.php"); +require_once("lib.php"); +require_once('delete_completed_form.php'); - $id = required_param('id', PARAM_INT); - $completedid = optional_param('completedid', 0, PARAM_INT); - $return = optional_param('return', 'entries', PARAM_ALPHA); +$id = required_param('id', PARAM_INT); +$completedid = optional_param('completedid', 0, PARAM_INT); +$return = optional_param('return', 'entries', PARAM_ALPHA); - if($completedid == 0){ - print_error('no_complete_to_delete', 'feedback', 'show_entries.php?id='.$id.'&do_show=showentries'); +if ($completedid == 0) { + print_error('no_complete_to_delete', + 'feedback', + 'show_entries.php?id='.$id.'&do_show=showentries'); +} + +$PAGE->set_url('/mod/feedback/delete_completed.php', array('id'=>$id, 'completed'=>$completedid)); + +if (! $cm = get_coursemodule_from_id('feedback', $id)) { + print_error('invalidcoursemodule'); +} + +if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { + print_error('coursemisconf'); +} + +if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { + print_error('invalidcoursemodule'); +} + +if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { + print_error('badcontext'); +} + +require_login($course->id, true, $cm); + +require_capability('mod/feedback:deletesubmissions', $context); + +$mform = new mod_feedback_delete_completed_form(); +$newformdata = array('id'=>$id, + 'completedid'=>$completedid, + 'confirmdelete'=>'1', + 'do_show'=>'edit', + 'return'=>$return); +$mform->set_data($newformdata); +$formdata = $mform->get_data(); + +if ($mform->is_cancelled()) { + if ($return == 'entriesanonym') { + redirect('show_entries_anonym.php?id='.$id); + } else { + redirect('show_entries.php?id='.$id.'&do_show=showentries'); } +} - $PAGE->set_url('/mod/feedback/delete_completed.php', array('id'=>$id, 'completed'=>$completedid)); +if (isset($formdata->confirmdelete) AND $formdata->confirmdelete == 1) { + if ($completed = $DB->get_record('feedback_completed', array('id'=>$completedid))) { + feedback_delete_completed($completedid); + add_to_log($course->id, + 'feedback', + 'delete', + 'view.php?id='.$cm->id, + $feedback->id, + $cm->id); - if (! $cm = get_coursemodule_from_id('feedback', $id)) { - print_error('invalidcoursemodule'); - } - - if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { - print_error('coursemisconf'); - } - - if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { - print_error('invalidcoursemodule'); - } - - if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { - print_error('badcontext'); - } - - require_login($course->id, true, $cm); - - require_capability('mod/feedback:deletesubmissions', $context); - - $mform = new mod_feedback_delete_completed_form(); - $newformdata = array('id'=>$id, - 'completedid'=>$completedid, - 'confirmdelete'=>'1', - 'do_show'=>'edit', - 'return'=>$return); - $mform->set_data($newformdata); - $formdata = $mform->get_data(); - - if ($mform->is_cancelled()) { - if($return == 'entriesanonym') { + if ($return == 'entriesanonym') { redirect('show_entries_anonym.php?id='.$id); - }else { + } else { redirect('show_entries.php?id='.$id.'&do_show=showentries'); } } +} - if(isset($formdata->confirmdelete) AND $formdata->confirmdelete == 1){ - if($completed = $DB->get_record('feedback_completed', array('id'=>$completedid))) { - feedback_delete_completed($completedid); - add_to_log($course->id, 'feedback', 'delete', 'view.php?id='.$cm->id, $feedback->id,$cm->id); - - if($return == 'entriesanonym') { - redirect('show_entries_anonym.php?id='.$id); - }else { - redirect('show_entries.php?id='.$id.'&do_show=showentries'); - } - } - } +/// Print the page header +$strfeedbacks = get_string("modulenameplural", "feedback"); +$strfeedback = get_string("modulename", "feedback"); - /// Print the page header - $strfeedbacks = get_string("modulenameplural", "feedback"); - $strfeedback = get_string("modulename", "feedback"); - - $PAGE->navbar->add(get_string('delete_entry', 'feedback')); - $PAGE->set_heading(format_string($course->fullname)); - $PAGE->set_title(format_string($feedback->name)); - echo $OUTPUT->header(); +$PAGE->navbar->add(get_string('delete_entry', 'feedback')); +$PAGE->set_heading(format_string($course->fullname)); +$PAGE->set_title(format_string($feedback->name)); +echo $OUTPUT->header(); - /// Print the main part of the page - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - echo $OUTPUT->heading(format_text($feedback->name)); - echo $OUTPUT->box_start('generalbox errorboxcontent boxaligncenter boxwidthnormal'); - echo $OUTPUT->heading(get_string('confirmdeleteentry', 'feedback')); - $mform->display(); - echo $OUTPUT->box_end(); - - - echo $OUTPUT->footer(); +/// Print the main part of the page +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +echo $OUTPUT->heading(format_text($feedback->name)); +echo $OUTPUT->box_start('generalbox errorboxcontent boxaligncenter boxwidthnormal'); +echo $OUTPUT->heading(get_string('confirmdeleteentry', 'feedback')); +$mform->display(); +echo $OUTPUT->box_end(); +echo $OUTPUT->footer(); diff --git a/mod/feedback/delete_completed_form.php b/mod/feedback/delete_completed_form.php index f53197ecfbd..a0f677dce99 100644 --- a/mod/feedback/delete_completed_form.php +++ b/mod/feedback/delete_completed_form.php @@ -1,25 +1,38 @@ . +/** + * prints the form to confirm delete a completed + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ + +//It must be included from a Moodle page if (!defined('MOODLE_INTERNAL')) { - die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page + die('Direct access to this script is forbidden.'); } -require_once $CFG->libdir.'/formslib.php'; +require_once($CFG->libdir.'/formslib.php'); class mod_feedback_delete_completed_form extends moodleform { - function definition() { + public function definition() { $mform =& $this->_form; - //headline - //$mform->addElement('header', 'general', ''); - // hidden elements $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); diff --git a/mod/feedback/delete_item.php b/mod/feedback/delete_item.php index 3cbf2009981..cbd36bfe30e 100644 --- a/mod/feedback/delete_item.php +++ b/mod/feedback/delete_item.php @@ -1,78 +1,93 @@ . + /** -* deletes an item of the feedback -* -* @author Andreas Grabs -* @license http://www.gnu.org/copyleft/gpl.html GNU Public License -* @package feedback -*/ + * deletes an item of the feedback + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ - require_once("../../config.php"); - require_once("lib.php"); - require_once('delete_item_form.php'); +require_once("../../config.php"); +require_once("lib.php"); +require_once('delete_item_form.php'); - $id = required_param('id', PARAM_INT); - $deleteitem = required_param('deleteitem', PARAM_INT); +$id = required_param('id', PARAM_INT); +$deleteitem = required_param('deleteitem', PARAM_INT); - $PAGE->set_url('/mod/feedback/delete_item.php', array('id'=>$id, 'deleteitem'=>$deleteitem)); +$PAGE->set_url('/mod/feedback/delete_item.php', array('id'=>$id, 'deleteitem'=>$deleteitem)); - if (! $cm = get_coursemodule_from_id('feedback', $id)) { - print_error('invalidcoursemodule'); - } +if (! $cm = get_coursemodule_from_id('feedback', $id)) { + print_error('invalidcoursemodule'); +} - if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { - print_error('coursemisconf'); - } +if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { + print_error('coursemisconf'); +} - if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { - print_error('invalidcoursemodule'); - } - - if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { - print_error('badcontext'); - } +if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { + print_error('invalidcoursemodule'); +} - require_login($course->id, true, $cm); +if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { + print_error('badcontext'); +} - require_capability('mod/feedback:edititems', $context); +require_login($course->id, true, $cm); - $mform = new mod_feedback_delete_item_form(); - $newformdata = array('id'=>$id, - 'deleteitem'=>$deleteitem, - 'confirmdelete'=>'1'); - $mform->set_data($newformdata); - $formdata = $mform->get_data(); +require_capability('mod/feedback:edititems', $context); - if ($mform->is_cancelled()) { - redirect('edit.php?id='.$id); - } +$mform = new mod_feedback_delete_item_form(); +$newformdata = array('id'=>$id, + 'deleteitem'=>$deleteitem, + 'confirmdelete'=>'1'); +$mform->set_data($newformdata); +$formdata = $mform->get_data(); - if(isset($formdata->confirmdelete) AND $formdata->confirmdelete == 1){ - feedback_delete_item($formdata->deleteitem); - redirect('edit.php?id=' . $id); - } +if ($mform->is_cancelled()) { + redirect('edit.php?id='.$id); +} + +if (isset($formdata->confirmdelete) AND $formdata->confirmdelete == 1) { + feedback_delete_item($formdata->deleteitem); + redirect('edit.php?id=' . $id); +} - /// Print the page header - $strfeedbacks = get_string("modulenameplural", "feedback"); - $strfeedback = get_string("modulename", "feedback"); - - $PAGE->navbar->add(get_string('delete_item', 'feedback')); - $PAGE->set_heading(format_string($course->fullname)); - $PAGE->set_title(format_string($feedback->name)); - echo $OUTPUT->header(); +/// Print the page header +$strfeedbacks = get_string("modulenameplural", "feedback"); +$strfeedback = get_string("modulename", "feedback"); - /// Print the main part of the page - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - echo $OUTPUT->heading(format_text($feedback->name)); - echo $OUTPUT->box_start('generalbox errorboxcontent boxaligncenter boxwidthnormal'); - echo $OUTPUT->heading(get_string('confirmdeleteitem', 'feedback')); - print_string('relateditemsdeleted','feedback'); - $mform->display(); - echo $OUTPUT->box_end(); +$PAGE->navbar->add(get_string('delete_item', 'feedback')); +$PAGE->set_heading(format_string($course->fullname)); +$PAGE->set_title(format_string($feedback->name)); +echo $OUTPUT->header(); - echo $OUTPUT->footer(); +/// Print the main part of the page +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +echo $OUTPUT->heading(format_text($feedback->name)); +echo $OUTPUT->box_start('generalbox errorboxcontent boxaligncenter boxwidthnormal'); +echo $OUTPUT->heading(get_string('confirmdeleteitem', 'feedback')); +print_string('relateditemsdeleted', 'feedback'); +$mform->display(); +echo $OUTPUT->box_end(); + +echo $OUTPUT->footer(); diff --git a/mod/feedback/delete_item_form.php b/mod/feedback/delete_item_form.php index 0d0b0d4a3ff..f7b43d71091 100644 --- a/mod/feedback/delete_item_form.php +++ b/mod/feedback/delete_item_form.php @@ -1,25 +1,38 @@ . +/** + * prints the form to confirm delete a completed + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ + +//It must be included from a Moodle page if (!defined('MOODLE_INTERNAL')) { - die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page + die('Direct access to this script is forbidden.'); } -require_once $CFG->libdir.'/formslib.php'; +require_once($CFG->libdir.'/formslib.php'); class mod_feedback_delete_item_form extends moodleform { - function definition() { + public function definition() { $mform =& $this->_form; - //headline - //$mform->addElement('header', 'general', ''); - // hidden elements $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); diff --git a/mod/feedback/delete_template.php b/mod/feedback/delete_template.php index f108a276c15..2d36e82a1af 100644 --- a/mod/feedback/delete_template.php +++ b/mod/feedback/delete_template.php @@ -1,26 +1,38 @@ . /** -* deletes a template -* -* @author Andreas Grabs -* @license http://www.gnu.org/copyleft/gpl.html GNU Public License -* @package feedback -*/ + * deletes a template + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ require_once("../../config.php"); require_once("lib.php"); require_once('delete_template_form.php'); require_once($CFG->libdir.'/tablelib.php'); -// $SESSION->feedback->current_tab = 'templates'; $current_tab = 'templates'; $id = required_param('id', PARAM_INT); $canceldelete = optional_param('canceldelete', false, PARAM_INT); $shoulddelete = optional_param('shoulddelete', false, PARAM_INT); $deletetempl = optional_param('deletetempl', false, PARAM_INT); -// $formdata = data_submitted(); $url = new moodle_url('/mod/feedback/delete_template.php', array('id'=>$id)); if ($canceldelete !== false) { @@ -34,11 +46,11 @@ if ($deletetempl !== false) { } $PAGE->set_url($url); -if(($formdata = data_submitted()) AND !confirm_sesskey()) { +if (($formdata = data_submitted()) AND !confirm_sesskey()) { print_error('invalidsesskey'); } -if($canceldelete == 1){ +if ($canceldelete == 1) { $editurl = new moodle_url('/mod/feedback/edit.php', array('id'=>$id, 'do_show'=>'templates')); redirect($editurl->out(false)); } @@ -77,12 +89,12 @@ if ($mform->is_cancelled()) { redirect($deleteurl->out(false)); } -if(isset($formdata->confirmdelete) AND $formdata->confirmdelete == 1){ - if(!$template = $DB->get_record("feedback_template", array("id"=>$deletetempl))) { +if (isset($formdata->confirmdelete) AND $formdata->confirmdelete == 1) { + if (!$template = $DB->get_record("feedback_template", array("id"=>$deletetempl))) { print_error('error'); } - if($template->ispublic) { + if ($template->ispublic) { $systemcontext = get_system_context(); require_capability('mod/feedback:createpublictemplate', $systemcontext); require_capability('mod/feedback:deletetemplate', $systemcontext); @@ -95,32 +107,33 @@ if(isset($formdata->confirmdelete) AND $formdata->confirmdelete == 1){ /// Print the page header $strfeedbacks = get_string("modulenameplural", "feedback"); $strfeedback = get_string("modulename", "feedback"); -$strdeletefeedback = get_string('delete_template','feedback'); +$strdeletefeedback = get_string('delete_template', 'feedback'); $PAGE->set_heading(format_string($course->fullname)); $PAGE->set_title(format_string($feedback->name)); echo $OUTPUT->header(); /// print the tabs -include('tabs.php'); +require('tabs.php'); /// Print the main part of the page /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// echo $OUTPUT->heading($strdeletefeedback); -if($shoulddelete == 1) { +if ($shoulddelete == 1) { echo $OUTPUT->box_start('generalbox errorboxcontent boxaligncenter boxwidthnormal'); echo $OUTPUT->heading(get_string('confirmdeletetemplate', 'feedback')); $mform->display(); echo $OUTPUT->box_end(); -}else { +} else { //first we get the own templates $templates = feedback_get_template_list($course, 'own'); - if(!is_array($templates)) { - echo $OUTPUT->box(get_string('no_templates_available_yet', 'feedback'), 'generalbox boxaligncenter'); - }else { + if (!is_array($templates)) { + echo $OUTPUT->box(get_string('no_templates_available_yet', 'feedback'), + 'generalbox boxaligncenter'); + } else { echo $OUTPUT->heading(get_string('course'), 3); echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthnormal'); $tablecolumns = array('template', 'action'); @@ -137,7 +150,7 @@ if($shoulddelete == 1) { $tablecourse->set_attribute('class', 'generaltable'); $tablecourse->setup(); - foreach($templates as $template) { + foreach ($templates as $template) { $data = array(); $data[] = $template->name; $url = new moodle_url($deleteurl, array( @@ -154,12 +167,13 @@ if($shoulddelete == 1) { } //now we get the public templates if it is permitted $systemcontext = get_system_context(); - if(has_capability('mod/feedback:createpublictemplate', $systemcontext) AND + if (has_capability('mod/feedback:createpublictemplate', $systemcontext) AND has_capability('mod/feedback:deletetemplate', $systemcontext)) { $templates = feedback_get_template_list($course, 'public'); - if(!is_array($templates)) { - echo $OUTPUT->box(get_string('no_templates_available_yet', 'feedback'), 'generalbox boxaligncenter'); - }else { + if (!is_array($templates)) { + echo $OUTPUT->box(get_string('no_templates_available_yet', 'feedback'), + 'generalbox boxaligncenter'); + } else { echo $OUTPUT->heading(get_string('public', 'feedback'), 3); echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthnormal'); $tablecolumns = array('template', 'action'); @@ -176,9 +190,7 @@ if($shoulddelete == 1) { $tablepublic->set_attribute('class', 'generaltable'); $tablepublic->setup(); - // echo $OUTPUT->heading(get_string('public', 'feedback'), 3); - // echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); - foreach($templates as $template) { + foreach ($templates as $template) { $data = array(); $data[] = $template->name; $url = new moodle_url($deleteurl, array( diff --git a/mod/feedback/delete_template_form.php b/mod/feedback/delete_template_form.php index fcb07d7a1c4..e0613170958 100644 --- a/mod/feedback/delete_template_form.php +++ b/mod/feedback/delete_template_form.php @@ -1,25 +1,38 @@ . +/** + * prints the form to confirm delete a completed + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ + +//It must be included from a Moodle page if (!defined('MOODLE_INTERNAL')) { - die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page + die('Direct access to this script is forbidden.'); } -require_once $CFG->libdir.'/formslib.php'; +require_once($CFG->libdir.'/formslib.php'); class mod_feedback_delete_template_form extends moodleform { - function definition() { + public function definition() { $mform =& $this->_form; - //headline - //$mform->addElement('header', 'general', ''); - // hidden elements $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); @@ -34,4 +47,3 @@ class mod_feedback_delete_template_form extends moodleform { } } - diff --git a/mod/feedback/edit.php b/mod/feedback/edit.php index 98632b12c6e..3eeb7a4e235 100644 --- a/mod/feedback/edit.php +++ b/mod/feedback/edit.php @@ -1,12 +1,26 @@ . /** -* prints the form to edit the feedback items such moving, deleting and so on -* -* @author Andreas Grabs -* @license http://www.gnu.org/copyleft/gpl.html GNU Public License -* @package feedback -*/ + * prints the form to edit the feedback items such moving, deleting and so on + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ require_once("../../config.php"); require_once("lib.php"); @@ -16,7 +30,7 @@ feedback_init_feedback_session(); $id = required_param('id', PARAM_INT); -if(($formdata = data_submitted()) AND !confirm_sesskey()) { +if (($formdata = data_submitted()) AND !confirm_sesskey()) { print_error('invalidsesskey'); } @@ -27,7 +41,6 @@ $moveitem = optional_param('moveitem', false, PARAM_INT); $movehere = optional_param('movehere', false, PARAM_INT); $switchitemrequired = optional_param('switchitemrequired', false, PARAM_INT); -// $SESSION->feedback->current_tab = $do_show; $current_tab = $do_show; $url = new moodle_url('/mod/feedback/edit.php', array('id'=>$id, 'do_show'=>$do_show)); @@ -53,22 +66,22 @@ require_login($course->id, true, $cm); require_capability('mod/feedback:edititems', $context); //move up/down items -if($moveupitem){ +if ($moveupitem) { $item = $DB->get_record('feedback_item', array('id'=>$moveupitem)); feedback_moveup_item($item); } -if($movedownitem){ +if ($movedownitem) { $item = $DB->get_record('feedback_item', array('id'=>$movedownitem)); feedback_movedown_item($item); } //moving of items -if($movehere && isset($SESSION->feedback->moving->movingitem)){ +if ($movehere && isset($SESSION->feedback->moving->movingitem)) { $item = $DB->get_record('feedback_item', array('id'=>$SESSION->feedback->moving->movingitem)); feedback_move_item($item, intval($movehere)); $moveitem = false; } -if($moveitem){ +if ($moveitem) { $item = $DB->get_record('feedback_item', array('id'=>$moveitem)); $SESSION->feedback->moving->shouldmoving = 1; $SESSION->feedback->moving->movingitem = $moveitem; @@ -76,7 +89,7 @@ if($moveitem){ unset($SESSION->feedback->moving); } -if($switchitemrequired) { +if ($switchitemrequired) { $item = $DB->get_record('feedback_item', array('id'=>$switchitemrequired)); @feedback_switch_item_required($item); redirect($url->out(false)); @@ -89,24 +102,26 @@ $create_template_form->set_feedbackdata(array('context'=>$context, 'course'=>$co $create_template_form->set_form_elements(); $create_template_form->set_data(array('id'=>$id, 'do_show'=>'templates')); $create_template_formdata = $create_template_form->get_data(); -if(isset($create_template_formdata->savetemplate) && $create_template_formdata->savetemplate == 1) { +if (isset($create_template_formdata->savetemplate) && $create_template_formdata->savetemplate == 1) { //check the capabilities to create templates - if(!has_capability('mod/feedback:createprivatetemplate', $context) AND + if (!has_capability('mod/feedback:createprivatetemplate', $context) AND !has_capability('mod/feedback:createpublictemplate', $context)) { print_error('cannotsavetempl', 'feedback'); } - if(trim($create_template_formdata->templatename) == '') { + if (trim($create_template_formdata->templatename) == '') { $savereturn = 'notsaved_name'; - }else { + } else { //if the feedback is located on the frontpage then templates can be public - if(has_capability('mod/feedback:createpublictemplate', get_system_context())) { + if (has_capability('mod/feedback:createpublictemplate', get_system_context())) { $create_template_formdata->ispublic = isset($create_template_formdata->ispublic) ? 1 : 0; - }else { + } else { $create_template_formdata->ispublic = 0; } - if(!feedback_save_as_template($feedback, $create_template_formdata->templatename, $create_template_formdata->ispublic)) { + if (!feedback_save_as_template($feedback, + $create_template_formdata->templatename, + $create_template_formdata->ispublic)) { $savereturn = 'failed'; - }else { + } else { $savereturn = 'saved'; } } @@ -115,12 +130,12 @@ if(isset($create_template_formdata->savetemplate) && $create_template_formdata-> //get the feedbackitems $lastposition = 0; $feedbackitems = $DB->get_records('feedback_item', array('feedback'=>$feedback->id), 'position'); -if(is_array($feedbackitems)){ +if (is_array($feedbackitems)) { $feedbackitems = array_values($feedbackitems); - if(count($feedbackitems) > 0) { + if (count($feedbackitems) > 0) { $lastitem = $feedbackitems[count($feedbackitems)-1]; $lastposition = $lastitem->position; - }else { + } else { $lastposition = 0; } } @@ -137,9 +152,6 @@ $use_template_form->set_feedbackdata(array('course' => $course)); $use_template_form->set_form_elements(); $use_template_form->set_data(array('id'=>$id)); -//the create_template-form -//$create_template_form = new feedback_edit_create_template_form('use_templ.php'); - /// Print the page header $strfeedbacks = get_string("modulenameplural", "feedback"); $strfeedback = get_string("modulename", "feedback"); @@ -150,7 +162,7 @@ $PAGE->set_title(format_string($feedback->name)); echo $OUTPUT->header(); /// print the tabs -include('tabs.php'); +require('tabs.php'); /// Print the main part of the page /////////////////////////////////////////////////////////////////////////// @@ -160,38 +172,45 @@ include('tabs.php'); $savereturn=isset($savereturn)?$savereturn:''; //print the messages -if($savereturn == 'notsaved_name') { - echo '

'.get_string('name_required','feedback').'

'; +if ($savereturn == 'notsaved_name') { + echo '

'. + get_string('name_required', 'feedback'). + '

'; } -if($savereturn == 'saved') { - echo '

'.get_string('template_saved','feedback').'

'; +if ($savereturn == 'saved') { + echo '

'. + get_string('template_saved', 'feedback'). + '

'; } -if($savereturn == 'failed') { - echo '

'.get_string('saving_failed','feedback').'

'; +if ($savereturn == 'failed') { + echo '

'. + get_string('saving_failed', 'feedback'). + '

'; } -feedback_print_errors(); - /////////////////////////////////////////////////////////////////////////// ///print the template-section /////////////////////////////////////////////////////////////////////////// -if($do_show == 'templates') { +if ($do_show == 'templates') { echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); $use_template_form->display(); - if(has_capability('mod/feedback:createprivatetemplate', $context) OR + if (has_capability('mod/feedback:createprivatetemplate', $context) OR has_capability('mod/feedback:createpublictemplate', $context)) { - $deleteurl = new moodle_url('/mod/feedback/delete_template.php', array('id'=>$id)); + $deleteurl = new moodle_url('/mod/feedback/delete_template.php', array('id' => $id)); $create_template_form->display(); - echo '

'.get_string('delete_templates', 'feedback').'

'; - }else { + echo '

'. + get_string('delete_templates', 'feedback'). + '

'; + } else { echo ' '; } - if(has_capability('mod/feedback:edititems', $context)) { - $exporturl = new moodle_url('/mod/feedback/export.php', array('action'=>'exportfile', 'id'=>$id)); + if (has_capability('mod/feedback:edititems', $context)) { + $urlparams = array('action'=>'exportfile', 'id'=>$id); + $exporturl = new moodle_url('/mod/feedback/export.php', $urlparams); $importurl = new moodle_url('/mod/feedback/import.php', array('id'=>$id)); echo '

'.get_string('export_questions', 'feedback').'/ @@ -203,11 +222,11 @@ if($do_show == 'templates') { /////////////////////////////////////////////////////////////////////////// ///print the Item-Edit-section /////////////////////////////////////////////////////////////////////////// -if($do_show == 'edit') { +if ($do_show == 'edit') { $add_item_form->display(); - if(is_array($feedbackitems)){ + if (is_array($feedbackitems)) { $itemnr = 0; $align = right_to_left() ? 'right' : 'left'; @@ -215,156 +234,180 @@ if($do_show == 'edit') { $helpbutton = $OUTPUT->help_icon('preview', 'feedback'); echo $OUTPUT->heading($helpbutton . get_string('preview', 'feedback')); - if(isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { - echo $OUTPUT->heading(''.get_string('cancel_moving', 'feedback').''); + if (isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { + $anker = ''; + $anker .= get_string('cancel_moving', 'feedback'); + $anker .= ''; + echo $OUTPUT->heading($anker); } - // echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); //check, if there exists required-elements - $countreq = $DB->count_records('feedback_item', array('feedback'=>$feedback->id, 'required'=> 1)); - if($countreq > 0) { - // echo '(*)' . get_string('items_are_required', 'feedback') . ''; - echo ''; + $params = array('feedback' => $feedback->id, 'required' => 1); + $countreq = $DB->count_records('feedback_item', $params); + if ($countreq > 0) { + echo ''; } //use list instead a table echo $OUTPUT->box_start('feedback_items'); - if(isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { - $moveposition = 1; - $movehereurl = new moodle_url($url, array('movehere'=>$moveposition)); - echo $OUTPUT->box_start('feedback_item_box_'.$align.' clipboard'); //only shown if shouldmoving = 1 - $buttonlink = $movehereurl->out(); - echo ' - '.get_string('move_here','feedback').' - '; - echo $OUTPUT->box_end(); - } - //print the inserted items - $itempos = 0; - foreach($feedbackitems as $feedbackitem){ - $itempos++; - if(isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->movingitem == $feedbackitem->id){ //hiding the item to move + if (isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { + $moveposition = 1; + $movehereurl = new moodle_url($url, array('movehere'=>$moveposition)); + //only shown if shouldmoving = 1 + echo $OUTPUT->box_start('feedback_item_box_'.$align.' clipboard'); + $buttonlink = $movehereurl->out(); + $strbutton = get_string('move_here', 'feedback'); + $src = $OUTPUT->pix_url('movehere'); + echo ' + '.$strbutton.' + '; + echo $OUTPUT->box_end(); + } + //print the inserted items + $itempos = 0; + foreach ($feedbackitems as $feedbackitem) { + $itempos++; + //hiding the item to move + if (isset($SESSION->feedback->moving)) { + if ($SESSION->feedback->moving->movingitem == $feedbackitem->id) { continue; } - if($feedbackitem->dependitem > 0) { - $dependstyle = ' feedback_depend'; - }else { - $dependstyle = ''; - } - echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle); - //items without value only are labels - if($feedbackitem->hasvalue == 1 AND $feedback->autonumbering) { - $itemnr++; - echo $OUTPUT->box_start('feedback_item_number_'.$align) . $itemnr . $OUTPUT->box_end(); - } - echo $OUTPUT->box_start('box generalbox boxalign_'.$align); - echo $OUTPUT->box_start('feedback_item_commands_'.$align); - echo ''; - //print the moveup-button - if($feedbackitem->position > 1){ - echo ''; - } - //print the movedown-button - if($feedbackitem->position < $lastposition - 1){ - echo ''; - } - //print the move-button - echo ''; - //print the button to edit the item - if($feedbackitem->typ != 'pagebreak') { - echo ''; - } - - //print the toggle-button to switch required yes/no - if($feedbackitem->hasvalue == 1) { - echo '

'; - if($feedbackitem->required == 1) { - // echo ''; - // echo ''; - $buttontitle = get_string('switch_item_to_not_required','feedback'); - $buttonimg = 'pics/required.gif'; - } else { - // echo ''; - // echo ''; - $buttontitle = get_string('switch_item_to_required','feedback'); - $buttonimg = 'pics/notrequired.gif'; - } - $requiredurl = new moodle_url($url, array('switchitemrequired'=>$feedbackitem->id)); - $buttonlink = $requiredurl->out(); - echo ''; - echo ''; - } - - //print the delete-button - echo ''; - echo $OUTPUT->box_end(); - if($feedbackitem->typ != 'pagebreak') { - feedback_print_item_preview($feedbackitem); - }else { - echo $OUTPUT->box_start('feedback_pagebreak'); - echo get_string('pagebreak', 'feedback').''; - echo $OUTPUT->box_end(); - } - echo $OUTPUT->box_end(); - echo $OUTPUT->box_end(); - if(isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { - $moveposition++; - $movehereurl->param('movehere', $moveposition); - echo $OUTPUT->box_start('clipboard'); //only shown if shouldmoving = 1 - $buttonlink = $movehereurl->out(); - echo ' - '.get_string('move_here','feedback').' - '; - echo $OUTPUT->box_end(); - } - echo '
 
'; } + if ($feedbackitem->dependitem > 0) { + $dependstyle = ' feedback_depend'; + } else { + $dependstyle = ''; + } + echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle); + //items without value only are labels + if ($feedbackitem->hasvalue == 1 AND $feedback->autonumbering) { + $itemnr++; + echo $OUTPUT->box_start('feedback_item_number_'.$align); + echo $itemnr; + echo $OUTPUT->box_end(); + } + echo $OUTPUT->box_start('box generalbox boxalign_'.$align); + echo $OUTPUT->box_start('feedback_item_commands_'.$align); + echo ''; + //print the moveup-button + if ($feedbackitem->position > 1) { + echo ''; + } + //print the movedown-button + if ($feedbackitem->position < $lastposition - 1) { + echo ''; + } + //print the move-button + echo ''; + //print the button to edit the item + if ($feedbackitem->typ != 'pagebreak') { + echo ''; + } + + //print the toggle-button to switch required yes/no + if ($feedbackitem->hasvalue == 1) { + echo ''; + } + + //print the delete-button + echo ''; + echo $OUTPUT->box_end(); + if ($feedbackitem->typ != 'pagebreak') { + feedback_print_item_preview($feedbackitem); + } else { + echo $OUTPUT->box_start('feedback_pagebreak'); + echo get_string('pagebreak', 'feedback').''; + echo $OUTPUT->box_end(); + } + echo $OUTPUT->box_end(); + echo $OUTPUT->box_end(); + if (isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { + $moveposition++; + $movehereurl->param('movehere', $moveposition); + echo $OUTPUT->box_start('clipboard'); //only shown if shouldmoving = 1 + $buttonlink = $movehereurl->out(); + $strbutton = get_string('move_here', 'feedback'); + $src = $OUTPUT->pix_url('movehere'); + echo ' + '.$strbutton.' + '; + echo $OUTPUT->box_end(); + } + echo '
 
'; + } echo $OUTPUT->box_end(); - }else{ - echo $OUTPUT->box(get_string('no_items_available_yet','feedback'),'generalbox boxaligncenter'); + } else { + echo $OUTPUT->box(get_string('no_items_available_yet', 'feedback'), + 'generalbox boxaligncenter'); } } /// Finish the page diff --git a/mod/feedback/edit_form.php b/mod/feedback/edit_form.php index 0af28680fb5..88354c7c941 100644 --- a/mod/feedback/edit_form.php +++ b/mod/feedback/edit_form.php @@ -1,31 +1,41 @@ . +/** + * prints the forms to choose an item-typ to create items and to choose a template to use + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ + +//It must be included from a Moodle page if (!defined('MOODLE_INTERNAL')) { - die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page + die('Direct access to this script is forbidden.'); } -require_once $CFG->libdir.'/formslib.php'; +require_once($CFG->libdir.'/formslib.php'); class feedback_edit_add_question_form extends moodleform { - function definition() { + public function definition() { $mform =& $this->_form; //headline $mform->addElement('header', 'general', get_string('add_items', 'feedback')); // visible elements - // $feedback_names = feedback_load_feedback_items('mod/feedback/item'); - // $feedback_names_options = array(); - // $feedback_names_options[' '] = get_string('select'); - // foreach($feedback_names as $fn) { - // $feedback_names_options[$fn] = get_string($fn,'feedback'); - // } $feedback_names_options = feedback_load_feedback_items_options(); $attributes = 'onChange="this.form.submit()"'; @@ -36,16 +46,16 @@ class feedback_edit_add_question_form extends moodleform { $mform->setType('cmid', PARAM_INT); $mform->addElement('hidden', 'position'); $mform->setType('position', PARAM_INT); -//------------------------------------------------------------------------------- + // buttons $mform->addElement('submit', 'add_item', get_string('add_item', 'feedback')); } } class feedback_edit_use_template_form extends moodleform { - var $feedbackdata; + private $feedbackdata; - function definition() { + public function definition() { $this->feedbackdata = new stdClass(); //this function can not be called, because not all data are available at this time //I use set_form_elements instead @@ -54,9 +64,9 @@ class feedback_edit_use_template_form extends moodleform { //this function set the data used in set_form_elements() //in this form the only value have to set is course //eg: array('course' => $course) - function set_feedbackdata($data) { - if(is_array($data)) { - foreach($data as $key => $val) { + public function set_feedbackdata($data) { + if (is_array($data)) { + foreach ($data as $key => $val) { $this->feedbackdata->{$key} = $val; } } @@ -65,7 +75,7 @@ class feedback_edit_use_template_form extends moodleform { //here the elements will be set //this function have to be called manually //the advantage is that the data are already set - function set_form_elements(){ + public function set_form_elements() { $mform =& $this->_form; $elementgroup = array(); @@ -81,58 +91,63 @@ class feedback_edit_use_template_form extends moodleform { $publictemplates = feedback_get_template_list($this->feedbackdata->course, 'public'); $options = array(); - if($owntemplates or $publictemplates) { + if ($owntemplates or $publictemplates) { $options[''] = array('' => get_string('choose')); - - if($owntemplates) { + + if ($owntemplates) { $courseoptions = array(); - foreach($owntemplates as $template) { + foreach ($owntemplates as $template) { $courseoptions[$template->id] = $template->name; } $options[get_string('course')] = $courseoptions; } - - if($publictemplates) { + + if ($publictemplates) { $publicoptions = array(); - foreach($publictemplates as $template) { + foreach ($publictemplates as $template) { $publicoptions[$template->id] = $template->name; } $options[get_string('public', 'feedback')] = $publicoptions; } $attributes = 'onChange="this.form.submit()"'; - $elementgroup[] =& $mform->createElement('selectgroups', 'templateid', '', $options, $attributes); - $elementgroup[] =& $mform->createElement('submit', 'use_template', get_string('use_this_template', 'feedback')); - }else { + $elementgroup[] =& $mform->createElement('selectgroups', + 'templateid', + '', + $options, + $attributes); + + $elementgroup[] =& $mform->createElement('submit', + 'use_template', + get_string('use_this_template', 'feedback')); + } else { $mform->addElement('static', 'info', get_string('no_templates_available_yet', 'feedback')); } $mform->addGroup($elementgroup, 'elementgroup', '', array(' '), false); - //------------------------------------------------------------------------------- } } class feedback_edit_create_template_form extends moodleform { - var $feedbackdata; + private $feedbackdata; - function definition() { + public function definition() { } - function data_preprocessing(&$default_values){ + public function data_preprocessing(&$default_values) { $default_values['templatename'] = ''; } - function set_feedbackdata($data) { - if(is_array($data)) { - foreach($data as $key => $val) { + public function set_feedbackdata($data) { + if (is_array($data)) { + foreach ($data as $key => $val) { $this->feedbackdata->{$key} = $val; } } } - function set_form_elements(){ + public function set_form_elements() { $mform =& $this->_form; - // $capabilities = $this->feedbackdata->capabilities; // hidden elements $mform->addElement('hidden', 'id'); @@ -148,20 +163,35 @@ class feedback_edit_create_template_form extends moodleform { // visible elements $elementgroup = array(); - $elementgroup[] =& $mform->createElement('static', 'templatenamelabel', get_string('name', 'feedback')); - $elementgroup[] =& $mform->createElement('text', 'templatename', get_string('name', 'feedback'), array('size'=>'40', 'maxlength'=>'200')); + $elementgroup[] =& $mform->createElement('static', + 'templatenamelabel', + get_string('name', 'feedback')); - if(has_capability('mod/feedback:createpublictemplate', get_system_context())) { - $elementgroup[] =& $mform->createElement('checkbox', 'ispublic', get_string('public', 'feedback'), get_string('public', 'feedback')); + $elementgroup[] =& $mform->createElement('text', + 'templatename', + get_string('name', 'feedback'), + array('size'=>'40', 'maxlength'=>'200')); + + if (has_capability('mod/feedback:createpublictemplate', get_system_context())) { + $elementgroup[] =& $mform->createElement('checkbox', + 'ispublic', + get_string('public', 'feedback'), + get_string('public', 'feedback')); } // buttons - $elementgroup[] =& $mform->createElement('submit', 'create_template', get_string('save_as_new_template', 'feedback')); - $mform->addGroup($elementgroup, 'elementgroup', get_string('name', 'feedback'), array(' '), false); + $elementgroup[] =& $mform->createElement('submit', + 'create_template', + get_string('save_as_new_template', 'feedback')); + + $mform->addGroup($elementgroup, + 'elementgroup', + get_string('name', 'feedback'), + array(' '), + false); $mform->setType('templatename', PARAM_TEXT); -//------------------------------------------------------------------------------- } } diff --git a/mod/feedback/edit_item.php b/mod/feedback/edit_item.php index 2a0807fa9a3..28bd0c0300c 100644 --- a/mod/feedback/edit_item.php +++ b/mod/feedback/edit_item.php @@ -1,4 +1,18 @@ . /** * prints the form to edit a dedicated item @@ -13,7 +27,6 @@ require_once("lib.php"); feedback_init_feedback_session(); -// $cmid = optional_param('cmid', NULL, PARAM_INT); $cmid = required_param('cmid', PARAM_INT); $typ = optional_param('typ', false, PARAM_ALPHA); $id = optional_param('id', false, PARAM_INT); @@ -21,7 +34,9 @@ $action = optional_param('action', false, PARAM_ALPHA); $editurl = new moodle_url('/mod/feedback/edit.php', array('id'=>$cmid)); -if(!$typ)redirect($editurl->out(false)); +if (!$typ) { + redirect($editurl->out(false)); +} $url = new moodle_url('/mod/feedback/edit_item.php', array('cmid'=>$cmid)); if ($typ !== false) { @@ -36,7 +51,7 @@ $PAGE->set_url($url); $usehtmleditor = can_use_html_editor(); -if(($formdata = data_submitted()) AND !confirm_sesskey()) { +if (($formdata = data_submitted()) AND !confirm_sesskey()) { print_error('invalidsesskey'); } @@ -61,7 +76,7 @@ require_login($course->id, true, $cm); require_capability('mod/feedback:edititems', $context); //if the typ is pagebreak so the item will be saved directly -if($typ == 'pagebreak') { +if ($typ == 'pagebreak') { feedback_create_pagebreak($feedback->id); redirect($editurl->out(false)); exit; @@ -69,9 +84,9 @@ if($typ == 'pagebreak') { //get the existing item or create it // $formdata->itemid = isset($formdata->itemid) ? $formdata->itemid : NULL; -if($id and $item = $DB->get_record('feedback_item', array('id'=>$id))) { +if ($id and $item = $DB->get_record('feedback_item', array('id'=>$id))) { $typ = $item->typ; -}else { +} else { $item = new stdClass(); $item->id = null; $item->position = -1; @@ -88,12 +103,12 @@ $itemobj = feedback_get_item_class($typ); $itemobj->build_editform($item, $feedback, $cm); -if($itemobj->is_cancelled()) { +if ($itemobj->is_cancelled()) { redirect($editurl->out(false)); exit; } -if($itemobj->get_data()) { - if($item = $itemobj->save_item()) { +if ($itemobj->get_data()) { + if ($item = $itemobj->save_item()) { feedback_move_item($item, $item->position); redirect($editurl->out(false)); } @@ -113,18 +128,15 @@ $PAGE->set_heading(format_string($course->fullname)); $PAGE->set_title(format_string($feedback->name)); echo $OUTPUT->header(); /// print the tabs -include('tabs.php'); +require('tabs.php'); /// Print the main part of the page echo $OUTPUT->heading(format_text($feedback->name)); //print errormsg -if(isset($error)) { +if (isset($error)) { echo $error; } -feedback_print_errors(); $itemobj->show_editform(); -// echo $OUTPUT->box_end(); - if ($typ!='label') { $PAGE->requires->js('/mod/feedback/feedback.js'); $PAGE->requires->js_function_call('set_item_focus', Array('id_itemname')); @@ -136,4 +148,3 @@ if ($typ!='label') { /////////////////////////////////////////////////////////////////////////// echo $OUTPUT->footer(); - diff --git a/mod/feedback/export.php b/mod/feedback/export.php index 2e5032793d7..705db01aad1 100644 --- a/mod/feedback/export.php +++ b/mod/feedback/export.php @@ -1,159 +1,173 @@ . - /** - * prints the form to export the items as xml-file - * - * @author Andreas Grabs - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License - * @package feedback - */ +/** + * prints the form to export the items as xml-file + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ - require_once("../../config.php"); - require_once("lib.php"); +require_once("../../config.php"); +require_once("lib.php"); - // get parameters - $id = required_param('id', PARAM_INT); - $action = optional_param('action', false, PARAM_ALPHA); +// get parameters +$id = required_param('id', PARAM_INT); +$action = optional_param('action', false, PARAM_ALPHA); - $url = new moodle_url('/mod/feedback/export.php', array('id'=>$id)); - if ($action !== false) { - $url->param('action', $action); +$url = new moodle_url('/mod/feedback/export.php', array('id'=>$id)); +if ($action !== false) { + $url->param('action', $action); +} +$PAGE->set_url($url); + +if (! $cm = get_coursemodule_from_id('feedback', $id)) { + print_error('invalidcoursemodule'); +} + +if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { + print_error('coursemisconf'); +} + +if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { + print_error('invalidcoursemodule'); +} + +if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { + print_error('badcontext'); +} + +require_login($course->id, true, $cm); + +require_capability('mod/feedback:edititems', $context); + +if ($action == 'exportfile') { + if (!$exportdata = feedback_get_xml_data($feedback->id)) { + print_error('nodata'); } - $PAGE->set_url($url); - - if (! $cm = get_coursemodule_from_id('feedback', $id)) { - print_error('invalidcoursemodule'); - } - - if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { - print_error('coursemisconf'); - } - - if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { - print_error('invalidcoursemodule'); - } - - if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { - print_error('badcontext'); - } - - require_login($course->id, true, $cm); - - require_capability('mod/feedback:edititems', $context); - - if ($action == 'exportfile') { - if(!$exportdata = feedback_get_xml_data($feedback->id)) { - print_error('nodata'); - } - @feedback_send_xml_data($exportdata, 'feedback_'.$feedback->id.'.xml'); - exit; - } - - redirect('view.php?id='.$id); + @feedback_send_xml_data($exportdata, 'feedback_'.$feedback->id.'.xml'); exit; +} - function feedback_get_xml_data($feedbackid) { - global $DB; +redirect('view.php?id='.$id); +exit; - $space = ' '; - //get all items of the feedback - if(!$items = $DB->get_records('feedback_item', array('feedback'=>$feedbackid), 'position')) { - return false; - } +function feedback_get_xml_data($feedbackid) { + global $DB; - //writing the header of the xml file including the charset of the currrent used language - $data = ''."\n"; - $data .= ''."\n"; - $data .= $space.''."\n"; - - //writing all the items - foreach($items as $item) { - //start of item - $data .= $space.$space.''."\n"; - - //start of itemid - $data .= $space.$space.$space.''."\n"; - //start of CDATA - $data .= $space.$space.$space.$space.'id; - //end of CDATA - $data .= ']]>'."\n"; - //end of itemid - $data .= $space.$space.$space.''."\n"; - - //start of itemtext - $data .= $space.$space.$space.''."\n"; - //start of CDATA - $data .= $space.$space.$space.$space.'name; - //end of CDATA - $data .= ']]>'."\n"; - //end of itemtext - $data .= $space.$space.$space.''."\n"; - - //start of itemtext - $data .= $space.$space.$space.''."\n"; - //start of CDATA - $data .= $space.$space.$space.$space.'label; - //end of CDATA - $data .= ']]>'."\n"; - //end of itemtext - $data .= $space.$space.$space.''."\n"; - - //start of presentation - $data .= $space.$space.$space.''."\n"; - //start of CDATA - $data .= $space.$space.$space.$space.'presentation; - //end of CDATA - $data .= ']]>'."\n"; - //end of presentation - $data .= $space.$space.$space.''."\n"; - - //start of options - $data .= $space.$space.$space.''."\n"; - //start of CDATA - $data .= $space.$space.$space.$space.'options; - //end of CDATA - $data .= ']]>'."\n"; - //end of options - $data .= $space.$space.$space.''."\n"; - - //start of dependitem - $data .= $space.$space.$space.''."\n"; - //start of CDATA - $data .= $space.$space.$space.$space.'dependitem; - //end of CDATA - $data .= ']]>'."\n"; - //end of dependitem - $data .= $space.$space.$space.''."\n"; - - //start of dependvalue - $data .= $space.$space.$space.''."\n"; - //start of CDATA - $data .= $space.$space.$space.$space.'dependvalue; - //end of CDATA - $data .= ']]>'."\n"; - //end of dependvalue - $data .= $space.$space.$space.''."\n"; - - //end of item - $data .= $space.$space.''."\n"; - } - - //writing the footer of the xml file - $data .= $space.''."\n"; - $data .= ''."\n"; - - return $data; + $space = ' '; + //get all items of the feedback + if (!$items = $DB->get_records('feedback_item', array('feedback'=>$feedbackid), 'position')) { + return false; } - function feedback_send_xml_data($data, $filename) { - @header('Content-Type: application/xml; charset=UTF-8'); - @header('Content-Disposition: attachment; filename='.$filename); - print($data); + //writing the header of the xml file including the charset of the currrent used language + $data = ''."\n"; + $data .= ''."\n"; + $data .= $space.''."\n"; + + //writing all the items + foreach ($items as $item) { + //start of item + $data .= $space.$space.''."\n"; + + //start of itemid + $data .= $space.$space.$space.''."\n"; + //start of CDATA + $data .= $space.$space.$space.$space.'id; + //end of CDATA + $data .= ']]>'."\n"; + //end of itemid + $data .= $space.$space.$space.''."\n"; + + //start of itemtext + $data .= $space.$space.$space.''."\n"; + //start of CDATA + $data .= $space.$space.$space.$space.'name; + //end of CDATA + $data .= ']]>'."\n"; + //end of itemtext + $data .= $space.$space.$space.''."\n"; + + //start of itemtext + $data .= $space.$space.$space.''."\n"; + //start of CDATA + $data .= $space.$space.$space.$space.'label; + //end of CDATA + $data .= ']]>'."\n"; + //end of itemtext + $data .= $space.$space.$space.''."\n"; + + //start of presentation + $data .= $space.$space.$space.''."\n"; + //start of CDATA + $data .= $space.$space.$space.$space.'presentation; + //end of CDATA + $data .= ']]>'."\n"; + //end of presentation + $data .= $space.$space.$space.''."\n"; + + //start of options + $data .= $space.$space.$space.''."\n"; + //start of CDATA + $data .= $space.$space.$space.$space.'options; + //end of CDATA + $data .= ']]>'."\n"; + //end of options + $data .= $space.$space.$space.''."\n"; + + //start of dependitem + $data .= $space.$space.$space.''."\n"; + //start of CDATA + $data .= $space.$space.$space.$space.'dependitem; + //end of CDATA + $data .= ']]>'."\n"; + //end of dependitem + $data .= $space.$space.$space.''."\n"; + + //start of dependvalue + $data .= $space.$space.$space.''."\n"; + //start of CDATA + $data .= $space.$space.$space.$space.'dependvalue; + //end of CDATA + $data .= ']]>'."\n"; + //end of dependvalue + $data .= $space.$space.$space.''."\n"; + + //end of item + $data .= $space.$space.''."\n"; } + + //writing the footer of the xml file + $data .= $space.''."\n"; + $data .= ''."\n"; + + return $data; +} + +function feedback_send_xml_data($data, $filename) { + @header('Content-Type: application/xml; charset=UTF-8'); + @header('Content-Disposition: attachment; filename='.$filename); + print($data); +} diff --git a/mod/feedback/import.php b/mod/feedback/import.php index 73cd1459aac..e8a1c205a98 100644 --- a/mod/feedback/import.php +++ b/mod/feedback/import.php @@ -1,4 +1,18 @@ . /** * prints the form to import items from xml-file @@ -8,282 +22,271 @@ * @package feedback */ - require_once("../../config.php"); - require_once("lib.php"); - require_once('import_form.php'); +require_once("../../config.php"); +require_once("lib.php"); +require_once('import_form.php'); - // get parameters - $id = required_param('id', PARAM_INT); - $choosefile = optional_param('choosefile', false, PARAM_PATH); - $action = optional_param('action', false, PARAM_ALPHA); +// get parameters +$id = required_param('id', PARAM_INT); +$choosefile = optional_param('choosefile', false, PARAM_PATH); +$action = optional_param('action', false, PARAM_ALPHA); - $url = new moodle_url('/mod/feedback/import.php', array('id'=>$id)); - if ($choosefile !== false) { - $url->param('choosefile', $choosefile); - } - if ($action !== false) { - $url->param('action', $action); - } - $PAGE->set_url($url); +$url = new moodle_url('/mod/feedback/import.php', array('id'=>$id)); +if ($choosefile !== false) { + $url->param('choosefile', $choosefile); +} +if ($action !== false) { + $url->param('action', $action); +} +$PAGE->set_url($url); - if (! $cm = get_coursemodule_from_id('feedback', $id)) { - print_error('invalidcoursemodule'); +if (! $cm = get_coursemodule_from_id('feedback', $id)) { + print_error('invalidcoursemodule'); +} + +if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { + print_error('coursemisconf'); +} + +if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { + print_error('invalidcoursemodule'); +} + +if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { + print_error('badcontext'); +} + +require_login($course->id, true, $cm); + +require_capability('mod/feedback:edititems', $context); + +$mform = new feedback_import_form(); +$newformdata = array('id'=>$id, + 'deleteolditems'=>'1', + 'action'=>'choosefile', + 'confirmadd'=>'1', + 'do_show'=>'templates'); +$mform->set_data($newformdata); +$formdata = $mform->get_data(); + +if ($mform->is_cancelled()) { + redirect('edit.php?id='.$id.'&do_show=templates'); +} + +// process if we are happy file is ok +if ($choosefile) { + $xmlcontent = $mform->get_file_content('choosefile'); + + if (!$xmldata = feedback_load_xml_data($xmlcontent)) { + print_error('cannotloadxml', 'feedback', 'edit.php?id='.$id); } - if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { - print_error('coursemisconf'); + $importerror = feedback_import_loaded_data($xmldata, $feedback->id); + if ($importerror->stat == true) { + $url = 'edit.php?id='.$id.'&do_show=templates'; + redirect($url, get_string('import_successfully', 'feedback'), 3); + exit; + } +} + + +/// Print the page header +$strfeedbacks = get_string("modulenameplural", "feedback"); +$strfeedback = get_string("modulename", "feedback"); + +$PAGE->set_heading(format_string($course->fullname)); +$PAGE->set_title(format_string($feedback->name)); +echo $OUTPUT->header(); + +/// print the tabs +require('tabs.php'); + +/// Print the main part of the page +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +echo $OUTPUT->heading(get_string('import_questions', 'feedback')); + +if (isset($importerror->msg) AND is_array($importerror->msg)) { + echo $OUTPUT->box_start('generalbox errorboxcontent boxaligncenter'); + foreach ($importerror->msg as $msg) { + echo $msg.'
'; + } + echo $OUTPUT->box_end(); +} + +$mform->display(); + +echo $OUTPUT->footer(); + +function feedback_load_xml_data($xmlcontent) { + global $CFG; + require_once($CFG->dirroot.'/lib/xmlize.php'); + + if (!$xmlcontent = feedback_check_xml_utf8($xmlcontent)) { + return false; } - if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { - print_error('invalidcoursemodule'); + $data = xmlize($xmlcontent, 1, 'UTF-8'); + + if (intval($data['FEEDBACK']['@']['VERSION']) != 200701) { + return false; } + $data = $data['FEEDBACK']['#']['ITEMS'][0]['#']['ITEM']; + return $data; +} - if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { - print_error('badcontext'); - } +function feedback_import_loaded_data(&$data, $feedbackid) { + global $CFG, $DB; - require_login($course->id, true, $cm); + feedback_load_feedback_items(); - require_capability('mod/feedback:edititems', $context); + $deleteolditems = optional_param('deleteolditems', 0, PARAM_INT); - $mform = new feedback_import_form(); - $newformdata = array('id'=>$id, - 'deleteolditems'=>'1', - 'action'=>'choosefile', - 'confirmadd'=>'1', - 'do_show'=>'templates'); - $mform->set_data($newformdata); - $formdata = $mform->get_data(); - - if ($mform->is_cancelled()) { - redirect('edit.php?id='.$id.'&do_show=templates'); - } - - - // 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 ($choosefile) { - $xmlcontent = $mform->get_file_content('choosefile'); - - if(!$xmldata = feedback_load_xml_data($xmlcontent)) { - 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"); - - $PAGE->set_heading(format_string($course->fullname)); - $PAGE->set_title(format_string($feedback->name)); - echo $OUTPUT->header(); - - /// print the tabs - include('tabs.php'); - - /// Print the main part of the page - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - echo $OUTPUT->heading(get_string('import_questions','feedback')); - - if(isset($importerror->msg) AND is_array($importerror->msg)) { - echo $OUTPUT->box_start('generalbox errorboxcontent boxaligncenter'); - foreach($importerror->msg as $msg) { - echo $msg.'
'; - } - echo $OUTPUT->box_end(); - } - - $mform->display(); - - // echo $OUTPUT->container_start('mdl-align'); - // echo $OUTPUT->single_button(new moodle_url('edit.php', array('id'=>$id, 'do_show'=>'templates')), get_string('cancel')); - // echo $OUTPUT->container_end(); - echo $OUTPUT->footer(); - - function feedback_load_xml_data($xmlcontent) { - global $CFG; - require_once($CFG->dirroot.'/lib/xmlize.php'); - - if(!$xmlcontent = feedback_check_xml_utf8($xmlcontent)) return false; - - $data = xmlize($xmlcontent, 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; - - feedback_load_feedback_items(); - - $deleteolditems = optional_param('deleteolditems', 0, PARAM_INT); - - $error = new stdClass(); - $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)); - } - - //depend items we are storing temporary in an mapping list array(new id => dependitem) - //we also store a mapping of all items array(oldid => newid) - $dependitemsmap = array(); - $itembackup = array(); - 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 stdClass(); - $newitem->feedback = $feedbackid; - $newitem->template = 0; - $newitem->typ = $typ; - $newitem->name = trim($item['#']['ITEMTEXT'][0]['#']); - $newitem->label = trim($item['#']['ITEMLABEL'][0]['#']); - $newitem->options = trim($item['#']['OPTIONS'][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(isset($item['#']['DEPENDITEM'][0]['#'])) { - $newitem->dependitem = intval($item['#']['DEPENDITEM'][0]['#']); - }else { - $newitem->dependitem = 0; - } - if(isset($item['#']['DEPENDVALUE'][0]['#'])) { - $newitem->dependvalue = trim($item['#']['DEPENDVALUE'][0]['#']); - }else { - $newitem->dependvalue = ''; - } - $olditemid = intval($item['#']['ITEMID'][0]['#']); - - if($typ != 'pagebreak') { - $newitem->hasvalue = $itemobj->get_hasvalue(); - }else { - $newitem->hasvalue = 0; - } - $newitem->required = intval($item['@']['REQUIRED']); - $newitem->position = $position; - $newid = $DB->insert_record('feedback_item', $newitem); - - $itembackup[$olditemid] = $newid; - if($newitem->dependitem) { - $dependitemsmap[$newid] = $newitem->dependitem; - } - - } - //remapping the dependency - foreach($dependitemsmap as $key => $dependitem) { - $newitem = $DB->get_record('feedback_item', array('id'=>$key)); - $newitem->dependitem = $itembackup[$newitem->dependitem]; - $DB->update_record('feedback_item', $newitem); - } + $error = new stdClass(); + $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; } - 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); - } + 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)); } + + //depend items we are storing temporary in an mapping list array(new id => dependitem) + //we also store a mapping of all items array(oldid => newid) + $dependitemsmap = array(); + $itembackup = array(); + 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 stdClass(); + $newitem->feedback = $feedbackid; + $newitem->template = 0; + $newitem->typ = $typ; + $newitem->name = trim($item['#']['ITEMTEXT'][0]['#']); + $newitem->label = trim($item['#']['ITEMLABEL'][0]['#']); + $newitem->options = trim($item['#']['OPTIONS'][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 (isset($item['#']['DEPENDITEM'][0]['#'])) { + $newitem->dependitem = intval($item['#']['DEPENDITEM'][0]['#']); + } else { + $newitem->dependitem = 0; + } + if (isset($item['#']['DEPENDVALUE'][0]['#'])) { + $newitem->dependvalue = trim($item['#']['DEPENDVALUE'][0]['#']); + } else { + $newitem->dependvalue = ''; + } + $olditemid = intval($item['#']['ITEMID'][0]['#']); + + if ($typ != 'pagebreak') { + $newitem->hasvalue = $itemobj->get_hasvalue(); + } else { + $newitem->hasvalue = 0; + } + $newitem->required = intval($item['@']['REQUIRED']); + $newitem->position = $position; + $newid = $DB->insert_record('feedback_item', $newitem); + + $itembackup[$olditemid] = $newid; + if ($newitem->dependitem) { + $dependitemsmap[$newid] = $newitem->dependitem; + } + + } + //remapping the dependency + foreach ($dependitemsmap as $key => $dependitem) { + $newitem = $DB->get_record('feedback_item', array('id'=>$key)); + $newitem->dependitem = $itembackup[$newitem->dependitem]; + $DB->update_record('feedback_item', $newitem); + } + + 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; + } + + //encoding is given in $match[2] + if (isset($match[0]) AND isset($match[1]) AND isset($match[2])) { + $enc = $match[2]; + $textlib = textlib_get_instance(); + return $textlib->convert($text, $enc); + } +} diff --git a/mod/feedback/import_form.php b/mod/feedback/import_form.php index 1b2e4e87aba..97d4ef0c466 100644 --- a/mod/feedback/import_form.php +++ b/mod/feedback/import_form.php @@ -1,28 +1,47 @@ . +/** + * prints the forms to choose an xml-template file to import items + * + * @author Andreas Grabs + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @package feedback + */ + +//It must be included from a Moodle page if (!defined('MOODLE_INTERNAL')) { - die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page + die('Direct access to this script is forbidden.'); } -require_once $CFG->libdir.'/formslib.php'; +require_once($CFG->libdir.'/formslib.php'); class feedback_import_form extends moodleform { - function definition() { + public function definition() { global $CFG; $mform =& $this->_form; //headline $mform->addElement('header', 'general', ''); - $strdeleteolditmes = get_string('delete_old_items', 'feedback').' ('.get_string('oldvalueswillbedeleted','feedback').')'; - $strnodeleteolditmes = get_string('append_new_items', 'feedback').' ('.get_string('oldvaluespreserved','feedback').')'; - + $strdeleteolditmes = get_string('delete_old_items', 'feedback'). + ' ('.get_string('oldvalueswillbedeleted', 'feedback').')'; + + $strnodeleteolditmes = get_string('append_new_items', 'feedback'). + ' ('.get_string('oldvaluespreserved', 'feedback').')'; + $deleteolditemsarray = array(); $mform->addElement('radio', 'deleteolditems', '', $strdeleteolditmes, true); $mform->addElement('radio', 'deleteolditems', '', $strnodeleteolditmes); @@ -31,9 +50,12 @@ class feedback_import_form extends moodleform { // hidden elements $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); - $mform->addElement('filepicker', 'choosefile', get_string('file'), null, array('maxbytes' => $CFG->maxbytes, 'filetypes' => '*')); + $mform->addElement('filepicker', + 'choosefile', + get_string('file'), + null, + array('maxbytes' => $CFG->maxbytes, 'filetypes' => '*')); - //------------------------------------------------------------------------------- // buttons $this->add_action_buttons(true, get_string('yes')); diff --git a/mod/feedback/index.php b/mod/feedback/index.php index 6794825df47..860a196a08f 100644 --- a/mod/feedback/index.php +++ b/mod/feedback/index.php @@ -1,4 +1,18 @@ . /** * prints the overview of all feedbacks included into the current course @@ -43,7 +57,8 @@ echo $OUTPUT->header(); /// Get all the appropriate data if (! $feedbacks = get_all_instances_in_course("feedback", $course)) { - notice(get_string('thereareno', 'moodle', $strfeedbacks), new moodle_url('/course/view.php', array('id'=>$course->id))); + $url = new moodle_url('/course/view.php', array('id'=>$course->id)); + notice(get_string('thereareno', 'moodle', $strfeedbacks), $url); die; } @@ -62,18 +77,18 @@ $strresponses = get_string('responses', 'feedback'); $table = new html_table(); if ($usesections) { - if(has_capability('mod/feedback:viewreports', $context)) { + if (has_capability('mod/feedback:viewreports', $context)) { $table->head = array ($strsectionname, $strname, $strresponses); $table->align = array ("center", "left", 'center'); - }else{ + } else { $table->head = array ($strsectionname, $strname); $table->align = array ("center", "left"); } } else { - if(has_capability('mod/feedback:viewreports', $context)) { + if (has_capability('mod/feedback:viewreports', $context)) { $table->head = array ($strname, $strresponses); $table->align = array ("left", "center"); - }else{ + } else { $table->head = array ($strname); $table->align = array ("left"); } @@ -84,8 +99,8 @@ foreach ($feedbacks as $feedback) { //get the responses of each feedback $viewurl = new moodle_url('/mod/feedback/view.php', array('id'=>$feedback->coursemodule)); - if(has_capability('mod/feedback:viewreports', $context)) { - $completedFeedbackCount = intval(feedback_get_completeds_group_count($feedback)); + if (has_capability('mod/feedback:viewreports', $context)) { + $completed_feedback_count = intval(feedback_get_completeds_group_count($feedback)); } $dimmedclass = $feedback->visible ? '' : 'class="dimmed"'; @@ -96,8 +111,8 @@ foreach ($feedbacks as $feedback) { } else { $tabledata = array ($link); } - if(has_capability('mod/feedback:viewreports', $context)) { - $tabledata[] = $completedFeedbackCount; + if (has_capability('mod/feedback:viewreports', $context)) { + $tabledata[] = $completed_feedback_count; } $table->data[] = $tabledata; diff --git a/mod/feedback/item/captcha/captcha_form.php b/mod/feedback/item/captcha/captcha_form.php index 0761af6517e..8dd1bf7a739 100644 --- a/mod/feedback/item/captcha/captcha_form.php +++ b/mod/feedback/item/captcha/captcha_form.php @@ -1,17 +1,31 @@ . require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_form_class.php'); class feedback_captcha_form extends feedback_item_form { - var $type = "captcha"; + protected $type = "captcha"; + + public function definition() { - function definition() { - $item = $this->_customdata['item']; $common = $this->_customdata['common']; $positionlist = $this->_customdata['positionlist']; $position = $this->_customdata['position']; - + $mform =& $this->_form; $mform->addElement('header', 'general', get_string($this->type, 'feedback')); @@ -28,7 +42,7 @@ class feedback_captcha_form extends feedback_item_form { $mform->addElement('select', 'presentation', get_string('count_of_nums', 'feedback').' ', - array_slice(range(0,10),3,10,true)); + array_slice(range(0, 10), 3, 10, true)); parent::definition(); $this->set_data($item); diff --git a/mod/feedback/item/captcha/lib.php b/mod/feedback/item/captcha/lib.php index 0dcca48e483..126d51e3417 100644 --- a/mod/feedback/item/captcha/lib.php +++ b/mod/feedback/item/captcha/lib.php @@ -1,31 +1,47 @@ . + defined('MOODLE_INTERNAL') OR die('not allowed'); require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php'); class feedback_item_captcha extends feedback_item_base { - var $type = "captcha"; - var $commonparams; - var $item_form = false; - var $item = false; - var $feedback = false; + protected $type = "captcha"; + private $commonparams; + private $item_form = false; + private $item = false; + private $feedback = false; - function init() { + public function init() { } - function build_editform($item, $feedback, $cm) { + public function build_editform($item, $feedback, $cm) { global $DB; $editurl = new moodle_url('/mod/feedback/edit.php', array('id'=>$cm->id)); //ther are no settings for recaptcha - if(isset($item->id) AND $item->id > 0) { + if (isset($item->id) AND $item->id > 0) { notice(get_string('there_are_no_settings_for_recaptcha', 'feedback'), $editurl->out()); exit; } //only one recaptcha can be in a feedback - if($DB->record_exists('feedback_item', array('feedback'=>$feedback->id, 'typ'=>$this->type))) { + $params = array('feedback' => $feedback->id, 'typ' => $this->type); + if ($DB->record_exists('feedback_item', $params)) { notice(get_string('only_one_captcha_allowed', 'feedback'), $editurl->out()); exit; } @@ -50,27 +66,27 @@ class feedback_item_captcha extends feedback_item_base { $this->item->options = ''; } - function show_editform() { + public function show_editform() { } - function is_cancelled() { + public function is_cancelled() { return false; } - function get_data() { + public function get_data() { return true; } - function save_item() { + public function save_item() { global $DB; - if(!$this->item) { + if (!$this->item) { return false; } - if(empty($this->item->id)) { + if (empty($this->item->id)) { $this->item->id = $DB->insert_record('feedback_item', $this->item); - }else { + } else { $DB->update_record('feedback_item', $this->item); } @@ -78,20 +94,22 @@ class feedback_item_captcha extends feedback_item_base { } //liefert eine Struktur ->name, ->data = array(mit Antworten) - function get_analysed($item, $groupid = false, $courseid = false) { + public function get_analysed($item, $groupid = false, $courseid = false) { return null; } - function get_printval($item, $value) { + public function get_printval($item, $value) { return ''; } - function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) { + public function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) { return $itemnr; } - function excelprint_item(&$worksheet, $rowOffset, $xlsFormats, $item, $groupid, $courseid = false) { - return $rowOffset; + public function excelprint_item(&$worksheet, $row_offset, + $xls_formats, $item, + $groupid, $courseid = false) { + return $row_offset; } /** @@ -101,16 +119,17 @@ class feedback_item_captcha extends feedback_item_base { * @param object $item * @return void */ - function print_item_preview($item) { + public function print_item_preview($item) { global $DB; $align = right_to_left() ? 'right' : 'left'; $cmid = 0; $feedbackid = $item->feedback; - if($feedbackid > 0) { + if ($feedbackid > 0) { $feedback = $DB->get_record('feedback', array('id'=>$feedbackid)); - if($cm = get_coursemodule_from_instance("feedback", $feedback->id, $feedback->course)) { + $cm = get_coursemodule_from_instance("feedback", $feedback->id, $feedback->course); + if ($cm) { $cmid = $cm->id; } } @@ -134,7 +153,7 @@ class feedback_item_captcha extends feedback_item_base { * @param bool $highlightrequire * @return void */ - function print_item_complete($item, $value = '', $highlightrequire = false) { + public function print_item_complete($item, $value = '', $highlightrequire = false) { global $SESSION, $CFG, $DB, $USER; require_once($CFG->libdir.'/recaptchalib.php'); @@ -142,33 +161,38 @@ class feedback_item_captcha extends feedback_item_base { $cmid = 0; $feedbackid = $item->feedback; - if($feedbackid > 0) { + if ($feedbackid > 0) { $feedback = $DB->get_record('feedback', array('id'=>$feedbackid)); - if($cm = get_coursemodule_from_instance("feedback", $feedback->id, $feedback->course)) { + $cm = get_coursemodule_from_instance("feedback", $feedback->id, $feedback->course); + if ($cm) { $cmid = $cm->id; } } //check if an false value even the value is not required - if($highlightrequire AND !$this->check_value($value, $item)) { + if ($highlightrequire AND !$this->check_value($value, $item)) { $falsevalue = true; - }else { + } else { $falsevalue = false; } - if($falsevalue) { + if ($falsevalue) { $highlight = 'missingrequire'; - }else { + } else { $highlight = ''; } $requiredmark = ''; - if(isset($SESSION->feedback->captchacheck) AND $SESSION->feedback->captchacheck == $USER->sesskey AND $value == $USER->sesskey) { + if (isset($SESSION->feedback->captchacheck) AND + $SESSION->feedback->captchacheck == $USER->sesskey AND + $value == $USER->sesskey) { + //print the question and label echo ''; return; } @@ -187,19 +211,31 @@ class feedback_item_captcha extends feedback_item_base { '; //we have to rename the challengefield - $captchahtml = recaptcha_get_html($CFG->recaptchapublickey, NULL); - echo $html.$captchahtml; + if (!empty($CFG->recaptchaprivatekey) AND !empty($CFG->recaptchapublickey)) { + $captchahtml = recaptcha_get_html($CFG->recaptchapublickey, null); + echo $html.$captchahtml; + } } /** @@ -210,16 +246,16 @@ class feedback_item_captcha extends feedback_item_base { * @param string $value * @return void */ - function print_item_show_value($item, $value = '') { + public function print_item_show_value($item, $value = '') { global $DB; $align = right_to_left() ? 'right' : 'left'; $cmid = 0; $feedbackid = $item->feedback; - if($feedbackid > 0) { + if ($feedbackid > 0) { $feedback = $DB->get_record('feedback', array('id'=>$feedbackid)); - if($cm = get_coursemodule_from_instance("feedback", $feedback->id, $feedback->course)) { + if ($cm = get_coursemodule_from_instance("feedback", $feedback->id, $feedback->course)) { $cmid = $cm->id; } } @@ -234,18 +270,22 @@ class feedback_item_captcha extends feedback_item_base { } - function check_value($value, $item) { + public function check_value($value, $item) { global $SESSION, $CFG, $USER; require_once($CFG->libdir.'/recaptchalib.php'); + //is recaptcha configured in moodle? + if (empty($CFG->recaptchaprivatekey) OR empty($CFG->recaptchapublickey)) { + return true; + } $challenge = optional_param('recaptcha_challenge_field', '', PARAM_RAW); - if($value == $USER->sesskey AND $challenge == '') { + if ($value == $USER->sesskey AND $challenge == '') { return true; } $remoteip = getremoteaddr(null); $response = recaptcha_check_answer($CFG->recaptchaprivatekey, $remoteip, $challenge, $value); - if($response->is_valid) { + if ($response->is_valid) { $SESSION->feedback->captchacheck = $USER->sesskey; return true; } @@ -254,7 +294,7 @@ class feedback_item_captcha extends feedback_item_base { return false; } - function create_value($data) { + public function create_value($data) { global $USER; return $USER->sesskey; } @@ -262,22 +302,28 @@ class feedback_item_captcha extends feedback_item_base { //compares the dbvalue with the dependvalue //dbvalue is value stored in the db //dependvalue is the value to check - function compare_value($item, $dbvalue, $dependvalue) { - if($dbvalue == $dependvalue) { + public function compare_value($item, $dbvalue, $dependvalue) { + if ($dbvalue == $dependvalue) { return true; } return false; } - function get_presentation($data) { + public function get_presentation($data) { return ''; } - function get_hasvalue() { + public function get_hasvalue() { + global $CFG; + + //is recaptcha configured in moodle? + if (empty($CFG->recaptchaprivatekey) OR empty($CFG->recaptchapublickey)) { + return 0; + } return 1; } - function can_switch_require() { + public function can_switch_require() { return false; } } diff --git a/mod/feedback/item/captcha/print_captcha.php b/mod/feedback/item/captcha/print_captcha.php index 7ac8bc443ea..9d5b109f5eb 100644 --- a/mod/feedback/item/captcha/print_captcha.php +++ b/mod/feedback/item/captcha/print_captcha.php @@ -1,4 +1,18 @@ . require_once('../../../../config.php'); @@ -20,13 +34,12 @@ if ($id) { } } -if(!isset($SESSION->feedback->item->captcha)) { +if (!isset($SESSION->feedback->item->captcha)) { print_error('captchanotset', 'feedback'); } $height = 40; $charcount = $SESSION->feedback->item->captcha->charcount; -// $fontfile = $CFG->dirroot.'/mod/feedback/item/captcha/default.ttf'; $fontfile = $CFG->libdir.'/default.ttf'; $ttfbox = imagettfbbox ( 30, 0, $fontfile, 'H' );//the text to measure @@ -36,14 +49,12 @@ $width = $charcount * $charwidth; $scale = 0.3; $elipsesize = intval((($width + $height)/2) / 5); -$factorX = intval($width * $scale); -$factorY = intval($height * $scale); +$factor_x = intval($width * $scale); +$factor_y = intval($height * $scale); //I split the colors in three ranges //given are the max-min-values -//$colors = array(80, 155, 255); -$colors = array(array(0,40),array(50,200),array(210,255)); -//shuffle($colors); +$colors = array(array(0, 40), array(50, 200), array(210, 255)); list($col_text1, $col_el, $col_text2) = $colors; //if the text is in color_1 so the elipses can be in color_2 or color_3 @@ -53,18 +64,15 @@ $textcolnum = rand(1, 3); //create the numbers to print out $nums = array(); -for($i = 0; $i < $charcount; $i++) { - $nums[] = rand(0,9); //Ziffern von 0- +for ($i = 0; $i < $charcount; $i++) { + $nums[] = rand(0, 9); //Ziffern von 0- } -// $nums = range(0, 9); -// shuffle($nums); - //to draw enough elipses so I draw 0.2 * width and 0.2 * height //we need th colors for that $properties = array(); -for($x = 0; $x < $factorX; $x++) { - for($y = 0; $y < $factorY; $y++) { +for ($x = 0; $x < $factor_x; $x++) { + for ($y = 0; $y < $factor_y; $y++) { $propobj = new stdClass(); $propobj->x = intval($x / $scale); $propobj->y = intval($y / $scale); @@ -79,7 +87,7 @@ shuffle($properties); // create a blank image $image = imagecreatetruecolor($width, $height); $bg = imagecolorallocate($image, 0, 0, 0); -for($i = 0; $i < ($factorX * $factorY); $i++) { +for ($i = 0; $i < ($factor_x * $factor_y); $i++) { $propobj = $properties[$i]; // choose a color for the ellipse $col_ellipse = imagecolorallocate($image, $propobj->red, $propobj->green, $propobj->blue); @@ -88,8 +96,8 @@ for($i = 0; $i < ($factorX * $factorY); $i++) { } $checkchar = ''; -for($i = 0; $i < $charcount; $i++) { - $colnum = rand(1,2); +for ($i = 0; $i < $charcount; $i++) { + $colnum = rand(1, 2); $textcol = new stdClass(); $textcol->red = get_random_color(${'col_text'.$colnum}[0], ${'col_text'.$colnum}[1]); $textcol->green = get_random_color(${'col_text'.$colnum}[0], ${'col_text'.$colnum}[1]); @@ -99,7 +107,7 @@ for($i = 0; $i < $charcount; $i++) { $left_text = $i * $charwidth; $text = $nums[$i]; $checkchar .= $text; - ImageTTFText ($image, 30, $angle_text, $left_text, 35, $color_text, $fontfile, $text); + imagettftext($image, 30, $angle_text, $left_text, 35, $color_text, $fontfile, $text); } $SESSION->feedback->item->captcha->checkchar = $checkchar; @@ -114,5 +122,3 @@ function get_random_color($val1 = 0, $val2 = 255) { return rand($min, $max); } - - diff --git a/mod/feedback/item/feedback_item_class.php b/mod/feedback/item/feedback_item_class.php index ddcfcd71496..981aefd58ea 100644 --- a/mod/feedback/item/feedback_item_class.php +++ b/mod/feedback/item/feedback_item_class.php @@ -1,51 +1,75 @@ . abstract class feedback_item_base { - var $type; + protected $type; /** * constructor * */ - function __construct() { + public function __construct() { $this->init(); } //this function only can used after the call of build_editform() - function show_editform() { + public function show_editform() { $this->item_form->display(); } - - function is_cancelled() { + + public function is_cancelled() { return $this->item_form->is_cancelled(); } - function get_data() { - if($this->item = $this->item_form->get_data()) { + public function get_data() { + if ($this->item = $this->item_form->get_data()) { return true; } return false; } - - abstract function init(); - abstract function build_editform($item, $feedback, $cm); - abstract function save_item(); - abstract function check_value($value, $item); - abstract function create_value($data); - abstract function compare_value($item, $dbvalue, $dependvalue); - abstract function get_presentation($data); - abstract function get_hasvalue(); - abstract function can_switch_require(); + + public function value_type() { + return PARAM_RAW; + } + + public function value_is_array() { + return false; + } + + abstract public function init(); + abstract public function build_editform($item, $feedback, $cm); + abstract public function save_item(); + abstract public function check_value($value, $item); + abstract public function create_value($data); + abstract public function compare_value($item, $dbvalue, $dependvalue); + abstract public function get_presentation($data); + abstract public function get_hasvalue(); + abstract public function can_switch_require(); /** * @param object $worksheet a reference to the pear_spreadsheet-object - * @param integer $rowOffset + * @param integer $row_offset * @param object $item the db-object from feedback_item * @param integer $groupid * @param integer $courseid - * @return integer the new rowOffset - */ - abstract function excelprint_item(&$worksheet, $rowOffset, $xlsFormats, $item, $groupid, $courseid = false); + * @return integer the new row_offset + */ + abstract public function excelprint_item(&$worksheet, $row_offset, + $xls_formats, $item, + $groupid, $courseid = false); /** * @param $item the db-object from feedback_item @@ -53,16 +77,16 @@ abstract class feedback_item_base { * @param integer $groupid * @param integer $courseid * @return integer the new itemnr - */ - abstract function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false); - + */ + abstract public function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false); + /** * @param object $item the db-object from feedback_item * @param string $value a item-related value from feedback_values * @return string - */ - abstract function get_printval($item, $value); - + */ + abstract public function get_printval($item, $value); + /** * returns an Array with three values(typ, name, XXX) * XXX is also an Array (count of responses on type $this->type) @@ -71,9 +95,9 @@ abstract class feedback_item_base { * @param $groupid if given * @param $courseid if given * @return array - */ - abstract function get_analysed($item, $groupid = false, $courseid = false); - + */ + abstract public function get_analysed($item, $groupid = false, $courseid = false); + /** * print the item at the edit-page of feedback * @@ -81,8 +105,8 @@ abstract class feedback_item_base { * @param object $item * @return void */ - abstract function print_item_preview($item); - + abstract public function print_item_preview($item); + /** * print the item at the complete-page of feedback * @@ -92,7 +116,7 @@ abstract class feedback_item_base { * @param bool $highlightrequire * @return void */ - abstract function print_item_complete($item, $value = '', $highlightrequire = false); + abstract public function print_item_complete($item, $value = '', $highlightrequire = false); /** * print the item at the complete-page of feedback @@ -102,33 +126,55 @@ abstract class feedback_item_base { * @param string $value * @return void */ - abstract function print_item_show_value($item, $value = ''); + abstract public function print_item_show_value($item, $value = ''); } //a dummy class to realize pagebreaks class feedback_item_pagebreak extends feedback_item_base { - var $type = "pagebreak"; + protected $type = "pagebreak"; - function show_editform() {} - function is_cancelled() {} - function get_data() {} - function init() {} - function build_editform($item, $feedback, $cm) {} - function save_item() {} - function check_value($value, $item) {} - function create_value($data) {} - function compare_value($item, $dbvalue, $dependvalue) {} - function get_presentation($data) {} - function get_hasvalue() {} - function excelprint_item(&$worksheet, $rowOffset, $xlsFormats, $item, $groupid, $courseid = false) {} - function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) {} - function get_printval($item, $value) {} - function get_analysed($item, $groupid = false, $courseid = false) {} - function print_item_preview($item) {} - function print_item_complete($item, $value = '', $highlightrequire = false) {} - function print_item_show_value($item, $value = '') {} - function can_switch_require(){} + public function show_editform() { + } + public function is_cancelled() { + } + public function get_data() { + } + public function init() { + } + public function build_editform($item, $feedback, $cm) { + } + public function save_item() { + } + public function check_value($value, $item) { + } + public function create_value($data) { + } + public function compare_value($item, $dbvalue, $dependvalue) { + } + public function get_presentation($data) { + } + public function get_hasvalue() { + } + public function excelprint_item(&$worksheet, $row_offset, + $xls_formats, $item, + $groupid, $courseid = false) { + } + + public function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) { + } + public function get_printval($item, $value) { + } + public function get_analysed($item, $groupid = false, $courseid = false) { + } + public function print_item_preview($item) { + } + public function print_item_complete($item, $value = '', $highlightrequire = false) { + } + public function print_item_show_value($item, $value = '') { + } + public function can_switch_require() { + } } diff --git a/mod/feedback/item/feedback_item_form_class.php b/mod/feedback/item/feedback_item_form_class.php index d9cc8b22a6a..859b910e7ad 100644 --- a/mod/feedback/item/feedback_item_form_class.php +++ b/mod/feedback/item/feedback_item_form_class.php @@ -1,13 +1,27 @@ . -require_once $CFG->libdir.'/formslib.php'; +require_once($CFG->libdir.'/formslib.php'); define('FEEDBACK_ITEM_NAME_TEXTBOX_SIZE', 80); define('FEEDBACK_ITEM_LABEL_TEXTBOX_SIZE', 20); abstract class feedback_item_form extends moodleform { - function definition() { + public function definition() { $item = $this->_customdata['item']; //the item object - + //common is an array like: // array('cmid'=>$cm->id, // 'id'=>isset($item->id) ? $item->id : NULL, @@ -15,16 +29,16 @@ abstract class feedback_item_form extends moodleform { // 'items'=>$feedbackitems, // 'feedback'=>$feedback->id); $common = $this->_customdata['common']; - + //positionlist is an array with possible positions for the item location $positionlist = $this->_customdata['positionlist']; - + //the current position of the item $position = $this->_customdata['position']; - + $mform =& $this->_form; - - if($common['items']) { + + if ($common['items']) { $mform->addElement('select', 'dependitem', get_string('dependitem', 'feedback').' ', @@ -35,7 +49,7 @@ abstract class feedback_item_form extends moodleform { 'dependvalue', get_string('dependvalue', 'feedback'), array('size'=>FEEDBACK_ITEM_LABEL_TEXTBOX_SIZE, 'maxlength'=>255)); - }else { + } else { $mform->addElement('hidden', 'dependitem', 0); $mform->setType('dependitem', PARAM_INT); $mform->addElement('hidden', 'dependvalue', ''); @@ -47,23 +61,22 @@ abstract class feedback_item_form extends moodleform { get_string('position', 'feedback').' ', $positionlist); $position_select->setValue($position); - $mform->addElement('hidden', 'cmid', $common['cmid']); $mform->setType('cmid', PARAM_INT); - + $mform->addElement('hidden', 'id', $common['id']); $mform->setType('id', PARAM_INT); - + $mform->addElement('hidden', 'feedback', $common['feedback']); $mform->setType('feedback', PARAM_INT); - + $mform->addElement('hidden', 'template', 0); $mform->setType('template', PARAM_INT); - + $mform->setType('name', PARAM_RAW); $mform->setType('label', PARAM_ALPHANUM); - + $mform->addElement('hidden', 'typ', $this->type); $mform->setType('typ', PARAM_ALPHA); @@ -74,17 +87,24 @@ abstract class feedback_item_form extends moodleform { $mform->setType('options', PARAM_ALPHA); $buttonarray = array(); - if(!empty($item->id)){ - $buttonarray[] = &$mform->createElement('submit', 'update_item', get_string('update_item', 'feedback')); - $buttonarray[] = &$mform->createElement('submit', 'clone_item', get_string('save_as_new_item', 'feedback')); - }else{ + if (!empty($item->id)) { + $buttonarray[] = &$mform->createElement('submit', + 'update_item', + get_string('update_item', 'feedback')); + + $buttonarray[] = &$mform->createElement('submit', + 'clone_item', + get_string('save_as_new_item', 'feedback')); + } else { $mform->addElement('hidden', 'clone_item', 0); $mform->setType('clone_item', PARAM_INT); - $buttonarray[] = &$mform->createElement('submit', 'save_item', get_string('save_item', 'feedback')); + $buttonarray[] = &$mform->createElement('submit', + 'save_item', + get_string('save_item', 'feedback')); } $buttonarray[] = &$mform->createElement('cancel'); $mform->addGroup($buttonarray, 'buttonar', ' ', array(' '), false); - + } } diff --git a/mod/feedback/item/info/info_form.php b/mod/feedback/item/info/info_form.php index 8b205738078..daa61a273f9 100644 --- a/mod/feedback/item/info/info_form.php +++ b/mod/feedback/item/info/info_form.php @@ -1,17 +1,31 @@ . require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_form_class.php'); class feedback_info_form extends feedback_item_form { - var $type = "info"; + protected $type = "info"; + + public function definition() { - function definition() { - $item = $this->_customdata['item']; $common = $this->_customdata['common']; $positionlist = $this->_customdata['positionlist']; $position = $this->_customdata['position']; - + $mform =& $this->_form; $mform->addElement('header', 'general', get_string($this->type, 'feedback')); @@ -31,7 +45,10 @@ class feedback_info_form extends feedback_item_form { $options[1] = get_string('responsetime', 'feedback'); $options[2] = get_string('course'); $options[3] = get_string('coursecategory'); - $this->infotype = &$mform->addElement('select', 'presentation', get_string('infotype', 'feedback'), $options); + $this->infotype = &$mform->addElement('select', + 'presentation', + get_string('infotype', 'feedback'), + $options); parent::definition(); $this->set_data($item); diff --git a/mod/feedback/item/info/lib.php b/mod/feedback/item/info/lib.php index cefe0003d01..870c3287bb4 100644 --- a/mod/feedback/item/info/lib.php +++ b/mod/feedback/item/info/lib.php @@ -1,34 +1,49 @@ . + defined('MOODLE_INTERNAL') OR die('not allowed'); require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php'); class feedback_item_info extends feedback_item_base { - var $type = "info"; - var $commonparams; - var $item_form; - var $item; + protected $type = "info"; + private $commonparams; + private $item_form; + private $item; - function init() { + public function init() { } - function build_editform($item, $feedback, $cm) { + public function build_editform($item, $feedback, $cm) { global $DB, $CFG; require_once('info_form.php'); //get the lastposition number of the feedback_items $position = $item->position; $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); - if($position == -1){ + if ($position == -1) { $i_formselect_last = $lastposition + 1; $i_formselect_value = $lastposition + 1; $item->position = $lastposition + 1; - }else { + } else { $i_formselect_last = $lastposition; $i_formselect_value = $item->position; } //the elements for position dropdownlist - $positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true); + $positionlist = array_slice(range(0, $i_formselect_last), 1, $i_formselect_last, true); $item->presentation = empty($item->presentation) ? 1 : $item->presentation; $item->required = 0; @@ -36,47 +51,51 @@ class feedback_item_info extends feedback_item_base { //all items for dependitem $feedbackitems = feedback_get_depend_candidates_for_item($feedback, $item); $commonparams = array('cmid'=>$cm->id, - 'id'=>isset($item->id) ? $item->id : NULL, + 'id'=>isset($item->id) ? $item->id : null, 'typ'=>$item->typ, 'items'=>$feedbackitems, 'feedback'=>$feedback->id); //build the form - $this->item_form = new feedback_info_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position)); + $this->item_form = new feedback_info_form('edit_item.php', + array('item'=>$item, + 'common'=>$commonparams, + 'positionlist'=>$positionlist, + 'position' => $position)); } //this function only can used after the call of build_editform() - function show_editform() { + public function show_editform() { $this->item_form->display(); } - function is_cancelled() { + public function is_cancelled() { return $this->item_form->is_cancelled(); } - function get_data() { - if($this->item = $this->item_form->get_data()) { + public function get_data() { + if ($this->item = $this->item_form->get_data()) { return true; } return false; } - function save_item() { + public function save_item() { global $DB; - if(!$item = $this->item_form->get_data()) { + if (!$item = $this->item_form->get_data()) { return false; } - if(isset($item->clone_item) AND $item->clone_item) { + if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item $item->position++; } $item->hasvalue = $this->get_hasvalue(); - if(!$item->id) { + if (!$item->id) { $item->id = $DB->insert_record('feedback_item', $item); - }else { + } else { $DB->update_record('feedback_item', $item); } @@ -84,23 +103,22 @@ class feedback_item_info extends feedback_item_base { } //liefert eine Struktur ->name, ->data = array(mit Antworten) - function get_analysed($item, $groupid = false, $courseid = false) { + public function get_analysed($item, $groupid = false, $courseid = false) { $presentation = $item->presentation; - $aVal = null; - $aVal->data = null; - $aVal->name = $item->name; - //$values = get_records('feedback_value', 'item', $item->id); + $analysed_val = null; + $analysed_val->data = null; + $analysed_val->name = $item->name; $values = feedback_get_group_values($item, $groupid, $courseid); - if($values) { + if ($values) { $data = array(); $datavalue = new stdClass(); - foreach($values as $value) { + foreach ($values as $value) { switch($presentation) { case 1: $datavalue->value = $value->value; - $datavalue->show = UserDate($datavalue->value); + $datavalue->show = userdate($datavalue->value); break; case 2: $datavalue->value = $value->value; @@ -114,50 +132,54 @@ class feedback_item_info extends feedback_item_base { $data[] = $datavalue; } - $aVal->data = $data; + $analysed_val->data = $data; } - return $aVal; + return $analysed_val; } - function get_printval($item, $value) { + public function get_printval($item, $value) { - if(!isset($value->value)) return ''; - return UserDate($value->value); + if (!isset($value->value)) { + return ''; + } + return userdate($value->value); } - function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) { + public function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) { $analysed_item = $this->get_analysed($item, $groupid, $courseid); $data = $analysed_item->data; if (is_array($data)) { - echo ''. $itemnr . ' ('. $item->label .') ' . $item->name .''; - $sizeofdata = sizeof($data); + echo ''; + echo $itemnr.' ('.$item->label.') '.$item->name; + echo ''; + $sizeofdata = count($data); for ($i = 0; $i < $sizeofdata; $i++) { - echo '-  ' . str_replace("\n", '
', $data[$i]->show) . ''; + echo '-  '; + echo str_replace("\n", '
', $data[$i]->show); + echo ''; } } - // return $itemnr; } - function excelprint_item(&$worksheet, $rowOffset, $xlsFormats, $item, $groupid, $courseid = false) { + public function excelprint_item(&$worksheet, $row_offset, + $xls_formats, $item, + $groupid, $courseid = false) { $analysed_item = $this->get_analysed($item, $groupid, $courseid); - // $worksheet->setFormat(""); - $worksheet->write_string($rowOffset, 0, $item->label, $xlsFormats->head2); - $worksheet->write_string($rowOffset, 1, $item->name, $xlsFormats->head2); + $worksheet->write_string($row_offset, 0, $item->label, $xls_formats->head2); + $worksheet->write_string($row_offset, 1, $item->name, $xls_formats->head2); $data = $analysed_item->data; if (is_array($data)) { - // $worksheet->setFormat(""); - $worksheet->write_string($rowOffset, 2, $data[0]->show, $xlsFormats->value_bold); - $rowOffset++; - $sizeofdata = sizeof($data); + $worksheet->write_string($row_offset, 2, $data[0]->show, $xls_formats->value_bold); + $row_offset++; + $sizeofdata = count($data); for ($i = 1; $i < $sizeofdata; $i++) { - // $worksheet->setFormat(""); - $worksheet->write_string($rowOffset, 2, $data[$i]->show, $xlsFormats->default); - $rowOffset++; + $worksheet->write_string($row_offset, 2, $data[$i]->show, $xls_formats->default); + $row_offset++; } } - $rowOffset++; - return $rowOffset; + $row_offset++; + return $row_offset; } /** @@ -167,29 +189,52 @@ class feedback_item_info extends feedback_item_base { * @param object $item * @return void */ - function print_item_preview($item) { + public function print_item_preview($item) { global $USER, $DB, $OUTPUT; - $align = right_to_left() ? 'right' : 'left'; + $align = right_to_left() ? 'right' : 'left'; $presentation = $item->presentation; $requiredmark = ($item->required == 1)?'':''; - $feedback = $DB->get_record('feedback', array('id'=>$item->feedback)); - $course = $DB->get_record('course', array('id'=>$feedback->course)); - $coursecategory = $DB->get_record('course_categories', array('id'=>$course->category)); + if ($item->feedback) { + $courseid = $DB->get_field('feedback', 'course', array('id'=>$item->feedback)); + } else { // the item must be a template item + $cmid = required_param('id', PARAM_INT); + $courseid = $DB->get_field('course_modules', 'course', array('id'=>$cmid)); + } + if (!$course = $DB->get_record('course', array('id'=>$courseid))) { + print_error('error'); + } + if ($course->id !== SITEID) { + $coursecategory = $DB->get_record('course_categories', array('id'=>$course->category)); + } else { + $coursecategory = false; + } switch($presentation) { case 1: $itemvalue = time(); - $itemshowvalue = UserDate($itemvalue); + $itemshowvalue = userdate($itemvalue); break; case 2: $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); - $itemvalue = format_string($course->shortname, true, array('context' => $coursecontext)); + $itemvalue = format_string($course->shortname, + true, + array('context' => $coursecontext)); + $itemshowvalue = $itemvalue; break; case 3: - $itemvalue = format_string($coursecategory->name, true, array('context' => get_context_instance(CONTEXT_COURSECAT, $coursecategory->id))); - $itemshowvalue = $itemvalue; + if ($coursecategory) { + $category_context = get_context_instance(CONTEXT_COURSECAT, $coursecategory->id); + $itemvalue = format_string($coursecategory->name, + true, + array('context' => $category_context)); + + $itemshowvalue = $itemvalue; + } else { + $itemvalue = ''; + $itemshowvalue = ''; + } break; } @@ -197,16 +242,18 @@ class feedback_item_info extends feedback_item_base { echo ''; //print the presentation echo ''; } @@ -219,34 +266,52 @@ class feedback_item_info extends feedback_item_base { * @param bool $highlightrequire * @return void */ - function print_item_complete($item, $value = '', $highlightrequire = false) { + public function print_item_complete($item, $value = '', $highlightrequire = false) { global $USER, $DB, $OUTPUT; $align = right_to_left() ? 'right' : 'left'; $presentation = $item->presentation; - if($highlightrequire AND $item->required AND strval($value) == '') { + if ($highlightrequire AND $item->required AND strval($value) == '') { $highlight = ' missingrequire'; - }else { + } else { $highlight = ''; } $requiredmark = ($item->required == 1)?'':''; $feedback = $DB->get_record('feedback', array('id'=>$item->feedback)); $course = $DB->get_record('course', array('id'=>$feedback->course)); - $coursecategory = $DB->get_record('course_categories', array('id'=>$course->category)); + + if ($course->id !== SITEID) { + $coursecategory = $DB->get_record('course_categories', array('id'=>$course->category)); + } else { + $coursecategory = false; + } + switch($presentation) { case 1: $itemvalue = time(); - $itemshowvalue = UserDate($itemvalue); + $itemshowvalue = userdate($itemvalue); break; case 2: $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); - $itemvalue = format_string($course->shortname, true, array('context' => $coursecontext)); + $itemvalue = format_string($course->shortname, + true, + array('context' => $coursecontext)); + $itemshowvalue = $itemvalue; break; case 3: - $itemvalue = format_string($coursecategory->name, true, array('context' => get_context_instance(CONTEXT_COURSECAT, $coursecategory->id))); - $itemshowvalue = $itemvalue; + if ($coursecategory) { + $category_context = get_context_instance(CONTEXT_COURSECAT, $coursecategory->id); + $itemvalue = format_string($coursecategory->name, + true, + array('context' => $category_context)); + + $itemshowvalue = $itemvalue; + } else { + $itemvalue = ''; + $itemshowvalue = ''; + } break; } @@ -257,8 +322,8 @@ class feedback_item_info extends feedback_item_base { //print the presentation echo ''; } @@ -270,15 +335,15 @@ class feedback_item_info extends feedback_item_base { * @param string $value * @return void */ - function print_item_show_value($item, $value = '') { + public function print_item_show_value($item, $value = '') { global $USER, $DB, $OUTPUT; $align = right_to_left() ? 'right' : 'left'; $presentation = $item->presentation; $requiredmark = ($item->required == 1)?'':''; - if($presentation == 1) { - $value = $value ? UserDate($value) : ' '; + if ($presentation == 1) { + $value = $value ? userdate($value) : ' '; } //print the question and label @@ -293,11 +358,11 @@ class feedback_item_info extends feedback_item_base { echo $OUTPUT->box_end(); } - function check_value($value, $item) { + public function check_value($value, $item) { return true; } - function create_value($data) { + public function create_value($data) { $data = clean_text($data); return $data; } @@ -305,22 +370,22 @@ class feedback_item_info extends feedback_item_base { //compares the dbvalue with the dependvalue //the values can be the shortname of a course or the category name //the date is not compareable :(. - function compare_value($item, $dbvalue, $dependvalue) { - if($dbvalue == $dependvalue) { + public function compare_value($item, $dbvalue, $dependvalue) { + if ($dbvalue == $dependvalue) { return true; } return false; } - function get_presentation($data) { + public function get_presentation($data) { return $data->infotype; } - function get_hasvalue() { + public function get_hasvalue() { return 1; } - function can_switch_require() { + public function can_switch_require() { return false; } } diff --git a/mod/feedback/item/label/label_form.php b/mod/feedback/item/label/label_form.php index 43adeaa7dff..bb2c1cb8712 100644 --- a/mod/feedback/item/label/label_form.php +++ b/mod/feedback/item/label/label_form.php @@ -1,20 +1,34 @@ . require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_form_class.php'); class feedback_label_form extends feedback_item_form { - var $type = "label"; - var $area; + protected $type = "label"; + private $area; - function definition() { + public function definition() { global $CFG; - + $item = $this->_customdata['item']; $common = $this->_customdata['common']; $presentationoptions = $this->_customdata['presentationoptions']; $positionlist = $this->_customdata['positionlist']; $position = $this->_customdata['position']; - + $context = get_context_instance(CONTEXT_MODULE, $common['cmid']); $mform =& $this->_form; @@ -25,12 +39,11 @@ class feedback_label_form extends feedback_item_form { $mform->setType('template', PARAM_ALPHA); $mform->addElement('hidden', 'label', '-'); $mform->setType('label', PARAM_ALPHA); - - + $mform->addElement('header', 'general', get_string($this->type, 'feedback')); $mform->addElement('editor', 'presentation_editor', '', null, $presentationoptions); $mform->setType('presentation_editor', PARAM_CLEANHTML); - + parent::definition(); $this->set_data($item); diff --git a/mod/feedback/item/label/lib.php b/mod/feedback/item/label/lib.php index 6a1081a31dc..f1dcd28567d 100644 --- a/mod/feedback/item/label/lib.php +++ b/mod/feedback/item/label/lib.php @@ -1,57 +1,73 @@ . + defined('MOODLE_INTERNAL') OR die('not allowed'); require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php'); require_once($CFG->libdir.'/formslib.php'); class feedback_item_label extends feedback_item_base { - var $type = "label"; - var $presentationoptions = null; - var $commonparams; - var $item_form; - var $context; - var $item; + protected $type = "label"; + private $presentationoptions = null; + private $commonparams; + private $item_form; + private $context; + private $item; - function init() { + public function init() { global $CFG; - $this->presentationoptions = array('maxfiles' => EDITOR_UNLIMITED_FILES, 'trusttext'=>true); + $this->presentationoptions = array('maxfiles' => EDITOR_UNLIMITED_FILES, + 'trusttext'=>true); } - function build_editform($item, $feedback, $cm) { + public function build_editform($item, $feedback, $cm) { global $DB, $CFG; require_once('label_form.php'); //get the lastposition number of the feedback_items $position = $item->position; $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); - if($position == -1){ + if ($position == -1) { $i_formselect_last = $lastposition + 1; $i_formselect_value = $lastposition + 1; $item->position = $lastposition + 1; - }else { + } else { $i_formselect_last = $lastposition; $i_formselect_value = $item->position; } //the elements for position dropdownlist - $positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true); + $positionlist = array_slice(range(0, $i_formselect_last), 1, $i_formselect_last, true); //all items for dependitem $feedbackitems = feedback_get_depend_candidates_for_item($feedback, $item); $commonparams = array('cmid'=>$cm->id, - 'id'=>isset($item->id) ? $item->id : NULL, + 'id'=>isset($item->id) ? $item->id : null, 'typ'=>$item->typ, 'items'=>$feedbackitems, 'feedback'=>$feedback->id); $this->context = get_context_instance(CONTEXT_MODULE, $cm->id); - //preparing the editor for new file-api $item->presentationformat = FORMAT_HTML; $item->presentationtrust = 1; // Append editor context to presentation options, giving preference to existing context. - $this->presentationoptions = array_merge(array('context' => $this->context), $this->presentationoptions); + $this->presentationoptions = array_merge(array('context' => $this->context), + $this->presentationoptions); $item = file_prepare_standard_editor($item, 'presentation', //name of the form element @@ -62,33 +78,39 @@ class feedback_item_label extends feedback_item_base { $item->id); //build the form - $this->item_form = new feedback_label_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position, 'presentationoptions'=>$this->presentationoptions)); + $customdata = array('item' => $item, + 'common' => $commonparams, + 'positionlist' => $positionlist, + 'position' => $position, + 'presentationoptions' => $this->presentationoptions); + + $this->item_form = new feedback_label_form('edit_item.php', $customdata); } //this function only can used after the call of build_editform() - function show_editform() { + public function show_editform() { $this->item_form->display(); } - function is_cancelled() { + public function is_cancelled() { return $this->item_form->is_cancelled(); } - function get_data() { - if($this->item = $this->item_form->get_data()) { + public function get_data() { + if ($this->item = $this->item_form->get_data()) { return true; } return false; } - function save_item() { + public function save_item() { global $DB; - if(!$item = $this->item_form->get_data()) { + if (!$item = $this->item_form->get_data()) { return false; } - if(isset($item->clone_item) AND $item->clone_item) { + if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item $item->position++; } @@ -96,9 +118,9 @@ class feedback_item_label extends feedback_item_base { $item->presentation = ''; $item->hasvalue = $this->get_hasvalue(); - if(!$item->id) { + if (!$item->id) { $item->id = $DB->insert_record('feedback_item', $item); - }else { + } else { $DB->update_record('feedback_item', $item); } @@ -115,21 +137,21 @@ class feedback_item_label extends feedback_item_base { return $DB->get_record('feedback_item', array('id'=>$item->id)); } - function print_item($item){ + public function print_item($item) { global $DB, $CFG; require_once($CFG->libdir . '/filelib.php'); //is the item a template? - if(!$item->feedback AND $item->template) { + if (!$item->feedback AND $item->template) { $template = $DB->get_record('feedback_template', array('id'=>$item->template)); - if($template->ispublic) { + if ($template->ispublic) { $context = get_system_context(); - }else { + } else { $context = get_context_instance(CONTEXT_COURSE, $template->course); } $filearea = 'template'; - }else { + } else { $cm = get_coursemodule_from_instance('feedback', $item->feedback); $context = get_context_instance(CONTEXT_MODULE, $cm->id); $filearea = 'item'; @@ -138,7 +160,13 @@ class feedback_item_label extends feedback_item_base { $item->presentationformat = FORMAT_HTML; $item->presentationtrust = 1; - $output = file_rewrite_pluginfile_urls($item->presentation, 'pluginfile.php', $context->id, 'mod_feedback', $filearea, $item->id); + $output = file_rewrite_pluginfile_urls($item->presentation, + 'pluginfile.php', + $context->id, + 'mod_feedback', + $filearea, + $item->id); + echo format_text($output, FORMAT_HTML, array('overflowdiv'=>true)); } @@ -149,12 +177,14 @@ class feedback_item_label extends feedback_item_base { * @param object $item * @return void */ - function print_item_preview($item) { + public function print_item_preview($item) { global $OUTPUT, $DB; - if($item->dependitem) { - if($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) { - echo ' '; + if ($item->dependitem) { + if ($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) { + echo ' '; } } $this->print_item($item); @@ -169,7 +199,7 @@ class feedback_item_label extends feedback_item_base { * @param bool $highlightrequire * @return void */ - function print_item_complete($item, $value = '', $highlightrequire = false) { + public function print_item_complete($item, $value = '', $highlightrequire = false) { $this->print_item($item); } @@ -181,58 +211,62 @@ class feedback_item_label extends feedback_item_base { * @param string $value * @return void */ - function print_item_show_value($item, $value = '') { + public function print_item_show_value($item, $value = '') { $this->print_item($item); } - function create_value($data) { + public function create_value($data) { return false; } - function compare_value($item, $dbvalue, $dependvalue) { + public function compare_value($item, $dbvalue, $dependvalue) { return false; } //used by create_item and update_item functions, //when provided $data submitted from feedback_show_edit - function get_presentation($data) { - // $context = get_context_instance(CONTEXT_MODULE, $data->cmid); - - // $presentation = new stdClass(); - // $presentation->id = null; - // $presentation->definition = ''; - // $presentation->format = FORMAT_HTML; - - // $draftid_editor = file_get_submitted_draft_itemid('presentation'); - // $currenttext = file_prepare_draft_area($draftid_editor, $context->id, 'mod_feedback', 'item_label', $presentation->id, array('subdirs'=>true), $presentation->definition); - // $presentation->entry = array('text'=>$currenttext, 'format'=>$presentation->format, 'itemid'=>$draftid_editor); - - // return $data->presentation; + public function get_presentation($data) { } - function postupdate($item) { + public function postupdate($item) { global $DB; $context = get_context_instance(CONTEXT_MODULE, $item->cmid); - $item = file_postupdate_standard_editor($item, 'presentation', $this->presentationoptions, $context, 'mod_feedback', 'item', $item->id); + $item = file_postupdate_standard_editor($item, + 'presentation', + $this->presentationoptions, + $context, + 'mod_feedback', + 'item', + $item->id); - // $item = new stdClass(); - // $item->id = $data->id $DB->update_record('feedback_item', $item); return $item->id; } - function get_hasvalue() { + public function get_hasvalue() { return 0; } - function can_switch_require() { + public function can_switch_require() { return false; } - function check_value($value, $item) {} - function excelprint_item(&$worksheet, $rowOffset, $xlsFormats, $item, $groupid, $courseid = false) {} - function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) {} - function get_printval($item, $value) {} - function get_analysed($item, $groupid = false, $courseid = false) {} + public function check_value($value, $item) { + } + + public function excelprint_item(&$worksheet, + $row_offset, + $xls_formats, + $item, + $groupid, + $courseid = false) { + } + + public function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) { + } + public function get_printval($item, $value) { + } + public function get_analysed($item, $groupid = false, $courseid = false) { + } } diff --git a/mod/feedback/item/multichoice/lib.php b/mod/feedback/item/multichoice/lib.php index 30402b26ecc..3f46a1054aa 100644 --- a/mod/feedback/item/multichoice/lib.php +++ b/mod/feedback/item/multichoice/lib.php @@ -1,4 +1,19 @@ . + defined('MOODLE_INTERNAL') OR die('not allowed'); require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php'); @@ -9,32 +24,32 @@ define('FEEDBACK_MULTICHOICE_IGNOREEMPTY', 'i'); define('FEEDBACK_MULTICHOICE_HIDENOSELECT', 'h'); class feedback_item_multichoice extends feedback_item_base { - var $type = "multichoice"; - var $commonparams; - var $item_form; - var $item; + protected $type = "multichoice"; + private $commonparams; + private $item_form; + private $item; - function init() { + public function init() { } - function build_editform($item, $feedback, $cm) { + public function build_editform($item, $feedback, $cm) { global $DB, $CFG; require_once('multichoice_form.php'); //get the lastposition number of the feedback_items $position = $item->position; $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); - if($position == -1){ + if ($position == -1) { $i_formselect_last = $lastposition + 1; $i_formselect_value = $lastposition + 1; $item->position = $lastposition + 1; - }else { + } else { $i_formselect_last = $lastposition; $i_formselect_value = $item->position; } //the elements for position dropdownlist - $positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true); + $positionlist = array_slice(range(0, $i_formselect_last), 1, $i_formselect_last, true); $item->presentation = empty($item->presentation) ? '' : $item->presentation; $info = $this->get_info($item); @@ -45,39 +60,45 @@ class feedback_item_multichoice extends feedback_item_base { //all items for dependitem $feedbackitems = feedback_get_depend_candidates_for_item($feedback, $item); $commonparams = array('cmid'=>$cm->id, - 'id'=>isset($item->id) ? $item->id : NULL, + 'id'=>isset($item->id) ? $item->id : null, 'typ'=>$item->typ, 'items'=>$feedbackitems, 'feedback'=>$feedback->id); //build the form - $this->item_form = new feedback_multichoice_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position, 'info'=>$info)); + $customdata = array('item' => $item, + 'common' => $commonparams, + 'positionlist' => $positionlist, + 'position' => $position, + 'info' => $info); + + $this->item_form = new feedback_multichoice_form('edit_item.php', $customdata); } //this function only can used after the call of build_editform() - function show_editform() { + public function show_editform() { $this->item_form->display(); } - function is_cancelled() { + public function is_cancelled() { return $this->item_form->is_cancelled(); } - function get_data() { - if($this->item = $this->item_form->get_data()) { + public function get_data() { + if ($this->item = $this->item_form->get_data()) { return true; } return false; } - function save_item() { + public function save_item() { global $DB; - if(!$item = $this->item_form->get_data()) { + if (!$item = $this->item_form->get_data()) { return false; } - if(isset($item->clone_item) AND $item->clone_item) { + if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item $item->position++; } @@ -86,9 +107,9 @@ class feedback_item_multichoice extends feedback_item_base { $this->set_hidenoselect($item, $item->hidenoselect); $item->hasvalue = $this->get_hasvalue(); - if(!$item->id) { + if (!$item->id) { $item->id = $DB->insert_record('feedback_item', $item); - }else { + } else { $DB->update_record('feedback_item', $item); } @@ -96,30 +117,32 @@ class feedback_item_multichoice extends feedback_item_base { } - //liefert ein eindimensionales Array mit drei Werten(typ, name, XXX) - //XXX ist ein eindimensionales Array (anzahl der Antworten bei Typ Radio) Jedes Element ist eine Struktur (answertext, answercount) - function get_analysed($item, $groupid = false, $courseid = false) { + //gets an array with three values(typ, name, XXX) + //XXX is an object with answertext, answercount and quotient + public function get_analysed($item, $groupid = false, $courseid = false) { $info = $this->get_info($item); - $analysedItem = array(); - $analysedItem[] = $item->typ; - $analysedItem[] = $item->name; - //die moeglichen Antworten extrahieren + $analysed_item = array(); + $analysed_item[] = $item->typ; + $analysed_item[] = $item->name; + + //get the possible answers $answers = null; - // $presentation = ''; - // @list($presentation) = explode(FEEDBACK_RADIO_ADJUST_SEP, $item->presentation); //remove the adjustment-info - $answers = explode (FEEDBACK_MULTICHOICE_LINE_SEP, $info->presentation); - if(!is_array($answers)) return null; + if (!is_array($answers)) { + return null; + } - //die Werte holen + //get the values $values = feedback_get_group_values($item, $groupid, $courseid, $this->ignoreempty($item)); - if(!$values) return null; - //schleife ueber den Werten und ueber die Antwortmoeglichkeiten + if (!$values) { + return null; + } - $analysedAnswer = array(); - if($info->subtype == 'c') { - $sizeofanswers = sizeof($answers); + //get answertext, answercount and quotient for each answer + $analysed_answer = array(); + if ($info->subtype == 'c') { + $sizeofanswers = count($answers); for ($i = 1; $i <= $sizeofanswers; $i++) { $ans = null; $ans->answertext = $answers[$i-1]; @@ -129,15 +152,15 @@ class feedback_item_multichoice extends feedback_item_base { $vallist = explode(FEEDBACK_MULTICHOICE_LINE_SEP, $value->value); foreach ($vallist as $val) { if ($val == $i) { - $ans->answercount++; + $ans->answercount++; } } } - $ans->quotient = $ans->answercount / sizeof($values); - $analysedAnswer[] = $ans; + $ans->quotient = $ans->answercount / count($values); + $analysed_answer[] = $ans; } - }else { - $sizeofanswers = sizeof($answers); + } else { + $sizeofanswers = count($answers); for ($i = 1; $i <= $sizeofanswers; $i++) { $ans = null; $ans->answertext = $answers[$i-1]; @@ -148,15 +171,15 @@ class feedback_item_multichoice extends feedback_item_base { $ans->answercount++; } } - $ans->quotient = $ans->answercount / sizeof($values); - $analysedAnswer[] = $ans; + $ans->quotient = $ans->answercount / count($values); + $analysed_answer[] = $ans; } } - $analysedItem[] = $analysedAnswer; - return $analysedItem; + $analysed_item[] = $analysed_answer; + return $analysed_item; } - function get_printval($item, $value) { + public function get_printval($item, $value) { $info = $this->get_info($item); $printval = ''; @@ -165,14 +188,12 @@ class feedback_item_multichoice extends feedback_item_base { return $printval; } - // @list($presentation) = explode(FEEDBACK_RADIO_ADJUST_SEP, $item->presentation); //remove the adjustment-info - $presentation = explode (FEEDBACK_MULTICHOICE_LINE_SEP, $info->presentation); if ($info->subtype == 'c') { $vallist = array_values(explode (FEEDBACK_MULTICHOICE_LINE_SEP, $value->value)); - $sizeofvallist = sizeof($vallist); - $sizeofpresentation = sizeof($presentation); + $sizeofvallist = count($vallist); + $sizeofpresentation = count($presentation); for ($i = 0; $i < $sizeofvallist; $i++) { for ($k = 0; $k < $sizeofpresentation; $k++) { if ($vallist[$i] == ($k + 1)) {//Die Werte beginnen bei 1, das Array aber mit 0 @@ -183,8 +204,8 @@ class feedback_item_multichoice extends feedback_item_base { } } else { $index = 1; - foreach($presentation as $pres){ - if ($value->value == $index){ + foreach ($presentation as $pres) { + if ($value->value == $index) { $printval = $pres; break; } @@ -194,61 +215,83 @@ class feedback_item_multichoice extends feedback_item_base { return $printval; } - function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) { + public function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) { $sep_dec = get_string('separator_decimal', 'feedback'); - if(substr($sep_dec, 0, 2) == '[['){ + if (substr($sep_dec, 0, 2) == '[[') { $sep_dec = FEEDBACK_DECIMAL; } $sep_thous = get_string('separator_thousand', 'feedback'); - if(substr($sep_thous, 0, 2) == '[['){ + if (substr($sep_thous, 0, 2) == '[[') { $sep_thous = FEEDBACK_THOUSAND; } - $analysedItem = $this->get_analysed($item, $groupid, $courseid); - if($analysedItem) { - // $itemnr++; - $itemname = $analysedItem[1]; - echo ''. $itemnr . ' ('. $item->label .') ' . $itemname .''; - $analysedVals = $analysedItem[2]; + $analysed_item = $this->get_analysed($item, $groupid, $courseid); + if ($analysed_item) { + $itemname = $analysed_item[1]; + echo ''; + echo $itemnr.' ('.$item->label.') '.$itemname; + echo ''; + + $analysed_vals = $analysed_item[2]; $pixnr = 0; - foreach($analysedVals as $val) { + foreach ($analysed_vals as $val) { $intvalue = $pixnr % 10; $pix = "pics/$intvalue.gif"; $pixnr++; $pixwidth = intval($val->quotient * FEEDBACK_MAX_PIX_LENGTH); $quotient = number_format(($val->quotient * 100), 2, $sep_dec, $sep_thous); - echo '-  ' . trim($val->answertext) . ':'.$intvalue.' ' . $val->answercount . (($val->quotient > 0)?' ('. $quotient . ' %)':'').''; + $str_quotient = ''; + if ($val->quotient > 0) { + $str_quotient = ' ('. $quotient . ' %)'; + } + echo ''; + echo ' + -  '.trim($val->answertext).': + + + '.$intvalue.' +  '.$val->answercount.$str_quotient.' + '; + echo ''; } } - // return $itemnr; } - function excelprint_item(&$worksheet, $rowOffset, $xlsFormats, $item, $groupid, $courseid = false) { + public function excelprint_item(&$worksheet, $row_offset, + $xls_formats, $item, + $groupid, $courseid = false) { + $analysed_item = $this->get_analysed($item, $groupid, $courseid); $data = $analysed_item[2]; - // $worksheet->setFormat(""); //frage schreiben - $worksheet->write_string($rowOffset, 0, $item->label, $xlsFormats->head2); - $worksheet->write_string($rowOffset, 1, $analysed_item[1], $xlsFormats->head2); + $worksheet->write_string($row_offset, 0, $item->label, $xls_formats->head2); + $worksheet->write_string($row_offset, 1, $analysed_item[1], $xls_formats->head2); if (is_array($data)) { - $sizeofdata = sizeof($data); + $sizeofdata = count($data); for ($i = 0; $i < $sizeofdata; $i++) { - $aData = $data[$i]; + $analysed_data = $data[$i]; - // $worksheet->setFormat(""); - $worksheet->write_string($rowOffset, $i + 2, trim($aData->answertext), $xlsFormats->head2); + $worksheet->write_string($row_offset, + $i + 2, + trim($analysed_data->answertext), + $xls_formats->head2); - // $worksheet->setFormat(""); - $worksheet->write_number($rowOffset + 1, $i + 2, $aData->answercount, $xlsFormats->default); - // $worksheet->setFormat(""); - $worksheet->write_number($rowOffset + 2, $i + 2, $aData->quotient, $xlsFormats->procent); + $worksheet->write_number($row_offset + 1, + $i + 2, + $analysed_data->answercount, + $xls_formats->default); + + $worksheet->write_number($row_offset + 2, + $i + 2, + $analysed_data->quotient, + $xls_formats->procent); } } - $rowOffset += 3; - return $rowOffset; + $row_offset += 3; + return $row_offset; } /** @@ -258,25 +301,27 @@ class feedback_item_multichoice extends feedback_item_base { * @param object $item * @return void */ - function print_item_preview($item) { + public function print_item_preview($item) { global $OUTPUT, $DB; $info = $this->get_info($item); $align = right_to_left() ? 'right' : 'left'; $presentation = explode (FEEDBACK_MULTICHOICE_LINE_SEP, $info->presentation); - + $str_required_mark = ''; //test if required and no value is set so we have to mark this item //we have to differ check and the other subtypes - $requiredmark = ($item->required == 1) ? '' : ''; + $requiredmark = ($item->required == 1) ? $str_required_mark : ''; //print the question and label echo ''; @@ -286,23 +331,30 @@ class feedback_item_multichoice extends feedback_item_base { $index = 1; $checked = ''; echo '
    '; - if($info->horizontal) { + if ($info->horizontal) { $hv = 'h'; - }else { + } else { $hv = 'v'; } - if($info->subtype == 'r' AND !$this->hidenoselect($item)) { + if ($info->subtype == 'r' AND !$this->hidenoselect($item)) { //print the "not_selected" item on radiobuttons ?> - + get_info($item); $align = right_to_left() ? 'right' : 'left'; + if ($value == null) { + $value = array(); + } $presentation = explode (FEEDBACK_MULTICHOICE_LINE_SEP, $info->presentation); - + $str_required_mark = ''; //test if required and no value is set so we have to mark this item //we have to differ check and the other subtypes - if($info->subtype == 'c') { + // if ($info->subtype == 'c') { if (is_array($value)) { $values = $value; - }else { + } else { $values = explode(FEEDBACK_MULTICHOICE_LINE_SEP, $value); } - if($highlightrequire AND $item->required AND $values[0] == '') { - $highlight = ' missingrequire'; - }else { - $highlight = ''; + $highlight = ''; + if ($highlightrequire AND $item->required) { + if (count($values) == 0 OR $values[0] == '' OR $values[0] == 0) { + $highlight = ' missingrequire'; + } } - $requiredmark = ($item->required == 1)?'':''; - }else { - if($highlightrequire AND $item->required AND intval($value) <= 0) { - $highlight = ' missingrequire'; - }else { - $highlight = ''; - } - $requiredmark = ($item->required == 1)?'':''; - } + $requiredmark = ($item->required == 1) ? $str_required_mark : ''; + // } else { + // if ($highlightrequire AND $item->required AND intval($value) <= 0) { + // $highlight = ' missingrequire'; + // } else { + // $highlight = ''; + // } + // $requiredmark = ($item->required == 1) ? $str_required_mark : ''; + // } //print the question and label echo '