tutor_report.lib.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. function inicializarReporte($course_code){
  3. $course_info = api_get_course_info($course_code);
  4. $table_reporte_semanas = Database::get_main_table('rp_reporte_semanas');
  5. $table_students_report = Database::get_main_table('rp_students_report');
  6. $table_semanas_curso = Database::get_main_table('rp_semanas_curso');
  7. $table_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
  8. $table_post = Database::get_course_table(TABLE_FORUM_POST, $course_info['dbName']);
  9. $table_work = Database::get_course_table(TABLE_STUDENT_PUBLICATION, $course_info['dbName']);
  10. $res = Database::query("SELECT COUNT(*) as cant FROM $table_reporte_semanas WHERE course_code = '".$course_code."'");
  11. $sql_semanas = "SELECT semanas FROM $table_semanas_curso WHERE course_code = '$course_code'";
  12. $res_semanas = Database::query($sql_semanas);
  13. $semanas = Database::fetch_object($res_semanas);
  14. $obj = Database::fetch_object($res);
  15. $numero_semanas = (!isset($_POST['numerosemanas']))?(($semanas->semanas==0)?7:$semanas->semanas):$_POST['numerosemanas'];
  16. Database::query("REPLACE INTO $table_semanas_curso (course_code , semanas) VALUES ('$course_code','$numero_semanas')");
  17. if(intval($obj->cant) != $numero_semanas){
  18. if(intval($obj->cant) > $numero_semanas){
  19. $sql ="DELETE FROM $table_reporte_semanas WHERE week_id > $numero_semanas AND course_code = '$course_code'";
  20. Database::query("DELETE FROM $table_reporte_semanas WHERE week_id > $numero_semanas AND course_code = '$course_code'");
  21. }else{
  22. for ($i = $obj->cant+1 ; $i <= $numero_semanas ; $i++){
  23. if(!Database::query("INSERT INTO $table_reporte_semanas (week_id,course_code,forum_id,work_id,quiz_id,pc_id)
  24. VALUES ('$i','$course_code','0','0','0','0' )")){
  25. return false;
  26. }
  27. }
  28. }
  29. }
  30. $sql = "REPLACE INTO $table_students_report (user_id,week_report_id, work_ok , thread_ok , quiz_ok , pc_ok)
  31. SELECT cu.user_id, rs.id, 0, 0, 0, 0
  32. FROM $table_course_rel_user cu
  33. LEFT JOIN $table_reporte_semanas rs ON cu.course_code = rs.course_code
  34. WHERE cu.status = '5' AND rs.course_code = '$course_code'
  35. ORDER BY cu.user_id, rs.id";
  36. if(!Database::query($sql)){
  37. return false;
  38. }else{
  39. $pagina = (!isset($_GET['page']))?1:$_GET['page'];
  40. Database::query("UPDATE $table_students_report sr SET sr.work_ok = 1
  41. WHERE CONCAT (sr.user_id,',',sr.week_report_id)
  42. IN (SELECT DISTINCT CONCAT(w.user_id,',',rs.id)
  43. FROM $table_work w JOIN $table_reporte_semanas rs ON w.parent_id = rs.work_id)");
  44. Database::query("UPDATE $table_students_report sr SET sr.thread_ok = 1
  45. WHERE CONCAT (sr.user_id,',',sr.week_report_id)
  46. IN (SELECT DISTINCT CONCAT(f.poster_id,',',rs.id)
  47. FROM $table_post f JOIN $table_reporte_semanas rs ON f.thread_id = rs.forum_id)");
  48. return mostrarResultados($course_info,$numero_semanas,$pagina);
  49. }
  50. }
  51. function mostrarResultados($course_info,$numero_semanas, $pagina){
  52. $course_code = $course_info['code'];
  53. $table_reporte_semanas = Database::get_main_table('rp_reporte_semanas');
  54. $table_students_report = Database::get_main_table('rp_students_report');
  55. $table_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
  56. $table_user = Database::get_main_table(TABLE_MAIN_USER );
  57. $table_thread = Database::get_course_table(TABLE_FORUM_THREAD, $course_info['dbName']);
  58. $table_work = Database::get_course_table(TABLE_STUDENT_PUBLICATION, $course_info['dbName']);
  59. $resultados = array();
  60. $table_export = array();
  61. $sql_encabezado = "SELECT rs.id as id,rs.week_id, w.title AS work_title, t.thread_title ,'EVALUACION' as eval_title ,'QUIZ' as pc_title
  62. FROM $table_reporte_semanas rs
  63. LEFT JOIN $table_thread t ON t.thread_id = rs.forum_id
  64. LEFT JOIN $table_work w ON w.id = rs.work_id
  65. WHERE rs.course_code = '$course_code'
  66. ORDER BY rs.week_id";
  67. $result_encabezado = Database::query($sql_encabezado) ;
  68. $ids = array();
  69. $fila = '<tr>
  70. <th ></th>';
  71. $fila_export_encabezado = array(null,null);
  72. $fila_export_encabezado2 = array(null,ull);
  73. while ($rowe = Database::fetch_assoc($result_encabezado)){
  74. $fila_export_encabezado[] = utf8_decode('Tarea'.$rowe['week_id']);
  75. $fila_export_encabezado[] = utf8_decode('Foro'.$rowe['week_id']);
  76. //$fila_export_encabezado[] = utf8_decode('Eval'.$rowe['week_id']);
  77. //$fila_export_encabezado[] = utf8_decode('PC'.$rowe['week_id']);
  78. $fila_export_encabezado2[] = utf8_decode($rowe['work_title']);
  79. $fila_export_encabezado2[] = utf8_decode($rowe['thread_title']);
  80. //$fila_export_encabezado2[] = utf8_decode($rowe['eval_title']);
  81. //$fila_export_encabezado2[] = utf8_decode($rowe['pc_title']);
  82. $fila_export = array('Tarea'.$rowe['week_id'],'Foro'.$rowe['week_id'],'Eval'.$rowe['week_id'],'PC'.$rowe['week_id']);
  83. if ($rowe['week_id'] > (($pagina-1)*7) && $rowe['week_id'] <= (7*$pagina)){
  84. $ids[$rowe['week_id']] = $rowe['id'];
  85. $fila.='<th>
  86. <a href="#" onClick="mostrarContenido('."'tarea".$rowe['week_id']."'".');">Tarea'.$rowe['week_id'].'
  87. <div class="blackboard_hide" id="tarea'.$rowe['week_id'].'">'.$rowe['work_title'].'</div>
  88. </a></th>';
  89. $fila.= '<th>
  90. <a href="#" onClick="mostrarContenido('."'foro".$rowe['week_id']."'".');">Foro'.$rowe['week_id'].'
  91. <div class="blackboard_hide" id="foro'.$rowe['week_id'].'">'.$rowe['thread_title'].'</div>
  92. </a>
  93. </th>';
  94. /*$fila.= '<th>
  95. <a href="#" onClick="mostrarContenido('."'eval".$rowe['week_id']."'".');">Eval'.$rowe['week_id'].'
  96. <div class="blackboard_hide" id="eval'.$rowe['week_id'].'">'.$rowe['eval_title'].'</div>
  97. </a>
  98. </th>';
  99. $fila.= '<th>
  100. <a href="#" onClick="mostrarContenido('."'pc".$rowe['week_id']."'".');">PC'.$rowe['week_id'].'
  101. <div class="blackboard_hide" id="pc'.$rowe['week_id'].'">'.$rowe['pc_title'].'</div>
  102. </a>
  103. </th>';*/
  104. }
  105. }
  106. $table_export[] = $fila_export_encabezado;
  107. $table_export[] = $fila_export_encabezado2;
  108. $fila.= '</tr>';
  109. $html = '<form action="tutor.php" name="semanas" id="semanas" method="POST">
  110. <div class="row">
  111. Seleccione cantidad de semanas:
  112. <select name="numerosemanas" id="numerosemanas" onChange="submit();">
  113. <option value="7" '.(($numero_semanas ==7)?'selected="selected"':"").'>7 Semanas</option>
  114. <option value="14" '.(($numero_semanas ==14)?'selected="selected"':"").'>14 Semanas</option>
  115. </select>';
  116. if($numero_semanas == 14) {
  117. $html .= '<span style="float:right;"><a href="tutor.php?page='.(($pagina == 1)?2:1).'">'.(($pagina == 1)?"Siguiente":"Anterior").'</a></span>';
  118. }
  119. $html .= '<span style="float:right;"><a href="'.api_get_self().'?action=export'.$get_parameter.$get_parameter2.'">'.Display::return_icon('import_excel.png',get_lang('Export'),'','32').'</a></span>';
  120. $html .= '</form>';
  121. $html .= '<table class="reportes">';
  122. $html .= '<tr>
  123. <th ></th>';
  124. for ($i=(7*$pagina-6); $i <= $pagina*7;$i++){
  125. $html .= '<th colspan="2">Semana '.$i.'<a href="assign_tickets.php?id='.$ids[$i].'" class="ajax">'.Display::return_icon('edit.png', get_lang('Edit'), array('width'=>'16','height'=>'16'), 22).'</a></th>';
  126. }
  127. $html .= '</tr>';
  128. $html .= $fila;
  129. $sql = "SELECT u.username , u.user_id , CONCAT(u.lastname,' ', u.firstname ) as fullname , rs.week_id , sr.work_ok ,sr.thread_ok , sr.quiz_ok , sr.pc_ok , rs.course_code
  130. FROM $table_students_report sr
  131. JOIN $table_reporte_semanas rs ON sr.week_report_id = rs.id
  132. JOIN $table_user u ON u.user_id = sr.user_id
  133. WHERE rs.course_code = '$course_code'
  134. ORDER BY u.lastname , u.username , rs.week_id
  135. ";
  136. $result = Database::query($sql);
  137. while ($row = Database::fetch_assoc($result)){
  138. $resultadose[$row['username']][$row['week_id']] = $row;
  139. if ($row['week_id'] > (($pagina-1)*7) && $row['week_id'] <= (7*$pagina) ){
  140. $resultados[$row['username']][$row['week_id']] = $row;
  141. if(count($resultados[$row['username']]) == 7 ){
  142. $html.= mostrarResultadoAlumno($resultados[$row['username']],$pagina);
  143. }
  144. }
  145. if(count($resultadose[$row['username']]) == $numero_semanas ){
  146. $table_export[] = mostrarResultadoAlumnoExportar($resultadose[$row['username']],$numero_semanas);
  147. }
  148. }
  149. $html .= '
  150. </table>';
  151. return array('mostrar'=>$html,'exportar'=>$table_export);
  152. }
  153. function mostrarResultadoAlumno($datos,$pagina){
  154. $inicio = (7*$pagina-6);
  155. $fila = '<tr>';
  156. $fila.= '<td><a href="'.api_get_path(WEB_CODE_PATH).'user/userInfo.php?'.api_get_cidreq().'&uInfo='.$datos[$inicio]['user_id'].'">'.$datos[$inicio]['username'].'</a></td>';
  157. foreach ($datos as $dato){
  158. $fila.= '<td align="center">'.(($dato['work_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
  159. $fila.= '<td align="center">'.(($dato['thread_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
  160. //$fila.= '<td>'.(($dato['quiz_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
  161. //$fila.= '<td>'.(($dato['pc_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
  162. }
  163. $fila.= '</tr>';
  164. return $fila;
  165. }
  166. function mostrarResultadoAlumnoExportar($datos ,$numero_semanas){
  167. $fila = array();
  168. $fila[] = utf8_decode($datos[1]['username']);
  169. $fila[]= utf8_decode($datos[1]['fullname']);
  170. foreach ($datos as $dato){
  171. //if ($datos['week_id'] < $numero_semanas){
  172. $fila[]= ($dato['work_ok']==1)?"SI":"NO";
  173. $fila[]= ($dato['thread_ok']==1)?"SI":"NO";
  174. //$fila[]= ($dato['quiz_ok']==1)?"SI":"NO";
  175. //$fila[]= ($dato['pc_ok']==1)?"SI":"NO";
  176. //}
  177. }
  178. return $fila;
  179. }
  180. ?>