/[openfoncier]/trunk/obj/dossier_message.class.php
ViewVC logotype

Contents of /trunk/obj/dossier_message.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3440 - (show annotations)
Thu Apr 30 12:30:41 2015 UTC (9 years, 9 months ago) by nmeucci
File size: 11289 byte(s)
Ajout de droits spécifiques, suppression du canAccess() et passage en nouvelles actions pour : dossier_message, blocnote, document_numerise.

1 <?php
2 //$Id$
3 //gen openMairie le 15/11/2012 18:30
4
5 require_once ("../gen/obj/dossier_message.class.php");
6
7 class dossier_message extends dossier_message_gen {
8
9 /** @var boolean Les nouvelles actions sont activées sur cet objet */
10 var $activate_class_action;
11
12 function dossier_message($id,&$db,$debug) {
13 // On active les nouvelles actions
14 $this->activate_class_action = true;
15 //
16 $this->constructeur($id,$db,$debug);
17 }// fin constructeur
18
19 /**
20 * Définition des actions disponibles sur la classe.
21 *
22 * @return void
23 */
24 function init_class_actions() {
25 parent::init_class_actions();
26
27 // ACTION - 000 - ajouter
28 //
29 $this->class_actions[0]["condition"] = "is_ajoutable";
30
31 // ACTION - 001 - modifier
32 //
33 $this->class_actions[1]["condition"] = "is_modifiable";
34
35 // ACTION - 002 - supprimer
36 //
37 $this->class_actions[2]["condition"] = "is_supprimable";
38
39 // ACTION - 004 - marquer comme lu
40 //
41 $this->class_actions[4] = array(
42 "identifier" => "lu",
43 "portlet" => array(
44 "type" => "action-direct",
45 "libelle" => _("Marquer comme lu"),
46 "order" => 30,
47 "class" => "lu-16",
48 ),
49 "view" => "formulaire",
50 "method" => "marquer_comme_lu",
51 "permission_suffix" => "modifier_lu",
52 "condition" => "is_marquable_comme_lu",
53 );
54 }
55
56 /**
57 * CONDITION - is_marquable_comme_lu.
58 *
59 * Condition pour afficher le bouton marquer comme lu
60 *
61 * @return boolean
62 */
63 function is_marquable_comme_lu() {
64 // Si déjà lu
65 if ($this->getVal("lu") == "t") {
66 return false;
67 }
68 // Si l'utilisateur est un intructeur qui ne correspond pas à la
69 // division du dossier et qu'il n'a pas de bypass
70 if (!$this->f->isAccredited("dossier_message_modifier_lu_bypass")
71 && $this->f->isUserInstructeur()
72 && isset($this->f->om_utilisateur["division"])
73 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
74 return false;
75 }
76 // Récupération de l'ID et et de la classe du dossier lié
77 $idxformulaire = $this->getParameter("idxformulaire");
78 $retourformulaire = $this->getParameter("retourformulaire");
79 // Si le dossier d'instruction auquel est rattaché le message
80 // est cloturé
81 if ( $idxformulaire != '' &&
82 (
83 $retourformulaire == 'dossier' ||
84 $retourformulaire == 'dossier_instruction' ||
85 $retourformulaire == 'dossier_instruction_mes_encours' ||
86 $retourformulaire == 'dossier_instruction_tous_encours' ||
87 $retourformulaire == 'dossier_instruction_mes_clotures' ||
88 $retourformulaire == 'dossier_instruction_tous_clotures'
89 )){
90 // On récupère le statut du dossier d'instruction
91 $statut = $this->f->getStatutDossier($idxformulaire);
92 if ($this->f->isUserInstructeur() && $statut == "cloture" ){
93 return false;
94 }
95 }
96 return true;
97 }
98
99 /**
100 * TREATMENT - marquer_comme_lu.
101 *
102 * Cette methode permet de passer la message en "lu"
103 *
104 * XXX - copié de la classe consultation car aucune la méthode JS
105 * markedAsRead() du form.inc n'existe pas.
106 *
107 * @return boolean true si maj effectué false sinon
108 */
109 function marquer_comme_lu() {
110 // Cette méthode permet d'exécuter une routine en début des méthodes
111 // dites de TREATMENT.
112 $this->begin_treatment(__METHOD__);
113
114 if($this->getVal("lu") == 'f') {
115 $this->correct = true;
116 $this->valF["lu"] = true;
117
118 $res = $this->f->db->autoExecute(
119 DB_PREFIXE.$this->table,
120 $this->valF,
121 DB_AUTOQUERY_UPDATE,
122 $this->clePrimaire."=".$this->getVal($this->clePrimaire)
123 );
124 if ($this->f->isDatabaseError($res, true)) {
125 // Appel de la methode de recuperation des erreurs
126 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
127 $this->correct = false;
128 // Termine le traitement
129 return $this->end_treatment(__METHOD__, false);
130 } else {
131 $this->addToMessage(_("Mise a jour effectue avec succes"));
132 return $this->end_treatment(__METHOD__, true);
133 }
134
135 } else {
136 $this->addToMessage(_("Element deja marque comme lu"));
137 }
138
139 // Termine le traitement
140 return $this->end_treatment(__METHOD__, false);
141 }
142
143 /**
144 * CONDITION - is_ajoutable.
145 *
146 * Condition pour pouvoir ajouter
147 *
148 * @return boolean
149 */
150 function is_ajoutable() {
151 // Test du bypass
152 if ($this->f->isAccredited("dossier_message_ajouter_bypass")) {
153 return true;
154 }
155 // Test des autres conditions
156 return $this->is_ajoutable_or_modifiable_or_supprimable();
157 }
158
159 /**
160 * CONDITION - is_modifiable.
161 *
162 * Condition pour afficher le bouton modifier
163 *
164 * @return boolean
165 */
166 function is_modifiable() {
167 // Test du bypass
168 if ($this->f->isAccredited("dossier_message_modifier_bypass")) {
169 return true;
170 }
171 // Test des autres conditions
172 return $this->is_ajoutable_or_modifiable_or_supprimable();
173 }
174
175 /**
176 * CONDITION - is_supprimable.
177 *
178 * Condition pour afficher le bouton supprimer
179 * @return boolean
180 */
181 function is_supprimable() {
182 // Test du bypass
183 if ($this->f->isAccredited("dossier_message_supprimer_bypass")) {
184 return true;
185 }
186 // Test des autres conditions
187 return $this->is_ajoutable_or_modifiable_or_supprimable();
188 }
189
190 /**
191 * Conditions pour afficher les boutons modifier et supprimer
192 *
193 * @return boolean
194 */
195 function is_ajoutable_or_modifiable_or_supprimable() {
196 //
197 $dossier = ($this->getParameter("maj")==0)?$this->getParameter("idxformulaire"):$this->getVal("dossier");
198 /**
199 * Tester si le dossier est cloturé , de la meme division, instructeur, admin (?)
200 */
201 if($this->f->isUserInstructeur()
202 && isset($this->f->om_utilisateur["division"])
203 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()){
204 return false;
205 }
206 //
207 if ( $this->f->isUserInstructeur() && $this->f->getStatutDossier($dossier) == "cloture" ){
208 return false;
209 }
210 return true;
211 }
212
213 /**
214 * Cette variable permet de stocker le résultat de la méthode
215 * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
216 * ces appels.
217 * @var string Code de la division du dossier en cours
218 */
219 var $_division_from_dossier = NULL;
220
221 /**
222 * Cette méthode permet de récupérer le code de division correspondant
223 * au dossier sur lequel on se trouve.
224 *
225 * @return string Code de la division du dossier en cours
226 */
227 function getDivisionFromDossier() {
228
229 // Cette méthode peut être appelée plusieurs fois lors d'une requête.
230 // Pour éviter de refaire le traitement de recherche de la division
231 // alors on vérifie si nous ne l'avons pas déjà calculé.
232 if ($this->_division_from_dossier != NULL) {
233 // Logger
234 $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
235 // On retourne la valeur déjà calculée
236 return $this->_division_from_dossier;
237 }
238
239 // Par défaut, on définit la valeur du dossier à NULL
240 $dossier = NULL;
241 // Test sur le mode et le contexte du formulaire
242 if ($this->getParameter("maj") == 0
243 && ($this->getParameter("retourformulaire") == "dossier"
244 || $this->getParameter("retourformulaire") == "dossier_instruction"
245 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
246 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
247 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
248 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
249 // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
250 // n'existe pas en base de données) ET que nous nous trouvons
251 // dans le contexte d'un dossier d'instruction alors on récupère
252 // le numéro de dossier depuis le paramètre 'idxformulaire'
253 $dossier = $this->getParameter("idxformulaire");
254 } else {
255 // Sinon on récupère le numéro de dossier dans le champs dossier de
256 // l'enregistrement (en base de données)
257 $dossier = $this->getVal("dossier");
258 }
259
260 // On appelle la méthode de la classe utils qui renvoi le code de la
261 // division d'un dossier, on la stocke pour ne pas refaire le calcul au
262 // prochain appel de cette méthode
263 $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
264 // Logger
265 $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
266 // On retourne la valeur retournée
267 return $this->_division_from_dossier;
268
269 }
270
271 // }}}
272
273 function setType(&$form,$maj) {
274 //type
275 parent::setType($form, $maj);
276
277 // seulement la modification du champ lu est possible en modification
278 if ($maj==1){ //modifier
279 $form->setType('dossier','hiddenstatic');
280 $form->setType('type','hiddenstatic');
281 $form->setType('emetteur','hiddenstatic');
282 $form->setType('date_emission','hiddenstatic');
283 $form->setType('lu','checkbox');
284 $form->setType('contenu','textareahiddenstatic');
285 }// fin modifier
286 }
287
288
289 /**
290 * Utilise dans la recherche avance pour remplir le select par
291 * le type du message
292 */
293 function setSelect(&$form, $maj,&$db,$debug) {
294 if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
295 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
296 elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
297 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
298
299 // import depuis de la BD les types des messages disponibles pour
300 // le dossier
301 $this->init_select($form, $db, $maj, $debug, "type",
302 $sql_messages_type, null, false);
303 }
304 }// fin classe
305 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26