datagen = new ResultsDataGenerator($evaluation, $results, true); $this->evaluation = $evaluation; $this->iscourse = $iscourse; $this->forprint = $forprint; if (isset($addparams)) { $this->set_additional_parameters($addparams); } $scoredisplay = ScoreDisplay::instance(); $column = 0; if ($this->iscourse == '1') { $this->set_header($column++, '', false); $this->set_form_actions(array( 'delete' => get_lang('Delete') )); } if (api_is_western_name_order()) { $this->set_header($column++, get_lang('FirstName')); $this->set_header($column++, get_lang('LastName')); } else { $this->set_header($column++, get_lang('LastName')); $this->set_header($column++, get_lang('FirstName')); } $this->set_header($column++, get_lang('Score')); if ($scoredisplay->is_custom()) { $this->set_header($column++, get_lang('Display')); } if (!$this->forprint) { $this->set_header($column++, get_lang('Modify'), false); } } /** * Function used by SortableTable to get total number of items in the table */ public function get_total_number_of_items() { return $this->datagen->get_total_results_count(); } /** * Function used by SortableTable to generate the data to display */ public function get_table_data($from = 1, $per_page = null, $column = null, $direction = null, $sort = null) { $is_western_name_order = api_is_western_name_order(); $scoredisplay = ScoreDisplay::instance(); // determine sorting type $col_adjust = $this->iscourse == '1' ? 1 : 0; switch ($this->column) { // first name or last name case (0 + $col_adjust): if ($is_western_name_order) { $sorting = ResultsDataGenerator::RDG_SORT_FIRSTNAME; } else { $sorting = ResultsDataGenerator::RDG_SORT_LASTNAME; } break; // first name or last name case (1 + $col_adjust): if ($is_western_name_order) { $sorting = ResultsDataGenerator::RDG_SORT_LASTNAME; } else { $sorting = ResultsDataGenerator::RDG_SORT_FIRSTNAME; } break; //Score case (2 + $col_adjust): $sorting = ResultsDataGenerator::RDG_SORT_SCORE; break; case (3 + $col_adjust): $sorting = ResultsDataGenerator::RDG_SORT_MASK; break; } if ($this->direction == 'DESC') { $sorting |= ResultsDataGenerator::RDG_SORT_DESC; } else { $sorting |= ResultsDataGenerator::RDG_SORT_ASC; } $data_array = $this->datagen->get_data($sorting, $from, $this->per_page); // generate the data to display $sortable_data = array(); foreach ($data_array as $item) { $row = array(); if ($this->iscourse == '1') { $row[] = $item['result_id']; } if ($is_western_name_order) { $row[] = $item['firstname']; $row[] = $item['lastname']; } else { $row[] = $item['lastname']; $row[] = $item['firstname']; } $row[] = Display::bar_progress($item['percentage_score'], false, $item['score']); //$row[] = Display::bar_progress($item['percentage_score'], true); if ($scoredisplay->is_custom()) { $row[] = $item['display']; } if (!$this->forprint) { $row[] = $this->build_edit_column($item); } $sortable_data[] = $row; } return $sortable_data; } private function build_edit_column($item) { $locked_status = $this->evaluation->get_locked(); if (api_is_allowed_to_edit(null, true) && $locked_status == 0) { //api_is_course_admin() $edit_column = ''. Display::return_icon('edit.png', get_lang('Modify'), '', '22').''; $edit_column .= ' '. Display::return_icon('delete.png', get_lang('Delete'), '', '22').''; } if ($this->evaluation->get_course_code() == null) { $edit_column .= ' '; $edit_column .= Display::return_icon('delete.png', get_lang('Delete')); $edit_column .= ''; $edit_column .= ' '; $edit_column .= Display::return_icon('statistics.gif', get_lang('Statistics')); $edit_column .= ''; } // Evaluation's origin is a link if ($this->evaluation->get_category_id() < 0) { $link = LinkFactory::get_evaluation_link($this->evaluation->get_id()); $doc_url = $link->get_view_url($item['id']); if ($doc_url != null) { $edit_column .= ' '; $edit_column .= Display::return_icon('link.gif', get_lang('OpenDocument')).''; } } return $edit_column; } }