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 |
|
|
?> |