usuario_insert.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. /*
  3. * Inserta datos de usuario en BD.
  4. * Se divide en 3 partes: datos generales, datos administrativos (opcional), datos de profesor (opcional
  5. * Recibe:
  6. * nombre
  7. * paterno
  8. * materno
  9. * clave
  10. * correo
  11. * fechaingreso
  12. * telcasa
  13. * telcel
  14. *
  15. * Error:
  16. * 0 - no se recibieron todos los campos
  17. * 1 - error al guardar en base de datos
  18. */
  19. include_once("../../include/constantes.php");//continue on error
  20. include_once("../../include/nocache.php");//continue on error
  21. require_once("../../include/util.php");//die on error
  22. require_once("../../include/bd_pdo.php");
  23. require_once("../../classes/ValidaSesion.php");
  24. require_once("../classes/LogActividad.php");//die on error
  25. $pag = "../usuarios_crear.php";
  26. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  27. $objSesion = new ValidaSesion($pdo, 32, APSA);
  28. if(!$objSesion->tieneAcceso() || !$objSesion->puedeEditar()){
  29. header("Location: ".$pag."?error=2");
  30. exit();
  31. }
  32. unset($objValida);
  33. try {
  34. $pdo->beginTransaction();
  35. if(!isset($_POST["nombre"]) || !isset($_POST["apellidos"]) || !isset($_POST["clave"]) || !isset($_POST["ingreso"])){
  36. header("Location:".$pag."?error=0");
  37. exit();
  38. }
  39. $grado = (trim(filter_input(INPUT_POST, "grado", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto
  40. $nombre = (trim(filter_input(INPUT_POST, "nombre", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto
  41. $apellidos = (trim(filter_input(INPUT_POST, "apellidos", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto
  42. $curp = mb_strtoupper(trim(filter_input(INPUT_POST, "curp", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto
  43. //$clave = (trim(filter_input(INPUT_POST, "clave", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto
  44. $clave = intval(filter_input(INPUT_POST, "clave", FILTER_SANITIZE_NUMBER_INT));//limpia texto
  45. $pass = $clave;
  46. $fechaingreso = trim(filter_input(INPUT_POST, "ingreso"));//limpia texto
  47. $fechaingreso = fechaGuion($fechaingreso);
  48. //Valida que no esté solo en mayúsculas
  49. if($nombre == mb_strtoupper($nombre, "UTF-8")){
  50. $nombre = mb_convert_case(mb_strtolower($nombre), MB_CASE_TITLE, "UTF-8");
  51. }
  52. if($apellidos == mb_strtoupper($apellidos, "UTF-8")){
  53. $apellidos = mb_convert_case(mb_strtolower($apellidos), MB_CASE_TITLE, "UTF-8");
  54. }
  55. //Inserta usuario
  56. $stmt = $pdo->prepare('Select * from fi_usuario(:nom, :ape, :curp)');//devuelve: Usuario_id
  57. $stmt->bindParam(":nom", $nombre);
  58. $stmt->bindParam(":ape", $apellidos);
  59. $stmt->bindParam(":curp", $curp);
  60. if(!$stmt->execute()){
  61. $pdo->rollBack();
  62. //echo "Error fi_usuario [".$nombre."] [".$apellidos."][".$clave."] [".$user."]";
  63. //print_r($stmt->errorInfo());
  64. header("Location:".$pag."?error=1");
  65. exit();
  66. }
  67. $usr_rs = $stmt->fetch();
  68. $usr_id = $usr_rs["Usuario_id"];
  69. //Inserta usuario APSA
  70. $stmt = $pdo->prepare('Select * from fi_usuarioapsa(:id, :claveulsa, :fechai, false, :grado)');//no administrador, devuelve si existía
  71. $stmt->bindParam(":id", $usr_id);
  72. $stmt->bindParam(":claveulsa", $clave);
  73. $stmt->bindParam(":fechai", $fechaingreso);
  74. $stmt->bindParam(":grado", $grado);
  75. if(!$stmt->execute()){
  76. $pdo->rollBack();
  77. //echo "Error fi_usuario [".$nombre."] [".$apellidos."][".$clave."] [".$user."]";
  78. //print_r($stmt->errorInfo());
  79. header("Location:".$pag."?error=1");
  80. exit();
  81. }
  82. $usr_rs = $stmt->fetch();
  83. $usr_existe = $usr_rs["Usuario_existe"];
  84. $stmt->closeCursor(); // cierra conexion de resultado
  85. $usr_rs = null;
  86. unset($usr_rs);
  87. //Inserta datos de contacto
  88. if(isset($_POST["contacto_tipo"]) ){
  89. $tipoArr = $_POST["contacto_tipo"];
  90. $valorArr = $_POST["contacto_valor"];
  91. $stmt = $pdo->prepare('Select * from fi_contacto(:valor, :tipo, :usr)');//inserta contactos
  92. $stmt->bindParam(":usr", $usr_id);
  93. for($i=0; $i< count($tipoArr); $i++){
  94. if($valorArr[$i] != ""){
  95. $stmt->bindParam(":valor", $valorArr[$i]);
  96. $stmt->bindParam(":tipo", $tipoArr[$i]);
  97. if(!$stmt->execute()){
  98. $pdo->rollBack();
  99. //echo "Error fi_contacto [".$valorArr[$i]."] [".$tipoArr[$i]."] [".$usr_id."]<br>";
  100. //print_r($stmt->errorInfo());
  101. header("Location:".$pag."?error=6");
  102. exit();
  103. }
  104. }
  105. }
  106. $stmt->closeCursor(); // cierra conexion de resultado
  107. }
  108. if(!$usr_existe){
  109. //Inserta foto
  110. if($_SESSION["sgi_administrador"]){
  111. $archivo = $_FILES['foto']['name'][0];
  112. if(!empty($archivo)){
  113. // Check file size
  114. if ($_FILES["foto"]["size"][0] > 10 * 1024 * 1024) {//en bytes
  115. $pdo->rollBack();
  116. header("Location:".$pag."?error=8");
  117. exit();
  118. }
  119. $exts_arr = array("jpg","png", "jpeg");
  120. $dot_arr = explode('.', $archivo);
  121. $ext = end($dot_arr);
  122. if(!in_array($ext, $exts_arr)){
  123. $pdo->rollBack();
  124. header("Location:".$pag."?error=9");
  125. exit();
  126. }
  127. $target_dir = "../../img/fotos/";
  128. $newfilename = "foto_".$clave."_".md5($clave).".".$ext;
  129. if (!move_uploaded_file($_FILES["foto"]["tmp_name"][$i], $target_dir.$newfilename)) {
  130. $pdo->rollBack();
  131. header("Location:".$pag."?error=10");
  132. exit();
  133. }
  134. }
  135. }
  136. if(isset($_POST["es_administrativo"]) && intval($_POST["es_administrativo"]) == 1){
  137. //inserta en administrativo. El puesto se define en otra página
  138. $stmt = $pdo->prepare('Select * from fi_administrativo(:p_id)');//devuelve: Usuario_id
  139. $stmt->bindParam(":p_id", $usr_id);
  140. if(!$stmt->execute()){
  141. $pdo->rollBack();
  142. //echo "Error fi_administrativo";
  143. //print_r($stmt->errorInfo());
  144. header("Location:".$pag."?error=1");
  145. exit();
  146. }
  147. $stmt->closeCursor(); // cierra conexion de resultado
  148. $log = new LogActividad();
  149. $desc_log = "Inserta tipo de usuario nuevo como administrativo ID[".$usr_id."]";
  150. $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
  151. }
  152. if(isset($_POST["es_profesor"]) && intval($_POST["es_profesor"]) == 1){
  153. //inserta en profesor
  154. if(isset($_POST["cat"]) && $_POST["cat"] != ""){
  155. $cat = filter_input(INPUT_POST, "cat", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  156. $stmt = $pdo->prepare('Select * from fi_profesor(:p_id, :p_cat)');//devuelve: Usuario_id
  157. $stmt->bindParam(":p_id", $usr_id);
  158. $stmt->bindParam(":p_cat", $cat);
  159. if(!$stmt->execute()){
  160. $pdo->rollBack();
  161. //echo "Error fi_profesor";
  162. //print_r($stmt->errorInfo());
  163. header("Location:".$pag."?error=1");
  164. exit();
  165. }
  166. $stmt->closeCursor(); // cierra conexion de resultado
  167. $log = new LogActividad();
  168. $desc_log = "Inserta tipo de usuario nuevo como profesor ID[".$usr_id."]";
  169. $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
  170. }
  171. }
  172. }else{
  173. $log = new LogActividad();
  174. $desc_log = "Inserta usuario repetido ID[".$usr_id."] Nombre[".($nombre." ".$paterno." ".$materno)."] ClaveULSA[".$clave."] CURP[".$curp."]";
  175. $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
  176. $pdo->commit();
  177. header("Location:".$pag."?error=5");
  178. exit();
  179. }
  180. $log = new LogActividad();
  181. $desc_log = "Inserta usuario nuevo ID[".$usr_id."] Nombre[".($nombre." ".$paterno." ".$materno)."] ClaveULSA[".$clave."] CURP[".$curp."]";
  182. $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
  183. $pdo->commit();
  184. $stmt = null; // cierra conexion
  185. header("Location: ../usuarios.php?ok=0");
  186. } catch(PDOException $e) {
  187. $pdo->rollBack();
  188. header("Location:".$pag."?error=1");
  189. //print_r($e);
  190. }
  191. ?>