Evento.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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", "#c99a0c");//Antes 6ABF4B
  8. define("EXTRAS_COLOR", "#E470C0");
  9. class Evento {
  10. public $id_db, $titulo, $desc, $categoria, $categoria_desc, $color, $fecha, $todo_dia, $hora_ini, $hora_fin, $inscripciones, $editable;
  11. public $fechasArr;
  12. function __construct($id_db, $titulo, $desc, $categoria, $cat_desc, $color, $periodo, $fecha, $todo_dia = true, $hora_ini = "", $hora_fin = "", $editable = true, $inscripciones = false){
  13. $this->id_db = $id_db;
  14. $this->titulo = $titulo;
  15. $this->desc = $desc;
  16. $this->categoria = $categoria;
  17. $this->categoria_desc = $cat_desc;
  18. $this->color = $color;
  19. $this->fecha = fechaGuion($fecha);
  20. $this->todo_dia = $todo_dia;
  21. $this->hora_ini = $hora_ini;
  22. $this->hora_fin = $hora_fin;
  23. $this->inscripciones = $inscripciones;
  24. $this->editable = $editable;
  25. $this->periodo = $periodo;
  26. $this->fechasArr = array();
  27. $this->perfilesArr = array();
  28. }
  29. function addPerfil($perf){
  30. $this->perfilesArr[] = array("id"=>$perf["CalendarioPerfil_id"], "desc"=>$perf["CalendarioPerfil_desc"]);
  31. }
  32. //Fecha normal
  33. function addFecha($fecha){
  34. $fecha = fechaGuion($fecha);
  35. if(strtotime($fecha)>= strtotime($this->fecha))//solo si la fecha es mayor a la fecha inicial
  36. $this->fechasArr[] = array("fecha_orig"=> $fecha, "fecha"=> $fecha, "todo_dia"=>$this->todo_dia, "hora_ini"=>$this->hora_ini, "hora_fin"=>$this->hora_fin);
  37. }
  38. //Fechas modificadas
  39. function replaceFecha($fecha_orig, $fecha_new, $hora_ini, $hora_fin){//fecha_orig en formato yyyy-mm-dd hh:mm:ss
  40. $fecha_busca = explode(" ", $fecha_orig);//quita horas
  41. $fecha_busca[0] = fechaGuion($fecha_busca[0]);
  42. $fecha_new = fechaGuion($fecha_new);
  43. for($i=0; $i< count($this->fechasArr); $i++){
  44. if($this->fechasArr[$i]["fecha_orig"] == $fecha_busca[0]){
  45. $this->fechasArr[$i]["fecha"] = $fecha_new;
  46. $this->fechasArr[$i]["hora_ini"] = $hora_ini;
  47. $this->fechasArr[$i]["hora_fin"] = $hora_fin;
  48. break;//solo 1 por fecha
  49. }
  50. }
  51. }
  52. //Excepciones
  53. function removeFecha($fecha_busca){
  54. $tmp = explode(" ", $fecha_busca);//quita horas
  55. $fecha_busca = fechaGuion($tmp[0]);
  56. for($i=0; $i< count($this->fechasArr); $i++){
  57. if($this->fechasArr[$i]["fecha_orig"] == $fecha_busca){
  58. array_splice($this->fechasArr, $i, 1);
  59. break;
  60. }
  61. }
  62. }
  63. function hasFecha($fecha){
  64. $fecha = fechaGuion($fecha);
  65. foreach($this->fechasArr as $fechaArr){
  66. if($fechaArr["fecha"] == $fecha)
  67. return true;
  68. }
  69. return false;
  70. }
  71. //Obtiene listado de fechas y cada una con la descripicón del evento.
  72. //Filtra las fechas generadas por el mes y el año
  73. function getEventList($mes, $anho){
  74. $arr = array();
  75. foreach($this->fechasArr as $fecha){
  76. if(intval(date("n", strtotime($fecha["fecha"]))) == intval($mes) && intval(date("Y", strtotime($fecha["fecha"]))) == intval($anho) ){
  77. $arr[] = array(
  78. "id_db"=>$this->id_db,
  79. "titulo"=>$this->titulo,
  80. "desc"=>nl2br($this->desc),
  81. "categoria"=>$this->categoria,
  82. "categoria_desc"=>$this->categoria_desc,
  83. "color"=>$this->color,
  84. "fechas_total"=> count($this->fechasArr),
  85. "fecha_orig"=> fechaSlash($fecha["fecha_orig"]),
  86. "fecha"=> fechaSlash($fecha["fecha"]),
  87. "dia"=>intval(date("j", strtotime($fecha["fecha"]))),//solo para pintarlo
  88. "todo_dia"=>$this->todo_dia,
  89. "hora_ini_orig"=> substr($fecha["hora_ini"],0,5),
  90. "hora_ini"=> substr($fecha["hora_ini"],0,5),
  91. "hora_fin"=>substr($fecha["hora_fin"],0,5),
  92. "inscripciones"=>$this->inscripciones,
  93. "editable"=>$this->editable,
  94. "periodo"=>$this->periodo,
  95. "perfiles"=>$this->perfilesArr,
  96. );
  97. }
  98. }
  99. return $arr;
  100. }
  101. function getEventList_All($fecha_ini, $fecha_fin){
  102. $arr = array();
  103. foreach($this->fechasArr as $fecha){
  104. if(strtotime($fecha["fecha"]) >= strtotime($fecha_ini) && strtotime($fecha["fecha"]) <= strtotime($fecha_fin)){
  105. $arr[] = array(
  106. "id_db"=>$this->id_db,
  107. "titulo"=>$this->titulo,
  108. "desc"=>nl2br($this->desc),
  109. "categoria"=>$this->categoria,
  110. "categoria_desc"=>$this->categoria_desc,
  111. "color"=>$this->color,
  112. //"fechas_total"=> count($this->fechasArr),
  113. //"fecha_orig"=> fechaSlash($fecha["fecha_orig"]),
  114. "fecha"=> fechaSlash($fecha["fecha"]),
  115. //"dia"=>intval(date("j", strtotime($fecha["fecha"]))),//solo para pintarlo
  116. "todo_dia"=>$this->todo_dia,
  117. //"hora_ini_orig"=> substr($fecha["hora_ini"],0,5),
  118. "hora_ini"=> substr($fecha["hora_ini"],0,5),
  119. "hora_fin"=>substr($fecha["hora_fin"],0,5),
  120. "inscripciones"=>$this->inscripciones,
  121. "editable"=>$this->editable,
  122. "periodo"=>$this->periodo,
  123. "perfiles"=>$this->perfilesArr,
  124. );
  125. }
  126. }
  127. return $arr;
  128. }
  129. }