/** * Adds a table of subject reviews to the PDF * * @param array $reviews * @param int $displayby */ public function subject_review_table($reviews, $displayby = PROGRESSREVIEW_STUDENT) { $table = new html_table(); $table->head = array('', '', get_string('attendance', 'local_progressreview') . $attendanceicon, get_string('punctuality', 'local_progressreview') . $punctualityicon, get_string('homework', 'local_progressreview') . $homeworkicon, get_string('behaviour', 'local_progressreview') . $behaviouricon, get_string('effort', 'local_progressreview') . $efforticon); $table->head[] = get_string('targetgrade', 'local_progressreview') . $targeticon; $table->head[] = get_string('performancegrade', 'local_progressreview') . $performanceicon; if ($displayby == PROGRESSREVIEW_STUDENT) { $table->head[0] = get_string('course'); $table->head[1] = get_string('teacher', 'local_progressreview'); } $rows = array(); foreach ($reviews as $key => $review) { $student = $review->get_student(); $session = $review->get_session(); $plugins = $review->get_plugins(); foreach ($plugins as $pluginname => $plugin) { $newrows = $plugin->add_table_rows($displayby, true, false); foreach ($newrows as $newrow) { if (get_class($newrow) != 'html_table_row') { throw new coding_exception('add_table_rows must return an array of html_table_row objects. The ' . $pluginname . ' plugin didn\'t do this.'); } // This is strange and unpleasant, but aparrently necessary - using the whole // html_table_row causes a rendering problem, presumably due to something // in pdf_writer::table. If this can be fixed, this can be replaced with the // commented array_merge below. $rows[] = $newrow->cells; } // $rows = array_merge($rows, $newrows); } } $table->data = $rows; $table->size = array(80, 100, 75, 75, 75, 75, 75, 75, 90); pdf_writer::change_font((object) array('size' => 10)); pdf_writer::table($table); pdf_writer::$pdf->Ln(30); }
throw new coding_exception('The progressreview_' . $name . ' has no print renderer. It must have a print renderer with at least the review() method defined'); } } pdf_writer::page_break(); $strtutor = get_string('tutor', 'local_progressreview'); $fullname = fullname($tutorreview->get_teacher()); $output->heading('Tutor Review ' . $strtutor . ': ' . $fullname, 3); pdf_writer::$pdf->Ln(10); $tutorreviews = ''; foreach ($pluginrenderers as $key => $pluginrenderer) { $pluginrenderer->review($reviewdata[$key]); } pdf_writer::$pdf->Ln(20); pdf_writer::change_font((object) array('size' => 10)); pdf_writer::div('End of ' . $heading); pdf_writer::div(date('d/m/Y')); pdf_writer::page_break(); } } } else { ksort($sortedsubjectreviews); foreach ($sortedsubjectreviews as $sessionreviews) { ksort($sessionreviews); foreach ($sessionreviews as $shortname => $coursereviews) { ksort($coursereviews); $firstreview = current($coursereviews); $session = $firstreview->get_session(); $heading = $firstreview->get_course()->fullname . ' - ' . $session->name; $output->heading($heading, 1);