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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3730 - (hide annotations)
Fri Mar 18 11:50:26 2016 UTC (8 years, 10 months ago) by mbroquet
File size: 11351 byte(s)
Actualisation du trunk
1 mbroquet 3730 <?php
2     //$Id: dossier_message.class.php 4685 2015-04-30 12:30:55Z nmeucci $
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