proyecto_action.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <?php
  2. require_once '../classes/Concurso.php';
  3. require_once '../classes/Etapa.php';
  4. require_once '../classes/Proyecto.php';
  5. require_once '../classes/Archivos.php';
  6. require_once '../include/bd_pdo.php';
  7. if(!isset($_POST['tipo'])){
  8. $return['error'] = 'Error! No se recibieron los datos.';
  9. } else {
  10. switch ($_POST['tipo']) {
  11. case 1: //Listado de Proyectos
  12. $html = '';
  13. if ($_POST['carrera'] != 0) {
  14. $proyectos = Proyecto::getProyectosConcurso($pdo,$_POST['concurso'],$_POST['carrera']);
  15. $html = '';
  16. if (count($proyectos) > 0){
  17. $html = '<div class="row align-items-stretch bg-primary text-white mx-3">
  18. <div class="col-sm-1 display-7 p-3">Publicado</div>
  19. <div class="col-sm-9 display-7 p-3">Proyecto</div>
  20. <div class="col-sm-2 p-3"></div>
  21. </div>';
  22. foreach ($proyectos as $proyecto){
  23. $html .= '<div class="row align-items-center bordeInf mx-3">
  24. <div class="col-sm-1 d-flex flex-row justify-content-center align-items-center p-2">';
  25. if ((bool)$proyecto['publicable'])
  26. $html .= '<span class="text-success iconoBig ing-aceptar"></span>';
  27. $html .= '</div>
  28. <div class="col-sm-9 d-flex flex-row justify-content-start align-items-center p-2">' . $proyecto['proyecto'] . '</div>
  29. <div class="col-sm-2 p-2 d-flex flex-row justify-content-center align-items-center">
  30. <button type="submit" class="border-0 p-2 bg-white text-azul1 iconoBig mx-1 ing-mi-cartel" data-tipo="1" data-id="' . $proyecto['idproyecto'] . '"></button>
  31. <button type="submit" class="border-0 p-2 bg-white text-primary mx-1 iconoBig ing-editar" data-tipo="2" data-id="' . $proyecto['idproyecto'] . '"></button>
  32. <button type="submit" class="border-0 p-2 bg-white text-danger mx-1 iconoBig ing-basura" data-tipo="3" data-id="' . $proyecto['idproyecto'] . '"></button>
  33. </div>
  34. </div>';
  35. }
  36. $return['lista'] = $html;
  37. } else
  38. $return['error'] = 'No se tienen registros para ésta edición';
  39. } else {
  40. $proyectos = Proyecto::getProyectosConcurso($pdo, $_POST['concurso']);
  41. if (count($proyectos) > 0) {
  42. $carreras = SGI::getCarreras($pdo);
  43. if (count($carreras) > 0) {
  44. array_push($carreras, array('Carrera_id' => 0,'Carrera_desc' => 'Invitados', 'Carrera_prefijo' => 'ESP'));
  45. $html .= '<div class="row align-items-stretch bg-primary text-white mx-3">
  46. <div class="col-sm-1 display-7 p-3" id="titPublica">Publicado</div>
  47. <div class="col-sm-2 text-center display-7 p-3">Carrera</div>
  48. <div class="col-sm-7 display-7 p-3">Proyecto</div>
  49. <div class="col-sm-2 p-3"></div>
  50. </div>';
  51. foreach ($carreras as $carrera){
  52. $tempProyectos = obtenerProyectos($proyectos,$carrera['Carrera_id']);
  53. foreach ($tempProyectos as $proyecto){
  54. $checked = '';
  55. $html .= '<div class="row renglon ' . $carrera['Carrera_prefijo'] . ' align-items-center bordeInf mx-3">
  56. <div class="col-sm-1 d-flex flex-row justify-content-center align-items-center p-2">';
  57. if ((bool)$proyecto['publicable']){
  58. $html .= '<span class="text-success iconoBig ing-aceptar publicado"></span>';
  59. $checked = ' checked';
  60. }
  61. $html .= '<div class="publica">
  62. <input type="checkbox" name="publica[]" value="' . $proyecto['idproyecto'] . '" id="publica' . $proyecto['idproyecto'] . '" ' . $checked . ' />
  63. <label class="mb-0 ing-autorizar" for="publica' . $proyecto['idproyecto'] . '"></label>
  64. </div>
  65. </div>
  66. <div class="col-sm-2 d-flex flex-row justify-content-center align-items-center text-center p-2">' . $carrera['Carrera_desc'] . '</div>
  67. <div class="col-sm-7 d-flex flex-row justify-content-start align-items-center p-2">' . $proyecto['proyecto'] . '</div>
  68. <div class="col-sm-2 p-2 text-center">
  69. <button type="submit" class="border-0 p-2 bg-white text-azul1 mx-1 iconoBig ing-mi-cartel" data-tipo="1" data-id="' . $proyecto['idproyecto'] . '"></button>
  70. <button type="submit" class="border-0 p-2 bg-white text-primary mx-1 iconoBig ing-editar" data-tipo="2" data-id="' . $proyecto['idproyecto'] . '"></button>
  71. <button type="submit" class="border-0 p-2 bg-white text-danger mx-1 iconoBig ing-basura" data-tipo="3" data-id="' . $proyecto['idproyecto'] . '"></button>
  72. </div>
  73. </div>';
  74. }
  75. }
  76. $html .='</div></div>';
  77. $return['lista'] = $html;
  78. } else
  79. $return['error'] = 'No fue posible obtener las carreras';
  80. } else
  81. $return['error'] = 'No se tienen registros para ésta edición';
  82. }
  83. break;
  84. case 2: //Autoriza proyectos
  85. $autorizados = true;
  86. foreach ($_POST['publicar'] as $publicar){
  87. if (!Proyecto::actualizaPublicable($pdo, $publicar, true))
  88. $autorizados = false;
  89. }
  90. foreach ($_POST['nopublicar'] as $nopublicar){
  91. if (!Proyecto::actualizaPublicable($pdo, $nopublicar, false))
  92. $autorizados = false;
  93. }
  94. if ($autorizados)
  95. $return['ok'] = 'Los proyectos se autorizaron correctamente';
  96. else
  97. $return['error'] = 'No fue posible autorizar los proyectos';
  98. break;
  99. case 3: //Carga Cartel
  100. $proyecto = Proyecto::getProyectoXID($pdo, $_POST['proyecto']);
  101. $return['tema'] = $proyecto['proyecto'];
  102. $return['alumnos'] = organizaNombres(Proyecto::alumnosProyecto($pdo, $_POST['proyecto']));
  103. $return['cartel'] = cargaCartel($pdo, $_POST['proyecto'], $proyecto['idconcurso'], $proyecto['clave']);
  104. break;
  105. case 4: //Guarda cartel editor
  106. if (isset($_POST['datos']))
  107. $datos = json_decode($_POST['datos'],true);
  108. $guarda = false;
  109. if (isset($datos['html'])){
  110. $temp = strstr($datos['html'],'<div class="centro"></div>');
  111. if ($temp){
  112. if(!strstr($temp,'Listado de referencias'))
  113. $guarda = true;
  114. } else
  115. $guarda = true;
  116. }
  117. if ($guarda) {
  118. $proyecto = Proyecto::getProyectoXID($pdo, $_POST['proyecto']);
  119. $concurso = Concurso::getConcurso($pdo, $proyecto['idconcurso']);
  120. if (isset($proyecto['clave']))
  121. $nombre = $proyecto['clave'];
  122. else
  123. $nombre = 'cartel';
  124. if(file_put_contents('../concursos/' . $concurso['carpeta'].'/' . $nombre . '.json', $_POST['datos']))
  125. $return['ok'] = 'El cartel se guardó exitósamente';
  126. else
  127. $return['error'] = 'No fue posible guardar el cartel';
  128. } else {
  129. $return['error'] = 'El cartel aún no tiene información';
  130. }
  131. break;
  132. case 5: //Califica proyecto
  133. /*if(is_null($pdo)){
  134. $return['error'] = 'Error! No se pudieron obtener los datos';
  135. } else {
  136. $etapa = Etapa::getClaveEtapaXID($pdo, $_POST['etapa']);
  137. $recursos = Recurso::recursosProyectoEtapa($pdo, $_POST['proyecto'], $_POST['etapa']);
  138. if (count($recursos) > 0){
  139. switch (mb_strtoupper($etapa)){
  140. case 'REVISION':
  141. $carpeta = Proyecto::carpetaProyecto($pdo, $_POST['proyecto']);
  142. if (!empty($carpeta))
  143. $carpeta = 'concursos/' . $carpeta;
  144. foreach($recursos as $recurso){
  145. if (isset($recurso['escrito']) && !empty($carpeta))
  146. $return['archivo'] = $carpeta . '/' . $recurso['escrito'];
  147. else
  148. $return['error'] = 'No hay contenido disponible';
  149. }
  150. break;
  151. case 'EVALUACION':
  152. foreach($recursos as $recurso){
  153. if (isset($recurso['html']))
  154. $return['html'] = 'include/crea_cartel.php?proyecto=' . $_POST['proyecto'];
  155. if (isset($recurso['video']))
  156. $return['video'] = 'https://www.youtube.com/embed/' . $recurso['video'];
  157. }
  158. break;
  159. }
  160. } else
  161. $return['error'] = 'No hay contenido disponible';
  162. }*/
  163. break;
  164. }
  165. }
  166. $return['json'] = json_encode($return);
  167. echo json_encode($return);
  168. function organizaNombres($usuarios){
  169. $nombres = '';
  170. foreach ($usuarios as $usuario){
  171. $nombres .= $usuario['apellidos'] . ' ' . $usuario['nombre'] . ', ';
  172. }
  173. if (!empty($nombres))
  174. $nombres = substr($nombres,0,-2);
  175. return $nombres;
  176. }
  177. function cargaCartel($pdo, $idproyecto, $idconcurso, $clave){
  178. $html = '';
  179. $concurso = Concurso::getConcurso($pdo, $idconcurso);
  180. $archivo = Archivos::getRuta() . 'concursos/' . $concurso['carpeta'] . '/' . $clave . '.json';
  181. if (file_exists($archivo)) {
  182. $archivo = @file_get_contents($archivo);
  183. if ($archivo){
  184. $datos = json_decode($archivo,true);
  185. if (count($datos) > 0) {
  186. $html .= '<style>' . $datos['css'] . '</style>' . $datos['html'];
  187. }
  188. }
  189. }
  190. return $html;
  191. }
  192. function obtenerProyectos($gralProyectos, $idCarrera){
  193. $proyectos = array();
  194. foreach ($gralProyectos as $proyecto){
  195. if ($proyecto['idcarrera'] == $idCarrera)
  196. array_push ($proyectos,$proyecto);
  197. else {
  198. if (is_null($proyecto['idcarrera']) && ($idCarrera == 0))
  199. array_push ($proyectos,$proyecto);
  200. }
  201. }
  202. return $proyectos;
  203. }