123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- <?php
- ini_set ( 'max_execution_time' , '600' );//10 min
- ini_set ( 'max_input_time' , '600' );//10 min
- require_once("../../include/constantes.php");
- require_once("../../include/nocache.php");
- require_once("../../include/util.php");
- require_once("../../include/bd_pdo.php");
- require_once("../../classes/ValidaSesion.php");
- function valoresCompletos($data, $max){
- for($i = 0; $i<$max; $i++){
- if(!isset($data[$i]) || (trim($data[$i]) == "" || strlen(trim($data[$i])) <= 1))
- return false;
- }
- return true;
- }
- function obtieneNumeros ($texto) {
- preg_match_all('/\d+/', $texto, $matches);
- return implode($matches[0]);
- }
- function obtieneLetras ($texto) {
- preg_match_all('/[a-zA-Z]+/', $texto, $matches);
- return implode($matches[0]);
- }
- function quitaCarrera($plan_rs, $shortname){
- foreach($plan_rs AS $plan){
- if( mb_strpos($shortname, $plan["Carrera_prefijo"]) !== false){
- return str_replace($plan["Carrera_prefijo"], "",$shortname);
- }
- }
- }
- //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
- $objSesion = new ValidaSesion($pdo, 102, GEMA);
- if(!$objSesion->tieneAcceso()){
- $return["error"] = "No tienes permisos para acceder a esa sección o la sesión caducó.";
- }else if(!isset($_FILES['archivo']['name'][0])){
- $return["error"] = "No se recibieron los datos de los alumnos.";
- }else{
-
- //$inputFileName =__DIR__. '/tmp/alumnos_tmp.xlsx';
- $archivo = $_FILES['archivo']['name'][0];
- // Check file size
- if ($_FILES["archivo"]["size"][0] > 10 * 1024 * 1024) {//en bytes
- $return["error"] = "El archivo supera los 10MB y no se puede cargar.";
- $return["json"] = json_encode($return);
- echo json_encode($return);
- exit();
- }
- $exts_arr = array("csv");
- $dot_arr = explode('.', $archivo);
- $ext = end($dot_arr);
- if(!in_array($ext, $exts_arr)){
- $return["error"] = "No es una extensión válida. Solo se permiten archivos CSV.";
- $return["json"] = json_encode($return);
- echo json_encode($return);
- exit();
- }
- //--------
- $stmt = $pdo->prepare('Select DISTINCT "Carrera_prefijo", "Carrera_id" from fs_planestudio(:nivel, NULL, NULL, true, 0, NULL) ORDER BY "Carrera_prefijo"');
- $stmt->bindParam(":nivel", $_SESSION["nivel_id"]);
- if(!$stmt->execute()){
- $return["error"] = "Ocurrió un error al cargar los planes de estudios";
- $return["json"] = json_encode($return);
- echo json_encode($return);
- exit();
- }else{
- $plan_rs = $stmt->fetchAll();
- }
- $stmt->closeCursor();
- //---------
- //$newfilename = "tmp_al_".$_SESSION["gpo_id"].".".$ext;
- $inputFileName = $_FILES["archivo"]["tmp_name"][0];
- /*$alumnoData=array();
- $al_old = "";
- $i=-1;
- $file_to_read = fopen($inputFileName, 'r');
- while (!feof($file_to_read) ) {
- $row = fgetcsv($file_to_read, 100, ',');
- if($row[0]!="" && $row[1]!=""){
- if($row[0] != $al_old){
- if($al_old != ""){
- $alumnoData[$i]["mat_list"] = substr($alumnoData[$i]["mat_list"],0,-1);
- }
- if(strpos($row[0],'al')===false) $clave = $row[0];//OK
- else $clave = substr($row[0],2);
- $i++;
- $alumnoData[$i] = array("clave"=>$clave, "mat_list"=>"");
- $grupoMat = "";
- $al_old = $row[0];
- }
- if(stripos( $row[1], "ELECTIVA") === false){
- $tmpArr = explode("-", $row[1]);
- if(count($tmpArr) >= 4){
- $shortname = $tmpArr[0];
- $mat_id = $tmpArr[3];//OK
- $grupo = quitaCarrera($plan_rs, $shortname );//OK
- $alumnoData[$i]["mat_list"] .= $grupo.",".$mat_id.";";
- }
- }
- }
- }
- if($al_old != ""){
- $alumnoData[$i]["mat_list"] = substr($alumnoData[$i]["mat_list"],0,-1);
- }
- fclose($file_to_read);
- $return["alumnoData"] = $alumnoData;*/
- /*$return["json"] = json_encode($return);
- echo json_encode($return);
- exit();*/
- try {
- $pdo->beginTransaction();
- $alumnoArr = array();
- $row = 1;
- $omitidoArr = array();
- $insertada = 0;
- $debug = "";
-
- //$debug .= "SELECT * from fi_alumnomaterias_csv(".$data["clave"].", ".$_SESSION["periodo_id"].", ".$data["mat_list"].") ||";
- $stmt = $pdo->prepare('SELECT * from fi_alumnomaterias_csv(:clave, :per, :gpo, :mat)');
- $stmt->bindParam(":per", $_SESSION["periodo_id"]);
- $file_to_read = fopen($inputFileName, 'r');
- while (!feof($file_to_read) ) {
- $row = fgetcsv($file_to_read, 100, ',');
- if($row[0] != "" && $row[1] != ""){
- if(stripos( $row[1], "ELECTIVA") === false){
- $tmpArr = explode("-", $row[1]);
- if(count($tmpArr) >= 4){
- $shortname = trim($tmpArr[0]);
- $mat_id = trim($tmpArr[3]);//OK
- $grupo = trim(quitaCarrera($plan_rs, $shortname ));//OK
- }
- if(strpos($row[0],'al')===false) $clave = trim($row[0]);//OK
- else $clave = substr(trim($row[0]),2);
- $stmt->bindParam(":clave", $clave);
- $stmt->bindParam(":gpo", $grupo);
- $stmt->bindParam(":mat", $mat_id);
-
- if(!$stmt->execute()){
- $pdo->rollBack();
- $return["debug"] = "SELECT * from fi_alumnomaterias_csv(".$clave.", ".$_SESSION["periodo_id"].", '".$grupo."', $mat_id) ||";
- $return["error"] = "Ocurrió un error al cargar los planes de estudios";
- $return["json"] = json_encode($return);
- echo json_encode($return);
- exit();
- }else{
- $mat_rs = $stmt->fetch();
- }
- switch($mat_rs["fi_alumnomaterias_csv"]){
- case 0:
- $insertada++;
- break;
- case 1:
- $omitidoArr[] = array("clave"=>$clave, "desc"=> "No existe la clave de alumno");
- break;
- case 2:
- $omitidoArr[] = array("clave"=>$clave, "desc"=> "La materia ".$row[1]." ya está asignada para el alumno");
- break;
- case 3:
- $omitidoArr[] = array("clave"=>$clave, "desc"=> "No existe la materia o el grupo ".$row[1]." en el periodo ".$_SESSION["periodo_id"]);
- break;
- //$debug .= 'SELECT * from fi_alumnomaterias_excel(\''.$clave.'\', '.$_SESSION["periodo_id"].', '.$grupo.', '.$mat_id.')'." |";
- }
- }
- }
- }
- fclose($file_to_read);
- /*$stmt = $pdo->prepare('SELECT * from fi_alumnomaterias_csv(:clave, :per, :gpo, :mat)');
- $stmt->bindParam(":per", $_SESSION["periodo_id"]);
- foreach($alumnoData as $data){//Carrera / Clave / Nombre completo
- if(!empty($data["mat_list"])){
- $stmt->bindParam(":clave", $data["clave"]);
- $stmt->bindParam(":gpo", $data["mat_list"]);
- $stmt->bindParam(":mat", $data["mat_list"]);
- if(!$stmt->execute()){
- $pdo->rollBack();
- $return["error"] = "Ocurrió un error al cargar los planes de estudios";
- $return["json"] = json_encode($return);
- echo json_encode($return);
- exit();
- }else{
- $mat_rs = $stmt->fetch();
- }
-
- if($mat_rs["Materia_insertada"]){
- $insertada++;
- }else{
- if($mat_rs["Materia_repetida"]){
- $omitidoArr[] = array("clave"=>$data["clave"], "desc"=> "Algunas materias ya estaban asignadas");
- }else{
- $omitidoArr[] = array("clave"=>$data["clave"], "desc"=> "Error al insertar materias para el alumno");
- }
- //$debug .= 'SELECT * from fi_alumnomaterias_excel(\''.$clave.'\', '.$_SESSION["periodo_id"].', '.$grupo.', '.$mat_id.')'." |";
- }
- }
- }*/
- $stmt->closeCursor();
- $pdo->commit();
-
- $return["insertados"] = $insertada;
- $return["omitidosArr"] = $omitidoArr;
- $return["debug"] = $debug;
- } catch(PDOException $e) {
- //$pdo->rollBack();
- //header("Location:".$pag."?error=1");
- $return["debug"] = "SELECT * from fi_alumnomaterias_csv(".$clave.", ".$_SESSION["periodo_id"].", '".$grupo."', $mat_id) ||";
- $return["error"] = $e->getMessage();
- //print_r($e);
- }
- }
- $return["json"] = json_encode($return);
- echo json_encode($return);
|