Browse Source

Adding block_daily provided by Marco Sousa see #3235

Julio Montoya 14 years ago
parent
commit
db5b6091aa

+ 154 - 3
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 = '<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);
 
-?>
+    } 	
+}

+ 20 - 7
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' 	:

+ 1 - 2
main/dashboard/layout.php

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

+ 0 - 2
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;
-
 }
 
 

+ 57 - 55
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 .= '<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;
 	}
-
-}
-?>
+}