prepare('Select * from fi_alumno_planestudio(:id, :plan, :claveulsa, :fechai, NULL, NULL)'); $stmt->bindParam(":id", $usr_id); $stmt->bindParam(":plan", $datos["plan"]); $stmt->bindParam(":claveulsa", $datos["clave"]); $stmt->bindParam(":fechai", $datos["ingreso"]); if(!$stmt->execute()){ $stmt->closeCursor(); return false; } $stmt->closeCursor(); return true; }*/ function borraPlan($pdo, $usr_id, $datos){ $stmt = $pdo->prepare('Select * from fd_alumno_planestudio(:id, :plan, :claveulsa)'); $stmt->bindParam(":id", $usr_id); $stmt->bindParam(":plan", $datos["plan"]); $stmt->bindParam(":claveulsa", $datos["clave"]); if(!$stmt->execute()){ $stmt->closeCursor(); return false; } $stmt->closeCursor(); return true; } function actualizaPlan($pdo, $usr_id, $datos){ if($datos["procedencia"] != 0){ $stmt = $pdo->prepare('Select * from fu_alumno_planestudio(:id, :plan, :claveulsa, :fechai, :procedencia, :generacion)'); $stmt->bindParam(":procedencia", $datos["procedencia"]); }else{ $stmt = $pdo->prepare('Select * from fu_alumno_planestudio(:id, :plan, :claveulsa, :fechai, NULL, :generacion)'); } $stmt->bindParam(":id", $usr_id); $stmt->bindParam(":plan", $datos["plan"]); $stmt->bindParam(":claveulsa", $datos["clave"]); $stmt->bindParam(":fechai", $datos["ingreso"]); $stmt->bindParam(":generacion", $datos["generacion"]); if(!$stmt->execute()){ $stmt->closeCursor(); return false; } $stmt->closeCursor(); return true; } $pag = "../alumnos_editar.php"; //--- Objeto para validar usuario. El id de usuario lo lee desde sesión $objSesion = new ValidaSesion($pdo, 101, GEMA); if(!$objSesion->tieneAcceso() || !$objSesion->puedeEditar()){ header("Location: ".$pag."?error=2&id=".$_POST["id"]); exit(); } unset($objValida); try { $pdo->beginTransaction(); if(!isset($_POST["id"]) || !isset($_POST["nombre"]) || !isset($_POST["apellidos"]) || !isset($_POST["plan"],$_POST["clave"]) || !isset($_POST["ingreso"])){ header("Location:".$pag."?error=0"); exit(); } $usr_id = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);//limpia texto $nombre = (trim(filter_input(INPUT_POST, "nombre", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto $apellidos = (trim(filter_input(INPUT_POST, "apellidos", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto $curp = mb_strtoupper(trim(filter_input(INPUT_POST, "curp", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto //Valida que no esté solo en mayúsculas if($nombre == mb_strtoupper($nombre, "UTF-8")){ $nombre = mb_convert_case(mb_strtolower($nombre), MB_CASE_TITLE, "UTF-8"); } if($apellidos == mb_strtoupper($apellidos, "UTF-8")){ $apellidos = mb_convert_case(mb_strtolower($apellidos), MB_CASE_TITLE, "UTF-8"); } $planAlumnoNuevo = array(); for($i=0; $i$_POST["plan"][$i], "clave" => intval($_POST["clave"][$i]), "ingreso"=> fechaGuion($_POST["ingreso"][$i], false), "generacion"=> fechaGuion($_POST["generacion"][$i], false), "procedencia" => $_POST["procedencia"][$i], "hash"=>$_POST["plan"][$i].intval($_POST["clave"][$i]).fechaGuion($_POST["ingreso"][$i], false).fechaGuion($_POST["generacion"][$i], false).$_POST["procedencia"][$i], "action" => INSERTA); } //Plan de estudios asignados actualmente $stmt = $pdo->prepare('Select * from fs_alumno_planestudio(:usr_id, NULL)'); $stmt->bindParam(":usr_id", $usr_id); if(!$stmt->execute()){ $pdo->rollBack(); //print_r($stmt->errorInfo()); header("Location:".$pag."?id=".$usr_id."&error=1"); exit(); }else{ $carrera_rs = $stmt->fetchAll(); } $stmt->closeCursor(); $planAlumnoBD = array(); foreach($carrera_rs as $carrera){ $planAlumnoBD[] = array("plan"=>$carrera["PlanEstudio_id"], "clave" =>$carrera["Usuario_claveULSA"], "ingreso"=> fechaGuion($carrera["Alumno_fecha_ingreso"], false), "generacion"=> fechaGuion($carrera["Alumno_generacion"], false), "procedencia" => $carrera["TipoProcedencia_id"]==""?0:$carrera["TipoProcedencia_id"], "hash"=>$carrera["PlanEstudio_id"].$carrera["Usuario_claveULSA"].fechaGuion($carrera["Alumno_fecha_ingreso"], false).fechaGuion($carrera["Alumno_generacion"], false).$carrera["TipoProcedencia_id"], "action" => ACTUALIZA); } /*Compara info nueva con BD y determina las acciones necesarias*/ for($i=0; $iprepare('Select * from fu_alumno(:id, :nombre, :apellidos, :curp)');//devuelve: Usuario_id $stmt->bindParam(":id", $usr_id); $stmt->bindParam(":nombre", $nombre); $stmt->bindParam(":apellidos", $apellidos); $stmt->bindParam(":curp", $curp); if(!$stmt->execute()){ $pdo->rollBack(); //print_r($stmt->errorInfo()); header("Location:".$pag."?id=".$usr_id."&error=1"); exit(); } $stmt->closeCursor(); // cierra conexion de resultado //---- Actualiza carreras ---- $error = false; foreach($planAlumnoNuevo as $datos){ switch($datos["action"]){ /*case INSERTA: if(!insertaPlan($pdo, $usr_id, $datos)){ $pdo->rollBack(); header("Location:".$pag."?id=".$usr_id."&error=3"); exit(); } break;*/ case ACTUALIZA: if(!actualizaPlan($pdo, $usr_id, $datos)){ $pdo->rollBack(); header("Location:".$pag."?id=".$usr_id."&error=3"); exit(); } echo "Actualiza"; print_r($datos); } } foreach($planAlumnoBD as $datos){ if($datos["action"] == BORRA){ if(!borraPlan($pdo, $usr_id, $datos)){ $pdo->rollBack(); header("Location:".$pag."?id=".$usr_id."&error=4"); exit(); } /*echo "Borra"; print_r($datos);*/ } } //---- Actualiza datos de contacto ---- $stmt = $pdo->prepare('Select * from fd_contacto(:usr, NULL)');//borra contacto actual $stmt->bindParam(":usr", $usr_id); if(!$stmt->execute()){ $pdo->rollBack(); //print_r($stmt->errorInfo()); header("Location:".$pag."?error=1"); exit(); } if(isset($_POST["contacto_tipo"]) ){ $tipoArr = $_POST["contacto_tipo"]; $valorArr = $_POST["contacto_valor"]; $perfilArr = $_POST["contacto_perfil"]; $subtipoArr = $_POST["contacto_subtipo"]; for($i=0; $i< count($tipoArr); $i++){ if(trim($valorArr[$i]) != ""){ if($subtipoArr[$i] != 0){ $stmt = $pdo->prepare('Select * from fi_contacto(:valor, :tipo, :usr, :perf, :subt)');//inserta contactos $stmt->bindParam(":subt", $subtipoArr[$i]); }else{ $stmt = $pdo->prepare('Select * from fi_contacto(:valor, :tipo, :usr, :perf, NULL)');//inserta contactos } $stmt->bindParam(":usr", $usr_id); $stmt->bindParam(":valor", $valorArr[$i]); $stmt->bindParam(":tipo", $tipoArr[$i]); $stmt->bindParam(":perf", $perfilArr[$i]); if(!$stmt->execute()){ $pdo->rollBack(); //echo "Error fi_contacto [".$valorArr[$i]."] [".$tipoArr[$i]."] [".$usr_id."]
"; //print_r($stmt->errorInfo()); header("Location:".$pag."?error=6"); exit(); } } } $stmt->closeCursor(); // cierra conexion de resultado } $log = new LogActividad(); $desc_log = "Actualiza alumno ID[".$usr_id."] Nombre[".$nombre." ".$apellidos."] CURP[".$curp."]"; $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log); $pdo->commit(); $stmt = null; // cierra conexion header("Location: ../alumnos.php?ok=1"); } catch(PDOException $e) { $pdo->rollBack(); header("Location:".$pag."?id=".$usr_id."&error=1"); } ?>