calificaciones_grupo_insert.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /* AJAX
  3. * Selecciona los datos de la carrera
  4. * Recibe:
  5. * id - ID de la carrera
  6. * Return:
  7. * resultado o cadena de error
  8. */
  9. require_once("../../include/constantes.php");
  10. require_once("../../include/nocache.php");
  11. require_once("../../include/util.php");
  12. require_once("../../include/bd_pdo.php");
  13. require_once("../../classes/ValidaSesion.php");
  14. $pag = "../calificaciones_grupo.php";
  15. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  16. $objSesion = new ValidaSesion($pdo, 24, APSA);
  17. if(!$objSesion->tieneAcceso()){
  18. $objSesion->terminaSesion();
  19. //print_r($objSesion->getError());
  20. }
  21. if(!isset($_FILES['archivo']['name']) || $_FILES['archivo']['name'] == null || !isset($_POST["materia"]) || !isset($_POST["grupo"])){
  22. header("Location: ".$pag."?error=0");
  23. exit();
  24. }
  25. //$prof = filter_input(INPUT_POST, "prof", FILTER_SANITIZE_NUMBER_INT);
  26. $materia = filter_input(INPUT_POST, "materia", FILTER_SANITIZE_NUMBER_INT);
  27. $grupo = filter_input(INPUT_POST, "grupo", FILTER_SANITIZE_NUMBER_INT);
  28. $nombresArr = $_POST["nombre"];
  29. $exts_arr = array("pdf");
  30. $countfiles = count($_FILES['archivo']['name']);
  31. for($i=0; $i<$countfiles; $i++){
  32. $archivo = $_FILES['archivo']['name'][$i];
  33. $dot_arr = explode('.', $archivo);
  34. $ext = end($dot_arr);
  35. if(!in_array($ext, $exts_arr)){
  36. header("Location: ".$pag."?error=1");
  37. exit();
  38. }
  39. }
  40. try {
  41. $pdo->beginTransaction();
  42. $target_dir = "../files/calificaciones/".$_SESSION["periodo_id"]."/";
  43. if (!file_exists($target_dir)) {
  44. mkdir($target_dir, 0755, true);
  45. }
  46. $timestamp = date("Ymdhis");
  47. for($i=0; $i<$countfiles; $i++){
  48. $target_file = $materia."_".$grupo."_".$i."_".$timestamp.".pdf";
  49. $nombre = strip_tags($nombresArr[$i]);
  50. $stmt = $pdo->prepare('Select * from fi_archivocalificacionmaterias(:mat, :gpo, :per, :usr, :nombre, :file)');//devuelve: Usuario_id
  51. $stmt->bindParam(":mat", $materia);
  52. $stmt->bindParam(":gpo", $grupo);
  53. $stmt->bindParam(":per", $_SESSION["periodo_id"]);
  54. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  55. $stmt->bindParam(":nombre", $nombre);
  56. $stmt->bindParam(":file", $target_file);
  57. if(!$stmt->execute()){
  58. $pdo->rollBack();
  59. header("Location:".$pag."?error=2");
  60. exit();
  61. }
  62. $stmt->closeCursor(); // cierra conexion de resultado
  63. }
  64. for($i=0; $i<$countfiles; $i++){
  65. $target_file = $materia."_".$grupo."_".$i."_".$timestamp.".pdf";
  66. if (!move_uploaded_file($_FILES["archivo"]["tmp_name"][$i], $target_dir.$target_file)) {
  67. for($j=0; $j<$i; $j++){
  68. $old_file = $materia."_".$grupo."_".$j."_".$timestamp;
  69. unlink($target_dir.$old_file);
  70. }
  71. $pdo->rollBack();
  72. header("Location:".$pag."?error=3");
  73. exit();
  74. }
  75. }
  76. $pdo->commit();
  77. header("Location: ".$pag."?ok=0");
  78. exit();
  79. } catch(PDOException $e) {
  80. $pdo->rollBack();
  81. header("Location:".$pag."?error=2");
  82. }
  83. ?>