Attendance sheet chart plugin improved avoid calling unnecesary functions like api_get_course_info, api_get_user_info see CT#1225

skala
Julio Montoya 16 years ago
parent e12f3ab3f6
commit 1867133f85
  1. 37
      main/inc/lib/attendance.lib.php
  2. 70
      plugin/dashboard/block_student_graph/block_student_graph.class.php

@ -4,12 +4,12 @@
/** /**
* This file contains class used like library, provides functions for attendance tool. It's also used like model to attendance_controller (MVC pattern) * This file contains class used like library, provides functions for attendance tool. It's also used like model to attendance_controller (MVC pattern)
* @author Christian Fasanando <christian1827@gmail.com> * @author Christian Fasanando <christian1827@gmail.com>
* @author Julio Montoya <gugli100@gmail.com> improvements
* @package chamilo.attendance * @package chamilo.attendance
*/ */
/** /**
* Attendance can be used to instanciate objects or as a library to manage attendances * Attendance can be used to instanciate objects or as a library to manage attendances
* @package chamilo.attendance
*/ */
class Attendance class Attendance
@ -42,19 +42,19 @@ class Attendance
/** /**
* Get attendance list * Get attendance list only the id, name and attendance_qualify_max fields
* @param string course code (optional) * @param string course db name (optional)
* @param int session id (optional) * @param int session id (optional)
* @return array attendances list * @return array attendances list
*/ */
function get_attendances_list($course_code = '', $session_id = null) { function get_attendances_list($course_db_name = '', $session_id = null) {
// initializing database table and variables // Initializing database table and variables
$tbl_attendance = Database :: get_course_table(TABLE_ATTENDANCE); $tbl_attendance = Database :: get_course_table(TABLE_ATTENDANCE);
$data = array(); $data = array();
if (!empty($course_code)) { if (!empty($course_db_name)) {
$course_info = api_get_course_info($course_code); //$course_info = api_get_course_info($course_code);
$tbl_attendance = Database :: get_course_table(TABLE_ATTENDANCE, $course_info['dbName']); $tbl_attendance = Database :: get_course_table(TABLE_ATTENDANCE, $course_db_name);
} }
$condition_session = ''; $condition_session = '';
@ -66,11 +66,11 @@ class Attendance
$condition_session = api_get_session_condition($session_id); $condition_session = api_get_session_condition($session_id);
} }
// get attendance data // Get attendance data
$sql = "SELECT * FROM $tbl_attendance WHERE active = 1 $condition_session "; $sql = "SELECT id, name, attendance_qualify_max FROM $tbl_attendance WHERE active = 1 $condition_session ";
$rs = Database::query($sql); $rs = Database::query($sql);
if (Database::num_rows($rs) > 0){ if (Database::num_rows($rs) > 0) {
while ($row = Database::fetch_array($rs)) { while ($row = Database::fetch_array($rs,'ASSOC')) {
$data[$row['id']] = $row; $data[$row['id']] = $row;
} }
} }
@ -496,15 +496,14 @@ class Attendance
// get all courses of current user // get all courses of current user
$courses = CourseManager::get_courses_list_by_user_id($user_id, true); $courses = CourseManager::get_courses_list_by_user_id($user_id, true);
$user_id = intval($user_id); $user_id = intval($user_id);
$results = array(); $results = array();
$total_faults = $total_weight = $porcent = 0; $total_faults = $total_weight = $porcent = 0;
foreach ($courses as $course) { foreach ($courses as $course) {
//$course_code = $course['code'];
//$course_info = api_get_course_info($course_code);
$tbl_attendance_result = Database::get_course_table(TABLE_ATTENDANCE_RESULT, $course['db_name']);
$attendances_by_course = $this->get_attendances_list($course['db_name']);
$course_code = $course['code'];
$course_info = api_get_course_info($course_code);
$tbl_attendance_result = Database::get_course_table(TABLE_ATTENDANCE_RESULT, $course_info['dbName']);
$attendances_by_course = $this->get_attendances_list($course_code);
foreach ($attendances_by_course as $attendance) { foreach ($attendances_by_course as $attendance) {
// get total faults and total weight // get total faults and total weight
$attendance_id = $attendance['id']; $attendance_id = $attendance['id'];
@ -527,8 +526,8 @@ class Attendance
$results['faults'] = $total_faults; $results['faults'] = $total_faults;
$results['total'] = $total_weight; $results['total'] = $total_weight;
$results['porcent'] = $porcent; $results['porcent'] = $porcent;
return $results;
return $results;
} }
/** /**
@ -546,7 +545,7 @@ class Attendance
$user_id = intval($user_id); $user_id = intval($user_id);
$results = array(); $results = array();
$total_faults = $total_weight = $porcent = 0; $total_faults = $total_weight = $porcent = 0;
$attendances_by_course = $this->get_attendances_list($course_code, $session_id); $attendances_by_course = $this->get_attendances_list($course_info['dbName'], $session_id);
foreach ($attendances_by_course as $attendance) { foreach ($attendances_by_course as $attendance) {
// get total faults and total weight // get total faults and total weight

@ -1,14 +1,18 @@
<?php <?php
/* For licensing terms, see /license.txt */
/** /**
* This file is part of student graph block plugin for dashboard, * This file is part of student graph block plugin for dashboard,
* it should be required inside dashboard controller for showing it into dashboard interface from plattform * it should be required inside dashboard controller for showing it into dashboard interface from plattform
* @package chamilo.dashboard * @package chamilo.dashboard
* @author Christian Fasanando * @author Christian Fasanando
* @author Julio Montoya <gugli100@gmail.com>
*/ */
/** /**
* required files for getting data * required files for getting data
*/ */
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.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).'course.lib.php';
require_once api_get_path(LIBRARY_PATH).'tracking.lib.php'; require_once api_get_path(LIBRARY_PATH).'tracking.lib.php';
@ -78,24 +82,19 @@ class BlockStudentGraph extends Block {
$data = array(); $data = array();
$students_attendance_graph = $this->get_students_attendance_graph(); $students_attendance_graph = $this->get_students_attendance_graph();
$html = ' $html = '<li class="widget color-orange" id="intro">
<li class="widget color-orange" id="intro"> <div class="widget-head">
<div class="widget-head"> <h3>'.get_lang('StudentsInformationsGraph').'</h3>
<h3>'.get_lang('StudentsInformationsGraph').'</h3> <div class="widget-actions"><a onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES,$charset)).'\')) return false;" href="index.php?action=disable_block&path='.$this->path.'">'.Display::return_icon('close.gif',get_lang('Close')).'</a></div>
<div class="widget-actions"><a onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES,$charset)).'\')) return false;" href="index.php?action=disable_block&path='.$this->path.'">'.Display::return_icon('close.gif',get_lang('Close')).'</a></div> </div>
</div> <div class="widget-content" align="center">
<div class="widget-content" align="center"> <div style="padding:10px;"><strong>'.get_lang('AttendancesFaults').'</strong></div>
<div style="padding:10px;"><strong>'.get_lang('AttendancesFaults').'</strong></div> '.$students_attendance_graph.'
'.$students_attendance_graph.' </div>
</div> </li>';
</li>
';
$data['column'] = $column; $data['column'] = $column;
$data['content_html'] = $html; $data['content_html'] = $html;
return $data; return $data;
} }
/** /**
@ -104,23 +103,25 @@ class BlockStudentGraph extends Block {
*/ */
public function get_students_attendance_graph() { public function get_students_attendance_graph() {
$students = $this->students; $students = $this->students;
$attendance = new Attendance(); $attendance = new Attendance();
// get data // get data
$attendances_faults_avg = array(); $attendances_faults_avg = array();
if (is_array($students) && count($students) > 0) {
foreach ($students as $student) {
$student_id = $student['user_id']; foreach ($students as $student) {
$student_info = api_get_user_info($student_id); $student_id = $student['user_id'];
// get average of faults in attendances by student //$student_info = api_get_user_info($student_id);
$results_faults_avg = $attendance->get_faults_average_inside_courses($student_id); // get average of faults in attendances by student
if (!empty($results_faults_avg)) { $results_faults_avg = $attendance->get_faults_average_inside_courses($student_id);
$attendances_faults_avg[$student_info['username']] = $results_faults_avg['porcent'];
} else { if (!empty($results_faults_avg)) {
$attendances_faults_avg[$student_info['username']] = 0; $attendances_faults_avg[$student['username']] = $results_faults_avg['porcent'];
} } else {
$attendances_faults_avg[$student['username']] = 0;
}
}
} }
arsort($attendances_faults_avg); arsort($attendances_faults_avg);
@ -138,6 +139,7 @@ class BlockStudentGraph extends Block {
// Defining data // Defining data
$data_set = new pData; $data_set = new pData;
$data_set->AddPoint($faults,"Promedio"); $data_set->AddPoint($faults,"Promedio");
$data_set->AddPoint($usernames,"Usuario"); $data_set->AddPoint($usernames,"Usuario");
$data_set->AddAllSeries(); $data_set->AddAllSeries();
@ -150,6 +152,7 @@ class BlockStudentGraph extends Block {
$data = $data_set->GetData(); // return $this->DataDescription $data = $data_set->GetData(); // return $this->DataDescription
if ($cache->IsInCache($graph_id, $data_set->GetData())) { if ($cache->IsInCache($graph_id, $data_set->GetData())) {
//if (0) {
//if we already created the img //if we already created the img
$img_file = $cache->GetHash($graph_id, $data_set->GetData()); // image file with hash $img_file = $cache->GetHash($graph_id, $data_set->GetData()); // image file with hash
} else { } else {
@ -163,17 +166,20 @@ class BlockStudentGraph extends Block {
// Initialise the graph // Initialise the graph
$test = new MyHorBar(400,($height+30)); $test = new MyHorBar(400,($height+30));
$test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf', 8); $test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf', 8);
$test->setGraphArea(65,30,350,$height); $test->setGraphArea(100,30,370,$height);
$test->drawFilledRoundedRectangle(7,7,393,$height,5,240,240,240); $test->drawFilledRoundedRectangle(7,7,393,$height,5,240,240,240);
$test->drawRoundedRectangle(5,5,395,$height,5,230,230,230); $test->drawRoundedRectangle(5,5,395,$height,5,230,230,230);
$test->drawGraphArea(255,255,255,TRUE); $test->drawGraphArea(255,255,255,TRUE);
$test->setFixedScale(0,100,5);
//X axis
$test->setFixedScale(0,100,10);
//var_dump($data_set->GetDataDescription());
$test->drawHorScale($data_set->GetData(),$data_set->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE); $test->drawHorScale($data_set->GetData(),$data_set->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE);
$test->setColorPalette(0,255,0,0); $test->setColorPalette(0,255,0,0);
$test->drawHorGrid(10,TRUE,230,230,230,50); $test->drawHorGrid(10,TRUE,230,230,230,50);
// Draw the 0 line // Draw the 0 line
//$Test->setFontProperties("Fonts/tahoma.ttf",6);
$test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf', 6); $test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf', 6);
$test->drawTreshold(0,143,55,72,TRUE,TRUE); $test->drawTreshold(0,143,55,72,TRUE,TRUE);
@ -181,9 +187,11 @@ class BlockStudentGraph extends Block {
$test->drawHorBarGraph($data_set->GetData(),$data_set->GetDataDescription(),FALSE); $test->drawHorBarGraph($data_set->GetData(),$data_set->GetDataDescription(),FALSE);
$cache->WriteToCache($graph_id, $data_set->GetData(), $test); $cache->WriteToCache($graph_id, $data_set->GetData(), $test);
ob_start(); ob_start();
$test->Stroke(); $test->Stroke();
ob_end_clean(); ob_end_clean();
$img_file = $cache->GetHash($graph_id, $data_set->GetData()); $img_file = $cache->GetHash($graph_id, $data_set->GetData());
} }
if (!empty($img_file)) { if (!empty($img_file)) {
@ -202,7 +210,5 @@ class BlockStudentGraph extends Block {
function get_number_of_students() { function get_number_of_students() {
return count($this->students); return count($this->students);
} }
} }
?> ?>
Loading…
Cancel
Save