Evento.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. /*
  3. * Clase que contiene todas las fechas finales que se pueden generar a partir de los datos de la BD
  4. * y que serán pintadas en el calendario.
  5. * Las validaciones se ahcen previamente.
  6. */
  7. define("PERIODO_COLOR", "#4F647D");
  8. define("EXTRAS_COLOR", "#E470C0");
  9. class Evento {
  10. public $id_db, $titulo, $desc, $fecha, $todo_dia, $hora_ini, $hora_fin, $inscripciones, $editable, $insigniasTotal;
  11. public $periodo, $perfilesArr, $insigniaArr, $inscripcionesArr;
  12. public $fechasArr, $atributosArr;
  13. function __construct($id_db, $titulo, $desc, $periodo, $fecha, $todo_dia = true, $hora_ini = "", $hora_fin = "", $editable = true){
  14. $this->id_db = $id_db;
  15. $this->titulo = $titulo;
  16. $this->desc = $desc;
  17. $this->fecha = fechaGuion($fecha);
  18. $this->todo_dia = $todo_dia;
  19. $this->hora_ini = $hora_ini;
  20. $this->hora_fin = $hora_fin;
  21. //$this->inscripciones = $inscripciones;
  22. $this->editable = $editable;
  23. $this->periodo = $periodo;
  24. $this->fechasArr = array();
  25. $this->perfilesArr = array();
  26. $this->atributosArr = array();
  27. $this->insigniasTotal = 0;
  28. $this->inscripcionesArr = array();
  29. }
  30. function addInsignia($id, $tipo, $tipo_desc, $tipo_color, $puesto, $puesto_desc, $tiene_evidencia, $evidencia, $insc_ini, $insc_fin){
  31. $this->inscripciones = ($insc_ini!="")?true:false;
  32. $this->insigniaArr = array(
  33. "insignia_id"=>$id,
  34. "tipo"=>$tipo,
  35. "tipo_desc"=>$tipo_desc,
  36. "tipo_color"=>$tipo_color,
  37. "puesto"=>$puesto,
  38. "puesto_desc"=>$puesto_desc,
  39. "tiene_evidencia"=>$tiene_evidencia,
  40. "evidencia"=>$evidencia,
  41. "insc_ini"=>fechaSlash($insc_ini),
  42. "insc_fin"=>date("d/m/Y", strtotime($insc_fin)),
  43. "insc_hora_fin"=>date("H:i", strtotime($insc_fin)),
  44. );
  45. }
  46. function addPerfil($perf_rs){
  47. $this->perfilesArr[] = array("id"=>$perf_rs["CalendarioPerfil_id"], "desc"=>$perf_rs["CalendarioPerfil_desc"]);
  48. }
  49. function addAtributo($atr_rs){
  50. $this->atributosArr[] = array("id"=>$atr_rs["AtributoEgresoGeneral_id"], "nivel"=>$atr_rs["AtributoNivel_id"]);
  51. }
  52. function addTotalInsignias($total){
  53. $this->insigniasTotal = $total;
  54. }
  55. function addInscripciones($fechaI, $fechaF, $evidencias){
  56. $this->inscripcionesArr = array(
  57. "fecha_inicio"=>fechaSlash($fechaI),
  58. "fecha_final"=>fechaSlash($fechaF),
  59. "evidencia"=>$evidencias
  60. );
  61. }
  62. //Fecha normal
  63. function addFecha($fecha){
  64. $fecha = fechaGuion($fecha);
  65. if(strtotime($fecha)>= strtotime($this->fecha))//solo si la fecha es mayor a la fecha inicial
  66. $this->fechasArr[] = array("fecha_orig"=> $fecha, "fecha"=> $fecha, "todo_dia"=>$this->todo_dia, "hora_ini"=>$this->hora_ini, "hora_fin"=>$this->hora_fin);
  67. }
  68. //Fechas modificadas
  69. function replaceFecha($fecha_orig, $fecha_new, $hora_ini, $hora_fin){//fecha_orig en formato yyyy-mm-dd hh:mm:ss
  70. $fecha_busca = explode(" ", $fecha_orig);//quita horas
  71. $fecha_busca[0] = fechaGuion($fecha_busca[0]);
  72. $fecha_new = fechaGuion($fecha_new);
  73. for($i=0; $i< count($this->fechasArr); $i++){
  74. if($this->fechasArr[$i]["fecha_orig"] == $fecha_busca[0]){
  75. $this->fechasArr[$i]["fecha"] = $fecha_new;
  76. $this->fechasArr[$i]["hora_ini"] = $hora_ini;
  77. $this->fechasArr[$i]["hora_fin"] = $hora_fin;
  78. break;//solo 1 por fecha
  79. }
  80. }
  81. }
  82. //Excepciones
  83. function removeFecha($fecha_busca){
  84. $tmp = explode(" ", $fecha_busca);//quita horas
  85. $fecha_busca = fechaGuion($tmp[0]);
  86. for($i=0; $i< count($this->fechasArr); $i++){
  87. if($this->fechasArr[$i]["fecha_orig"] == $fecha_busca){
  88. array_splice($this->fechasArr, $i, 1);
  89. break;
  90. }
  91. }
  92. }
  93. function hasFecha($fecha){
  94. $fecha = fechaGuion($fecha);
  95. foreach($this->fechasArr as $fechaArr){
  96. if($fechaArr["fecha"] == $fecha)
  97. return true;
  98. }
  99. return false;
  100. }
  101. //Obtiene listado de fechas y cada una con la descripicón del evento.
  102. //Filtra las fechas generadas por el mes y el año
  103. function getEventList($mes, $anho){
  104. $arr = array();
  105. foreach($this->fechasArr as $fecha){
  106. if(intval(date("n", strtotime($fecha["fecha"]))) == intval($mes) && intval(date("Y", strtotime($fecha["fecha"]))) == intval($anho) ){
  107. $arr[] = array(
  108. "id_db"=>$this->id_db,
  109. "titulo"=>$this->titulo,
  110. "desc"=>nl2br($this->desc),
  111. "fechas_total"=> count($this->fechasArr),
  112. "fecha_orig"=> fechaSlash($fecha["fecha_orig"]),
  113. "fecha"=> fechaSlash($fecha["fecha"]),
  114. "dia"=>intval(date("j", strtotime($fecha["fecha"]))),//solo para pintarlo
  115. "todo_dia"=>$this->todo_dia,
  116. "hora_ini_orig"=> substr($fecha["hora_ini"],0,5),
  117. "hora_ini"=> substr($fecha["hora_ini"],0,5),
  118. "hora_fin"=>substr($fecha["hora_fin"],0,5),
  119. "inscripciones"=>$this->inscripciones,
  120. "editable"=>$this->editable,
  121. "periodo"=>$this->periodo,
  122. "perfiles"=>$this->perfilesArr,
  123. "insignia"=>$this->insigniaArr,
  124. "atributos"=>$this->atributosArr,
  125. "insignias_total"=>$this->insigniasTotal,
  126. );
  127. }
  128. }
  129. return $arr;
  130. }
  131. function getEventList_All($fecha_ini, $fecha_fin){
  132. $arr = array();
  133. foreach($this->fechasArr as $fecha){
  134. if(strtotime($fecha["fecha"]) >= strtotime($fecha_ini) && strtotime($fecha["fecha"]) <= strtotime($fecha_fin)){
  135. $arr[] = array(
  136. "id_db"=>$this->id_db,
  137. "titulo"=>$this->titulo,
  138. "desc"=>nl2br($this->desc),
  139. //"fechas_total"=> count($this->fechasArr),
  140. //"fecha_orig"=> fechaSlash($fecha["fecha_orig"]),
  141. "fecha"=> fechaSlash($fecha["fecha"]),
  142. //"dia"=>intval(date("j", strtotime($fecha["fecha"]))),//solo para pintarlo
  143. "todo_dia"=>$this->todo_dia,
  144. //"hora_ini_orig"=> substr($fecha["hora_ini"],0,5),
  145. "hora_ini"=> substr($fecha["hora_ini"],0,5),
  146. "hora_fin"=>substr($fecha["hora_fin"],0,5),
  147. "inscripciones"=>$this->inscripciones,
  148. "editable"=>$this->editable,
  149. "periodo"=>$this->periodo,
  150. "perfiles"=>$this->perfilesArr,
  151. "insignia"=>$this->insigniaArr,
  152. "atributos"=>$this->atributosArr,
  153. "insignias_total"=>$this->insigniasTotal,
  154. );
  155. }
  156. }
  157. return $arr;
  158. }
  159. }