El periodo para editar el Syllabus se ha terminado.
">
Sesión
tieneAcceso()){
$objSesion->terminaSesion();
}
$objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main
//-------
function buscaVacacion($fecha, $vacacionesArr){
$i=0;
foreach($vacacionesArr as $vacacion){
if ($vacacion["fecha"] == $fecha){
return $i;
}
$i++;
}
return false;
}
function getSesiones($arr, $num){
foreach($arr as $ses){
if($ses["sesion"] == $num ){
return $ses["subsesiones"];
}
}
return array();
}
function en_dias($dia, $arr){
foreach($arr as $e){
if($e["dia"] == $dia) return true;
}
return false;
}
//Obtiene materias de profesor
if(empty($matArr[2])){
$stmt = $pdo->prepare('Select * from fs_materiasprofesor(:per, :usr) ');
}
$stmt->bindParam(":per", $_SESSION["periodo_id"]);
$stmt->bindParam(":usr", $_SESSION["usuario_id"]);
if(!$stmt->execute()){
print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar los planes de estudios";
exit();
}else
$mat_rs = $stmt->fetchAll();
$stmt->closeCursor();
$stmt = null;
//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"];
$fecha_limite = date ("Y-m-d", strtotime("+18 day", strtotime($fecha_min))); //18 días / 3 semanas
$fecha_limite = date ("Y-m-d", strtotime("+42 day", strtotime($fecha_min))); //18 días / 3 semanas
//Obtiene fechas de periodo
$stmt = $pdo->prepare('Select * from fs_syllabus_excepcion(:periodo, :prof)');
$stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
$stmt->bindParam(":prof", $_SESSION["usuario_id"]);
if(!$stmt->execute()){
//print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar los datos del syllabus";
}else{
$ex_rs = $stmt->fetch();
}
$stmt->closeCursor();
if(!empty($ex_rs) && count($ex_rs)>0){
$fecha_nueva =
$t_fecha_limite = strtotime($fecha_limite);
$fecha_nueva = strtotime($ex_rs["SyllabusExcepcion_fecha"]);
if ($fecha_nueva > $t_fecha_limite) {
$fecha_limite = date ("Y-m-d", $fecha_nueva); //18 días / 3 semanas
}
}
//------------
if(isset($_POST["materia"])){
$filter_mat = $_POST["materia"];
$filter_materia_nom = $_POST["materia_nom"];
$filter_gpo_nom = $_POST["gpo_nom"];
$matArr = explode("_",$filter_mat);
//--
if(empty($matArr[2])){
$stmt = $pdo->prepare('Select * from fs_syllabus(:periodo, :prof, :mat, :gpo, NULL )');
}else{
$stmt = $pdo->prepare('Select * from fs_syllabus(:periodo, :prof, :mat, :gpo, :sub )');
$stmt->bindParam(":sub", $matArr[2]);
}
$stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
$stmt->bindParam(":prof", $_SESSION["usuario_id"]);
$stmt->bindParam(":mat", $matArr[0]);
$stmt->bindParam(":gpo", $matArr[1]);
if(!$stmt->execute()){
//print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar los datos del sýllabus";
}else{
$syllabus_rs = $stmt->fetch();
}
$stmt->closeCursor();
//Obtiene grupos
$query = "";
//---Tipo de sesiones plan cátedra
$stmt = $pdo->prepare('Select * from fs_sesioncatedra_tipo(NULL)');
if(!$stmt->execute()){
//print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar los días de las materias";
}else{
$tipoSesionArr = $stmt->fetchAll();
}
$stmt->closeCursor();
$stmt = null;
//-------------------------
//Periodos con nombramientos
$stmt = $pdo->prepare('Select * from fs_periodosprofesor(:usr_id) WHERE "Periodo_hasHistorico" is true order by "Periodo_id" DESC');
$stmt->bindParam(":usr_id", $_SESSION["usuario_id"]);
if(!$stmt->execute()){
$errorDesc = "Ocurrió un error al cargar los periodos del usuario";
}else{
$periodosN_rs = $stmt->fetchAll();
}
$stmt->closeCursor();
//-------------------------
//Obtiene materias de profesor y los dias que da clase
if(empty($matArr[2])){
$stmt = $pdo->prepare('Select * from fs_materiadias(:usr, :mat, :gpo, NULL)');
}else{
$stmt = $pdo->prepare('Select * from fs_materiadias(:usr, :mat, :gpo, :sub)');
$stmt->bindParam(":sub", $matArr[2]);
}
$stmt->bindParam(":usr", $_SESSION["usuario_id"]);
$stmt->bindParam(":mat", $matArr[0]);
$stmt->bindParam(":gpo", $matArr[1]);
if(!$stmt->execute()){
//print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar los días de las materias";
}else{
$rs = $stmt->fetchAll();
$diasMatArr = array();
foreach($rs as $dia){
$diasMatArr[] = array( "dia"=> $dia["Dia_id"], "hora"=>substr($dia["Horario_hora"],0, 5));
}
}
$stmt->closeCursor();
$stmt = null;
// ---- 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"]);
}
}
//----- Calcula fechas de clases
$MESES = array(1=>"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
$DIAS = array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado");
$calendario = array();
$fechasArr = array();
$fecha = $fecha_min;
$semOld=1;
$cont = 0;
while (strtotime($fecha) <= strtotime($fecha_max)) {
if(date("w", strtotime($fecha)) == $diasMatArr[$cont%count($diasMatArr)]["dia"]) {//si es el día que quiero
if($semOld != floor($cont/count($diasMatArr))+1){
$sem = floor($cont/count($diasMatArr))+1;
$semOld = $sem;
$calendario[] = array("semana"=>$sem-1, "fechas"=>$fechasArr);
$fechasArr = array();
}
$vacPos = buscaVacacion($fecha, $vacacionesArr);
//echo $cont.") Fecha: ".$fecha." [".($vacPos===false?"false":"true")."]
";
if($vacPos === false){//no vacaciones
$fechasArr[] = array("numSesion"=>$cont+1, "fecha"=>fechaSlash($fecha)." ".$diasMatArr[$cont%count($diasMatArr)]["hora"], "mes"=>date("n", strtotime($fecha)), "habil"=>true, "dia"=>$DIAS[date("w", strtotime($fecha))-1], "titulo"=>"");
//Si el día de la fecha no es el día del siguiente evento O se reinicia el arreglo de días
//echo "$cont)". fechaSlash($fecha)." ";
//echo "[".date("w", strtotime($fecha))." != ".$diasMatArr[($cont+1)%count($diasMatArr)]["dia"]."] || [ 0 == ".($cont+1)%count($diasMatArr)."]
";
if(date("w", strtotime($fecha)) != $diasMatArr[$cont%count($diasMatArr)]["dia"] || ($cont+1)%count($diasMatArr)==0){
$fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
//echo "Cambia día
";
}
}else{//vacaciones
$fechasArr[] = array("numSesion"=> 0,"fecha"=>fechaSlash($fecha), "mes"=>date("n", strtotime($fecha)), "habil"=>false, "dia"=>$DIAS[date("w", strtotime($fecha))-1], "titulo"=>$vacacionesArr[$vacPos]["titulo"]);
$aux = $cont/count($diasMatArr);//para que sean de la misma semana
//mientras sea el mismodía de la misma semana
//while(date("w", strtotime($fecha)) == $diasMatArr[($cont+1)%count($diasMatArr)]["dia"] && $aux == ($cont+1)/count($diasMatArr)){
//echo "-- while ".date("w", strtotime($fecha)) ."==". $diasMatArr[$cont%count($diasMatArr)]["dia"]." || ".($cont+1)%count($diasMatArr)."==0
";
if(date("w", strtotime($fecha)) != $diasMatArr[$cont%count($diasMatArr)]["dia"] || ($cont+1)%count($diasMatArr)==0){
while(date("w", strtotime($fecha)) == $diasMatArr[$cont%count($diasMatArr)]["dia"] && ($cont+1)%count($diasMatArr)!=0){
$cont++;
}
$fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
}
/*if(date("w", strtotime($fecha)) != $diasMatArr[$cont%count($diasMatArr)]["dia"] || ($cont+1)%count($diasMatArr)==0){
$fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
}*/
}
$cont++;
}else{
$fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
//echo "Cambia día else
";
}
}
if($semOld != floor($cont/count($diasMatArr))){
$sem = floor($cont/count($diasMatArr))+1;
}else{
$sem = floor($cont/count($diasMatArr));
}
$calendario[] = array("semana"=>$sem, "fechas"=>$fechasArr);
$mesMin = $calendario[0]["fechas"][0]["mes"];
$mesMax = $calendario[count($calendario)-1]["fechas"][0]["mes"];
$cont = 1;
$i=0;
$j=0;
for($i=0; $i< count($calendario); $i++){
for($j=0; $j< count($calendario[$i]["fechas"]); $j++){
if($calendario[$i]["fechas"][$j]["habil"]){
$calendario[$i]["fechas"][$j]["numSesion"] = $cont;
$cont++;
}
}
}
//---Obtiebe contenido de sesiones plan cátedra
if(empty($matArr[2])){
$stmt = $pdo->prepare('Select * from fs_sesioncatedra(:mat, :usr, :gpo, NULL, NULL)');
}else{
$stmt = $pdo->prepare('Select * from fs_sesioncatedra(:mat, :usr, :gpo, :sub, NULL)');
$stmt->bindParam(":sub", $matArr[2]);
}
$stmt->bindParam(":usr", $_SESSION["usuario_id"]);
$stmt->bindParam(":mat", $matArr[0]);
$stmt->bindParam(":gpo", $matArr[1]);
if(!$stmt->execute()){
//print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar las sesiones del plan de cátedra";
}else{
$rs = $stmt->fetchAll();
$sesionesArr = array();
$ses_old = -1;
$subsesionArr = array();
$i = -1;
foreach($rs as $ses){
if($ses_old != $ses["SesionCatedra_numero"]){
$i++;
$sesionesArr[$i]=array("sesion"=>$ses["SesionCatedra_numero"], "subsesiones"=>array());
$ses_old = $ses["SesionCatedra_numero"];
}
$sesionesArr[$i]["subsesiones"][] = array("desc"=>$ses["SesionCatedra_desc"], "tipo_id"=>$ses["SesionCatedraTipo_id"], "tipo"=>$ses["SesionCatedraTipo_desc"], "color"=>$ses["SesionCatedraTipo_color"]);
//$diasMatArr[] = array( "dia"=> $dia["Dia_id"], "hora"=>substr($dia["Horario_hora"],0, 5));
}
}
//print_r($sesionesArr); exit();
$stmt->closeCursor();
$stmt = null;
//Obtiene mapa
$stmt = $pdo->prepare('select * from fs_atributoegreso_materia(:mat)');
$stmt->bindParam(":mat", $matArr[0]);
if(!$stmt->execute()){
$errorDesc = "Ocurrió un error al cargar los datos de los atributos de egreso.";
}else{
$atributos_rs = $stmt->fetchAll();
}
}
?>
Sesión