funciones.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759
  1. <?php
  2. /*
  3. * Copyright (C) 2021 Ángel Benítez Hernández, Echedey López Romero
  4. *
  5. * This program is free software: you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation, either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. function GenerarValoresCampo(&$Datos, $NombreCampo) {
  19. $ValoresCampo = [];
  20. foreach ($Datos as $Clave => $Valor) {
  21. array_push($ValoresCampo, $Valor[$NombreCampo]);
  22. }
  23. return $ValoresCampo;
  24. }
  25. function DatosCanarias($Fichero, &$ValoresDependientes, $NombreCampo, $NoId = false, $NuevaId = '') {
  26. $Datos = json_decode(file_get_contents($Fichero), true);
  27. $DatosCanarias = [];
  28. $ValoresCampo = GenerarValoresCampo($ValoresDependientes, $NombreCampo);
  29. foreach ($Datos as $Clave => $Valor) {
  30. if (in_array($Valor[$NombreCampo], $ValoresCampo, true)) {
  31. if ($NoId === true && $NuevaId !== '') {
  32. $Valor[$NuevaId] = "$Clave";
  33. array_push($DatosCanarias, $Valor);
  34. } else {
  35. array_push($DatosCanarias, $Valor);
  36. }
  37. }
  38. }
  39. return $DatosCanarias;
  40. }
  41. function CrearSelect(&$Datos, $Nombre, $CampoValor, $CampoNombre, $Seleccionado, $Desactivado = false) {
  42. $HTML = '';
  43. if (!$Desactivado) {
  44. $HTML .= '<select name="' . $Nombre . '" class="form-control"
  45. id="' . $Nombre . '" required="">' . PHP_EOL;
  46. } else {
  47. $HTML .= '<select name="' . $Nombre . '" class="form-control"
  48. id="' . $Nombre . '" disabled required="">' . PHP_EOL;
  49. }
  50. $HTML .= '<option value="">-- Seleccione --</option>' . PHP_EOL;
  51. foreach ($Datos as $Clave => $Valor) {
  52. if ($Valor[$CampoValor] === $Seleccionado) {
  53. $HTML .= '<option value="' . $Valor[$CampoValor] . '" selected="">'
  54. . $Valor[$CampoNombre] . '</option>' . PHP_EOL;
  55. } else {
  56. $HTML .= '<option value="' . $Valor[$CampoValor] . '">'
  57. . $Valor[$CampoNombre] . '</option>' . PHP_EOL;
  58. }
  59. }
  60. $HTML .= '</select>' . PHP_EOL;
  61. return $HTML;
  62. }
  63. function GenerarValoresPosibles(&$Datos, $Contenido, $NombreCampo) {
  64. $ValoresPosibles = [];
  65. foreach ($Datos as $Clave => $Valor) {
  66. if ($Valor[$NombreCampo] === $Contenido) {
  67. array_push($ValoresPosibles, $Valor);
  68. }
  69. }
  70. return $ValoresPosibles;
  71. }
  72. function ComprobarValorArray(&$Datos, $Contenido, $NombreCampo) {
  73. $Existe = false;
  74. foreach ($Datos as $Clave => $Valor) {
  75. if ($Valor[$NombreCampo] === $Contenido) {
  76. $Existe = true;
  77. }
  78. }
  79. return $Existe;
  80. }
  81. /*
  82. function DevolverNombreArray(&$Datos, $Contenido, $NombreCampo, $NombreCampo2) {
  83. $Nombre = '';
  84. foreach ($Datos as $Clave => $Valor) {
  85. if ($Valor[$NombreCampo] === $Contenido) {
  86. $Nombre = $Valor[$NombreCampo2];
  87. }
  88. }
  89. return $Nombre;
  90. }
  91. */
  92. function FiltrarValor($Dato) { // Filtrado basico
  93. $Dato = trim($Dato);
  94. $Dato = stripslashes($Dato);
  95. $Dato = htmlspecialchars($Dato);
  96. return $Dato;
  97. }
  98. function ValidarRepresentacion($Dato, &$Respuestas, &$Errores) {
  99. if ($Dato === 'estudiante' || $Dato === 'representante') {
  100. $Respuestas['representacion'] = $Dato;
  101. } else {
  102. $Mensaje = 'Se debe especificar si quien rellena el formulario es '
  103. . 'estudiante o representante.';
  104. array_push($Errores, $Mensaje);
  105. }
  106. }
  107. function ValidarDocumento($Dato, &$ValoresPosibles, &$Respuestas, &$Errores) {
  108. if (ComprobarValorArray($ValoresPosibles, $Dato, 'id')) {
  109. $Respuestas['documento'] = $Dato;
  110. } else {
  111. $Mensaje = 'Se debe especificar si el documento es NIF o NIE.';
  112. array_push($Errores, $Mensaje);
  113. }
  114. }
  115. function ValidarIdentificacion($Dato, $DatoDependiente, &$Respuestas, &$Errores) {
  116. // Ej: 12345678Z / Z1234567X
  117. if ($DatoDependiente === 'nif') { // Ej: 12345678Z
  118. if (preg_match('/^[0-9]{8}[A-Za-z]{1}$/', $Dato)) {
  119. $Respuestas['identificacion'] = $Dato;
  120. } else {
  121. $Mensaje = 'El número del documento debe tener un número de 8 '
  122. . 'dígitos y una letra.';
  123. array_push($Errores, $Mensaje);
  124. }
  125. } else if ($DatoDependiente === 'nie') { // Ej: Z1234567X
  126. if (preg_match('/^[A-Za-z]{1}[0-9]{7}[A-Za-z]{1}$/', $Dato)) {
  127. $Respuestas['identificacion'] = $Dato;
  128. } else {
  129. $Mensaje = 'El número del documento debe tener 1 letra, un número '
  130. . 'de 8 dígitos y otra letra.';
  131. array_push($Errores, $Mensaje);
  132. }
  133. }
  134. }
  135. function ValidarNombre($Dato, &$Respuestas, &$Errores) { // a-zA-Zá-ÚÁ-Ú
  136. if (preg_match('/^[a-zA-ZñÑáéíóúÁÉÍÓÚü\s]{2,50}$/', $Dato)) {
  137. $Respuestas['nombre'] = $Dato;
  138. } else {
  139. $Mensaje = 'El nombre no debe tener ningun número y debe tener entre 2 '
  140. . 'y 50 caracteres.';
  141. array_push($Errores, $Mensaje);
  142. }
  143. }
  144. function ValidarPrimerApellido($Dato, &$Respuestas, &$Errores) {
  145. if (preg_match('/^[a-zA-ZñÑáéíóúÁÉÍÓÚü\s]{2,50}$/', $Dato)) {
  146. $Respuestas['primer_apellido'] = $Dato;
  147. } else {
  148. $Mensaje = 'El primer apellido no debe tener ningun número y debe '
  149. . 'tener entre 2 y 50 caracteres.';
  150. array_push($Errores, $Mensaje);
  151. }
  152. }
  153. function ValidarSegundoApellido($Dato, &$Respuestas, &$Errores) {
  154. if (preg_match('/^[a-zA-ZñÑáéíóúÁÉÍÓÚü\s]{2,50}$/', $Dato)) {
  155. $Respuestas['segundo_apellido'] = $Dato;
  156. } else {
  157. $Mensaje = 'El segundo apellido no debe tener ningun número y debe '
  158. . 'tener entre 2 y 50 caracteres.';
  159. array_push($Errores, $Mensaje);
  160. }
  161. }
  162. function ValidarCalidadDe($Dato, &$ValoresPosibles, &$Respuestas, &$Errores) {
  163. if (ComprobarValorArray($ValoresPosibles, $Dato, 'id')) {
  164. $Respuestas['calidad_de'] = $Dato;
  165. } else {
  166. $Mensaje = 'Se debe especificar si los números de teléfono son de '
  167. . 'madre, padre, tutor legal o estudiante mayor de edad.';
  168. array_push($Errores, $Mensaje);
  169. }
  170. }
  171. function ValidarTelefonoFijo($Dato, &$Respuestas, &$Errores) {
  172. if (preg_match('/^[0-9]{9}$/', $Dato)) {
  173. $Respuestas['telefono_fijo'] = $Dato;
  174. } else {
  175. $Mensaje = 'El telefono fijo no debe tener ninguna letra y ser un '
  176. . 'número de 9 dígitos.';
  177. array_push($Errores, $Mensaje);
  178. }
  179. }
  180. function ValidarTelefonoMovil($Dato, &$Respuestas, &$Errores) {
  181. if (preg_match("/^[0-9]{9}$/", $Dato)) {
  182. $Respuestas['telefono_movil'] = $Dato;
  183. } else {
  184. $Mensaje = 'El telefono movil no debe tener ninguna letra y ser un '
  185. . 'número de 9 dígitos.';
  186. array_push($Errores, $Mensaje);
  187. }
  188. }
  189. function ValidarEmail($Dato, &$Respuestas, &$Errores) {
  190. $RegEx = '/^(([^<>()\[\]\\.,;:\s@”]+(\.[^<>()\[\]\\.,;:\s@”]+)*)|(“.+”))@((\[[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}])|(([a-zA-Z\-0–9]+\.)+[a-zA-Z]{2,}))$/';
  191. if (preg_match($RegEx, $Dato)) {
  192. $Respuestas['email'] = $Dato;
  193. } else {
  194. $Mensaje = 'Se debe de especificar un formato de correo electrónico '
  195. . 'correcto. Ejemplo: nombre@ejemplo.com';
  196. array_push($Errores, $Mensaje);
  197. }
  198. }
  199. function ValidarTipoVia($Dato, &$ValoresPosibles, &$Respuestas, &$Errores) {
  200. if (ComprobarValorArray($ValoresPosibles, $Dato, 'id')) {
  201. $Respuestas['tipo_via'] = $Dato;
  202. } else {
  203. $Mensaje = 'Se debe especificar si el tipo de vía es una avenida, '
  204. . 'calle, carretera, urbanizacion, paseo, plaza, ronda, travesia u '
  205. . 'otros.';
  206. array_push($Errores, $Mensaje);
  207. }
  208. }
  209. function ValidarNombreVia($Dato, $DatoDependiente, &$Respuestas, &$Errores) {
  210. if ($DatoDependiente !== '') {
  211. if (preg_match('/^[a-zA-ZñÑáéíóúÁÉÍÓÚü\s]{2,50}$/', $Dato)) {
  212. $Respuestas['nombre_via'] = $Dato;
  213. } else {
  214. $Mensaje = 'El nombre de la via no debe tener ningun número y debe '
  215. . 'tener entre 2 y 50 carácteres.';
  216. array_push($Errores, $Mensaje);
  217. }
  218. }
  219. }
  220. function ValidarNumero($Dato, &$Respuestas, &$Errores) {
  221. if (preg_match('/^[0-9]{1,3}$/', $Dato)) {
  222. $Respuestas['numero'] = $Dato;
  223. } else {
  224. $Mensaje = 'El numero no debe tener ninguna letra y debe tener entre 1 '
  225. . 'y 3 dígitos.';
  226. array_push($Errores, $Mensaje);
  227. }
  228. }
  229. function ValidarBloque($Dato, &$Respuestas, &$Errores) {
  230. if (preg_match('/^[0-9]{1,2}$/', $Dato)) {
  231. $Respuestas['bloque'] = $Dato;
  232. } else {
  233. $Mensaje = 'El bloque no debe tener ninguna letra y debe tener entre 1 '
  234. . 'y 2 números.';
  235. array_push($Errores, $Mensaje);
  236. }
  237. }
  238. function ValidarEscalera($Dato, &$Respuestas, &$Errores) {
  239. if (preg_match('/^[0-9]{1}[a-zA-Z0-9]{1,3}$/', $Dato)) {
  240. $Respuestas['escalera'] = $Dato;
  241. } else {
  242. $Mensaje = 'La escalera debe estar formado por un número numérico y '
  243. . 'entre 1 y 3 carácteres alfanuméricos.';
  244. array_push($Errores, $Mensaje);
  245. }
  246. }
  247. function ValidarPiso($Dato, &$Respuestas, &$Errores) {
  248. if (preg_match('/^[0-9]{1,3}$/', $Dato)) {
  249. $Respuestas['piso'] = $Dato;
  250. } else {
  251. $Mensaje = 'El piso no debe tener ninguna letra y debe tener entre 1 y '
  252. . '2 números.';
  253. array_push($Errores, $Mensaje);
  254. }
  255. }
  256. function ValidarPortal($Dato, &$Respuestas, &$Errores) {
  257. if (preg_match('/^[0-9][a-zA-Z0-9]{1,3}$/', $Dato)) {
  258. $Respuestas['portal'] = $Dato;
  259. } else {
  260. $Mensaje = 'El portal debe estar formado por un número numérico y '
  261. . 'entre 1 y 3 carácteres alfanumericos.';
  262. array_push($Errores, $Mensaje);
  263. }
  264. }
  265. function ValidarLetra($Dato, &$Respuestas, &$Errores) {
  266. if (preg_match('/^[a-zA-Z]{1,2}$/', $Dato)) {
  267. $Respuestas['letra'] = $Dato;
  268. } else {
  269. $Mensaje = 'La letra no debe tener ningun número y debe tener entre 1 '
  270. . 'y 2 carácteres.';
  271. array_push($Errores, $Mensaje);
  272. }
  273. }
  274. function ValidarPuerta($Dato, &$Respuestas, &$Errores) {
  275. if (preg_match('/^[0-9]{1,2}[a-zA-Z0-9]{1,2}$/', $Dato)) {
  276. $Respuestas['puerta'] = $Dato;
  277. } else {
  278. $Mensaje = 'La puerta debe estar formada por un número de 1 o 2 '
  279. . 'dígitos y 1 o 2 letras.';
  280. array_push($Errores, $Mensaje);
  281. }
  282. }
  283. function ValidarComplemento($Dato, &$Respuestas, &$Errores) {
  284. if (preg_match('/^[a-zA-ZñÑáéíóúÁÉÍÓÚü\s]{2,50}$/', $Dato)) {
  285. $Respuestas['complemento'] = $Dato;
  286. } else {
  287. $Mensaje = 'El complemento no debe tener ningún número y debe tener '
  288. . 'entre 2 y 50 carácteres.';
  289. array_push($Errores, $Mensaje);
  290. }
  291. }
  292. function ValidarFecha($Dato, &$Respuestas, &$Errores) { // https://www.php.net/manual/en/function.checkdate.php
  293. if (preg_match('/^[0-9]{4}[-][0-9]{2}[-][0-9]{2}$/', $Dato)) {
  294. $Fecha = explode('-', $Dato, 3);
  295. if (checkdate($Fecha[1], $Fecha[2], $Fecha[0])) {
  296. $Respuestas['fecha'] = $Dato;
  297. } else {
  298. $Mensaje = 'La fecha debe ser válida.';
  299. array_push($Errores, $Mensaje);
  300. }
  301. } else {
  302. $Mensaje = 'El formato de la fecha debe ser DD/MM/AAAA '
  303. . '(día, mes y año).';
  304. array_push($Errores, $Mensaje);
  305. }
  306. }
  307. function ValidarPais($Dato, &$ValoresPosibles, &$Respuestas, &$Errores) {
  308. if (ComprobarValorArray($ValoresPosibles, $Dato, 'id')) {
  309. $Respuestas['pais'] = $Dato;
  310. } else {
  311. $Mensaje = 'Se debe especificar el país.';
  312. array_push($Errores, $Mensaje);
  313. }
  314. }
  315. function ValidarProvincia($Dato, $DatoDependiente, &$ValoresDependientes, &$ValoresPosibles, &$Respuestas, &$Errores) {
  316. if ($DatoDependiente === $ValoresDependientes[0]['id']) {
  317. if (ComprobarValorArray($ValoresPosibles, $Dato, 'provincia_id')) {
  318. $Respuestas['provincia'] = $Dato;
  319. } else {
  320. $Mensaje = 'Se debe seleccionar una provincia correspondiente para '
  321. . 'el país seleccionado.';
  322. array_push($Errores, $Mensaje);
  323. }
  324. }
  325. }
  326. function ValidarIsla($Dato, &$ValoresPosibles, &$Respuestas, &$Errores) {
  327. if (count($ValoresPosibles) !== 0) {
  328. if (ComprobarValorArray($ValoresPosibles, $Dato, 'isla_id')) {
  329. $Respuestas['isla'] = $Dato;
  330. } else {
  331. $Mensaje = 'Se debe seleccionar una isla correspondiente para la '
  332. . 'provincia seleccionada.';
  333. array_push($Errores, $Mensaje);
  334. }
  335. }
  336. }
  337. function ValidarMunicipio($Dato, &$ValoresPosibles, &$Respuestas, &$Errores) {
  338. if (count($ValoresPosibles) !== 0) {
  339. if (ComprobarValorArray($ValoresPosibles, $Dato, 'municipio_id')) {
  340. $Respuestas['municipio'] = $Dato;
  341. } else {
  342. $Mensaje = 'Se debe seleccionar un municipio correspondiente para '
  343. . 'la isla seleccionada.';
  344. array_push($Errores, $Mensaje);
  345. }
  346. }
  347. }
  348. function ValidarLocalidad($Dato, &$ValoresPosibles, &$Respuestas, &$Errores) {
  349. if (count($ValoresPosibles) !== 0) {
  350. if (ComprobarValorArray($ValoresPosibles, $Dato, 'localidad_id')) {
  351. $Respuestas['localidad'] = $Dato;
  352. } else {
  353. $Mensaje = 'Se debe seleccionar una localidad correspondiente para '
  354. . 'el municipio seleccionado.';
  355. array_push($Errores, $Mensaje);
  356. }
  357. }
  358. }
  359. function ValidarCP($Dato, $DatoDependiente, &$ValoresPosibles, &$Respuestas, &$Errores) {
  360. if ($DatoDependiente !== '' && count($ValoresPosibles) !== 0) {
  361. if (ComprobarValorArray($ValoresPosibles, $Dato, 'cp_id')) {
  362. $Respuestas['cp'] = $Dato;
  363. } else {
  364. $Mensaje = 'Se debe seleccionar el código postal correspondiente '
  365. . 'para el municipio seleccionado.';
  366. array_push($Errores, $Mensaje);
  367. }
  368. }
  369. }
  370. function ValidarHorfandad($Dato, &$Respuestas) {
  371. if ($Dato === 'si') {
  372. $Respuestas['horfandad'] = $Dato;
  373. }
  374. }
  375. function ValidarTutelaGuarda($Dato, &$Respuestas) {
  376. if ($Dato === 'si') {
  377. $Respuestas['tutela_guarda'] = $Dato;
  378. }
  379. }
  380. function ValidarObservaciones($Dato, &$Respuestas, &$Errores) {
  381. if (preg_match('/^[0-9a-zA-ZñÑáéíóúÁÉÍÓÚü,.*-_«»\s]{0,2000}$/', $Dato)) {
  382. $Respuestas['observaciones'] = $Dato;
  383. } else {
  384. $Mensaje = 'Se deben usar caracteres alfanuméricos y los caracteres '
  385. . 'especiales <strong>, . * - _ « »</strong> para describir '
  386. . 'las observaciones.';
  387. array_push($Errores, $Mensaje);
  388. }
  389. }
  390. function ValidarItinerario($Dato, &$Respuestas, &$Errores) {
  391. if ($Dato === 'salud' || $Dato === 'tecnologico') {
  392. $Respuestas['itinerario'] = $Dato;
  393. } else {
  394. $Mensaje = 'Se debe seleccionar el itinerario de Ciencias de la Salud '
  395. . 'o el Cientifico-Tecnológico.';
  396. array_push($Errores, $Mensaje);
  397. }
  398. }
  399. function ValidarLenguaLiteratura1($Dato, &$Respuestas, &$Errores) {
  400. if ($Dato === 'si') {
  401. $Respuestas['lengua_literatura_1'] = $Dato;
  402. } else {
  403. $Mensaje = 'Se debe seleccionar la asignatura de Lengua Castellana y '
  404. . 'Literatura I en el Bloque 1.';
  405. array_push($Errores, $Mensaje);
  406. }
  407. }
  408. function ValidarFilosofia($Dato, &$Respuestas, &$Errores) {
  409. if ($Dato === 'si') {
  410. $Respuestas['filosofia'] = $Dato;
  411. } else {
  412. $Mensaje = 'Se debe seleccionar la asignatura de Filosofía en el '
  413. . 'Bloque 1.';
  414. array_push($Errores, $Mensaje);
  415. }
  416. }
  417. function ValidarEdFisica($Dato, &$Respuestas, &$Errores) {
  418. if ($Dato === 'si') {
  419. $Respuestas['ed_fisica'] = $Dato;
  420. } else {
  421. $Mensaje = 'Se debe seleccionar la asignatura de Educación Física '
  422. . 'en el Bloque 1.';
  423. array_push($Errores, $Mensaje);
  424. }
  425. }
  426. function ValidarMatematicas1($Dato, &$Respuestas, &$Errores) {
  427. if ($Dato === 'si') {
  428. $Respuestas['matematicas_1'] = $Dato;
  429. } else {
  430. $Mensaje = 'Se debe seleccionar la asignatura de Matemáticas I '
  431. . 'en el Bloque 1.';
  432. array_push($Errores, $Mensaje);
  433. }
  434. }
  435. function ValidarFisicaQuimica($Dato, &$Respuestas, &$Errores) {
  436. if ($Dato === 'si') {
  437. $Respuestas['fisica_quimica'] = $Dato;
  438. } else {
  439. $Mensaje = 'Se debe seleccionar la asignatura de Física y Química '
  440. . 'en el Bloque 1.';
  441. array_push($Errores, $Mensaje);
  442. }
  443. }
  444. function ValidarTutoria($Dato, &$Respuestas, &$Errores) {
  445. if ($Dato === 'si') {
  446. $Respuestas['tutoria'] = $Dato;
  447. } else {
  448. $Mensaje = 'Se debe seleccionar la asignatura de Tutoría en el Bloque '
  449. . '1.';
  450. array_push($Errores, $Mensaje);
  451. }
  452. }
  453. function ValidarOptativa1($Dato, &$Respuestas, &$Errores) {
  454. if (($Dato === 'ingles_1') || ($Dato === 'italiano_1')) {
  455. $Respuestas['optativa_1'] = $Dato;
  456. } else {
  457. $Mensaje = 'Se debe seleccionar Inglés o Italiano como Primera '
  458. . 'Lengua Extranjera I en el Bloque 2.';
  459. array_push($Errores, $Mensaje);
  460. }
  461. }
  462. function ValidarOptativa2($Dato, $DatoDependiente, &$Respuestas, &$Errores) {
  463. if ($DatoDependiente === 'salud') {
  464. if ($Dato === 'biologia_geologia') {
  465. $Respuestas['optativa_2'] = $Dato;
  466. } else {
  467. $Mensaje = 'Se debe seleccionar Biología y Geología para el '
  468. . 'Itinerario de Ciencias de la Salud, en el Bloque 3.';
  469. array_push($Errores, $Mensaje);
  470. }
  471. } else if ($DatoDependiente === 'tecnologico') {
  472. if ($Dato === 'dibujo_1') {
  473. $Respuestas['optativa_2'] = $Dato;
  474. } else {
  475. $Mensaje = 'Se debe seleccionar Dibujo Técnico I para el '
  476. . 'Itinerario de Científico-Tecnológico, en el Bloque 3.';
  477. array_push($Errores, $Mensaje);
  478. }
  479. }
  480. }
  481. function ValidarOptativa3($Dato, $DatoDependiente, $DatoDependiente2,
  482. &$Respuestas, &$Errores) {
  483. if ($DatoDependiente === 'salud') {
  484. if ($DatoDependiente2 === 'ingles_1') {
  485. if ($Dato === 'tecnologia_1' || $Dato === 'cultura_cientifica' || $Dato === 'dibujo_1') {
  486. $Respuestas['optativa_3'] = $Dato;
  487. } else {
  488. $Mensaje = 'Se debe seleccionar entre Tecnología Industrial I, '
  489. . 'Cultura Científica, Dibujo Técnico I para el Itinerario '
  490. . 'de Ciencias de la Salud, en el Bloque 4.';
  491. array_push($Errores, $Mensaje);
  492. }
  493. } else if ($DatoDependiente2 == 'italiano_1') {
  494. if ($Dato === 'tecnologia_1' || $Dato === 'cultura_cientifica' || $Dato === 'ingles_1' || $Dato === 'dibujo_1') {
  495. $Respuestas['optativa_3'] = $Dato;
  496. } else {
  497. $Mensaje = 'Se debe seleccionar entre Tecnología Industrial I, '
  498. . 'Cultura Científica, Inglés como Segunda Lengua Extranjera I '
  499. . 'y Dibujo Técnico I para el Itinerario de Ciencias de la '
  500. . 'Salud y teniendo Italiano como Primera Lengua Extranjera '
  501. . 'I, en el Bloque 4.';
  502. array_push($Errores, $Mensaje);
  503. }
  504. }
  505. } else if ($DatoDependiente === 'tecnologico') {
  506. if ($DatoDependiente2 === 'ingles_1') {
  507. if ($Dato === 'tecnologia_1' || $Dato === 'cultura_cientifica' || $Dato === 'biologia_geologia') {
  508. $Respuestas['optativa_3'] = $Dato;
  509. } else {
  510. $Mensaje = 'Se debe seleccionar entre Tecnología Industrial I, '
  511. . 'Cultura Científica y Biología y Geología para el Itinerario '
  512. . 'Científico-Tecnológico, en el Bloque 4.';
  513. array_push($Errores, $Mensaje);
  514. }
  515. } else if ($DatoDependiente2 === 'italiano_1') {
  516. if ($Dato === 'tecnologia_1' || $Dato === 'cultura_cientifica' || $Dato === 'ingles_1' || $Dato === 'biologia_geologia') {
  517. $Respuestas['optativa_3'] = $Dato;
  518. } else {
  519. $Mensaje = 'Se debe seleccionar entre Tecnología Industrial I, '
  520. . 'Cultura Científica, Inglés como Segunda Lengua Extranjera I '
  521. . 'y Biología y Geología para el Itinerario Científico-'
  522. . 'Tecnológico y teniendo Italiano como Primera Lengua '
  523. . 'Extranjera I, en el Bloque 4.';
  524. array_push($Errores, $Mensaje);
  525. }
  526. }
  527. }
  528. }
  529. function ValidarOptativa4($Dato, &$Respuestas, &$Errores) {
  530. if ($Dato === 'religion_catolica' || $Dato === 'tic_1') {
  531. $Respuestas['optativa_4'] = $Dato;
  532. } else {
  533. $Mensaje = 'Se debe seleccionar entre Religión Católica y Tecnologías '
  534. . 'de la Información y Comunicación 1 en el Bloque 5.';
  535. array_push($Errores, $Mensaje);
  536. }
  537. }
  538. function ValidarTratamiento($Dato, &$Respuestas, &$Errores) {
  539. if ($Dato === 'consiente' || $Dato === 'no_consiente') {
  540. $Respuestas['tratamiento'] = $Dato;
  541. } else {
  542. $Mensaje = 'Se debe seleccionar si hay o no consentimiento para el '
  543. . 'tratamiento de datos general.';
  544. array_push($Errores, $Mensaje);
  545. }
  546. }
  547. function ValidarDifusionWeb($Dato, &$Respuestas, &$Errores) {
  548. if ($Dato === 'consiente' || $Dato === 'no_consiente') {
  549. $Respuestas['difusion_web'] = $Dato;
  550. } else {
  551. $Mensaje = 'Se debe seleccionar si hay o no consentimiento para la '
  552. . 'difusión de datos en el sitio web.';
  553. array_push($Errores, $Mensaje);
  554. }
  555. }
  556. function ValidarDifusionApp($Dato, &$Respuestas, &$Errores) {
  557. if ($Dato === 'consiente' || $Dato === 'no_consiente') {
  558. $Respuestas['difusion_app'] = $Dato;
  559. } else {
  560. $Mensaje = 'Se debe seleccionar si hay o no consentimiento para la '
  561. . 'difusión de datos en la app.';
  562. array_push($Errores, $Mensaje);
  563. }
  564. }
  565. function ValidarDifusionFacebook($Dato, &$Respuestas, &$Errores) {
  566. if ($Dato === 'consiente' || $Dato === 'no_consiente') {
  567. $Respuestas['difusion_facebook'] = $Dato;
  568. } else {
  569. $Mensaje = 'Se debe seleccionar si hay o no consentimiento para la '
  570. . 'difusión de datos en Facebook.';
  571. array_push($Errores, $Mensaje);
  572. }
  573. }
  574. function ValidarFichero($Dato, $NombreCampo, &$Respuestas, &$Errores) {
  575. //Variables de configuracion
  576. $DirectorioSubida = './almacen/documentos/';
  577. $TamanioMaximo = '10'; //En MBs
  578. $ExtensionesValidas = [
  579. 'jpg',
  580. 'jpeg',
  581. 'png',
  582. 'txt',
  583. 'odt',
  584. 'doc',
  585. 'docx',
  586. 'pdf'
  587. ];
  588. $MIMEsValidos = [
  589. 'image/jpeg',
  590. 'image/jpeg',
  591. 'image/png',
  592. 'text/plain',
  593. 'application/vnd.oasis.opendocument.text',
  594. 'application/msword',
  595. 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  596. 'application/pdf',
  597. ];
  598. //Variables de archivo
  599. $NombreFichero = $Dato['name'];
  600. $TamanioFichero = $Dato['size'];
  601. $DirectorioTemp = $Dato['tmp_name'];
  602. $TipoFichero = $Dato['type'];
  603. $ArrayFichero = pathinfo($NombreFichero);
  604. $Extension = '';
  605. if (isset($ArrayFichero['extension'])){
  606. $Extension = $ArrayFichero['extension'];
  607. }
  608. $Error = $Dato['error'];
  609. $SeSube = true;
  610. // Gestion de errores
  611. if ($Error === 0) {
  612. // Comprobamos la extensión del archivo
  613. if (!in_array($Extension, $ExtensionesValidas)) {
  614. $Mensaje = 'La extensión del fichero <strong>' . $NombreFichero . '</strong> no es válida.';
  615. array_push($Errores, $Mensaje);
  616. $SeSube = false;
  617. }
  618. // Comprobamos el tamaño del archivo
  619. if ($TamanioFichero > ($TamanioMaximo * 1000000 /*Conversion a MBytes*/)) {
  620. $Mensaje = 'El fichero <strong>' . $NombreFichero . '</strong> debe de tener un tamaño inferior a 10 MBs.';
  621. array_push($Errores, $Mensaje);
  622. $SeSube = false;
  623. }
  624. // Comprobamos el tipo MIME del archivo
  625. if (!in_array($TipoFichero, $MIMEsValidos)) {
  626. $Mensaje = 'El tipo MIME del fichero <strong>' . $NombreFichero . '</strong> no es válido.';
  627. array_push($Errores, $Mensaje);
  628. $SeSube = false;
  629. }
  630. } else {
  631. if ($Error === 3) {
  632. $Mensaje = 'El fichero <strong>' . $NombreFichero . '</strong> solo se ha subido parcialmente.';
  633. array_push($Errores, $Mensaje);
  634. $SeSube = false;
  635. } else if ($Error === 4) {
  636. $Mensaje = 'No se ha subido ningun fichero.';
  637. array_push($Errores, $Mensaje);
  638. $SeSube = false;
  639. } else {
  640. $Mensaje = 'Error general al subir el fichero <strong>' . $NombreFichero . '</strong>.';
  641. array_push($Errores, $Mensaje);
  642. $SeSube = false;
  643. }
  644. }
  645. // Se sube el archivo
  646. if ($SeSube && count($Errores) === 0) {
  647. $Respuestas[$NombreCampo] = $Respuestas['identificacion'] . '-' . $NombreFichero;
  648. move_uploaded_file($DirectorioTemp, ($DirectorioSubida . $Respuestas[$NombreCampo]));
  649. }
  650. }
  651. function GuardarRespuestas(&$Respuestas, $Direccion) {
  652. $JSON = json_encode($Respuestas);
  653. file_put_contents($Direccion, $JSON);
  654. }
  655. function ImprimirErrores(&$Errores) {
  656. $HTML = '';
  657. $HTML .= '<div class="container p-3 rounded errores">' . PHP_EOL;
  658. $HTML .= '<div class="row mb-1">' . PHP_EOL;
  659. $HTML .= '<div class="col-12 text-center">' . PHP_EOL;
  660. $HTML .= '<span class="font-weight-bold">Errores</span>' . PHP_EOL;
  661. $HTML .= '</div>' . PHP_EOL;
  662. $HTML .= '</div>' . PHP_EOL;
  663. $HTML .= '<div class="row">' . PHP_EOL;
  664. $HTML .= '<div class="col-12">' . PHP_EOL;
  665. $HTML .= '<ul class="px-0 mb-0">' . PHP_EOL;
  666. foreach ($Errores as $Error) {
  667. $HTML .= '<li class="mx-4">' . $Error . '</li>' . PHP_EOL;
  668. }
  669. $HTML .= '</ul>' . PHP_EOL;
  670. $HTML .= '</div>' . PHP_EOL;
  671. $HTML .= '</div>' . PHP_EOL;
  672. $HTML .= '</div>' . PHP_EOL;
  673. return $HTML;
  674. }