plancatedra_insert.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <?php
  2. /*
  3. * Inserta los datos del plan de cátedra
  4. * Recibe:
  5. * materia con cadena de materia_grupo_subm
  6. * json: JSON con la infromación del plan
  7. * Error:
  8. * 0 - No se recibieron los datos
  9. * 1 - Error de base de datos
  10. * Success:
  11. */
  12. require_once("../../include/constantes.php");
  13. require_once("../../include/bd_pdo.php");
  14. require_once("../../classes/ValidaSesion.php");
  15. require_once("../classes/LogActividad.php");//die on error
  16. require_once("../../include/util.php");
  17. $pag = "../syllabus.php";
  18. function getRGBA_color($hex, $a=0){
  19. list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
  20. $style = "rgba($r,$g, $b,";
  21. $style .= "$a)";
  22. return $style;
  23. }
  24. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  25. $objSesion = new ValidaSesion($pdo, 25, APSA);
  26. if(!$objSesion->tieneAcceso()){
  27. $objSesion->terminaSesion();
  28. //print_r($objSesion->getError());
  29. }
  30. if(!$objSesion->puedeEditar()){
  31. //header("Location: ".$pag);
  32. $return["error"] = "Error! No tienes permisos para realizar esta acción.";
  33. echo json_encode($return);
  34. exit();
  35. }
  36. unset($objValida);
  37. if(empty($_POST["materia"]) || empty($_POST["json"])){
  38. //header("Location: ".$pag."?error=0");
  39. $return["error"] = "No se reciberon los datos.";
  40. echo json_encode($return);
  41. exit();
  42. }
  43. $datos = json_decode($_POST["json"], true);
  44. $filter_mat = $_POST["materia"];
  45. $matArr = explode("_",$filter_mat);
  46. // --- Borra sesiones anteriores ---
  47. try{
  48. $pdo->beginTransaction();
  49. //Obtiene fechas de periodo
  50. $stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, true)');
  51. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  52. if(!$stmt->execute()){
  53. $return["error"] = "Ocurrió un error al cargar los datos del periodo";
  54. echo json_encode($return);
  55. exit();
  56. }else{
  57. $periodo_rs = $stmt->fetch();
  58. }
  59. $stmt->closeCursor();
  60. $fecha_min = $periodo_rs["Periodo_fecha_inicial"];
  61. $error = false;
  62. if(empty($matArr[2])){
  63. //echo "fd_sesioncatedra(".$matArr[0].", ".$_SESSION["usuario_id"].", ".$matArr[1].", NULL, NULL, NULL)";
  64. $stmt = $pdo->prepare('Select * from fd_sesioncatedra(:mat, :prof, :gpo, NULL, NULL, NULL)');
  65. }else{
  66. $stmt = $pdo->prepare('Select * from fd_sesioncatedra(:mat, :prof, :gpo, :sub, NULL, NULL)');
  67. $stmt->bindParam(":sub", $matArr[2]);
  68. }
  69. $stmt->bindParam(":prof", $_SESSION["usuario_id"]);
  70. $stmt->bindParam(":mat", $matArr[0]);
  71. $stmt->bindParam(":gpo", $matArr[1]);
  72. if(!$stmt->execute()){
  73. $pdo->rollBack();
  74. //print_r($stmt->errorInfo());
  75. //header("Location:".$pag."?error=1");
  76. $return["error"] = "Ocurrió un error al borrar las fechas del plan de cátedra.";
  77. echo json_encode($return);
  78. exit();
  79. }
  80. $stmt->closeCursor();
  81. $stmt = null;
  82. foreach($datos as $sesion){
  83. foreach($sesion["contenido"] as $cont){
  84. //echo "fi_sesioncatedra(".$matArr[0].", ".$_SESSION["usuario_id"].", ".$matArr[1].", ".$matArr[2].", ".$sesion["sesion"].", ".$cont["pos"].", ".$cont["desc"].", ".$cont["tipo"].")";
  85. if(empty($matArr[2])){
  86. $stmt = $pdo->prepare('Select * from fi_sesioncatedra(:mat, :prof, :gpo, NULL, :ses, :pos, :desc, :tipo)');
  87. }else{
  88. $stmt = $pdo->prepare('Select * from fi_sesioncatedra(:mat, :prof, :gpo, :sub, :ses, :pos, :desc, :tipo)');
  89. $stmt->bindParam(":sub", $matArr[2]);
  90. }
  91. $stmt->bindParam(":prof", $_SESSION["usuario_id"]);
  92. $stmt->bindParam(":mat", $matArr[0]);
  93. $stmt->bindParam(":gpo", $matArr[1]);
  94. $stmt->bindParam(":ses", $sesion["sesion"]);
  95. $stmt->bindParam(":pos", $cont["pos"]);
  96. $stmt->bindParam(":desc", $cont["desc"]);
  97. $stmt->bindParam(":tipo", $cont["tipo"]);
  98. if(!$stmt->execute()){
  99. $pdo->rollBack();
  100. //print_r($stmt->errorInfo()); exit();
  101. //header("Location:".$pag."?error=1");
  102. $return["error"] = "Ocurrió un error al insertar las fechas del plan de cátedra.";
  103. echo json_encode($return);
  104. exit();
  105. }
  106. $stmt->closeCursor();
  107. $stmt = null;
  108. }
  109. }
  110. $log = new LogActividad();
  111. $desc_log = "Inserta plan cátedra Prof[".$_SESSION["usuario_id"]."] Mat[".$matArr[0]."] Gpo[".$matArr[1]."] ";
  112. $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
  113. $pdo->commit();
  114. }catch(PDOException $e) {
  115. $pdo->rollBack();
  116. //print_r($e); exit();
  117. //header("Location: ".$pag."?error=1");
  118. $return["error"] = "Ocurrió un error al insertar las fechas del plan de cátedra.";
  119. echo json_encode($return);
  120. exit();
  121. }
  122. //Después del tiempo para modificar
  123. $fecha_limite = $fecha = date ("Y-m-d", strtotime("+18 day", strtotime($fecha_min))); //18 días / 3 semanas
  124. if(strtotime(date("Y-m-d")) > strtotime($fecha_limite)){
  125. $mat = $matArr[0];
  126. $gpo = $matArr[1];
  127. $gpo_nom = trim(filter_input(INPUT_POST, "gpo_nom", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto
  128. if(!empty($matArr[2])){
  129. $sub = $matArr[2];
  130. }
  131. $usr = $_SESSION["usuario_id"];
  132. $usr_nombre = $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"];
  133. if(isset($_POST["prof"]) && !empty($_POST["prof"])){
  134. $usr = filter_input(INPUT_POST, "prof", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  135. $stmt = $pdo->prepare('Select * from fs_usuario(:usr)');
  136. $stmt->bindParam(":usr", $usr);
  137. if(!$stmt->execute()){
  138. //header("Location: ".$pag."?error=5");
  139. $return["error"] = "Ocurrió un error al obtener los datos del profesor.";
  140. echo json_encode($return);
  141. exit();
  142. }else{
  143. $usr_rs = $stmt->fetch();
  144. $usr_nombre = $usr_rs["usuario_nombre"]." ".$usr_rs["usuario_apellidos"];
  145. }
  146. $stmt->closeCursor();
  147. }
  148. include_once('../../include/xTemplate/xtemplate.class.php'); // including mpdf.php
  149. include_once('../../include/mpdf/autoload.php'); // including mpdf.php
  150. include_once('../classes/PlanCatedra.php');
  151. $stylesheet = "<style>";
  152. $stylesheet .= file_get_contents('../../css/indivisa.css'); // external css
  153. $stylesheet .= file_get_contents('../css/syllabus.css'); // external css
  154. $stylesheet .= "</style>";
  155. $xtpl = new XTemplate('../tpl/syllabus.tpl.html');
  156. $planObj = new PlanCatedra($pdo);
  157. if(!$planObj->generaCalendario($usr, $usr_nombre, $mat, $gpo, $gpo_nom, $sub)){
  158. $return["error"] = "Ocurrió un error al generar el plan.";
  159. echo json_encode($return);
  160. exit();
  161. }
  162. $planObj->pdfPlan($stylesheet, true);
  163. }
  164. //header("Location: ".$pag."?ok=1");
  165. $return["ok"] = "El plan de cátedra se actualizó correctamente";
  166. echo json_encode($return);
  167. exit();
  168. ?>