evals_links = array_merge($evals, $links); $this->currentcat = $currentcat; $this->datagen = new GradebookDataGenerator($cats, $evals, $links); if (isset($addparams)) { $this->set_additional_parameters($addparams); } $column= 0; if ((($status==1 || is_null($status)) && api_is_allowed_to_create_course()) && ($_SESSION['studentview']<>'studentview') || (isset($_GET['isStudentView']) && $_GET['isStudentView']=='false')) { $this->set_header($column++,'','','width="25px"'); } $this->set_header($column++, get_lang('Type'),'','width="35px"'); $this->set_header($column++, get_lang('Name')); $this->set_header($column++, get_lang('Description')); if (($status==1 || is_null($status)) && api_is_allowed_to_create_course() && $_SESSION['studentview']<>'studentview' || (isset($_GET['isStudentView']) && $_GET['isStudentView']=='false')) { $this->set_header($column++, get_lang('Weight'),'','width="50px"'); } else { if (empty($_GET['selectcat']) ) { $this->set_header($column++, get_lang('Evaluation')); } else { $this->set_header($column++, get_lang('Weight')); } } if (($status==1 || is_null($status)) && api_is_allowed_to_create_course()) { $this->set_header($column++, get_lang('Date'),true, 'width="100px"'); } elseif (($status<>1) && !api_is_allowed_to_create_course() && (!isset($_GET['selectcat']) || $_GET['selectcat']==0)) { $this->set_header($column++, get_lang('Date'),true, 'width="100px"'); } //admins get an edit column if (($status==1 || is_null($status)) && api_is_allowed_to_create_course() && $_SESSION['studentview']<>'studentview' || (isset($_GET['isStudentView']) && $_GET['isStudentView']=='false')) { $this->set_header($column++, get_lang('Modify'), false, 'width="100"'); //actions on multiple selected documents $this->set_form_actions(array ( 'deleted' => get_lang('DeleteSelected'), 'setvisible' => get_lang('SetVisible'), 'setinvisible' => get_lang('SetInvisible'))); } else { if (empty($_GET['selectcat']) && !api_is_allowed_to_create_course()) { $this->set_header($column++, get_lang('Certificates'),false); } else { $evals_links = array_merge($evals, $links); if(count($evals_links)>0) { $this->set_header($column++, get_lang('Results'), false); } } } } /** * Function used by SortableTable to get total number of items in the table */ function get_total_number_of_items() { return $this->datagen->get_total_items_count(); } /** * Function used by SortableTable to generate the data to display */ function get_table_data($from = 1) { // determine sorting type $col_adjust = (api_is_allowed_to_create_course() ? 1 : 0); switch ($this->column) { // Type case (0 + $col_adjust) : $sorting = GradebookDataGenerator :: GDG_SORT_TYPE; break; case (1 + $col_adjust) : $sorting = GradebookDataGenerator :: GDG_SORT_NAME; break; case (2 + $col_adjust) : $sorting = GradebookDataGenerator :: GDG_SORT_DESCRIPTION; break; case (3 + $col_adjust) : $sorting = GradebookDataGenerator :: GDG_SORT_WEIGHT; break; case (4 + $col_adjust) : $sorting = GradebookDataGenerator :: GDG_SORT_DATE; break; } if ($this->direction == 'DESC') { $sorting |= GradebookDataGenerator :: GDG_SORT_DESC; } else { $sorting |= GradebookDataGenerator :: GDG_SORT_ASC; } //status de user in course $user_id=api_get_user_id(); $course_code=api_get_course_id(); $status_user=api_get_status_of_user_in_course ($user_id,$course_code); $data_array = $this->datagen->get_data($sorting, $from, $this->per_page); // generate the data to display $sortable_data = array(); $weight_total_links = 0; foreach ($data_array as $data) { $row = array (); $item = $data[0]; $id = $item->get_id(); if (empty($_GET['selectcat']) ) { $certificate_min_score = $this->build_certificate_min_score($item); } //if the item is invisible, wrap it in a span with class invisible $invisibility_span_open = (api_is_allowed_to_create_course() && $item->is_visible() == '0') ? '' : ''; if (/*($status_user==1 ||is_null($status_user)) && */api_is_allowed_to_create_course() && ($_SESSION['studentview']<>'studentview') || (isset($_GET['isStudentView']) && $_GET['isStudentView']=='false')) { $row[] = $this->build_id_column ($item); } $row[] = $this->build_type_column ($item); $row[] = $invisibility_span_open . $this->build_name_link ($item) . $invisibility_span_close; $row[] = $invisibility_span_open . $data[2] . $invisibility_span_close; if (($status_user==1 || is_null($status_user)) && api_is_allowed_to_create_course()) { $row[] = $invisibility_span_open . $data[3] . $invisibility_span_close; $weight_total_links += intval($data[3]); } else { if (empty($_GET['selectcat'])) { // generating the total score for a course $stud_id= api_get_user_id(); $cats_course = Category :: load ($id, null, null, null, null, null, false); $alleval_course= $cats_course[0]->get_evaluations($stud_id,true); $alllink_course= $cats_course[0]->get_links($stud_id,true); $evals_links = array_merge($alleval_course, $alllink_course); $item_value=0; $item_total=0; for ($count=0; $count < count($evals_links); $count++) { $item = $evals_links[$count]; $score = $item->calc_score($stud_id); $score_denom=($score[1]==0) ? 1 : $score[1]; $item_value+=$score[0]/$score_denom*$item->get_weight(); $item_total+=$item->get_weight(); } $item_value = number_format($item_value, 2, '.', ' '); $cattotal = Category :: load($id); $scoretotal= $cattotal[0]->calc_score(api_get_user_id()); $scoretotal_display = (isset($scoretotal)? round($scoretotal[0],2).'/'.round($scoretotal[1],2).'('.round(($scoretotal[0] / $scoretotal[1]) * 100,2) . ' %)': '-'); $row[] = $item_value; } else { $row[] = $invisibility_span_open . $data[3] . $invisibility_span_close; } } $row[] = $invisibility_span_open . str_replace(' ',' ',$data[4]) . $invisibility_span_close; //admins get an edit column if (($status_user==1 || is_null($status_user)) && api_is_allowed_to_create_course() && ($_SESSION['studentview']<>'studentview' || (isset($_GET['isStudentView']) && $_GET['isStudentView']=='false'))) { $cat=new Category(); $show_message=$cat->show_message_resource_delete($item->get_course_code()); if ($show_message===false) { $row[] = $this->build_edit_column ($item); } } else { //students get the results and certificates columns if (count($this->evals_links)>0 && $status_user!=1 ) { $value_data=isset($data[5]) ? $data[5] : null; if (!is_null($value_data)) { $row[] = $value_data; } } //variables load in index.php global $my_score_in_gradebook, $certificate_min_score, $item_value, $certificate_min_score; if (empty($_GET['selectcat'])) { if (isset($certificate_min_score) && (int)$item_value >= (int)$certificate_min_score) { $certificates = '  '.$scoretotal_display; //register gradebook certificate $current_user_id=api_get_user_id(); $date_certificate=date('Y-m-d H:i:s',time()); register_user_info_about_certificate($id,$current_user_id,$my_score_in_gradebook,$date_certificate); } else { $certificates = '-'; } //show certificate date $get_date=get_certificate_date_by_user_id($id,$current_user_id); if ($get_date=='' || is_null($get_date)) { $row[4]='-'; } else { $row[4] = date('d/m/y H:i:s',strtotime($get_date)); } $row[] = $certificates; } elseif ($_GET['selectcat'] == 1) { if (isset($certificate_min_score) && (int)$item_value >= (int)$certificate_min_score) { //register gradebook certificate $current_user_id=api_get_user_id(); $date_certificate=date('Y-m-d H:i:s',time()); register_user_info_about_certificate($id,$current_user_id,$my_score_in_gradebook,$date_certificate); } } } $sortable_data[] = $row; } // warning messages if (api_is_allowed_to_edit()) { if (isset($_GET['selectcat']) && $_GET['selectcat'] > 0 && $_GET['view'] <> 'presence') { $id_cat = intval($_GET['selectcat']); $category = Category :: load($id_cat); $weight_category = intval($this->build_weight($category[0])); $course_code = $this->build_course_code($category[0]); if ($weight_total_links > $weight_category) { $warning_message = get_lang('TotalWeightMustNotBeMoreThan').' '.$weight_category; Display::display_warning_message($warning_message,false); } $content_html=DocumentManager::replace_user_info_into_html($course_code); $new_content=explode('',$content_html); if (empty($new_content[0])) { $warning_message = get_lang('ThereIsNotACertificateAvailableByDefault'); Display::display_warning_message($warning_message); } } if (empty($_GET['selectcat'])) { $categories = Category :: load(); $weight_categories = $certificate_min_scores = $course_codes = array(); foreach ($categories as $category) { $course_code_category = $this->build_course_code($category); if (!empty($course_code)) { if ($course_code_category == $course_code) { $weight_categories[] = intval($this->build_weight($category)); $certificate_min_scores[] = intval($this->build_certificate_min_score($category)); $course_codes[] = $course_code; break; } } else { $weight_categories[] = intval($this->build_weight($category)); $certificate_min_scores[] = intval($this->build_certificate_min_score($category)); $course_codes[] = $course_code_category; } } if (is_array($weight_categories) && is_array($certificate_min_scores) && is_array($course_codes)) { $warning_message = ''; for ($x = 0; $x $weight_category)) { $warning_message .= $course_code .' - '.get_lang('CertificateMinimunScoreIsRequiredAndMustNotBeMoreThan').' '.$weight_category.'
'; } } if (!empty($warning_message)) { Display::display_warning_message($warning_message,false); } } } } return $sortable_data; } // Other functions private function build_certificate_min_score ($item) { return $item->get_certificate_min_score(); } private function build_weight ($item) { return $item->get_weight(); } private function build_course_code ($item) { return $item->get_course_code(); } private function build_id_column ($item) { switch ($item->get_item_type()) { // category case 'C' : return 'CATE' . $item->get_id(); // evaluation case 'E' : return 'EVAL' . $item->get_id(); // link case 'L' : return 'LINK' . $item->get_id(); } } private function build_type_column ($item) { return build_type_icon_tag($item->get_icon_name()); } private function build_name_link ($item) { switch ($item->get_item_type()) { // category case 'C' : $prms_uri='?selectcat=' . $item->get_id() . '&view='.Security::remove_XSS($_GET['view']); if (isset($_GET['isStudentView'])) { if ( isset($is_student) || ( isset($_SESSION['studentview']) && $_SESSION['studentview']=='studentview') ) { $prms_uri=$prms_uri.'&isStudentView='.Security::remove_XSS($_GET['isStudentView']); } } $cat=new Category(); $show_message=$cat->show_message_resource_delete($item->get_course_code()); return ' ' . $item->get_name() . '' . ($item->is_course() ? '  [' . $item->get_course_code() . ']'.$show_message : ''); // evaluation case 'E' : $cat=new Category(); //$dblib=new Database(); $category_id=Security::remove_XSS($_GET['selectcat']); $course_id=Database::get_course_by_category($category_id); $show_message=$cat->show_message_resource_delete($course_id); // course/platform admin can go to the view_results page if (api_is_allowed_to_create_course() && $show_message===false) { if ($item->get_type() == 'presence') { return ' ' . '' . $item->get_name() . ''; /*return ' ' . '' . $item->get_name() . ''; */ } else { return ' ' . '' . $item->get_name() . ' ['.get_lang('Evaluation').']'; } } elseif (ScoreDisplay :: instance()->is_custom() && $show_message===false) { // students can go to the statistics page (if custom display enabled) return ' ' . '' . $item->get_name() . ''; } elseif ($show_message===false && !api_is_allowed_to_create_course() && !(ScoreDisplay :: instance()->is_custom())) { return ' ' . '' . $item->get_name() . ''; } else { return '['.get_lang('Evaluation').']  '.$item->get_name().$show_message; } // link case 'L' : $cat=new Category(); //$dblib=new Database(); $category_id=Security::remove_XSS($_GET['selectcat']); $course_id=Database::get_course_by_category($category_id); $show_message=$cat->show_message_resource_delete($course_id); $url = $item->get_link(); if (isset($url) && $show_message===false) { $text = ' ' . $item->get_name() . ''; } else { $text = $item->get_name(); } $text .= ' [' . $item->get_type_name() . ']'.$show_message; $cc = $this->currentcat->get_course_code(); if (empty($cc)) { $text .= ' ['.$item->get_course_code().']'; } return $text; } } private function build_edit_column ($item) { switch ($item->get_item_type()) { // category case 'C' : return build_edit_icons_cat($item, $this->currentcat->get_id()); // evaluation case 'E' : return build_edit_icons_eval($item, $this->currentcat->get_id()); // link case 'L' : return build_edit_icons_link($item, $this->currentcat->get_id()); } } }