From db5b6091aa5aa4aba0c66573654e01ee539176d6 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 8 Apr 2011 13:52:45 +0200 Subject: [PATCH] Adding block_daily provided by Marco Sousa see #3235 --- main/attendance/attendance_controller.php | 157 +++++++++++++++++- main/attendance/index.php | 27 ++- main/dashboard/layout.php | 3 +- main/gradebook/lib/fe/exportgradebook.php | 2 - .../block_daily/block_daily.class.php | 112 +++++++------ 5 files changed, 232 insertions(+), 69 deletions(-) diff --git a/main/attendance/attendance_controller.php b/main/attendance/attendance_controller.php index e0fe328a90..233dc0ab51 100755 --- a/main/attendance/attendance_controller.php +++ b/main/attendance/attendance_controller.php @@ -325,8 +325,159 @@ $this->view->set_template('attendance_calendar'); $this->view->render(); } - - } + + /** + * It's used to print attendance sheet + * @param string action + * @param int attendance id + */ + public function attendance_sheet_print($action, $attendance_id, $student_id = 0, $course_id = '') { + + $attendance = new Attendance(); + $courseInfo = CourseManager::get_course_information($course_id); + + $attendance->set_course_id($courseInfo['code']); + $data_array = array(); + $data_array['attendance_id'] = $attendance_id; + $data_array['users_in_course'] = $attendance->get_users_rel_course($attendance_id); + + $data_array['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id); + + if (api_is_allowed_to_edit(null, true) || api_is_drh()) { + $data_array['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); + } else { + if (!empty($student_id)) { + $user_id = intval($student_id); + } else { + $user_id = api_get_user_id(); + } + $data_array['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id, $user_id); + $data_array['faults'] = $attendance->get_faults_of_user($user_id, $attendance_id); + $data_array['user_id'] = $user_id; + } + + $data_array['next_attendance_calendar_id'] = $attendance->get_next_attendance_calendar_id($attendance_id); + + + // set headers pdf + !empty($_user['official_code'])? $officialcode=$_user['official_code'].' - ':''; + + $courseCategory = CourseManager::get_course_category($courseInfo['category_code']); + $teacherInfo = CourseManager::get_teacher_list_from_course_code($courseInfo['code']); + $teacherName = null; + foreach($teacherInfo as $dados) { + if($teacherName != null) + $teacherName = $teacherName . " / "; + $teacherName.= $dados['firstname']." ".$dados['lastname']; + } + + $h1 = array(get_lang('Category'), $courseCategory['name']); + $h3 = array(get_lang("Title"), $courseInfo['title']); + $h4 = array(get_lang('Teacher'), $teacherName); + $h5 = array("", ""); + $date = date('d-m-Y H:i:s', time()); + $h6 = array(get_lang('DateTime'),api_convert_and_format_date($date, "%d/%m/%Y %H:%M")); + $header_pdf = array($h4, $h1, $h5, $h5, $h6); + + // set footer pdf + $f1 = '
'.get_lang('Responsable'); + $f2 = '
'.get_lang('Teacher'); + $f3 = '
'.get_lang('Date'); + $footer_pdf = array($f1, $f2, $f3); + + // set title pdf + $title_pdf = $h3[1]; + + // set headers data table + $head_ape_name = get_lang('Name'); + + + // get data table + // Marco - ordenacao fixa - just fullname + + $data_table = array(); + $dataClass = array(); + $data_attendant_calendar = array(); + $data_users_presence = array(); + $data_attendant_calendar = $data_array['attendant_calendar']; + $data_users_presence = $data_array['users_presence']; + + foreach ($data_array['users_in_course'] as $user) { + $result = array(); + $user_info = api_get_user_info($data['id']); + + // $result['official_code'] = $user['official_code']; + $result['fullname'] = $user['firstname']." ".$user['lastname']; + + foreach ($data_array['attendant_calendar'] as $class_day) { + if($class_day['done_attendance'] == 1) { + if($data_users_presence[$user['user_id']][$class_day['id']]['presence'] == 1) + $result[$class_day['id']] = " . "; + else + $result[$class_day['id']] = " F "; + } else { + $result[$class_day['id']] = " \ "; + } + } + $data_table[] = $result; + } + + $head_table = array( + array(get_lang('#'),5), +// array(get_lang('langOfficialCode'),15), + array(get_lang('Name'), 40), + ); + foreach ($data_array['attendant_calendar'] as $class_day) { + $dataClass[] = array($class_day['date'], 2); + } + + $head_table = array_merge($head_table, $dataClass); + + // split page +/* + $array_nome = array(); + $array_p1 = array(); // page 1 + $array_p2 = array(); // page 2 + foreach ($data_table as $frequencia) + { + $array_nome[] = array_slice($frequencia, 0, 2, true); + $array_p1[] = array_slice($frequencia, 2, 36, true); + $array_p2[] = array_slice($frequencia, 38, count($frequencia), true); + } + + $narray1 = array(); + $narray2 = array(); + + for($i = 0; $i < count($array_nome); $i++) + { + $narray1[] = $array_nome[$i]+$array_p1[$i]; + $narray2[] = $array_nome[$i]+$array_p2[$i]; + } + $data_table = array_merge($narray1, $narray2); + + + unset($narray1); unset($narray2); unset($array_p1); unset($array_p2); unset($array_nome); + + $array_nome = array(); + $array_p1 = array(); + $array_p2 = array(); + foreach($head_table as $head) + { + $array_nome = array_slice($head_table, 0, 3, true); + $array_p1 = array_slice($head_table, 3, 36, true); + $array_p2 = array_slice($head_table, 39, count($head_table), true); + } + + $array_p1 = array_merge($array_nome, $array_p1); + $array_p2 = array_merge($array_nome, $array_p2); + + unset($head_table); $head_table = array(); + $head_table[] = $array_p1; + $head_table[] = $array_p2; +*/ +//echo "
"; print_r($head_table); echo "
"; exit(); + export_pdf_attendance(&$head_table, &$data_table, &$header_pdf, $footer_pdf, $title_pdf); -?> + } +} \ No newline at end of file diff --git a/main/attendance/index.php b/main/attendance/index.php index 05d541a099..0347be1bcb 100755 --- a/main/attendance/index.php +++ b/main/attendance/index.php @@ -11,18 +11,20 @@ */ // name of the language file that needs to be included -$language_file = array ('course_description', 'pedaSuggest', 'userInfo', 'admin', 'agenda','tracking'); +$language_file = array ('course_description', 'course_info', 'pedaSuggest', 'userInfo', 'admin', 'agenda','tracking', 'trad4all'); // including files require_once '../inc/global.inc.php'; require_once api_get_path(LIBRARY_PATH).'attendance.lib.php'; require_once api_get_path(LIBRARY_PATH).'app_view.php'; +require_once api_get_path(LIBRARY_PATH).'ezpdf/class.ezpdf.php'; require_once 'attendance_controller.php'; require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php'; require_once api_get_path(LIBRARY_PATH).'course.lib.php'; require_once api_get_path(LIBRARY_PATH).'sortabletable.class.php'; require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php'; require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/gradebook_functions.inc.php'; +require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/fe/exportgradebook.php'; // current section $this_section = SECTION_COURSES; @@ -31,9 +33,15 @@ $this_section = SECTION_COURSES; api_protect_course_script(true); // get actions -$actions = array('attendance_list', 'attendance_sheet_list', 'attendance_sheet_add', 'attendance_add', 'attendance_edit', 'attendance_delete', 'attendance_delete_select'); +$actions = array('attendance_list', 'attendance_sheet_list', 'attendance_sheet_print', 'attendance_sheet_add', 'attendance_add', 'attendance_edit', 'attendance_delete', 'attendance_delete_select'); $actions_calendar = array('calendar_list', 'calendar_add', 'calendar_edit', 'calendar_delete', 'calendar_all_delete'); $action = 'attendance_list'; + +$course_id = ''; +if (isset($_GET['cidReq'])){ + $course_id = $_GET['cidReq']; +} + if (isset($_GET['action']) && (in_array($_GET['action'],$actions) || in_array($_GET['action'],$actions_calendar))) { $action = $_GET['action']; } @@ -181,10 +189,10 @@ if (isset($_POST['action']) && $_POST['action'] == 'attendance_delete_select') { // distpacher actions to controller switch ($action) { - case 'attendance_list' : + case 'attendance_list': $attendance_controller->attendance_list(); break; - case 'attendance_add' : + case 'attendance_add': if (api_is_allowed_to_edit(null, true)) { $attendance_controller->attendance_add(); } else { @@ -203,9 +211,12 @@ switch ($action) { $attendance_controller->attendance_delete($attendance_id); } else { api_not_allowed();} break; - case 'attendance_sheet_list' : + case 'attendance_sheet_list': $attendance_controller->attendance_sheet($action, $attendance_id, $student_id); break; + case 'attendance_sheet_print': + $attendance_controller->attendance_sheet_print($action, $attendance_id, $student_id, $course_id); + break; case 'attendance_sheet_add' : if (api_is_allowed_to_edit(null, true)) { $attendance_controller->attendance_sheet($action, $attendance_id); @@ -215,8 +226,10 @@ switch ($action) { case 'unlock_attendance' : if (api_is_allowed_to_edit(null, true)) { $attendance_controller->lock_attendance($action, $attendance_id); - } else { api_not_allowed();} - break; + } else { + api_not_allowed(); + } + break; case 'calendar_add' : case 'calendar_edit' : case 'calendar_all_delete' : diff --git a/main/dashboard/layout.php b/main/dashboard/layout.php index fefae7361c..bfa323f657 100755 --- a/main/dashboard/layout.php +++ b/main/dashboard/layout.php @@ -18,5 +18,4 @@ Display :: display_header($tool_name); echo $content; // Footer -Display :: display_footer(); -?> \ No newline at end of file +Display :: display_footer(); \ No newline at end of file diff --git a/main/gradebook/lib/fe/exportgradebook.php b/main/gradebook/lib/fe/exportgradebook.php index a97513daf9..8aa2bba409 100755 --- a/main/gradebook/lib/fe/exportgradebook.php +++ b/main/gradebook/lib/fe/exportgradebook.php @@ -202,10 +202,8 @@ function export_pdf_attendance($headers_table, $data_table, $headers_pdf, $foote } else { $mpdf->WriteHTML($html); } - $mpdf->Output(replace_dangerous_char($title_pdf.'.pdf'), 'D'); exit; - } diff --git a/plugin/dashboard/block_daily/block_daily.class.php b/plugin/dashboard/block_daily/block_daily.class.php index eb29c443e3..67c9ea62f5 100644 --- a/plugin/dashboard/block_daily/block_daily.class.php +++ b/plugin/dashboard/block_daily/block_daily.class.php @@ -3,7 +3,9 @@ * This file is part of course block plugin for dashboard, * it should be required inside dashboard controller for showing it into dashboard interface from plattform * @package chamilo.dashboard - * @author Marco Sousa + * @author Marco Sousa original code + * @author Julio Montoya class named was changed of name, and some minor changes + */ /** @@ -116,7 +118,7 @@ class BlockDaily extends Block { } $data_table .= ''; if (!isset($course[3])) { - $course[3] = 'Não se aplica'; + $course[3] = get_lang('NotAvailable'); } foreach ($course as $cell) { $data_table .= ''.$cell.''; @@ -133,7 +135,6 @@ class BlockDaily extends Block { $content .= '
'.get_lang('SeeMore').'
'; } $content .= ''; - return $content; } @@ -158,36 +159,39 @@ class BlockDaily extends Block { $courses = $this->courses; foreach ($courses as $row_course) { - $notas = null; - $course_code = $row_course['code']; - - // attendance - $table_course = Database::get_course_table_from_code($course_code); - - $sql = "SELECT id, name, attendance_qualify_max FROM ".$table_course."attendance WHERE active = 1 AND session_id = 0"; - $rs = Database::query($sql); + $score = null; + $course_code = $row_course['code']; + $course_info = api_get_course_info($course_code); + if (empty($course_info)) { + continue; + } + + // Attendance table + $table_course = Database::get_course_table(TABLE_ATTENDANCE, $course_info['db_name']); + + $sql = "SELECT id, name, attendance_qualify_max FROM $table_course WHERE active = 1 AND session_id = 0"; + $rs = Database::query($sql); $attendance = array(); - $attendances = array(); - - $param_gradebook = ''; - if (isset($_SESSION['gradebook'])) { - $param_gradebook = '&gradebook='.$_SESSION['gradebook']; - } - - - while ($row = Database::fetch_array($rs)) { - $attendance['done'] = $row['attendance_qualify_max']; - $attendance['id'] = $row['id']; - //$attendance['name'] = $row['name']; - $attendance['course_code'] = $course_code; - - if($attendance['done'] != '0') - $attendances[] = ''.Display::return_icon('printmgr.gif',get_lang('Print')).''; - else - $attendances[] = "Indisponível"; + $attendances = array(); + + $param_gradebook = ''; + if (isset($_SESSION['gradebook'])) { + $param_gradebook = '&gradebook='.$_SESSION['gradebook']; + } + + while ($row = Database::fetch_array($rs,'ASSOC')) { + $attendance['done'] = $row['attendance_qualify_max']; + $attendance['id'] = $row['id']; + //$attendance['name'] = $row['name']; + $attendance['course_code'] = $course_code; + + if ($attendance['done'] != '0') + $attendances[] = ''.Display::return_icon('printmgr.gif',get_lang('Print')).''; + else + $attendances[] = get_lang("NotAvailable"); } - // quantidade de alunos + // quantidade de alunos $sql = "SELECT user_id FROM $tbl_course_user as course_rel_user WHERE course_rel_user.status=".STUDENT." AND course_rel_user.course_code='$course_code'"; $rs = Database::query($sql); @@ -205,43 +209,41 @@ class BlockDaily extends Block { $tematic_advance_progress = '0%'; } - // notas - - $tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); + // Score + $tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); $sql = "SELECT id from " . $tbl_grade_categories ." WHERE course_code ='".$course_code."'"; $rs = Database::query($sql); - $categoria = null; + $category = null; while ($row = Database::fetch_array($rs)) { - $categoria = $row['id']; + $category = $row['id']; } - if (!empty ($categoria)) { - $cat = Category::load($categoria); - $eval = $cat[0]->get_evaluations(); - - if(count($eval) > 0){ - foreach ($eval as $avaliacao){ - - $notas = $notas . ' '.$avaliacao->get_name().''; - } - } - else { - $notas = "Indisponível"; - } - } - else{ - $notas = "Indisponível"; + if (!empty($category)) { + $cat = Category::load($category); + $eval = $cat[0]->get_evaluations(); + if (count($eval) > 0){ + $i = 0; + foreach ($eval as $item) { + $score .= ''.$item->get_name().''; + if (count($eval)-1 != $i) { + $score .= ', '; } + $i++; + } + } else { + $score = get_lang("NotAvailable"); + } + } else { + $score = get_lang("NotAvailable"); + } $table_row = array(); $table_row[] = $row_course['title']; $table_row[] = $nb_students_in_course; - $table_row[] = $notas; + $table_row[] = $score; $table_row[] = $attendances[0]; $course_data[] = $table_row; } return $course_data; } - -} -?> +} \ No newline at end of file