PageRenderTime 44ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/src/2.071.0/_GestionnaireEvenementsStd.class.php

https://github.com/crepeausucre/soothERP
PHP | 299 lines | 173 code | 53 blank | 73 comment | 17 complexity | 240670528417626a77281abdd2089575 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, LGPL-3.0
  1. <?php
  2. // *************************************************************************************************************
  3. // CLASSE GestionnaireEvenements
  4. // *************************************************************************************************************
  5. abstract class GestionnaireEvenementsStd{
  6. //voir dans la BD la table : AGENDA_EVENTS
  7. //$eventsTypesPermissions[ID_TYPE_EVENT] = array();
  8. //$eventsTypesPermissions[ID_TYPE_EVENT] = int permission
  9. private $eventsTypesPermissions; //liste des Events
  10. private $user;
  11. private $gestionnaireAgendas;
  12. //public GestionnaireEvenementsStd(User, GestionnaireAgendas)
  13. public function __construct(&$user, &$gestionnaireAgendas){
  14. $this->user =& $user;
  15. $this->gestionnaireAgendas =& $gestionnaireAgendas;
  16. $this->chargerEventsTypesAvecDroits();
  17. }
  18. //public bool __call(string, array)
  19. public function __call($method,$args){
  20. return true;
  21. }
  22. // *************************************************************************************************************
  23. // Getters & Setters
  24. // *************************************************************************************************************
  25. //public &array getEventsTypesPermissions()
  26. public function &getEventsTypesPermissions(){
  27. return $this->eventsTypesPermissions;
  28. }
  29. //protected void setEventsTypesPermissions(&array)
  30. protected function setEventsTypesPermissions(&$eventsTypesPermissions){
  31. $this->eventsTypesPermissions =& $eventsTypesPermissions;
  32. }
  33. //public &User getUser(){
  34. public function &getUser(){
  35. return $this->user;
  36. }
  37. //protected void setUser(&User){
  38. protected function setUser(&$user){
  39. $this->user =& $user;
  40. }
  41. //public &GestionnaireAgendas getGestionnaireAgendas()
  42. public function &getGestionnaireAgendas(){
  43. return $this->gestionnaireAgendas;
  44. }
  45. //protected void getGestionnaireAgendas(&GestionnaireAgendas)
  46. protected function setGestionnaireAgendas(&$gestionnaireAgendas){
  47. $this->gestionnaireAgendas =& $gestionnaireAgendas;
  48. }
  49. // *************************************************************************************************************
  50. //
  51. // *************************************************************************************************************
  52. //public void chargerEventsTypesAvecDroits()
  53. public function chargerEventsTypesAvecDroits(){
  54. $this->eventsTypesPermissions = array();
  55. global $bdd;
  56. $resultat = $bdd->query ($this->queryChargerEventsTypesAvecDroits());
  57. while ($r = $resultat->fetchObject()){
  58. $this->eventsTypesPermissions[intval($r->id_type_event)] = intval($r->id_permission);
  59. }
  60. }
  61. //protected string queryChargerEventsTypesAvecDroits()
  62. protected function queryChargerEventsTypesAvecDroits(){
  63. return "SELECT et.id_type_event, 9999 as id_permission
  64. FROM agendas_events_types et
  65. ORDER BY et.id_type_event ASC";
  66. }
  67. // *************************************************************************************************************
  68. //
  69. // *************************************************************************************************************
  70. //$eventsTypessAvecDroit[ID_TYPE_EVENT] = array();
  71. //$eventsTypessAvecDroit[ID_TYPE_EVENT]["libEvent"] = string;
  72. //$eventsTypessAvecDroit[ID_TYPE_EVENT]["affiche"] = bool;
  73. //$eventsTypessAvecDroit[ID_TYPE_EVENT]["droits"] = int[];
  74. //public array getEventsTypesAvecDroits(string/int/null, int/null)
  75. public function getEventsTypesAvecDroits($agenda = null, $permissions = null){
  76. if(is_null($agenda)) //aucun agenda n'est demandé
  77. { return $this->getEventsTypesOfAllTypeAgendaAvecDroits($permissions);}
  78. elseif(is_string($agenda)) //une ref agenda est passée en parametre
  79. { return $this->getEventsTypesOfAgendaAvecDroits($agenda, $permissions);}
  80. elseif(is_numeric($agenda)) //un type d'agenda est passé en parametre
  81. { return $this->getEventsTypesOfTypeAgendaAvecDroits($agenda, $permissions);}
  82. else{ return array();}
  83. }
  84. //$eventsTypes[ID_TYPE_EVENT] = array();
  85. //$eventsTypes[ID_TYPE_EVENT]["libEvent"] = string;
  86. //$eventsTypes[ID_TYPE_EVENT]["affiche"] = bool;
  87. //$eventsTypes[ID_TYPE_EVENT]["droits"] = int;
  88. //protected array getEventsTypesOfAllTypeAgendaAvecDroits(int/null)
  89. protected function getEventsTypesOfAllTypeAgendaAvecDroits($permissions = null){
  90. $eventsTypes = array();
  91. global $bdd;
  92. $resultat = $bdd->query ($this->queryGetEventsTypesOfAllTypeAgendaAvecDroits($permissions));
  93. while ($r = $resultat->fetchObject()){
  94. $tmp_id_type_event = intval($r->id_type_event);
  95. $eventsTypes[$tmp_id_type_event] = array();
  96. $eventsTypes[$tmp_id_type_event]["libEvent"] = $r->lib_type_event;
  97. $eventsTypes[$tmp_id_type_event]["id_type_agenda"] = intval($r->id_type_agenda);
  98. $eventsTypes[$tmp_id_type_event]["affiche"] = $r->affiche;
  99. $eventsTypes[$tmp_id_type_event]["droits"] = intval($r->id_permission);
  100. }
  101. return $eventsTypes;
  102. }
  103. //protected string queryGetEventsTypesOfAllTypeAgendaAvecDroits(int/null)
  104. protected function queryGetEventsTypesOfAllTypeAgendaAvecDroits($permissions = null){
  105. return "SELECT et.id_type_event, IFNULL(p.affiche, 0) as affiche, 9999 as id_permission, et.lib_type_event, et.id_type_agenda
  106. FROM agendas_events_types et
  107. LEFT JOIN agendas_users_events_type_affiche_permissions p ON et.id_type_event = p.id_type_event && p.ref_user = '".$this->user->getRef_user()."'
  108. ORDER BY p.id_type_event";
  109. }
  110. // *************************************************************************************
  111. //$eventsTypes[ID_TYPE_EVENT] = array();
  112. //$eventsTypes[ID_TYPE_EVENT]["libEvent"] = string;
  113. //$eventsTypes[ID_TYPE_EVENT]["affiche"] = bool;
  114. //$eventsTypes[ID_TYPE_EVENT]["droits"] = int;
  115. //protected array getEventsTypesOfTypeAgendaAvecDroits(int, int/null)
  116. protected function getEventsTypesOfTypeAgendaAvecDroits($id_type_agenda, $permissions = null){
  117. $eventsTypes = array();
  118. global $bdd;
  119. $resultat = $bdd->query ($this->queryGetEventsTypesOfTypeAgendaAvecDroits($id_type_agenda, $permissions));
  120. while ($r = $resultat->fetchObject()){
  121. $tmp_id_type_event = intval($r->id_type_event);
  122. $eventsTypes[$tmp_id_type_event] = array();
  123. $eventsTypes[$tmp_id_type_event]["libEvent"] = $r->lib_type_event;
  124. $eventsTypes[$tmp_id_type_event]["id_type_agenda"] = intval($r->id_type_agenda);
  125. $eventsTypes[$tmp_id_type_event]["affiche"] = $r->affiche;
  126. $eventsTypes[$tmp_id_type_event]["droits"] = intval($r->id_permission);
  127. }
  128. return $eventsTypes;
  129. }
  130. //protected string queryGetEventsTypesOfTypeAgendaAvecDroits(int, int/null)
  131. protected function queryGetEventsTypesOfTypeAgendaAvecDroits($id_type_agenda, $permissions = null){
  132. return "SELECT et.id_type_event, p.affiche, 9999 as id_permission, et.lib_type_event, et.id_type_agenda
  133. FROM agendas_events_types et
  134. LEFT JOIN agendas_users_events_type_affiche_permissions p ON et.id_type_event = p.id_type_event
  135. WHERE p.ref_user = '".$this->user->getRef_user()."'
  136. && et.id_type_agenda = ".$id_type_agenda."
  137. ORDER BY p.id_type_event";
  138. }
  139. // *************************************************************************************
  140. //$eventsTypes[ID_TYPE_EVENT] = array();
  141. //$eventsTypes[ID_TYPE_EVENT]["libEvent"] = string;
  142. //$eventsTypes[ID_TYPE_EVENT]["affiche"] = bool;
  143. //$eventsTypes[ID_TYPE_EVENT]["droits"] = int;
  144. //protected array getEventsTypesOfAgendaAvecDroits(string, int/null)
  145. protected function getEventsTypesOfAgendaAvecDroits($ref_agenda, $permissions = null){
  146. $eventsTypes = array();
  147. $query = "SELECT et.id_type_event, et.lib_type_event, et.id_type_agenda, IFNULL(ap.affiche, 0) as affiche
  148. FROM agendas_events_types et
  149. LEFT JOIN agendas_users_events_type_affiche_permissions ap ON ap.id_type_event = et.id_type_event
  150. LEFT JOIN agendas a ON a.id_type_agenda = et.id_type_agenda
  151. WHERE a.ref_agenda = '".$ref_agenda."'
  152. ORDER BY et.id_type_event";
  153. global $bdd;
  154. $resultat = $bdd->query ($query);
  155. while ($r = $resultat->fetchObject()){
  156. $tmp_id_type_event = intval($r->id_type_event);
  157. $eventsTypes[$tmp_id_type_event] = array();
  158. $eventsTypes[$tmp_id_type_event]["libEvent"] = $r->lib_type_event;
  159. $eventsTypes[$tmp_id_type_event]["id_type_agenda"] = intval($r->id_type_agenda);
  160. $eventsTypes[$tmp_id_type_event]["affiche"] = intval($r->affiche);
  161. $eventsTypes[$tmp_id_type_event]["droits"] = 9999;
  162. }
  163. return $eventsTypes;
  164. }
  165. // *************************************************************************************
  166. //public bool gride_is_locked()
  167. public function gride_is_locked(){
  168. return false;
  169. }
  170. // *************************************************************************************************************
  171. //
  172. // *************************************************************************************************************
  173. //retourne la liste des événements compris entre $Udate_deb et $Udate_fin et qui se déroulent
  174. //ŕ partir d'une HEURE et pour une DUREE données.
  175. //public array &getEventsGrilleAvecDroit(Timestamp = 0, Timestamp = 0)
  176. public function &getEventsGrilleAvecDroit($Udate_deb = 0, $Udate_fin = 0){
  177. $events = array();
  178. global $bdd;
  179. $resultat = $bdd->query ($this->queryGetEventsGrilleAvecDroit($Udate_deb, $Udate_fin));
  180. $last_ref_agenda = "";
  181. $last_events_types_permission = null;
  182. while($r = $resultat->fetchObject()){
  183. if($last_ref_agenda != $r->ref_agenda){
  184. $last_ref_agenda = $r->ref_agenda;
  185. $last_events_types_permission = $this->gestionnaireAgendas->getAgendasPermissions($last_ref_agenda)->GetEvents_types_permission();
  186. }
  187. if(isset($last_events_types_permission[intval($r->id_type_event)]) && $last_events_types_permission[intval($r->id_type_event)] == 0)
  188. { continue;}// Pour cet agenda, on a aucun doit sur ce type d'événement, donc, on ignore cet événement
  189. $events[$r->ref_agenda_event] = new Event($r->ref_agenda_event);
  190. }
  191. unset($last_ref_agenda, $last_events_types_permission);
  192. return $events;
  193. }
  194. //protected string queryGetEventsGrilleAvecDroit(Timestamp = 0, Timestamp = 0)
  195. protected function queryGetEventsGrilleAvecDroit($Udate_deb = 0, $Udate_fin = 0){
  196. /*$query = "SELECT e.ref_agenda_event, e.id_type_event, e.ref_agenda
  197. FROM agendas_users_agendas_affichage uaa
  198. LEFT JOIN agendas_events e ON e.ref_agenda = uaa.ref_agenda
  199. LEFT JOIN agendas_users_events_type_affiche_permissions etap ON etap.id_type_event = e.id_type_event
  200. WHERE uaa.affiche = 1
  201. && etap.affiche = 1
  202. && e.ref_agenda_event_parent IS NULL
  203. && e.affichage_journee = 0
  204. && UNIX_TIMESTAMP(e.date_agenda_event) + e.duree_agenda_event * 60 <
  205. 86400 * TRUNCATE(UNIX_TIMESTAMP(e.date_agenda_event) / 86400, 0) + 82800 ";*/
  206. $query = "SELECT e.ref_agenda_event, e.id_type_event, e.ref_agenda FROM agendas_events e
  207. LEFT JOIN agendas_users_agendas_affichage auaa ON auaa.ref_agenda = e.ref_agenda
  208. WHERE auaa.affiche = 1 && auaa.ref_user='".$_SESSION['user']->getRef_user()."' ";
  209. if($Udate_deb > 0)
  210. {$query.="&& e.date_agenda_event >= '".strftime("%Y-%m-%d %H:%M:%S", $Udate_deb)."' ";}
  211. if($Udate_deb > 0)
  212. {$query.="&& e.date_agenda_event <= '".strftime("%Y-%m-%d %H:%M:%S", $Udate_fin)."' ";}
  213. $query.= "ORDER BY e.date_agenda_event, e.ref_agenda, e.id_type_event, e.ref_agenda_event";
  214. return $query;
  215. }
  216. //public bool canBeShown(Event / string)
  217. public function canBeShown(&$event){
  218. if(is_string($event)){
  219. $ref_event = $event;
  220. }elseif($event instanceof Event){
  221. $ref_event = $event->getRef_event($this);
  222. if($ref_event === false){return false;}
  223. }else{return false;}
  224. global $bdd;
  225. $query = "SELECT uaa.affiche as afficheAG, etap.affiche as afficheTEV
  226. FROM agendas_events ev
  227. JOIN agendas_users_agendas_affichage uaa ON ev.ref_agenda = uaa.ref_agenda
  228. JOIN agendas_users_events_type_affiche_permissions etap ON etap.id_type_event = ev.id_type_event
  229. WHERE ev.ref_agenda_event_parent IS NULL
  230. && ev.affichage_journee = 0
  231. && ev.ref_agenda_event = '".$ref_event."'
  232. && uaa.ref_user = '".$this->getUser()->getRef_user()."'
  233. && etap.ref_user = '".$this->getUser()->getRef_user()."'";
  234. $resultat = $bdd->query(($query));
  235. if(!$res = $resultat->fetchObject()){return false;}
  236. return (min($res->afficheAG, $res->afficheTEV) > 0); //On retourne un VRAI bool
  237. }
  238. // *************************************************************************************************************
  239. // Gestion des droits
  240. // *************************************************************************************************************
  241. //public array getDroitsTypesEvents()
  242. public function getDroitsTypesEvents(){
  243. return $this->eventsTypesPermissions;
  244. }
  245. }
  246. ?>