' . $user['Usuario_claveULSA'] . '
' . $user['Carrera_desc'] . '
';
}
$return['carreras'] = $carreras;
$validando = SGI::validacionDatosAlumno($pdo, $_SESSION['usuario_id']);
$return['validacion'] = $validando;
if ($validando){
$datos = SGI::checkDatosAlumno($pdo, $_SESSION['usuario_id']);
if(count($datos) == 0)
$return['msg'] = '';
else {
$return['msg'] = '
La actualización se encuentra en proceso de autorización con los siguientes datos:
' . $datos['Usuario_nombre_new'] . ' ' . $datos['Usuario_apellidos_new'] . '
CURP: ' . $datos['Usuario_curp_new'] . '
';
}
}
}
break;
case 2: //Update
if(!SGI::actualizaDatosAlumno($pdo, filter_var($_POST['nombre'], FILTER_SANITIZE_STRING), filter_var($_POST['apellidos'], FILTER_SANITIZE_STRING), filter_var($_POST['curp'], FILTER_SANITIZE_STRING), $_SESSION['usuario_id']))
$return['error'] = 'No fue posible modificar tu información';
else
$return['ok'] = 'Tus datos han sido envíados a validación
Aparecerá un signo , el cual desaparecerá una vez validada la información';
break;
}
break;
case 2: //Semblanza
switch ($_POST['accion']) {
case 1: //Select
$return['acerca'] = SGI::semblanzaAlumno($pdo, $_SESSION['usuario_id']);
break;
case 2: //Update
if(SGI::actualizaSemblanzaAlumno($pdo, filter_var($_POST['acerca'], FILTER_SANITIZE_STRING), $_SESSION['usuario_id']))
$return['error'] = 'No fue posible actualizar tu semblanza';
else
$return['ok'] = 'Se actualizó correctamente tu semblanza';
break;
}
break;
case 3: //Redes
switch ($_POST['accion']) {
case 1: //Select
$contactos = SGI::contactosAlumno($pdo, $_SESSION['usuario_id']);
$emergencia = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
if(count($contactos) == 0 && count($emergencia) == 0){
$return['html'] = '';
} else {
$redes = getRedes($pdo);
$html = '';
foreach ($redes as $red){
$datos = '';
if ($red['TipoContacto_id'] == 0){
if (count($emergencia) > 0){
foreach ($emergencia as $emer){
$datos .= '' . $emer['ContactoEmergencia_nombre'] . '
';
}
$html .= '';
}
} else {
if (!is_bool(array_search($red['TipoContacto_id'], array_column($contactos, 'TipoContacto_id')))) {
$keys = array_keys(array_column($contactos, 'TipoContacto_id'), $red['TipoContacto_id']);
$datos = '';
foreach ($keys as $key){
if ($red['TipoContacto_id'] == 2) { //Sólo Código Postal
$datos .= '';
} else {
$datos .= '';
if (!is_null($contactos[$key]['SubtipoContacto_desc']))
$datos .= $contactos[$key]['SubtipoContacto_desc'] . ' - ';
$datos .= $contactos[$key]['PerfilContacto_desc'] . '
';
}
}
$html .= '';
}
}
}
$return['html'] = $html;
}
break;
case 2: //Add
$agregado = false;
$msg = '';
if ($_POST['red'] != 0)
$agregado = SGI::agregaContacto($pdo, $_POST['red'], $_POST['dato'], $_POST['uso'], $_SESSION['usuario_id'], $_POST['subtipostatus'], $_POST['subtipo']);
else {
$existe = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
if (count($existe) == 0)
$agregado = SGI::agregaContactoEmergencia($pdo, $_POST['dato'], filter_var($_POST['nombre'], FILTER_SANITIZE_STRING), $_SESSION['usuario_id']);
else
$msg = 'Únicamente puedes agregar un contacto de emergencia';
}
if(!$agregado){
if (!empty ($msg))
$return['error'] = $msg;
else
$return['error'] = 'No fue posible agregar ' . $_POST['dato'] . '';
} else
$return['ok'] = 'Se agregó correctamente ' . $_POST['dato'] . '';
break;
case 3: //Sup
$error = 0;
foreach ($_POST['ids_redes'] as $red){
$red = filter_var($red, FILTER_SANITIZE_NUMBER_INT);
if (intval($red) == 0){
if(!SGI::eliminaContactoEmergencia($pdo, $_SESSION['usuario_id']))
$error++;
} else {
if(!SGI::eliminaContacto($pdo, $_SESSION['usuario_id'], $red))
$error++;
}
}
$total = count($_POST['ids_redes']);
if ($error == 0) {
if ($total == 1)
$return['ok'] = 'Se eliminó de manera exitosa el dato o red';
else
$return['ok'] = 'Se eliminaron de manera exitosa los ' . $total . ' datos y/o redes';
} else {
if ($error == $total){
if ($error == 1)
$return['error'] = 'No fue posible eliminar el dato o red';
else
$return['error'] = 'No fue posible eliminar ningún dato o red';
} else {
if ($error == 1)
$return['error'] = 'No fue posible eliminar un dato o red';
else
$return['error'] = 'No fue posible elimnar ' . $error . ' datos y/o redes';
}
}
break;
case 4: //SubtiposContacto
$_POST['tipo_contacto'] = filter_var($_POST['tipo_contacto'], FILTER_SANITIZE_NUMBER_INT);
$subtipos = SGI::getSubTipoContacto($pdo, $_POST['tipo_contacto']);
if(count($subtipos) == 0)
$return['error'] = 'No fue posible obtener los subtipos de contacto';
else {
$html = '';
foreach($subtipos as $subtipo){
$html .= '' . $subtipo['SubtipoContacto_desc'] . '';
}
$return['lista'] = $html;
switch ($_POST['tipo_contacto']){
case 1: $return['titulo'] = 'Tipo de teléfono'; $return['msg'] = 'Elige el tipo de teléfono'; break;
case 2: $return['titulo'] = 'País'; $return['msg'] = 'Elige el país del código postal'; break;
default : $return['titulo'] = ''; $return['msg'] = ''; break;
}
}
break;
case 5: //Lista para eliminar
$contactos = SGI::contactosAlumno($pdo, $_SESSION['usuario_id']);
$emergencia = SGI::emergenciaAlumno($pdo, $_SESSION['usuario_id']);
if(count($contactos) == 0 && count($emergencia) == 0){
$return['error'] = 'No fue posible obtener los datos de contacto
';
} else {
$redes = getRedes($pdo);
$html = '';
foreach ($redes as $red){
if ($red['TipoContacto_id'] == 0){
$datos = '';
foreach ($emergencia as $emer){
$datos .= '' . $emer['ContactoEmergencia_tel'] . ' (' . $emer['ContactoEmergencia_nombre'] . ')
';
}
if (!empty($datos)){
$html .= '
';
}
} else {
if (!is_bool(array_search($red['TipoContacto_id'], array_column($contactos, 'TipoContacto_id')))) {
$keys = array_keys(array_column($contactos, 'TipoContacto_id'), $red['TipoContacto_id']);
$datos = '';
foreach ($keys as $key){
if ($red['TipoContacto_id'] == 2) { //Sólo Código Postal
$datos .= '' . $contactos[$key]['Contacto_valor'] . ', ' . $contactos[$key]['SubtipoContacto_desc'] . '
';
} else {
$datos .= '' . $contactos[$key]['Contacto_valor'] . ' (';
if (!is_null($contactos[$key]['SubtipoContacto_desc']))
$datos .= $contactos[$key]['SubtipoContacto_desc'] . ' - ';
$datos .= $contactos[$key]['PerfilContacto_desc'] . ')
';
}
}
if (!empty($datos)){
$html .= '
';
}
}
}
}
if (!empty($html))
$html = '' . $html . '
';
$return['html'] = $html;
}
break;
}
break;
case 4: //Intereses
switch ($_POST['accion']) {
case 1: //Select
$stmt = $pdo->prepare('SELECT * FROM alu_fs_interes(:Usuario_id) ORDER BY "Interes_nombre"');
$stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
if(!$stmt->execute()){
print_r($stmt->errorInfo());
$return['error'] = 'No fue posible obtener la descripción del usuario';
} else {
$intereses = $stmt->fetchAll();
$profesionales = '';
$personales = '';
foreach ($intereses as $interes){
if($interes['Interes_tipo'])
$profesionales .= '' . $interes['Interes_nombre'] . '
';
else
$personales .= '' . $interes['Interes_nombre'] . '
';
}
$return['profesionales'] = $profesionales;
$return['personales'] = $personales;
}
$stmt->closeCursor();
$stmt = null;
break;
case 2: //Add
$_POST['interes'] = filter_var($_POST['interes'], FILTER_SANITIZE_STRING);
$_POST['tipo_interes'] = filter_var($_POST['tipo_interes'], FILTER_SANITIZE_NUMBER_INT);
$stmt = $pdo->prepare('SELECT * FROM alu_fi_interes(:Interes_tipo,:Interes,:Usuario_id)');
$stmt->bindParam(':Interes', $_POST['interes']);
$stmt->bindParam(':Interes_tipo', $_POST['tipo_interes']);
$stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
if(!$stmt->execute()){
print_r($stmt->errorInfo());
$return['error'] = 'No fue posible agregar el interés ' . $_POST['interes'] . '';
}
else
$return['ok'] = 'Se agregó correctamente el interés ' . $_POST['interes'] . '';
$stmt->closeCursor();
$stmt = null;
break;
case 3: //Sup
$error = 0;
foreach ($_POST['ids_intereses'] as $interes){
$interes = filter_var($interes, FILTER_SANITIZE_NUMBER_INT);
$stmt = $pdo->prepare('SELECT * FROM alu_fd_interes(:Interes_id, :Usuario_id)');
$stmt->bindParam(':Interes_id', $interes);
$stmt->bindParam(':Usuario_id', $_SESSION['usuario_id']);
if(!$stmt->execute()){
print_r($stmt->errorInfo());
$error++;
}
$stmt->closeCursor();
$stmt = null;
}
$total = count($_POST['ids_intereses']);
if ($error == 0) {
if ($total == 1)
$return['ok'] = 'Se eliminó de manera exitosa el interes';
else
$return['ok'] = 'Se eliminaron de manera exitosa los ' . $total . ' intereses';
} else {
if ($error == $total){
if ($error == 1)
$return['error'] = 'No fue posible eliminar el interés';
else
$return['error'] = 'No fue posible eliminar ningún interés';
} else {
if ($error == 1)
$return['error'] = 'No fue posible eliminar un interés';
else
$return['error'] = 'No fue posible elimnar ' . $error . ' intereses';
}
}
break;
}
break;
case 5: //Foto
switch ($_POST['accion']) {
case 1: //Select
$foto = SGI::fotoAlumno($pdo, $_SESSION['usuario_id']);
$es_admin = SGI::esAdministrativo($pdo, $_SESSION['usuario_id']);
if (count($es_admin) == 0 || (isset($es_admin['estatus']) && $es_admin['estatus'] == 'BAJA')){
if (str_contains($foto, 'nico'))
$return['foto'] = 'img/' . $foto;
else
$return['foto'] = 'archivos/alumnos/' . $idalumno . '/' . $foto;
} else {
if (str_contains($foto, 'nico'))
$return['foto'] = 'img/' . $foto;
else
$return['foto'] = 'http://atenea.lci.ulsa.mx/img/fotos/'. $foto;
}
break;
case 2: //Actualiza Foto
$es_admin = SGI::esAdministrativo($pdo, $_SESSION['usuario_id']);
if (count($es_admin) == 0 || (isset($es_admin['estatus']) && $es_admin['estatus'] == 'BAJA')){
$anterior = SGI::fotoAlumno($pdo, $_SESSION['usuario_id']);
$cargada = true;
$nombre = '';
if(!boolval($_POST['limpia'])) {
$extension = substr($_FILES['archivo']['name'][0], strrpos($_FILES['archivo']['name'][0], '.'));
$nombre = 'foto_' . $_SESSION['usuario_id'] . '_' . uniqid() . $extension;
if (!Archivos::existeCapeta('archivos/alumnos/' . $_SESSION['usuario_id']))
Archivos::creaCarpeta('archivos/alumnos/' . $_SESSION['usuario_id']);
if (!Archivos::agregaArchivo($_FILES['archivo']['tmp_name'][0], 'archivos/alumnos/' . $_SESSION['usuario_id'], $nombre))
$cargada = false;
}
if($cargada) {
if ($anterior != SGI::$foto_pefil)
Archivos::eliminaArchivo('', $anterior);
if(boolval($_POST['limpia']))
$cargada = SGI::actualizaFotoAlumno($pdo, $_SESSION['usuario_id']);
else
$cargada = SGI::actualizaFotoAlumno($pdo, $_SESSION['usuario_id'], $nombre);
if (!$cargada)
$return['error'] = 'No fue posible actualizar la foto';
else
$return['ok'] = 'Se cambió correctamente la foto';
} else
$return['error'] = 'No fue posible subir la foto';
} else
$return['error'] = 'Al ser colaborador de la facultad, tu foto deberás cambiarla en APSA';
break;
}
break;
}
}
$return['json'] = json_encode($return);
echo json_encode($return);
function getRedes($pdo){
$redes = SGI::getRedes($pdo);
if (count($redes) > 0){
array_push($redes, array('TipoContacto_id' => 0, 'TipoContacto_desc' => 'Contacto de Emergencia', 'TipoContacto_icono' => 'fa-solid fa-book-medical', 'SubtipoContacto' => false));
$temp = array();
$key = array_search(2, array_column($redes, 'TipoContacto_id'));
$temp = $redes[$key];
unset($redes[$key]);
array_unshift($redes, $temp);
$key = array_search(3, array_column($redes, 'TipoContacto_id'));
$temp = $redes[$key];
unset($redes[$key]);
array_unshift($redes, $temp);
$key = array_search(1, array_column($redes, 'TipoContacto_id'));
$temp = $redes[$key];
unset($redes[$key]);
array_unshift($redes, $temp);
$key = array_search(0, array_column($redes, 'TipoContacto_id'));
$temp = $redes[$key];
unset($redes[$key]);
array_unshift($redes, $temp);
}
return $redes;
}