1 |
softime |
4927 |
<?php |
2 |
|
|
//$Id$ |
3 |
|
|
//gen openMairie le 10/10/2016 10:56 |
4 |
|
|
|
5 |
|
|
require_once "../gen/obj/lien_dossier_dossier.class.php"; |
6 |
|
|
|
7 |
|
|
class lien_dossier_dossier extends lien_dossier_dossier_gen { |
8 |
|
|
|
9 |
|
|
function __construct($id, &$dnu1 = null, $dnu2 = null) { |
10 |
|
|
$this->constructeur($id); |
11 |
|
|
} |
12 |
|
|
|
13 |
jymadier |
4940 |
/** |
14 |
|
|
* |
15 |
|
|
*/ |
16 |
|
|
var $activate_class_action = true; |
17 |
|
|
|
18 |
|
|
/** |
19 |
|
|
* Définition des actions disponibles sur la classe. |
20 |
|
|
* |
21 |
|
|
* @return void |
22 |
|
|
*/ |
23 |
|
|
function init_class_actions() { |
24 |
|
|
// |
25 |
|
|
parent::init_class_actions(); |
26 |
|
|
|
27 |
jymadier |
4945 |
// ACTION - 001 - modifier |
28 |
|
|
// Désactivation de l'action modifier |
29 |
|
|
$this->class_actions[1] = null; |
30 |
|
|
|
31 |
|
|
// ACTION - 002 - supprimer |
32 |
|
|
// Désactivation de l'action supprimer |
33 |
|
|
$this->class_actions[2] = null; |
34 |
|
|
|
35 |
|
|
// ACTION - 003 - consulter |
36 |
|
|
// Désactivation de l'action consulter |
37 |
|
|
$this->class_actions[3] = null; |
38 |
|
|
|
39 |
jymadier |
4940 |
// ACTION - 4 - view_tab |
40 |
|
|
// Interface spécifique des l'onglet des dossiers liés |
41 |
|
|
$this->class_actions[4] = array( |
42 |
|
|
"identifier" => "view_tab", |
43 |
|
|
"view" => "view_tab", |
44 |
|
|
"permission_suffix" => "tab", |
45 |
|
|
); |
46 |
jymadier |
5017 |
|
47 |
|
|
// ACTION - 5 - view_add |
48 |
|
|
// Interface spécifique des l'onglet des dossiers liés |
49 |
|
|
$this->class_actions[5] = array( |
50 |
|
|
"identifier" => "view_ajouter_liaison", |
51 |
|
|
"method" => "ajouter_liaison", |
52 |
|
|
"permission_suffix" => "gestion_defaut", |
53 |
|
|
"crud" => "create", |
54 |
|
|
); |
55 |
jymadier |
4940 |
} |
56 |
|
|
|
57 |
jymadier |
5017 |
|
58 |
jymadier |
4940 |
/** |
59 |
|
|
* VIEW - view_tab |
60 |
|
|
* |
61 |
|
|
* Cette vue permet d'afficher l'interface spécifique du tableau |
62 |
jymadier |
5017 |
* des dossiers liés. |
63 |
jymadier |
4940 |
* |
64 |
|
|
* @return void |
65 |
|
|
*/ |
66 |
|
|
function view_tab() { |
67 |
|
|
|
68 |
|
|
// Vérification de l'accessibilité sur l'élément |
69 |
|
|
$this->checkAccessibility(); |
70 |
|
|
|
71 |
|
|
// Si le paramètre 'idx' n'est pas vide |
72 |
jymadier |
4941 |
if ($this->f->get_submitted_get_value('idxformulaire') !== null and $this->f->get_submitted_get_value('idxformulaire') != '') { |
73 |
nmeucci |
4942 |
|
74 |
jymadier |
4940 |
// Initialisation des variables |
75 |
jymadier |
4941 |
$idx = $this->f->get_submitted_get_value('idxformulaire'); |
76 |
jymadier |
4940 |
$retourformulaire = ($this->f->get_submitted_get_value('retourformulaire') !== null) ? $this->f->get_submitted_get_value('retourformulaire') : ""; |
77 |
nmeucci |
4942 |
|
78 |
jymadier |
4940 |
// Si la paramètre retourformulaire est vide |
79 |
|
|
if ($retourformulaire == "") { |
80 |
|
|
// Valeur par défaut de $retourformulaire |
81 |
|
|
$retourformulaire = 'dossier_instruction'; |
82 |
|
|
} |
83 |
nmeucci |
5063 |
echo "<div id=\"sousform-href\"></div>"; |
84 |
|
|
echo "<div id=\"sousform-lien_dossier_dossier\">"; |
85 |
|
|
echo "<div class=\"soustab-message\"></div>"; |
86 |
|
|
echo "<div class=\"soustab-container\">"; |
87 |
nmeucci |
4942 |
|
88 |
jymadier |
4940 |
// Affichage du tableau des dossiers d'autorisation |
89 |
nmeucci |
5070 |
$link_tab_dossier_autorisation = '../scr/soustab.php?obj=dossier_autorisation&idxformulaire='.$idx.'&retour=tab&retourformulaire='.$retourformulaire; |
90 |
|
|
printf('<div id="sousform-dossier_autorisation" data_href="%1$s"></div> |
91 |
nmeucci |
5063 |
<script type="text/javascript" > |
92 |
nmeucci |
5070 |
ajaxIt(\'dossier_autorisation\', \'%1$s\'); |
93 |
nmeucci |
5063 |
</script> |
94 |
nmeucci |
5070 |
', $link_tab_dossier_autorisation); |
95 |
nmeucci |
4942 |
|
96 |
|
|
// Affichage du tableau des dossiers d'instruction |
97 |
nmeucci |
5070 |
$link_tab_dossier_lies = '../scr/soustab.php?obj=dossier_lies&idxformulaire='.$idx.'&retour=tab&retourformulaire='.$retourformulaire; |
98 |
|
|
printf('<div id="sousform-dossier_lies" data_href="%1$s"></div> |
99 |
nmeucci |
5063 |
<script type="text/javascript" > |
100 |
nmeucci |
5070 |
ajaxIt(\'dossier_lies\', \'%1$s\'); |
101 |
nmeucci |
5063 |
</script> |
102 |
nmeucci |
5070 |
', $link_tab_dossier_lies); |
103 |
jymadier |
4940 |
|
104 |
nmeucci |
4942 |
// Affichage du tableau des dossiers d'autorisation liés géographiquement |
105 |
nmeucci |
5070 |
$link_tab_dossier_lies_geographiquement = '../scr/soustab.php?obj=dossier_lies_geographiquement&idxformulaire='.$idx.'&retour=tab&retourformulaire='.$retourformulaire; |
106 |
|
|
printf('<div id="sousform-dossier_lies_geographiquement" data_href="%1$s"></div> |
107 |
nmeucci |
5063 |
<script type="text/javascript" > |
108 |
nmeucci |
5070 |
ajaxIt(\'dossier_lies_geographiquement\', \'%1$s\'); |
109 |
nmeucci |
5063 |
</script> |
110 |
nmeucci |
5070 |
', $link_tab_dossier_lies_geographiquement); |
111 |
nmeucci |
4942 |
|
112 |
|
|
echo '</div></div>'; |
113 |
|
|
} |
114 |
jymadier |
4940 |
} |
115 |
|
|
|
116 |
jymadier |
5017 |
|
117 |
|
|
/** |
118 |
|
|
* VIEW - ajouter_liaison |
119 |
|
|
* |
120 |
|
|
* Cette vue permet de traiter les contraintes postées et d'afficher |
121 |
|
|
* le résultat de ce traitement en AJAX. |
122 |
|
|
* |
123 |
|
|
* @return void |
124 |
|
|
*/ |
125 |
|
|
function ajouter_liaison($val = array()) { |
126 |
|
|
// Begin |
127 |
|
|
$this->begin_treatment(__METHOD__); |
128 |
|
|
// Mutateur de valF |
129 |
|
|
$this->setValF($val); |
130 |
|
|
// Mutateur de valF specifique a l'ajout |
131 |
|
|
$this->setValFAjout($val); |
132 |
|
|
// Verification de la validite des donnees |
133 |
|
|
$this->verifier($val, $this->f->db, null); |
134 |
|
|
// Verification specifique au MODE 'insert' de la validite des donnees |
135 |
|
|
$this->verifierAjout($val, $this->f->db); |
136 |
|
|
// Si les verifications precedentes sont correctes, on procede a |
137 |
|
|
// l'ajout, sinon on ne fait rien et on affiche un message d'echec |
138 |
|
|
if ($this->correct) { |
139 |
|
|
// Appel au mutateur pour le calcul de la cle primaire (si la cle |
140 |
|
|
// est automatique) specifique au MODE 'insert' |
141 |
|
|
$this->setId($this->f->db); |
142 |
|
|
// Execution du trigger 'before' specifique au MODE 'insert' |
143 |
|
|
// Le premier parametre est vide car en MODE 'insert' |
144 |
|
|
// l'enregistrement n'existe pas encore donc il n'a pas |
145 |
|
|
// d'identifiant |
146 |
|
|
if($this->triggerajouter("", $this->f->db, $val, null) === false) { |
147 |
|
|
$this->correct = false; |
148 |
|
|
$this->addToLog(__METHOD__."(): ERROR", DEBUG_MODE); |
149 |
|
|
// Return |
150 |
|
|
return $this->end_treatment(__METHOD__, false); |
151 |
|
|
} |
152 |
|
|
// Execution de la requete d'insertion des donnees de l'attribut |
153 |
|
|
// valF de l'objet dans l'attribut table de l'objet |
154 |
|
|
$res = $this->f->db->autoExecute(DB_PREFIXE.$this->table, $this->valF, DB_AUTOQUERY_INSERT); |
155 |
|
|
// Logger |
156 |
|
|
$this->addToLog(__METHOD__."(): db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($this->valF, true).", DB_AUTOQUERY_INSERT);", VERBOSE_MODE); |
157 |
|
|
// Si une erreur survient |
158 |
|
|
if (database::isError($res, true)) { |
159 |
|
|
// Appel de la methode de recuperation des erreurs |
160 |
|
|
$this->erreur_db($res->getDebugInfo(), $res->getMessage(), ''); |
161 |
|
|
$this->correct = false; |
162 |
|
|
// Return |
163 |
|
|
return $this->end_treatment(__METHOD__, false); |
164 |
|
|
} else { |
165 |
|
|
// |
166 |
|
|
$main_res_affected_rows = $this->f->db->affectedRows(); |
167 |
|
|
// Log |
168 |
|
|
$this->addToLog(__METHOD__."(): "._("Requete executee"), VERBOSE_MODE); |
169 |
|
|
// Execution du trigger 'after' specifique au MODE 'insert' |
170 |
|
|
// Le premier parametre est vide car en MODE 'insert' |
171 |
|
|
// l'enregistrement n'existe pas encore donc il n'a pas |
172 |
|
|
// d'identifiant |
173 |
|
|
if($this->triggerajouterapres($this->valF[$this->clePrimaire], $this->f->db, $val, null) === false) { |
174 |
|
|
$this->correct = false; |
175 |
|
|
$this->addToLog(__METHOD__."(): ERROR", DEBUG_MODE); |
176 |
|
|
// Return |
177 |
|
|
return $this->end_treatment(__METHOD__, false); |
178 |
|
|
} |
179 |
|
|
$messageAddSuccess = _("Le dossier %s a été lié avec succès."); |
180 |
|
|
|
181 |
|
|
// Template du lien vers le DI |
182 |
|
|
$template_link_di = "<a id='link_dossier_instruction_lie' title=\"%s\" class='lien' href='../scr/form.php?obj=dossier_instruction&action=3&idx=%s'>%s</a>"; |
183 |
|
|
|
184 |
|
|
// Lien vers le DI |
185 |
|
|
$link_di = sprintf($template_link_di, _("Acceder au dossier d'instruction"), $this->valF['dossier_cible'] , $this->valF['dossier_cible']); |
186 |
|
|
$messageAddSuccess = sprintf($messageAddSuccess, $link_di); |
187 |
|
|
|
188 |
|
|
// Message affiché à l'utilisateur |
189 |
|
|
$this->addToMessage($messageAddSuccess); |
190 |
|
|
|
191 |
|
|
} |
192 |
|
|
} else { |
193 |
|
|
// Return |
194 |
|
|
return $this->end_treatment(__METHOD__, false); |
195 |
|
|
} |
196 |
|
|
// Return |
197 |
|
|
return $this->end_treatment(__METHOD__, true); |
198 |
|
|
} |
199 |
|
|
|
200 |
|
|
|
201 |
jymadier |
4945 |
function setType(&$form,$maj) { |
202 |
|
|
parent::setType($form,$maj); |
203 |
|
|
|
204 |
|
|
//type |
205 |
jymadier |
5017 |
$form->setType('lien_dossier_dossier','hidden'); |
206 |
jymadier |
4945 |
$form->setType('dossier_src','hidden'); |
207 |
jymadier |
5017 |
$form->setType('dossier_cible', 'text'); |
208 |
jymadier |
4945 |
$form->setType('type_lien','hidden'); |
209 |
|
|
} |
210 |
|
|
|
211 |
jymadier |
5017 |
|
212 |
|
|
function setLayout(&$form, $maj) { |
213 |
|
|
|
214 |
|
|
|
215 |
|
|
// Col1 : Fieldset "Dossier d'Instruction" |
216 |
|
|
// $form->setBloc('dossier_cible', 'D', '', 'col_9'); |
217 |
|
|
|
218 |
|
|
$form->setFieldset('dossier_cible', 'D', _("Lier un Dossier")); |
219 |
|
|
$form->setFieldset('dossier_cible', 'F'); |
220 |
|
|
|
221 |
|
|
|
222 |
|
|
// $form->setBloc('dossier_cible', 'F'); |
223 |
|
|
|
224 |
|
|
} |
225 |
|
|
|
226 |
|
|
|
227 |
|
|
function setvalF($val) { |
228 |
|
|
// |
229 |
|
|
parent::setValF($val); |
230 |
|
|
// |
231 |
|
|
if ($this->getParameter('maj') == 5) { |
232 |
|
|
// |
233 |
|
|
$dossier = $this->getParameter("idxformulaire"); |
234 |
|
|
// |
235 |
|
|
$this->valF["dossier_src"] = $dossier; |
236 |
|
|
$this->valF["dossier_cible"] = strtoupper(str_replace(" ", "", $this->f->db->escapesimple($this->valF["dossier_cible"]))); |
237 |
|
|
$this->valF["type_lien"] = "manuel"; |
238 |
|
|
} |
239 |
|
|
} |
240 |
|
|
|
241 |
|
|
function retoursousformulaire($idxformulaire, $retourformulaire, $val, |
242 |
|
|
$objsf, $premiersf, $tricolsf, $validation, |
243 |
|
|
$idx, $maj, $retour) { |
244 |
|
|
|
245 |
|
|
// Si le formulaire parent est dossier |
246 |
|
|
if($retourformulaire === "dossier_instruction") { |
247 |
|
|
|
248 |
|
|
// |
249 |
|
|
echo "\n<a class=\"retour\" "; |
250 |
|
|
echo "href=\"#\" "; |
251 |
|
|
|
252 |
nmeucci |
5067 |
echo "onclick=\"ajaxIt('lien_dossier_dossier', '"; |
253 |
|
|
echo "../scr/sousform.php" |
254 |
jymadier |
5017 |
."?obj=lien_dossier_dossier" |
255 |
|
|
."&action=4" |
256 |
nmeucci |
5067 |
."&idx=0" |
257 |
jymadier |
5017 |
."&retourformulaire=$retourformulaire" |
258 |
|
|
."&idxformulaire=$idxformulaire');\""; |
259 |
|
|
echo "\" "; |
260 |
|
|
echo ">"; |
261 |
|
|
// |
262 |
|
|
echo _("Retour"); |
263 |
|
|
// |
264 |
|
|
echo "</a>\n"; |
265 |
|
|
|
266 |
|
|
} else { |
267 |
|
|
// |
268 |
|
|
parent::retoursousformulaire($idxformulaire, $retourformulaire, $val, |
269 |
|
|
$objsf, $premiersf, $tricolsf, $validation, |
270 |
|
|
$idx, $maj, $retour); |
271 |
|
|
} |
272 |
|
|
} |
273 |
|
|
|
274 |
|
|
|
275 |
|
|
/** |
276 |
|
|
* Surcharge de la méthode de vérification |
277 |
|
|
**/ |
278 |
|
|
function verifier($val, &$db, $DEBUG) { |
279 |
|
|
// Vérification qu'il n'y ait pas de champs vides |
280 |
|
|
$this->checkRequired(); |
281 |
|
|
if ($this->correct === false) { |
282 |
|
|
return false; |
283 |
|
|
} |
284 |
|
|
// Template du lien vers le DI |
285 |
|
|
$template_link_di = "<a id='link_dossier_instruction_lie' title=\"%s\" class='lien' href='../scr/form.php?obj=dossier_instruction&action=3&idx=%s'>%s</a>"; |
286 |
|
|
$id_dossier_cible = str_replace(" ", "", $this->valF['dossier_cible']); |
287 |
|
|
|
288 |
|
|
$dossier_exists = $this->is_dossier_already_linked($this->valF['dossier_src'], $this->valF['dossier_cible']); |
289 |
|
|
if ($dossier_exists !== false) { |
290 |
|
|
$message_deja_lie = ''; |
291 |
|
|
if ($dossier_exists == 'manuel') { |
292 |
|
|
$message_deja_lie = _("Le dossier %s est déjà lié au dossier courant."); |
293 |
|
|
} |
294 |
|
|
if ($dossier_exists == 'auto_recours') { |
295 |
|
|
$message_deja_lie = _("Le dossier %s est déjà lié au dossier courant (lien automatique)."); |
296 |
|
|
} |
297 |
|
|
// Lien vers le DI |
298 |
|
|
$link_di = sprintf($template_link_di, _("Acceder au dossier d'instruction"), $id_dossier_cible , $id_dossier_cible); |
299 |
|
|
$message_deja_lie = sprintf($message_deja_lie, $link_di); |
300 |
|
|
|
301 |
|
|
// Message affiché à l'utilisateur |
302 |
|
|
$this->addToMessage($message_deja_lie); |
303 |
|
|
$this->correct = false; |
304 |
|
|
return false; |
305 |
|
|
} |
306 |
|
|
|
307 |
|
|
// le nom du particulier est obligatoire |
308 |
|
|
if($this->valF['dossier_cible'] !== "") { |
309 |
|
|
if ($id_dossier_cible == $this->getParameter("idxformulaire")) { |
310 |
|
|
$this->correct = false; |
311 |
|
|
$this->addToMessage(_("Vous ne pouvez pas lier un dossier a lui-même. |
312 |
|
|
Saisissez un nouveau numéro puis recommencez.")); |
313 |
|
|
return false; |
314 |
|
|
} |
315 |
|
|
|
316 |
|
|
// WHERE - Filtre Collectivité |
317 |
|
|
$where_collectivite = ""; |
318 |
|
|
// Si collectivité utilisateur mono alors filtre sur celle-ci |
319 |
|
|
if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) { |
320 |
|
|
// |
321 |
|
|
$where_collectivite = " |
322 |
|
|
AND dossier.om_collectivite=".$_SESSION['collectivite']." |
323 |
|
|
"; |
324 |
|
|
} |
325 |
|
|
|
326 |
|
|
$sql = " |
327 |
|
|
SELECT |
328 |
|
|
count(*) |
329 |
|
|
FROM |
330 |
|
|
".DB_PREFIXE."dossier |
331 |
|
|
WHERE |
332 |
|
|
dossier.dossier = '".strtoupper($id_dossier_cible)."' |
333 |
|
|
"; |
334 |
|
|
$sql .= $where_collectivite; |
335 |
|
|
// Exécution de la requête |
336 |
|
|
$count = $this->f->db->getOne($sql); |
337 |
|
|
$this->f->addToLog(__METHOD__."(): db->getOne(\"".$sql."\");", VERBOSE_MODE); |
338 |
|
|
$this->f->isDatabaseError($sql); |
339 |
|
|
|
340 |
|
|
if ($count == 0) { |
341 |
|
|
$this->correct = false; |
342 |
|
|
$this->addToMessage(_("Il n'existe aucun dossier correspondant à ce numéro. |
343 |
|
|
Saisissez un nouveau numéro puis recommencez.")); |
344 |
|
|
return false; |
345 |
|
|
} |
346 |
|
|
|
347 |
|
|
} |
348 |
|
|
|
349 |
|
|
} |
350 |
|
|
|
351 |
|
|
function is_dossier_already_linked ($dossier_src, $dossier_cible) { |
352 |
|
|
|
353 |
|
|
$sql = " |
354 |
|
|
SELECT |
355 |
|
|
type_lien |
356 |
|
|
FROM |
357 |
|
|
".DB_PREFIXE."lien_dossier_dossier |
358 |
|
|
WHERE |
359 |
|
|
dossier_src = '".strtoupper($dossier_src)."' |
360 |
|
|
AND dossier_cible = '".strtoupper($dossier_cible)."' |
361 |
|
|
"; |
362 |
|
|
$type_lien = $this->f->db->getOne($sql); |
363 |
|
|
$this->f->addToLog(__METHOD__."(): db->getOne(\"".$sql."\");", VERBOSE_MODE); |
364 |
|
|
$this->f->isDatabaseError($sql); |
365 |
|
|
|
366 |
|
|
if ($type_lien !== null AND $type_lien !== '') { |
367 |
|
|
return $type_lien; |
368 |
|
|
} |
369 |
|
|
return false; |
370 |
|
|
} |
371 |
|
|
|
372 |
|
|
function unlink_dossier ($dossier_src, $dossier_cible) { |
373 |
|
|
} |
374 |
|
|
|
375 |
softime |
4927 |
} |
376 |
|
|
|
377 |
|
|
?> |