tieneAcceso()){ $objSesion->terminaSesion(); } $objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main //Obtiene fechas de periodo $stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, true)'); $stmt->bindParam(":periodo", $_SESSION["periodo_id"]); if(!$stmt->execute()){ //print_r($stmt->errorInfo()); $errorDesc = "Ocurrió un error al cargar los datos del periodo"; }else{ $periodo_rs = $stmt->fetch(); } $stmt->closeCursor(); $fecha_min = $periodo_rs["Periodo_fecha_inicial"]; $fecha_max = $periodo_rs["Periodo_fecha_final"]; // ---- Obtiene fechas de vacaciones $stmt = $pdo->prepare('select * from fs_calendarioevento_categoria(:fini, :ffin, 2, :periodo)'); $stmt->bindParam(":fini", $fecha_min); $stmt->bindParam(":ffin", $fecha_max); $stmt->bindParam(":periodo", $_SESSION["periodo_id"]); if(!$stmt->execute()){ $errorDesc = "Ocurrió un error al cargar las fechas de vacaciones"; }else{ $vacaciones_rs = $stmt->fetchAll(); } $stmt->closeCursor(); $stmt = null; $vacacionesArr = array();//Guarda los días individuales de vacaciones foreach($vacaciones_rs as $evento){ $fecha = fechaGuion($evento["CalendarioEvento_fecha"]); switch($evento["CalendarioRepeticion_id"]){ case 1: //diario while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) { $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]); $fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha))); } break; case 2: //semanal $diasArr = explode(",", $evento["CalendarioReglas_dias_str"]); while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) { if(in_array(date("w", strtotime($fecha)), $diasArr) ){//si es el día que quiero $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]); } $fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha))); } break; case 3://mensual $diasArr = explode(",", $evento["CalendarioReglas_dias_str"]); //reglas $weekTxt = array(1=>"first", 2=>"second", 3=>"third", 4=>"fourth", -1=>"last"); $dayname = array("sun", "mon", "tue", "wed", "thu", "fri", "sat"); $fecha = date ("Y-m-01", strtotime($fecha));//empieza a revisar en el primer día del mes $semana = $evento["CalendarioReglas_semana"]; while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) { foreach($diasArr as $d){ //echo "-->". intval(date("w", strtotime($fecha)))." == ". intval($d)."[".$fecha."]"; if($semana == 1 && intval(date("w", strtotime($fecha))) == intval($d) ){//si el día actual es el que quiero lo guarda $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]); }else{//si no calcula siguiente día if(intval(date("w", strtotime($fecha))) == intval($d)){ $fechaTmp = date ("Y-m-d", strtotime($weekTxt[$semana-1]." ".$dayname[$d], strtotime($fecha))); }else{ $fechaTmp = date ("Y-m-d", strtotime($weekTxt[$semana]." ".$dayname[$d], strtotime($fecha))); } $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]); } } $fecha = date ("Y-m-01", strtotime("+1 month", strtotime($fecha)));//siguiente mes primer día } break; default: //no se repite $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]); } } ?> APSA - Facultad de Ingeniería
printMenu(); //Obtiene grupos $query = ""; if(isset($_POST["fecha_ini"]) && $_POST["fecha_ini"]!=""){ $filter_fini = trim(filter_input(INPUT_POST, "fecha_ini", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto $query.=":f_ini, "; }else{ $query.="NULL, "; } if(isset($_POST["fecha_fin"]) && $_POST["fecha_fin"]!=""){ $filter_ffin = trim(filter_input(INPUT_POST, "fecha_fin", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto $query.=":f_fin, "; }else{ $query.="NULL, "; } $stmt = $pdo->prepare('Select * from fs_reposicion(NULL, :periodo, NULL, :prof, '.$query.' NULL, 0, NULL )'); $stmt->bindParam(":periodo", $_SESSION["periodo_id"]); if(isset($filter_fini)) $stmt->bindParam(":f_ini", $filter_fini); if(isset($filter_ffin)) $stmt->bindParam(":f_fin", $filter_ffin); $stmt->bindParam(":prof", $_SESSION["usuario_id"]); if(!$stmt->execute()){ //print_r($stmt->errorInfo()); $errorDesc = "Ocurrió un error al cargar las reposiciones"; }else{ $reposiciones_rs = $stmt->fetchAll(); } $stmt->closeCursor(); //Obtiene plan de estudios $stmt = $pdo->prepare('Select * from fs_planestudio(:nivel, NULL, NULL, true, NULL, NULL)'); $stmt->bindParam(":nivel", $_SESSION["nivel_id"]); if(!$stmt->execute()){ //print_r($stmt->errorInfo()); $errorDesc = "Ocurrió un error al cargar los planes de estudios"; }else $plan_rs = $stmt->fetchAll(); $stmt->closeCursor(); //Obtiene fechas de periodo $stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, true)'); $stmt->bindParam(":periodo", $_SESSION["periodo_id"]); if(!$stmt->execute()){ $errorDesc = "Ocurrió un error al cargar las fechas del periodo"; }else{ $periodo_rs = $stmt->fetch(); } $stmt->closeCursor(); //Salones $stmt = $pdo->prepare('Select * from fs_salon(NULL, NULL, 0, NULL)'); if(!$stmt->execute()){ $errorDesc = "Error al obtener los salones"; //print_r($stmt->errorInfo()); } $salones_rs = $stmt->fetchAll(); $stmt->closeCursor(); //Estado reposicion $stmt = $pdo->prepare('Select * from fs_estadoreposicion(NULL)'); if(!$stmt->execute()){ $errorDesc = "Error al obtener los estados de reposición"; //print_r($stmt->errorInfo()); } $estado_rs = $stmt->fetchAll(); $stmt->closeCursor(); //Materias //$stmt = $pdo->prepare('Select * from fs_materiasprofesor(:per, :usr)'); $stmt = $pdo->prepare('SELECT mh."Horario_id", mh."Materia_desc", mh."Grupo_desc", mh."Carrera_prefijo",d."Dia_id", d."Dia_desc", mh."Hora_inicio" FROM fs_mihorario(:usr, :per, 3) AS mh INNER JOIN "Dia" d ON mh."Dia_id" = d."Dia_id" WHERE "TipoHorario_id" = 3 ORDER BY "Grupo_desc", "Materia_desc", d."Dia_id", "Hora_inicio"'); $stmt->bindParam(":per", $_SESSION["periodo_id"]); $stmt->bindParam(":usr", $_SESSION["usuario_id"]); if(!$stmt->execute()){ $errorDesc = "Error al obtener las materias"; } $materias_rs = $stmt->fetchAll(); $stmt->closeCursor(); if($_SESSION["jefe_carrera"] ){ //Profesores del área del profesor $stmt = $pdo->prepare('Select * from fs_profesoresperiodo_jefe(:per, :usr)'); $stmt->bindParam(":per", $_SESSION["periodo_id"]); $stmt->bindParam(":usr", $_SESSION["usuario_id"]); if(!$stmt->execute()){ $errorDesc = "Error al obtener el área del usuario"; //print_r($stmt->errorInfo()); } $prof_rs = $stmt->fetchAll(); $stmt->closeCursor(); }else if($_SESSION["sgi_administrador"]){ //Profesores del área del profesor $stmt = $pdo->prepare('Select * from fs_profesoresperiodo_jefe(:per, NULL)'); $stmt->bindParam(":per", $_SESSION["periodo_id"]); if(!$stmt->execute()){ $errorDesc = "Error al obtener el área del usuario"; //print_r($stmt->errorInfo()); } $prof_rs = $stmt->fetchAll(); $stmt->closeCursor(); } $stmt = null; if(count($plan_rs) == 0){ header("Location: planestudios.php?error=4"); exit(); } //--Manejo de errores y mensajes de exito if(isset($_GET["error"]) && is_numeric($_GET["error"])){ switch ($_GET["error"]){ case 0: $errorDesc = "No se reciberon los datos de la reposición."; break; case 1: $errorDesc = "Ocurrió un error al insertar los datos de la reposición/cambio."; break; case 2: $errorDesc = "Ocurrió un error al actualizar los datos de la reposición/cambio."; break; case 3: $errorDesc = "No tienes permisos para realizar esa acción."; break; case 4: $errorDesc = "Ocurrió un error al cargar los datos de la reposición/cambio."; break; case 6: $errorDesc = "La reposición/cambio que buscas no existe. Consulta la lista de reopsiciones disponibles en esta sección."; break; case 7: $errorDesc = "La reposición/cambio se empalma con el horario del grupo y no se puede guardar."; break; case 8: $errorDesc = "El salón de la reposición está siendo utilizado ese día a esa hora y no se puede guardar."; break; case 9: $errorDesc = "El profesor está asigndo a otra reposición/cambio el mismo día a la misma hora y no se puede guardar."; break; case 10: $errorDesc = "El profesor está asigndo a una materia el mismo día a la misma hora y no se puede guardar."; break; case 11: $errorDesc = "No hay clases asignadas para esa materia y grupo en la fecha de falta."; break; case 12: $errorDesc = "Ocurrió un error al insertar los datos de la reposición/cambio en el servidor remoto."; break; case 13: $errorDesc = "Ocurrió un error al actualizar los datos de la reposición/cambio en el servidor remoto."; break; } } if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){ switch ($_GET["ok"]){ case 0: $successDesc = "La reposición/cambio se guardó correctamente."; break; case 1: $successDesc = "La reposición/cambio se actualizó correctamente."; break; } } ?>
puedeEditar() && !empty($materias_rs) && duracionMinutos(date("Y-m-d H:i:00"), $periodo_rs["Periodo_fecha_final"] ) > 0){ ?>

No tienes materias asignadas en este periodo.

">
">
0){ ?>
puedeEditar()){ ?>" id="id" data-id_cronos=""> puedeEditar()){ ?>
Estado Materia Tipo Fecha falta Fecha reposición Salón Acciones
" title="">
d-flex mx-auto">
() ".date('H:i', strtotime($fechaIArr[1]))." a ".date('H:i', strtotime($fechaFArr[1]." +90 minute"))." hrs."; ?>

No tienes reposiciones disponibles

puedeEditar()){ ?>
puedeEditar()){ if(strtotime($periodo_rs["Periodo_fecha_inicial"])>strtotime(date("Y-m-d")) ) $fecha_man = fechaSlash($periodo_rs["Periodo_fecha_inicial"]); else{ $dias = 3; if( intval(date("w")) >=3 && intval(date("w"))<=5 )//Mie a Vie $dias+=3; else if( intval(date("w")) ==6 )//Sab $dias+=2; else if( intval(date("w")) ==0 )//Do $dias+=1; $fecha_man = date("d/m/Y", strtotime("+".$dias." day")); } ?>