From dd46d88e2723c9afe99bca7830d3b0e5b6f550dd Mon Sep 17 00:00:00 2001 From: tjhunt Date: Wed, 21 Mar 2007 23:04:51 +0000 Subject: [PATCH] Fix whitespace problems and Eclipse warnings in Item Analysis quiz report. --- mod/quiz/report/analysis/report.php | 212 ++++++++++++++-------------- 1 file changed, 107 insertions(+), 105 deletions(-) diff --git a/mod/quiz/report/analysis/report.php b/mod/quiz/report/analysis/report.php index a793f0dd26..a269101948 100644 --- a/mod/quiz/report/analysis/report.php +++ b/mod/quiz/report/analysis/report.php @@ -1,10 +1,8 @@ libdir.'/tablelib.php'); -/// Item analysis displays a table of quiz questions and their performance - +/// Item analysis displays a table of quiz questions and their performance class quiz_report extends quiz_default_report { function display($quiz, $cm, $course) { /// This function just displays the report @@ -17,7 +15,7 @@ class quiz_report extends quiz_default_report { $this->print_header_and_tabs($cm, $course, $quiz, $reportmode="analysis"); } /// Construct the table for this particular report - + if (!$quiz->questions) { print_heading($strnoattempts); return true; @@ -30,7 +28,7 @@ class quiz_report extends quiz_default_report { } else { $changegroup = optional_param('group', -1, PARAM_INT); - $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup); + $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup); } } else { $currentgroup = false; @@ -50,12 +48,12 @@ class quiz_report extends quiz_default_report { $$option = $SESSION->quiz_analysis_table[$option] = $urlparam; } } - + $scorelimit = $quiz->sumgrades * $lowmarklimit/ 100; - + // ULPGC ecastro DEBUG this is here to allow for different SQL to select attempts switch ($attemptselection) { - case QUIZ_ALLATTEMPTS : + case QUIZ_ALLATTEMPTS : $limit = ''; $group = ''; break; @@ -65,11 +63,11 @@ class quiz_report extends quiz_default_report { break; case QUIZ_FIRSTATTEMPT : $limit = ', min(qa.timemodified) '; - $group = ' GROUP BY qa.userid '; + $group = ' GROUP BY qa.userid '; break; - case QUIZ_LASTATTEMPT : + case QUIZ_LASTATTEMPT : $limit = ', max(qa.timemodified) '; - $group = ' GROUP BY qa.userid '; + $group = ' GROUP BY qa.userid '; break; } @@ -80,13 +78,14 @@ class quiz_report extends quiz_default_report { $sql = 'SELECT qa.* FROM '.$CFG->prefix.'user u '. 'JOIN '.$CFG->prefix.'quiz_attempts qa ON u.id = qa.userid '; - if (!empty($currentgroup)) { - $sql .= groups_members_join_sql($currentgroup); - } - $sql .= ' WHERE qa.quiz = '.$quiz->id. // ULPGC ecastro - ' AND ( qa.sumgrades >= '.$scorelimit.' ) '; - // ^^^^^^ es posible seleccionar aqu� TODOS los quizzes, como quiere Jussi, - // pero habr�a que llevar la cuenta ed cada quiz para restaura las preguntas (quizquestions, states) + if (!empty($currentgroup)) { + $sql .= groups_members_join_sql($currentgroup); + } + $sql .= ' WHERE qa.quiz = '.$quiz->id. // ULPGC ecastro + ' AND ( qa.sumgrades >= '.$scorelimit.' ) '; + // ^^^^^^ es posible seleccionar aqu� TODOS los quizzes, como quiere Jussi, + // pero habr�a que llevar la cuenta ed cada quiz para restaura las preguntas (quizquestions, states) + /// Fetch the attempts $attempts = get_records_sql($sql); @@ -99,7 +98,7 @@ class quiz_report extends quiz_default_report { /// Here we rewiew all attempts and record data to construct the table $questions = array(); $statstable = array(); - $questionarray = array(); + $questionarray = array(); foreach ($attempts as $attempt) { $questionarray[] = quiz_questions_in_quiz($attempt->layout); } @@ -110,7 +109,7 @@ class quiz_report extends quiz_default_report { foreach ($attempts as $attempt) { switch ($attemptselection) { - case QUIZ_ALLATTEMPTS : + case QUIZ_ALLATTEMPTS : $userscore = 0; // can be anything, not used break; case QUIZ_HIGHESTATTEMPT : @@ -119,7 +118,7 @@ class quiz_report extends quiz_default_report { case QUIZ_FIRSTATTEMPT : $userscore = $attempt->timemodified; break; - case QUIZ_LASTATTEMPT : + case QUIZ_LASTATTEMPT : $userscore = $attempt->timemodified; break; } @@ -135,7 +134,7 @@ class quiz_report extends quiz_default_report { if (!$quizquestions = get_records_sql($sql)) { error('No questions found'); } - + // Load the question type specific information if (!get_question_options($quizquestions)) { error('Could not load question options'); @@ -147,7 +146,7 @@ class quiz_report extends quiz_default_report { } $numbers = explode(',', $questionlist); $statsrow = array(); - foreach ($numbers as $i) { + foreach ($numbers as $i) { if (!isset($quizquestions[$i]) or !isset($states[$i])) { continue; } @@ -155,7 +154,7 @@ class quiz_report extends quiz_default_report { $q = get_question_responses($quizquestions[$i], $states[$i]); if (empty($q)){ continue; - } + } $qid = $q->id; if (!isset($questions[$qid])) { $questions[$qid]['id'] = $qid; @@ -166,14 +165,15 @@ class quiz_report extends quiz_default_report { $questions[$qid]['rcounts'][$answer] = 0; $questions[$qid]['credits'][$answer] = $r->credit; $statsrow[$qid] = 0; - } + } } $responses = get_question_actual_response($quizquestions[$i], $states[$i]); foreach ($responses as $resp){ if ($resp) { - if ($key = array_search($resp, $questions[$qid]['responses'])) { + if ($key = array_search($resp, $questions[$qid]['responses'])) { $questions[$qid]['rcounts'][$key]++; } else { + $test = new stdClass; $test->responses = $QTYPES[$quizquestions[$i]->qtype]->get_correct_responses($quizquestions[$i], $states[$i]); if ($key = $QTYPES[$quizquestions[$i]->qtype]->check_response($quizquestions[$i], $states[$i], $test)) { $questions[$qid]['rcounts'][$key]++; @@ -187,11 +187,11 @@ class quiz_report extends quiz_default_report { } $statsrow[$qid] = get_question_fraction_grade($quizquestions[$i], $states[$i]); } - $attemptscores[$attempt->id] = $attempt->sumgrades; + $attemptscores[$attempt->id] = $attempt->sumgrades; $statstable[$attempt->id] = $statsrow; } } // Statistics Data table built - + unset($attempts); unset($quizquestions); unset($states); @@ -207,7 +207,7 @@ class quiz_report extends quiz_default_report { } unset($attemptscores); unset($statstable); - + /// Now check if asked download of data if ($download = optional_param('download', NULL)) { $filename = clean_filename("$course->shortname ".format_string($quiz->name,true)); @@ -215,23 +215,23 @@ class quiz_report extends quiz_default_report { case "Excel" : $this->Export_Excel($questions, $filename); break; - case "ODS": + case "ODS": $this->Export_ODS($questions, $filename); break; - case "CSV": + case "CSV": $this->Export_CSV($questions, $filename); break; } } - + /// Construct the table for this particular report $tablecolumns = array('id', 'qname', 'responses', 'credits', 'rcounts', 'rpercent', 'facility', 'qsd','disc_index', 'disc_coeff'); - $tableheaders = array(get_string('qidtitle','quiz_analysis'), get_string('qtexttitle','quiz_analysis'), - get_string('responsestitle','quiz_analysis'), get_string('rfractiontitle','quiz_analysis'), - get_string('rcounttitle','quiz_analysis'), get_string('rpercenttitle','quiz_analysis'), - get_string('facilitytitle','quiz_analysis'), get_string('stddevtitle','quiz_analysis'), - get_string('dicsindextitle','quiz_analysis'), get_string('disccoefftitle','quiz_analysis')); + $tableheaders = array(get_string('qidtitle','quiz_analysis'), get_string('qtexttitle','quiz_analysis'), + get_string('responsestitle','quiz_analysis'), get_string('rfractiontitle','quiz_analysis'), + get_string('rcounttitle','quiz_analysis'), get_string('rpercenttitle','quiz_analysis'), + get_string('facilitytitle','quiz_analysis'), get_string('stddevtitle','quiz_analysis'), + get_string('dicsindextitle','quiz_analysis'), get_string('disccoefftitle','quiz_analysis')); $table = new flexible_table('mod-quiz-report-itemanalysis'); @@ -242,16 +242,16 @@ class quiz_report extends quiz_default_report { $table->sortable(true); $table->collapsible(true); $table->initialbars(false); - + $table->column_class('id', 'numcol'); $table->column_class('credits', 'numcol'); $table->column_class('rcounts', 'numcol'); $table->column_class('rpercent', 'numcol'); $table->column_class('facility', 'numcol'); - $table->column_class('qsd', 'numcol'); + $table->column_class('qsd', 'numcol'); $table->column_class('disc_index', 'numcol'); $table->column_class('disc_coeff', 'numcol'); - + $table->column_suppress('id'); $table->column_suppress('qname'); $table->column_suppress('facility'); @@ -262,19 +262,19 @@ class quiz_report extends quiz_default_report { $table->set_attribute('cellspacing', '0'); $table->set_attribute('id', 'itemanalysis'); $table->set_attribute('class', 'generaltable generalbox'); - + // Start working -- this is necessary as soon as the niceties are over $table->setup(); $tablesort = $table->get_sql_sort(); - $sorts = explode(",",trim($tablesort)); + $sorts = explode(",",trim($tablesort)); if ($tablesort and is_array($sorts)) { $sortindex = array(); $sortorder = array (); foreach ($sorts as $sort) { $data = explode(" ",trim($sort)); $sortindex[] = trim($data[0]); - $s = trim($data[1]); + $s = trim($data[1]); if ($s=="ASC") { $sortorder[] = SORT_ASC; } else { @@ -292,30 +292,31 @@ class quiz_report extends quiz_default_report { } } - // Now it is time to page the data, simply slice the keys in the array + // Now it is time to page the data, simply slice the keys in the array if (!isset($pagesize) || ((int)$pagesize < 1) ){ $pagesize = 10; } $table->pagesize($pagesize, count($questions)); $start = $table->get_page_start(); $pagequestions = array_slice(array_keys($questions), $start, $pagesize); - + foreach($pagequestions as $qnum) { $q = $questions[$qnum]; $qid = $q['id']; - $question = get_record('question', 'id', $qid); + $question = get_record('question', 'id', $qid); $qnumber = " (".link_to_popup_window('/question/question.php?id='.$qid,'editquestion', $qid, 450, 550, get_string('edit'), 'none', true ).") "; $qname = '
'.format_text($question->name." : ", $question->questiontextformat, NULL, $quiz->course).'
'; $qicon = print_question_icon($question, false, true); $qreview = quiz_get_question_review($quiz, $question); - $qtext = format_text($question->questiontext, $question->questiontextformat, NULL, $quiz->course); + $qtext = format_text($question->questiontext, $question->questiontextformat, NULL, $quiz->course); $qquestion = $qname."\n".$qtext."\n"; - + + $format_options = new stdClass; $format_options->para = false; $format_options->newlines = false; unset($responses); foreach ($q['responses'] as $aid=>$resp){ - unset($response); + $response = new stdClass; if ($q['credits'][$aid] <= 0) { $qclass = 'uncorrect'; } elseif ($q['credits'][$aid] == 1) { @@ -323,26 +324,26 @@ class quiz_report extends quiz_default_report { } else { $qclass = 'partialcorrect'; } - $response->credit = '('.format_float($q['credits'][$aid],2).') '; + $response->credit = '('.format_float($q['credits'][$aid],2).') '; $response->text = ''.format_text("$resp", FORMAT_MOODLE, $format_options, $quiz->course).' '; $count = $q['rcounts'][$aid].'/'.$q['count']; $response->rcount = $count; // format_text("$count", FORMAT_MOODLE, $format_options, $quiz->course); $response->rpercent = '('.format_float($q['rcounts'][$aid]/$q['count']*100,0).'%)'; $responses[] = $response; } - + $facility = format_float($q['facility']*100,0)." %"; $qsd = format_float($q['qsd'],3); $di = format_float($q['disc_index'],2); $dc = format_float($q['disc_coeff'],2); - + $response = array_shift($responses); $table->add_data(array($qnumber."\n
".$qicon."\n ".$qreview, $qquestion, $response->text, $response->credit, $response->rcount, $response->rpercent, $facility, $qsd, $di, $dc)); foreach($responses as $response) { $table->add_data(array('', '', $response->text, $response->credit, $response->rcount, $response->rpercent, '', '', '', '')); } } - + print_heading_with_help(get_string("analysistitle", "quiz_analysis"),"itemanalysis", "quiz"); echo '
'; @@ -385,9 +386,9 @@ class quiz_report extends quiz_default_report { echo ''; echo ''; echo ''; - echo '
'; + echo ''; echo "\n"; - + echo ''; $options = array(); $options["id"] = "$cm->id"; @@ -395,17 +396,17 @@ class quiz_report extends quiz_default_report { $options["mode"] = "analysis"; $options['sesskey'] = $USER->sesskey; $options["noheader"] = "yes"; - echo '\n"; - echo '\n"; + echo '\n"; - + echo "\n"; + if (file_exists("$CFG->libdir/phpdocwriter/lib/include.php")) { - echo '\n"; @@ -435,7 +436,7 @@ class quiz_report extends quiz_default_report { if ($attemptscores[$aid]<=$bottom){ $bottom_scores +=$qrow[$qid]; $bottom_count++; - } + } } } $n = count($qstats); @@ -447,7 +448,7 @@ class quiz_report extends quiz_default_report { $sumq2 = $sumx2[1]; $sumxy = stats_sumxy($qstats, array(0,0)); $sumgq = $sumxy[0]; - + $q['count'] = $n; $q['facility'] = $sumq/$n; if ($n<2) { @@ -513,22 +514,22 @@ class quiz_report extends quiz_default_report { /// Here starts workshhet headers $myxls->write_string(0,0,$sheettitle,$formatb); - $headers = array(get_string('qidtitle','quiz_analysis'), get_string('qtypetitle','quiz_analysis'), - get_string('qnametitle','quiz_analysis'), get_string('qtexttitle','quiz_analysis'), - get_string('responsestitle','quiz_analysis'), get_string('rfractiontitle','quiz_analysis'), - get_string('rcounttitle','quiz_analysis'), get_string('rpercenttitle','quiz_analysis'), - get_string('qcounttitle','quiz_analysis'), - get_string('facilitytitle','quiz_analysis'), get_string('stddevtitle','quiz_analysis'), - get_string('dicsindextitle','quiz_analysis'), get_string('disccoefftitle','quiz_analysis')); + $headers = array(get_string('qidtitle','quiz_analysis'), get_string('qtypetitle','quiz_analysis'), + get_string('qnametitle','quiz_analysis'), get_string('qtexttitle','quiz_analysis'), + get_string('responsestitle','quiz_analysis'), get_string('rfractiontitle','quiz_analysis'), + get_string('rcounttitle','quiz_analysis'), get_string('rpercenttitle','quiz_analysis'), + get_string('qcounttitle','quiz_analysis'), + get_string('facilitytitle','quiz_analysis'), get_string('stddevtitle','quiz_analysis'), + get_string('dicsindextitle','quiz_analysis'), get_string('disccoefftitle','quiz_analysis')); $col = 0; foreach ($headers as $item) { $myxls->write(2,$col,$item,$formatbc); $col++; } - + $row = 3; - foreach($questions as $q) { + foreach($questions as $q) { $rows = $this->print_row_stats_data($q); foreach($rows as $rowdata){ $col = 0; @@ -592,22 +593,22 @@ class quiz_report extends quiz_default_report { /// Here starts workshhet headers $myxls->write_string(0,0,$sheettitle,$formatb); - $headers = array(get_string('qidtitle','quiz_analysis'), get_string('qtypetitle','quiz_analysis'), - get_string('qnametitle','quiz_analysis'), get_string('qtexttitle','quiz_analysis'), - get_string('responsestitle','quiz_analysis'), get_string('rfractiontitle','quiz_analysis'), - get_string('rcounttitle','quiz_analysis'), get_string('rpercenttitle','quiz_analysis'), - get_string('qcounttitle','quiz_analysis'), - get_string('facilitytitle','quiz_analysis'), get_string('stddevtitle','quiz_analysis'), - get_string('dicsindextitle','quiz_analysis'), get_string('disccoefftitle','quiz_analysis')); + $headers = array(get_string('qidtitle','quiz_analysis'), get_string('qtypetitle','quiz_analysis'), + get_string('qnametitle','quiz_analysis'), get_string('qtexttitle','quiz_analysis'), + get_string('responsestitle','quiz_analysis'), get_string('rfractiontitle','quiz_analysis'), + get_string('rcounttitle','quiz_analysis'), get_string('rpercenttitle','quiz_analysis'), + get_string('qcounttitle','quiz_analysis'), + get_string('facilitytitle','quiz_analysis'), get_string('stddevtitle','quiz_analysis'), + get_string('dicsindextitle','quiz_analysis'), get_string('disccoefftitle','quiz_analysis')); $col = 0; foreach ($headers as $item) { $myxls->write(2,$col,$item,$formatbc); $col++; } - + $row = 3; - foreach($questions as $q) { + foreach($questions as $q) { $rows = $this->print_row_stats_data($q); foreach($rows as $rowdata){ $col = 0; @@ -626,19 +627,19 @@ class quiz_report extends quiz_default_report { function Export_CSV(&$questions, $filename) { - $headers = array(get_string('qidtitle','quiz_analysis'), get_string('qtypetitle','quiz_analysis'), - get_string('qnametitle','quiz_analysis'), get_string('qtexttitle','quiz_analysis'), - get_string('responsestitle','quiz_analysis'), get_string('rfractiontitle','quiz_analysis'), - get_string('rcounttitle','quiz_analysis'), get_string('rpercenttitle','quiz_analysis'), - get_string('qcounttitle','quiz_analysis'), - get_string('facilitytitle','quiz_analysis'), get_string('stddevtitle','quiz_analysis'), - get_string('dicsindextitle','quiz_analysis'), get_string('disccoefftitle','quiz_analysis')); + $headers = array(get_string('qidtitle','quiz_analysis'), get_string('qtypetitle','quiz_analysis'), + get_string('qnametitle','quiz_analysis'), get_string('qtexttitle','quiz_analysis'), + get_string('responsestitle','quiz_analysis'), get_string('rfractiontitle','quiz_analysis'), + get_string('rcounttitle','quiz_analysis'), get_string('rpercenttitle','quiz_analysis'), + get_string('qcounttitle','quiz_analysis'), + get_string('facilitytitle','quiz_analysis'), get_string('stddevtitle','quiz_analysis'), + get_string('dicsindextitle','quiz_analysis'), get_string('disccoefftitle','quiz_analysis')); $text = implode("\t", $headers)." \n"; - + $filename .= ".txt"; - header("Content-Type: application/download\n"); + header("Content-Type: application/download\n"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Expires: 0"); header("Cache-Control: must-revalidate,post-check=0,pre-check=0"); @@ -646,7 +647,7 @@ class quiz_report extends quiz_default_report { echo $text; - foreach($questions as $q) { + foreach($questions as $q) { $rows = $this->print_row_stats_data($q); foreach($rows as $row){ $text = implode("\t", $row); @@ -660,17 +661,18 @@ class quiz_report extends quiz_default_report { $qid = $q['id']; $question = get_record('question', 'id', $qid); + $options = new stdClass; $options->para = false; $options->newlines = false; $qtype = $question->qtype; $qname = format_text($question->name, FORMAT_MOODLE, $options); - $qtext = format_text($question->questiontext, FORMAT_MOODLE, $options); - - unset($responses); + $qtext = format_text($question->questiontext, FORMAT_MOODLE, $options); + + $responses = array(); foreach ($q['responses'] as $aid=>$resp){ - unset($response); + $response = new stdClass; if ($q['credits'][$aid] <= 0) { $qclass = 'uncorrect'; } elseif ($q['credits'][$aid] == 1) { @@ -678,10 +680,10 @@ class quiz_report extends quiz_default_report { } else { $qclass = 'partialcorrect'; } - $response->credit = " (".format_float($q['credits'][$aid],2).") "; + $response->credit = " (".format_float($q['credits'][$aid],2).") "; $response->text = format_text("$resp", FORMAT_MOODLE, $options); $count = $q['rcounts'][$aid].'/'.$q['count']; - $response->rcount = $count; + $response->rcount = $count; $response->rpercent = '('.format_float($q['rcounts'][$aid]/$q['count']*100,0).'%)'; $responses[] = $response; } @@ -690,16 +692,16 @@ class quiz_report extends quiz_default_report { $qsd = format_float($q['qsd'],4); $di = format_float($q['disc_index'],3); $dc = format_float($q['disc_coeff'],3); - - unset($result); - $response = array_shift($responses); - $result[] = array($qid, $qtype, $qname, $qtext, $response->text, $response->credit, $response->rcount, $response->rpercent, $count, $facility, $qsd, $di, $dc); + + $result = array(); + $response = array_shift($responses); + $result[] = array($qid, $qtype, $qname, $qtext, $response->text, $response->credit, $response->rcount, $response->rpercent, $count, $facility, $qsd, $di, $dc); foreach($responses as $response){ - $result[] = array('', '', '', '', $response->text, $response->credit, $response->rcount, $response->rpercent, '', '', '', '', ''); + $result[] = array('', '', '', '', $response->text, $response->credit, $response->rcount, $response->rpercent, '', '', '', '', ''); } return $result; } -} +} define('QUIZ_ALLATTEMPTS', 0); define('QUIZ_HIGHESTATTEMPT', 1); @@ -713,7 +715,7 @@ function stats_sumx($data, $initsum){ $accum[1] += $v[1]; } return $accum; -} +} function stats_sumx2($data, $initsum){ $accum = $initsum; @@ -722,7 +724,7 @@ function stats_sumx2($data, $initsum){ $accum[1] += $v[1]*$v[1]; } return $accum; -} +} function stats_sumxy($data, $initsum){ $accum = $initsum; -- 2.39.5
'; + echo ''; $options["download"] = "ODS"; print_single_button("report.php", $options, get_string("downloadods")); - echo "'; + echo "'; $options["download"] = "Excel"; print_single_button("report.php", $options, get_string("downloadexcel")); - echo "'; + echo ''; $options["download"] = "OOo"; print_single_button("report.php", $options, get_string("downloadooo", "quiz_analysis")); echo "