Proyecto.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. <?php
  2. require_once 'Etapa.php';
  3. require_once 'Recurso.php';
  4. require_once 'Colores.php';
  5. class Proyecto {
  6. /********* GENERALES *********/
  7. public static function getProyectos($pdo, $concurso, $orden){
  8. $proyectos_rs = array();
  9. $stmt = $pdo->prepare('Select * from cidit_fs_proyectos(:id,:orden)');
  10. $stmt->bindParam(':id', $concurso);
  11. $stmt->bindParam(':orden', $orden);
  12. if(!$stmt->execute())
  13. exit();
  14. $proyectos_rs = $stmt->fetchAll();
  15. $stmt->closeCursor();
  16. $stmt = null;
  17. return $proyectos_rs;
  18. }
  19. public static function getProyectoXID($pdo, $idproyecto, $idcat=0){
  20. $proyecto = array();
  21. $stmt = $pdo->prepare('Select * from cidit_fs_proyectoxid(:id)');
  22. $stmt->bindParam(':id', $idproyecto);
  23. if($stmt->execute()){
  24. $proyecto_rs = $stmt->fetch();
  25. $proyecto['idproyecto'] = $idproyecto;
  26. $proyecto['proyecto'] = $proyecto_rs['proyecto'];
  27. $proyecto['clave'] = $proyecto_rs['clave'];
  28. if ($idcat > 0)
  29. $proyecto['categoria'] = self::getCategoriaXID($pdo, $idcat);
  30. }
  31. $stmt->closeCursor();
  32. $stmt = null;
  33. return $proyecto;
  34. }
  35. public static function getCategoriaXID($pdo, $idcategoria){
  36. $categoria = '';
  37. $stmt = $pdo->prepare('Select * from cidit_fs_categoriaxid(:id)');
  38. $stmt->bindParam(':id', $idcategoria);
  39. if($stmt->execute()){
  40. $cat = $stmt->fetch();
  41. $categoria = $cat['categoria'];
  42. }
  43. $stmt->closeCursor();
  44. $stmt = null;
  45. return $categoria;
  46. }
  47. public static function getCategoriaNivelXID($pdo, $idcategoria){
  48. $categoria = '';
  49. $stmt = $pdo->prepare('Select * from cidit_fs_categoriaxid(:id)');
  50. $stmt->bindParam(':id', $idcategoria);
  51. if($stmt->execute()){
  52. $cat = $stmt->fetch();
  53. $categoria = $cat['nivel'];
  54. }
  55. $stmt->closeCursor();
  56. $stmt = null;
  57. return $categoria;
  58. }
  59. public static function getProyectosAutorizados($pdo, $concurso, $categoria, $orden){
  60. $autorizados = array();
  61. if ($categoria == 0)
  62. $stmt = $pdo->prepare('Select * from cidit_fs_proyectosautorizados(:concurso, null,:orden)');
  63. else {
  64. $stmt = $pdo->prepare('Select * from cidit_fs_proyectosautorizados(:concurso,:categoria,:orden)');
  65. $stmt->bindParam(':categoria', $categoria);
  66. }
  67. $stmt->bindParam(':concurso', $concurso);
  68. $stmt->bindParam(':orden', $orden);
  69. if(!$stmt->execute())
  70. exit();
  71. $autorizados = $stmt->fetchAll();
  72. return $autorizados;
  73. }
  74. public static function getProyectosFinalistas($pdo, $concurso, $categoria, $orden){
  75. $finalistas = array();
  76. if ($categoria == 0)
  77. $stmt = $pdo->prepare('Select * from cidit_fs_proyectosfinalistas(:concurso,null,:orden)');
  78. else {
  79. $stmt = $pdo->prepare('Select * from cidit_fs_proyectosfinalistas(:concurso,:categoria,:orden)');
  80. $stmt->bindParam(':categoria', $categoria);
  81. }
  82. $stmt->bindParam(':concurso', $concurso);
  83. $stmt->bindParam(':orden', $orden);
  84. if(!$stmt->execute())
  85. exit();
  86. $finalistas = $stmt->fetchAll();
  87. return $finalistas;
  88. }
  89. public static function getProyectosPublicables($pdo, $concurso, $etapa, $orden){
  90. $publicables = array();
  91. $stmt = $pdo->prepare('Select * from cidit_fs_proyectospublicables(:id,:orden)');
  92. $stmt->bindParam(':id', $concurso);
  93. $stmt->bindParam(':orden', $orden);
  94. if($stmt->execute())
  95. $publicables = $stmt->fetchAll();
  96. $stmt->closeCursor();
  97. $stmt = null;
  98. return $publicables;
  99. }
  100. public static function getProyectosGanadores($pdo, $cat, $concurso){
  101. $ganadores = array();
  102. if ($cat == 0)
  103. $stmt = $pdo->prepare('Select * from cidit_fs_proyectosganadores(null,:concurso)');
  104. else {
  105. $stmt = $pdo->prepare('Select * from cidit_fs_proyectosganadores(:cat,:concurso)');
  106. $stmt->bindParam(':cat', $cat);
  107. }
  108. $stmt->bindParam(':concurso', $concurso);
  109. if(!$stmt->execute())
  110. exit();
  111. $ganadores = $stmt->fetchAll();
  112. return $ganadores;
  113. }
  114. public static function determinaAccionXEtapa($pdo, $etapa){
  115. $tipo = array();
  116. switch (mb_strtoupper(Etapa::getClaveEtapaXID($pdo, $etapa))){
  117. case 'REVISION':
  118. $tipo['verbo'] = 'revisar';
  119. $tipo['accion'] = 'revisión';
  120. $tipo['pasado'] = 'revisó';
  121. $tipo['preterito'] = 'revisado';
  122. break;
  123. case 'EVALUACION':
  124. $tipo['verbo'] = 'evaluar';
  125. $tipo['accion'] = 'evaluación';
  126. $tipo['pasado'] = 'evaluó';
  127. $tipo['preterito'] = 'evaluado';
  128. }
  129. return $tipo;
  130. }
  131. public static function estandarizaNumeros($num){
  132. if ($num > 0 && is_float($num/intval($num)))
  133. return $num;
  134. else
  135. return intval ($num);
  136. }
  137. public static function existeAsignacion($pdo, $usr, $proyecto, $etapa){
  138. $id = -1;
  139. if ($proyecto == 0)
  140. $stmt = $pdo->prepare('Select idasignacion from cidit_fs_asignacionproyecto(:usr,null,:etapa)');
  141. else {
  142. $stmt = $pdo->prepare('Select idasignacion from cidit_fs_asignacionproyecto(:usr,:proyecto,:etapa)');
  143. $stmt->bindParam(':proyecto', $proyecto);
  144. }
  145. $stmt->bindParam(':usr', $usr);
  146. $stmt->bindParam(':etapa', $etapa);
  147. if($stmt->execute()){
  148. $rs = $stmt->fetch();
  149. if (!$rs)
  150. $id = 0;
  151. else
  152. $id = $rs['idasignacion'];
  153. }
  154. return $id;
  155. }
  156. public static function getProyectosAsignados($pdo, $usr, $etapa){
  157. $stmt = $pdo->prepare('Select idproyecto from cidit_fs_asignacionproyecto(:usr,null,:etapa)');
  158. $stmt->bindParam(':usr', $usr);
  159. $stmt->bindParam(':etapa', $etapa);
  160. if($stmt->execute()){
  161. $rs = $stmt->fetchAll();
  162. return $rs;
  163. } else
  164. return null;
  165. }
  166. public static function getAsignacionesProyecto($pdo, $proyecto, $etapa){
  167. $stmt = $pdo->prepare('Select * from cidit_fs_asignacionproyecto(null,:proyecto,:etapa)');
  168. $stmt->bindParam(':proyecto', $proyecto);
  169. $stmt->bindParam(':etapa', $etapa);
  170. if($stmt->execute()){
  171. $rs = $stmt->fetchAll();
  172. return $rs;
  173. } else
  174. return null;
  175. }
  176. public static function obtenerProyectosFaltantes($pdo, $usr, $etapa){
  177. $proyectos = array();
  178. $stmt = $pdo->prepare("Select * from cidit_fs_proyectosfaltantes(:usr,:etapa)");
  179. $stmt->bindParam(':usr', $usr);
  180. $stmt->bindParam(':etapa', $etapa);
  181. if ($stmt->execute()){
  182. $proyectos_rs = $stmt->fetchAll();
  183. foreach ($proyectos_rs as $proyecto){
  184. $proy = Proyecto::getProyectoXID($pdo, $proyecto['idproyecto']);
  185. if (count($proy) > 0)
  186. array_push($proyectos,$proy);
  187. }
  188. }
  189. $stmt->closeCursor();
  190. $stmt = null;
  191. return $proyectos;
  192. }
  193. public static function carpetaProyecto($pdo, $idproyecto){
  194. $carpeta = '';
  195. $stmt = $pdo->prepare('Select * from cidit_fs_carpetaproyecto(:id)');
  196. $stmt->bindParam(':id', $idproyecto);
  197. if($stmt->execute()){
  198. $carpeta_rs = $stmt->fetch();
  199. $carpeta = $carpeta_rs['carpeta'];
  200. }
  201. $stmt->closeCursor();
  202. $stmt = null;
  203. return $carpeta;
  204. }
  205. public static function miniaturaCartel($pdo, $idproyecto) {
  206. $imagen = '';
  207. $etapa = Etapa::buscaEtapaXClave($pdo, 'GALERIA');
  208. $recurso = Recurso::recursosProyectoXEtapa($pdo, $idproyecto, $etapa['idetapa']);
  209. if (count($recurso) > 0)
  210. if (isset ($recurso['img']))
  211. $imagen = $recurso['img'];
  212. return $imagen;
  213. }
  214. /********* REVISIÓN *********/
  215. public static function getProyectosRevisables($pdo, $concurso, $etapa, $usr){
  216. $proyectos = array();
  217. $proyectos_rs = self::getProyectosAutorizados($pdo, $concurso, 0, 'clave');
  218. foreach($proyectos_rs as $proyecto){
  219. if (self::existeAsignacion($pdo, $usr, $proyecto['idproyecto'], $etapa) > 0){
  220. array_push ($proyectos, $proyecto);
  221. }
  222. }
  223. return $proyectos;
  224. }
  225. /********* EVALUACIÓN *********/
  226. public static function listadoFinalistas($pdo, $concurso, $categoria = 0){
  227. $finalistas = self::getProyectosFinalistas($pdo, $concurso, $categoria, 'clave');
  228. $cont = 0;
  229. foreach($finalistas as $finalista){ ?>
  230. <div class="d-flex flex-row align-items-center mb-2">
  231. <label class="colA <?php echo Colores::getBGColor($cont); ?> text-primary indivisa-text-bold pt-2 mr-3"><?php echo $finalista['clave']; ?></label>
  232. <label class="text-primary flex-grow-1"><?php echo $finalista['proyecto']; ?></label>
  233. </div>
  234. <?php
  235. $cont++;
  236. }
  237. }
  238. public static function getCarteles($pdo, $concurso, $etapa){
  239. $publicables = self::getProyectosPublicables($pdo, $concurso, $etapa, 'clave');
  240. $cont = 0;
  241. $proyectos = array();
  242. foreach($publicables as $publicable){
  243. $cartel = self::getProyectoXID($pdo, $publicable['idproyecto'], $publicable['categoria']);
  244. if (!is_null($cartel) && count($cartel) > 0)
  245. array_push ($proyectos, $cartel);
  246. }
  247. return $proyectos;
  248. }
  249. public static function getProyectosEvaluables($pdo, $concurso, $etapa, $usr){
  250. $proyectos = array();
  251. $proyectos_rs = self::getProyectosPublicables($pdo, $concurso, $etapa, 'clave');
  252. foreach($proyectos_rs as $proyecto){
  253. if (self::existeAsignacion($pdo, $usr, $proyecto['idproyecto'], $etapa) > 0){
  254. array_push ($proyectos, $proyecto);
  255. }
  256. }
  257. return $proyectos;
  258. }
  259. /********** EDITOR **********/
  260. public static function alumnoTieneProyecto($pdo, $concurso, $usr){
  261. $idproyecto = 0;
  262. $stmt = $pdo->prepare('Select * from cidit_fs_alumnotieneproyecto(:concurso,:usr)');
  263. $stmt->bindParam(':concurso', $concurso);
  264. $stmt->bindParam(':usr', $usr);
  265. if($stmt->execute()){
  266. $temp = $stmt->fetch();
  267. $idproyecto = $temp['idproyecto'];
  268. }
  269. $stmt->closeCursor();
  270. $stmt = null;
  271. return $idproyecto;
  272. }
  273. public static function alumnosProyecto($pdo, $proyecto){
  274. $alumnos = array();
  275. $stmt = $pdo->prepare('Select * from cidit_fs_proyectoalumnos(:proyecto)');
  276. $stmt->bindParam(':proyecto', $proyecto);
  277. if($stmt->execute())
  278. $alumnos = $stmt->fetchAll();
  279. $stmt->closeCursor();
  280. $stmt = null;
  281. return $alumnos;
  282. }
  283. public static function contenidoCartel($pdo, $proyecto){
  284. $etapa = Etapa::buscaEtapaXClave($pdo, 'EVALUACION');
  285. $recursos = Recurso::recursosProyectoXEtapa($pdo, $proyecto, $etapa['idetapa']);
  286. if (isset($recursos['html'])){
  287. $carpeta = self::carpetaProyecto($pdo, $_POST['proyecto']);
  288. }
  289. }
  290. }