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'] = '
    ¡Error!
    ' . $error . '
    '; $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'] = '
    ¡Error!
    ' . $error . '
    '; $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)]; }