Adding block_daily provided by Marco Sousa see #3235

skala
Julio Montoya 14 years ago
parent 15fb41f74a
commit db5b6091aa
  1. 157
      main/attendance/attendance_controller.php
  2. 27
      main/attendance/index.php
  3. 3
      main/dashboard/layout.php
  4. 2
      main/gradebook/lib/fe/exportgradebook.php
  5. 112
      plugin/dashboard/block_daily/block_daily.class.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 = '<hr />'.get_lang('Responsable');
$f2 = '<hr />'.get_lang('Teacher');
$f3 = '<hr />'.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 "<pre>"; print_r($head_table); echo "</pre>"; exit();
export_pdf_attendance(&$head_table, &$data_table, &$header_pdf, $footer_pdf, $title_pdf);
?>
}
}

@ -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' :

@ -18,5 +18,4 @@ Display :: display_header($tool_name);
echo $content;
// Footer
Display :: display_footer();
?>
Display :: display_footer();

@ -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;
}

@ -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 .= '<tr class="'.$class_tr.'">';
if (!isset($course[3])) {
$course[3] = 'Não se aplica';
$course[3] = get_lang('NotAvailable');
}
foreach ($course as $cell) {
$data_table .= '<td align="right">'.$cell.'</td>';
@ -133,7 +135,6 @@ class BlockDaily extends Block {
$content .= '<div style="text-align:right;margin-top:10px;"><a href="'.api_get_path(WEB_CODE_PATH).'mySpace/course.php">'.get_lang('SeeMore').'</a></div>';
}
$content .= '</div>';
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[] = '<a href="'.api_get_path(WEB_PATH).'main/attendance/index.php?cidReq='.$attendance['course_code'].'&action=attendance_sheet_print&attendance_id='.$attendance['id'].$param_gradebook.'">'.Display::return_icon('printmgr.gif',get_lang('Print')).'</a>';
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[] = '<a href="'.api_get_path(WEB_PATH).'main/attendance/index.php?cidReq='.$attendance['course_code'].'&action=attendance_sheet_print&attendance_id='.$attendance['id'].$param_gradebook.'">'.Display::return_icon('printmgr.gif',get_lang('Print')).'</a>';
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 . ' <a href="'.api_get_path(WEB_PATH).'main/gradebook/gradebook_view_result.php?export=pdf&cat_code='.$cat[0]->get_id().'&official_code='.$cat[0]->get_course_code().'&selecteval='.$avaliacao->get_id().$param_gradebook.'">'.$avaliacao->get_name().'</a>';
}
}
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 .= '<a href="'.api_get_path(WEB_PATH).'main/gradebook/gradebook_view_result.php?export=pdf&cat_code='.$cat[0]->get_id().'&official_code='.$cat[0]->get_course_code().'&selecteval='.$item->get_id().$param_gradebook.'">'.$item->get_name().'</a>';
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;
}
}
?>
}
Loading…
Cancel
Save