assign('DIA', $dia['Dia_desc']);
$xtpl->assign('ID_DIA', $dia['Dia_id']);
$xtpl->parse('main.header');
}
$rs_i = 0;
$spacerArr = array(1=>0,0,0,0,0,0);
$pendiente = '
Pendiente';
$horas_dif = intval(date('H', strtotime($horaMax))) - intval(date('H', strtotime($horaMin)));
$sub_prof_num = 0;
$sub_num = 0;
$tiene_submaterias = false;
for($h = date('H', strtotime($horaMin)); $h <= date('H', strtotime($horaMax)); $h++){
$xtpl->assign('HORA', date('H', strtotime($h.':00')));
$xtpl->assign('FRACCIONES', FRACCION_HORA);
$xtpl->parse('main.hora_row.hora');
for($f = 0; $f < FRACCION_HORA; $f++){
foreach($dias_rs as $dia){
if($rs_i < count($horario_rs) && date('H:i', strtotime($horario_rs[$rs_i]['Horario_hora'])) == date('H:i', strtotime($h.':'.($f * (60/FRACCION_HORA)))) && $horario_rs[$rs_i]['Dia_id'] == $dia['Dia_id']){
if((isset($filter_fecha) && strtotime($filter_fecha) >= strtotime($horario_rs[$rs_i]['fecha_inicial']) && strtotime($filter_fecha) <= strtotime($horario_rs[$rs_i]['fecha_final']) ) || !isset($filter_fecha)){
$size = $horario_rs[$rs_i]['Horario_duracion']/(60/FRACCION_HORA);
$spacerArr[$dia['Dia_id']] = $size -1;
$xtpl->assign('ID_DIA', $dia['Dia_id']);
$xtpl->assign('DURACION_SIZE', $size);
$xtpl->assign('ALTO_DIV', $size * ALTO_RENGLON);
$xtpl->assign('MATERIA', $horario_rs[$rs_i]['Materia_desc']);
$xtpl->assign('HORA_I', substr($horario_rs[$rs_i]['Horario_hora'], 0, 5));
$xtpl->assign('HORA_F', substr($horario_rs[$rs_i]['Horario_hora_final'], 0, 5));
if($horario_rs[$rs_i]['Salon_desc'] != '')
if($horario_rs[$rs_i]['Salon_desc_larga'] != '')
$xtpl->assign('SALON', $horario_rs[$rs_i]['Salon_desc'].' ['.$horario_rs[$rs_i]['Salon_desc_larga'].']');
else
$xtpl->assign('SALON', $horario_rs[$rs_i]['Salon_desc']);
else{
if(!isset($horario_rs[$rs_i]['TipoSubmateria_id']) || $horario_rs[$rs_i]['TipoSubmateria_id'] == 0)
$xtpl->assign('SALON', 'Pendinte');
else
$xtpl->assign('SALON', '*');
}
//----- Carga profesores ----
if($horario_rs[$rs_i]['TipoSubmateria_id'] == 0)
$profesores_rs = SGI::getProfesorHorarioGrupo($pdo, $horario_rs[$rs_i]['HorarioGrupo_id']);
else { //Con submaterias
//----- Carga submaterias ----
$submaterias_rs = SGI::getSubMateriaHorarioGrupo($pdo, $horario_rs[$rs_i]['HorarioGrupo_id']);
$sub_prof_num = 0;
$nombre_impreso = false;
if(count($submaterias_rs) > 0){
$tiene_submaterias = true;
foreach($submaterias_rs as $submateria){
$xtpl->assign('SUBMATERIA', $submateria['Submateria_desc']);
$xtpl->assign('DIA', diaNombre($horario_rs[$rs_i]['Dia_id']));
//---
$profesores_rs = SGI::getSubMateriaHorarioGrupoProfesor($pdo, $horario_rs[$rs_i]['HorarioGrupo_id'], $submateria['Submateria_id']);
$sub_prof_num += count($profesores_rs);
if(isset($profesores_rs) && count($profesores_rs) > 0){
$profesores_all = '';
foreach($profesores_rs as $profesor){
$prof_nombre = '' . $profesor['Usuario_apellidos'] . ' ' . $profesor['Usuario_nombre'] . '';
$profesores_all .= $prof_nombre;
}
$xtpl->assign('PROFESOR_SUB', $profesores_all);
$xtpl->assign('SALON_SUB', $submateria['Salon_desc']);
$xtpl->parse('main.submaterias_block.row.submateria');
if(!$nombre_impreso){
$nombre_impreso = true;
$xtpl->assign('MAT_ROWSPAN', count($submaterias_rs));
$xtpl->parse('main.submaterias_block.row.materia');
}
$xtpl->parse('main.submaterias_block.row');
}//solo si hay profesor
}
}
unset($profesores_rs);
}//fin con submaterias
if(isset($profesores_rs) && count($profesores_rs) > 0){
foreach($profesores_rs as $profesor){
$prof_nombre = '' . $profesor['Usuario_apellidos'] . ' ' . $profesor['Usuario_nombre'] . '';
$xtpl->assign('PROFESOR', $prof_nombre);
$xtpl->parse('main.hora_row.td.td_horario.profesor');
}
}else{
if($horario_rs[$rs_i]['TipoSubmateria_id'] == 0){//no pinta maestros electivas o secuenciales
$prof_nombre = $pendiente;
$xtpl->assign('PROFESOR', $prof_nombre);
$xtpl->parse('main.hora_row.td.td_horario.profesor');
}
}
$xtpl->parse('main.hora_row.td.td_horario.hora');
$xtpl->parse('main.hora_row.td.td_horario.texto');
$xtpl->parse('main.hora_row.td.td_horario.spacer');
$xtpl->parse('main.hora_row.td.td_horario');
}else
$xtpl->parse('main.hora_row.td.td_vacio');
$rs_i++;
}else{
if(!isset($spacerArr[$dia['Dia_id']]) || $spacerArr[$dia['Dia_id']] == 0){
$xtpl->assign('ID_DIA', $dia['Dia_id']);
$xtpl->parse('main.hora_row.td.td_vacio');
}else
$spacerArr[$dia['Dia_id']]--;
}
$xtpl->parse('main.hora_row.td');
}
$xtpl->parse('main.hora_row');
}
}
if($tiene_submaterias){
$xtpl->parse('main.submaterias_block.materia');
$xtpl->parse('main.submaterias_block');
}
$xtpl->parse('main');
$return['html'] = $xtpl->text('main');
$return['tabla'] = true;
} else {
$return['html'] = '';
$return['tabla'] = false;
}
break;
case 2: //Docente
date_default_timezone_set('America/Mexico_City');
$horario_rs = SGI::getHorarioProfesor($pdo, filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT), date('Y-m-d'));
$horaMin = horaMin($horario_rs, 'Hora_inicio');
$horaMax = horaMax($horario_rs, 'Hora_final');
$dias_rs = SGI::getDias($pdo);
if (empty($error)) {
$xtpl = new XTemplate('../templates/horario_profesor.tpl.html');
foreach($dias_rs as $dia){
$xtpl->assign('DIA', $dia['Dia_desc']);
$xtpl->assign('ID_DIA', $dia['Dia_id']);
$xtpl->parse('main.header');
}
$rs_i = 0;
$spacerArr = array(1=>0,0,0,0,0,0);
$horas_dif = intval(date('H', strtotime($horaMax))) - intval(date('H', strtotime($horaMin)));
for($h = date('H', strtotime($horaMin)); $h <= date('H', strtotime($horaMax)); $h++){
$xtpl->assign('HORA', date('H', strtotime($h.':00')));
$xtpl->assign('FRACCIONES', FRACCION_HORA);
$xtpl->parse('main.hora_row.hora');
for($f = 0; $f < FRACCION_HORA; $f++){
foreach($dias_rs as $dia){
if($rs_i < count($horario_rs) && date('H:i', strtotime($horario_rs[$rs_i]['Hora_inicio'])) == date('H:i', strtotime($h.':'.($f * (60/FRACCION_HORA)))) && $horario_rs[$rs_i]['Dia_id'] == $dia['Dia_id']){
if((isset($filter_fecha) && strtotime($filter_fecha) >= strtotime($horario_rs[$rs_i]['fecha_inicial']) && strtotime($filter_fecha) <= strtotime($horario_rs[$rs_i]['fecha_final']) ) || !isset($filter_fecha)){
$size = $horario_rs[$rs_i]['Duracion']/(60/FRACCION_HORA);
$spacerArr[$dia['Dia_id']] = $size -1;
$xtpl->assign('ID_DIA', $dia['Dia_id']);
$xtpl->assign('DURACION_SIZE', $size);
$xtpl->assign('ALTO_DIV', $size * ALTO_RENGLON);
if ($horario_rs[$rs_i]['TipoHorario_desc'] == 'Docencia'){
$xtpl->assign('HORA_I', substr($horario_rs[$rs_i]['Hora_inicio'], 0, 5));
$xtpl->assign('HORA_F', substr($horario_rs[$rs_i]['Hora_final'], 0, 5));
$xtpl->assign('MATERIA', $horario_rs[$rs_i]['Materia_desc']);
$xtpl->assign('GRUPO', $horario_rs[$rs_i]['Grupo_desc'].' '.$horario_rs[$rs_i]['Carrera_prefijo']);
if($horario_rs[$rs_i]['Salon_desc'] != '') {
if($horario_rs[$rs_i]['Salon_desc_larga'] != '')
$xtpl->assign('SALON', $horario_rs[$rs_i]['Salon_desc'].' ['.$horario_rs[$rs_i]['Salon_desc_larga'].']');
else
$xtpl->assign('SALON', $horario_rs[$rs_i]['Salon_desc']);
} else{
if(!isset($horario_rs[$rs_i]['TipoSubmateria_id']) || $horario_rs[$rs_i]['TipoSubmateria_id'] == 0)
$xtpl->assign('SALON', 'Pendinte');
else
$xtpl->assign('SALON', '*');
}
$xtpl->parse('main.hora_row.td.td_horario.hora');
$xtpl->parse('main.hora_row.td.td_horario.texto');
$xtpl->parse('main.hora_row.td.td_horario.grupo');
$xtpl->parse('main.hora_row.td.td_horario.spacer');
$xtpl->parse('main.hora_row.td.td_horario');
} else {
switch ($horario_rs[$rs_i]['TipoHorario_id']){
case 1: $xtpl->assign('CLASE', 'atencion'); break;
case 2: $xtpl->assign('CLASE', 'gestion'); break;
}
$xtpl->assign('HORA_I', substr($horario_rs[$rs_i]['Hora_inicio'], 0, 5));
$xtpl->assign('HORA_F', substr($horario_rs[$rs_i]['Hora_final'], 0, 5));
$xtpl->parse('main.hora_row.td.td_bloque.hora');
$xtpl->parse('main.hora_row.td.td_bloque.spacer');
$xtpl->parse('main.hora_row.td.td_bloque');
}
}else
$xtpl->parse('main.hora_row.td.td_vacio');
$rs_i++;
}else{
if(!isset($spacerArr[$dia['Dia_id']]) || $spacerArr[$dia['Dia_id']] == 0){
$xtpl->assign('ID_DIA', $dia['Dia_id']);
$xtpl->parse('main.hora_row.td.td_vacio');
}else
$spacerArr[$dia['Dia_id']]--;
}
$xtpl->parse('main.hora_row.td');
}
$xtpl->parse('main.hora_row');
}
}
$xtpl->parse('main');
$return['html'] = $xtpl->text('main');
$return['tabla'] = true;
} else {
$return['html'] = '';
$return['tabla'] = false;
}
break;
case 3: //Extraordinario
if (isset($_POST['plan']) && isset($_POST['semestre']) && isset($_POST['periodo'])) {
$xtpl = new XTemplate('../templates/horario_extras.tpl.html');
//$examenes_extraordinarios = SGI::getExtraordinarios($pdo, filter_input(INPUT_POST, 'periodo', FILTER_SANITIZE_NUMBER_INT), filter_input(INPUT_POST, 'semestre', FILTER_SANITIZE_NUMBER_INT), filter_input(INPUT_POST, 'plan', FILTER_SANITIZE_NUMBER_INT));
//Tiene el id del periodo fijo porque aú no existe un indicador de extraordinarios activos
$examenes_extraordinarios = SGI::getExtraordinarios($pdo, 38, filter_input(INPUT_POST, 'semestre', FILTER_SANITIZE_NUMBER_INT), filter_input(INPUT_POST, 'plan', FILTER_SANITIZE_NUMBER_INT));
if (count($examenes_extraordinarios) == 0){
$xtpl->parse('main.sin_extras');
} else {
foreach ($examenes_extraordinarios as $examen) {
$xtpl->assign('MATERIA', $examen['Materia_desc']);
$salon = $examen["Salon_desc"];
if(!empty($examen["Salon_desc_larga"]))
$salon .= "-".$examen["Salon_desc_larga"];
if (empty($salon))
$xtpl->assign('SALON', 'Pendiente');
else
$xtpl->assign('SALON', $salon);
$xtpl->assign('PROFESOR', $examen["Profesor_nombre"] . " " . $examen["Profesor_apellidos"]);
$xtpl->assign('FECHA', substr($examen["Examen_fechahora_inicial"], 0, 10));
$xtpl->assign('HORA', substr($examen["Examen_fechahora_inicial"], 10, 6) . ' - ' . substr($examen["Examen_fechahora_final"], 10, 6));
$xtpl->parse('main.extras.row');
}
$xtpl->parse('main.extras');
}
$xtpl->parse('main');
$return['html'] = $xtpl->text('main');
} else
$return['html'] = 'No fue posible obtener los horarios de los extraordinarios
';
break;
}
}
$return['json'] = json_encode($return);
echo json_encode($return);
function horaMin($arr, $campo){
$min = '';
foreach($arr as $horario){
if($min == '' || date('H:i', strtotime($horario[$campo])) < date('H:i', strtotime($min))){
$min = $horario[$campo];
}
}
return date('H:i', strtotime($min));
}
function horaMax($arr, $campo){
$max = '';
foreach($arr as $horario){
if($max == '' || date('H:i', strtotime($horario[$campo])) > date('H:i', strtotime($max))){
$max = $horario[$campo];
}
}
return date('H:i', strtotime($max));
}
function diaNombre($num){
$dias = array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado');
return $dias[intval($num)];
}