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 |
6404 |
// ACTION - 001 - ajouter |
28 |
|
|
// Désactivation de l'action ajouter |
29 |
|
|
$this->class_actions[0] = null; |
30 |
|
|
|
31 |
jymadier |
4945 |
// ACTION - 001 - modifier |
32 |
|
|
// Désactivation de l'action modifier |
33 |
|
|
$this->class_actions[1] = null; |
34 |
|
|
|
35 |
|
|
// ACTION - 002 - supprimer |
36 |
|
|
// Désactivation de l'action supprimer |
37 |
|
|
$this->class_actions[2] = null; |
38 |
|
|
|
39 |
|
|
// ACTION - 003 - consulter |
40 |
|
|
// Désactivation de l'action consulter |
41 |
|
|
$this->class_actions[3] = null; |
42 |
|
|
|
43 |
jymadier |
4940 |
// ACTION - 4 - view_tab |
44 |
|
|
// Interface spécifique des l'onglet des dossiers liés |
45 |
|
|
$this->class_actions[4] = array( |
46 |
|
|
"identifier" => "view_tab", |
47 |
|
|
"view" => "view_tab", |
48 |
|
|
"permission_suffix" => "tab", |
49 |
jymadier |
6404 |
"condition" => "can_user_access_dossier_all_context", |
50 |
jymadier |
4940 |
); |
51 |
jymadier |
5017 |
|
52 |
|
|
// ACTION - 5 - view_add |
53 |
|
|
// Interface spécifique des l'onglet des dossiers liés |
54 |
|
|
$this->class_actions[5] = array( |
55 |
|
|
"identifier" => "view_ajouter_liaison", |
56 |
|
|
"method" => "ajouter_liaison", |
57 |
|
|
"permission_suffix" => "gestion_defaut", |
58 |
|
|
"crud" => "create", |
59 |
jymadier |
6404 |
"condition" => "can_user_access_dossier_all_context", |
60 |
jymadier |
5017 |
); |
61 |
jymadier |
4940 |
} |
62 |
|
|
|
63 |
nmeucci |
6289 |
/** |
64 |
|
|
* CONDITION - is_ajoutable. |
65 |
|
|
* |
66 |
|
|
* Condition pour pouvoir ajouter |
67 |
|
|
* |
68 |
|
|
* @return boolean |
69 |
|
|
*/ |
70 |
|
|
function is_ajoutable() { |
71 |
|
|
// Si bypass |
72 |
|
|
if ($this->f->can_bypass(get_class($this), "gestion_defaut")) { |
73 |
|
|
return true; |
74 |
|
|
} |
75 |
|
|
// Teste si le dossier n'est pas cloturé |
76 |
|
|
// et si l'instructeur est de la même division |
77 |
|
|
if ($this->is_dossier_instruction_not_closed() === true |
78 |
|
|
&& $this->is_instructeur_from_division_dossier() === true) { |
79 |
|
|
return true; |
80 |
|
|
} |
81 |
jymadier |
5017 |
|
82 |
nmeucci |
6289 |
return false; |
83 |
|
|
} |
84 |
|
|
|
85 |
jymadier |
4940 |
/** |
86 |
|
|
* VIEW - view_tab |
87 |
|
|
* |
88 |
|
|
* Cette vue permet d'afficher l'interface spécifique du tableau |
89 |
jymadier |
5017 |
* des dossiers liés. |
90 |
jymadier |
4940 |
* |
91 |
|
|
* @return void |
92 |
|
|
*/ |
93 |
|
|
function view_tab() { |
94 |
|
|
|
95 |
|
|
// Vérification de l'accessibilité sur l'élément |
96 |
|
|
$this->checkAccessibility(); |
97 |
|
|
|
98 |
nmeucci |
6054 |
// Si le paramètre 'idxformulaire' n'est pas vide |
99 |
|
|
// (idxformulaire est la valeur de la clé primaire du DI) |
100 |
jymadier |
4941 |
if ($this->f->get_submitted_get_value('idxformulaire') !== null and $this->f->get_submitted_get_value('idxformulaire') != '') { |
101 |
nmeucci |
4942 |
|
102 |
jymadier |
4940 |
// Initialisation des variables |
103 |
jymadier |
4941 |
$idx = $this->f->get_submitted_get_value('idxformulaire'); |
104 |
jymadier |
4940 |
$retourformulaire = ($this->f->get_submitted_get_value('retourformulaire') !== null) ? $this->f->get_submitted_get_value('retourformulaire') : ""; |
105 |
jymadier |
6449 |
$obj = ($this->f->get_submitted_get_value('obj') !== null) ? $this->f->get_submitted_get_value('obj') : ""; |
106 |
|
|
|
107 |
nmeucci |
6082 |
if ($retourformulaire == "") { |
108 |
|
|
// Valeur par défaut de $retourformulaire |
109 |
|
|
$retourformulaire = 'dossier_instruction'; |
110 |
|
|
} |
111 |
nmeucci |
4942 |
|
112 |
nmeucci |
6054 |
// Vérification de la visibilité du DA |
113 |
|
|
$da = $this->get_inst_dossier_instruction($idx); |
114 |
|
|
|
115 |
nmeucci |
5063 |
echo "<div id=\"sousform-href\"></div>"; |
116 |
jymadier |
6449 |
echo "<div id=\"sousform-" . $obj . "\">"; |
117 |
nmeucci |
5063 |
echo "<div class=\"soustab-message\"></div>"; |
118 |
|
|
echo "<div class=\"soustab-container\">"; |
119 |
nmeucci |
4942 |
|
120 |
jymadier |
4940 |
// Affichage du tableau des dossiers d'autorisation |
121 |
nmeucci |
6054 |
if ($da->is_dossier_autorisation_visible() === true) { |
122 |
nhaye |
6378 |
$link_tab_dossier_autorisation = '../scr/soustab.php?obj=dossier_autorisation&idxformulaire='.$idx.'&retour=tab&retourformulaire='.$retourformulaire; |
123 |
nmeucci |
6054 |
printf('<div id="sousform-dossier_autorisation"></div> |
124 |
|
|
<script type="text/javascript" > |
125 |
|
|
ajaxIt(\'dossier_autorisation\', \'%1$s\'); |
126 |
|
|
</script> |
127 |
|
|
', $link_tab_dossier_autorisation); |
128 |
|
|
} |
129 |
nmeucci |
4942 |
|
130 |
|
|
// Affichage du tableau des dossiers d'instruction |
131 |
jymadier |
6449 |
$link_tab_dossier_lies = '../scr/soustab.php?obj=dossier_lies&idxformulaire='.$idx.'&context=' . $obj . '&retour=tab&retourformulaire='.$retourformulaire; |
132 |
nmeucci |
5123 |
printf('<div id="tab_dossier_lies_href" data-href="%1$s"></div><div id="sousform-dossier_lies"></div> |
133 |
nmeucci |
5063 |
<script type="text/javascript" > |
134 |
nmeucci |
5070 |
ajaxIt(\'dossier_lies\', \'%1$s\'); |
135 |
nmeucci |
5063 |
</script> |
136 |
nmeucci |
5070 |
', $link_tab_dossier_lies); |
137 |
jymadier |
4940 |
|
138 |
nmeucci |
4942 |
// Affichage du tableau des dossiers d'autorisation liés géographiquement |
139 |
nhaye |
6378 |
$link_tab_dossier_lies_geographiquement = '../scr/soustab.php?obj=dossier_lies_geographiquement&idxformulaire='.$idx.'&retour=tab&retourformulaire='.$retourformulaire; |
140 |
nmeucci |
5123 |
printf('<div id="sousform-dossier_lies_geographiquement"></div> |
141 |
nmeucci |
5063 |
<script type="text/javascript" > |
142 |
nmeucci |
5070 |
ajaxIt(\'dossier_lies_geographiquement\', \'%1$s\'); |
143 |
nmeucci |
5063 |
</script> |
144 |
nmeucci |
5070 |
', $link_tab_dossier_lies_geographiquement); |
145 |
nmeucci |
4942 |
|
146 |
|
|
echo '</div></div>'; |
147 |
|
|
} |
148 |
jymadier |
4940 |
} |
149 |
|
|
|
150 |
jymadier |
5017 |
|
151 |
|
|
/** |
152 |
|
|
* VIEW - ajouter_liaison |
153 |
|
|
* |
154 |
|
|
* Cette vue permet de traiter les contraintes postées et d'afficher |
155 |
|
|
* le résultat de ce traitement en AJAX. |
156 |
|
|
* |
157 |
|
|
* @return void |
158 |
|
|
*/ |
159 |
|
|
function ajouter_liaison($val = array()) { |
160 |
jymadier |
6449 |
$this->checkAccessibility(); |
161 |
jymadier |
5017 |
// Begin |
162 |
|
|
$this->begin_treatment(__METHOD__); |
163 |
|
|
// Mutateur de valF |
164 |
|
|
$this->setValF($val); |
165 |
|
|
// Mutateur de valF specifique a l'ajout |
166 |
|
|
$this->setValFAjout($val); |
167 |
|
|
// Verification de la validite des donnees |
168 |
|
|
$this->verifier($val, $this->f->db, null); |
169 |
|
|
// Verification specifique au MODE 'insert' de la validite des donnees |
170 |
|
|
$this->verifierAjout($val, $this->f->db); |
171 |
|
|
// Si les verifications precedentes sont correctes, on procede a |
172 |
|
|
// l'ajout, sinon on ne fait rien et on affiche un message d'echec |
173 |
|
|
if ($this->correct) { |
174 |
|
|
// Appel au mutateur pour le calcul de la cle primaire (si la cle |
175 |
|
|
// est automatique) specifique au MODE 'insert' |
176 |
|
|
$this->setId($this->f->db); |
177 |
|
|
// Execution du trigger 'before' specifique au MODE 'insert' |
178 |
|
|
// Le premier parametre est vide car en MODE 'insert' |
179 |
|
|
// l'enregistrement n'existe pas encore donc il n'a pas |
180 |
|
|
// d'identifiant |
181 |
|
|
if($this->triggerajouter("", $this->f->db, $val, null) === false) { |
182 |
|
|
$this->correct = false; |
183 |
|
|
$this->addToLog(__METHOD__."(): ERROR", DEBUG_MODE); |
184 |
|
|
// Return |
185 |
|
|
return $this->end_treatment(__METHOD__, false); |
186 |
|
|
} |
187 |
|
|
// Execution de la requete d'insertion des donnees de l'attribut |
188 |
|
|
// valF de l'objet dans l'attribut table de l'objet |
189 |
|
|
$res = $this->f->db->autoExecute(DB_PREFIXE.$this->table, $this->valF, DB_AUTOQUERY_INSERT); |
190 |
|
|
// Logger |
191 |
|
|
$this->addToLog(__METHOD__."(): db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($this->valF, true).", DB_AUTOQUERY_INSERT);", VERBOSE_MODE); |
192 |
|
|
// Si une erreur survient |
193 |
|
|
if (database::isError($res, true)) { |
194 |
|
|
// Appel de la methode de recuperation des erreurs |
195 |
|
|
$this->erreur_db($res->getDebugInfo(), $res->getMessage(), ''); |
196 |
|
|
$this->correct = false; |
197 |
|
|
// Return |
198 |
|
|
return $this->end_treatment(__METHOD__, false); |
199 |
|
|
} else { |
200 |
|
|
// |
201 |
|
|
$main_res_affected_rows = $this->f->db->affectedRows(); |
202 |
|
|
// Log |
203 |
|
|
$this->addToLog(__METHOD__."(): "._("Requete executee"), VERBOSE_MODE); |
204 |
|
|
// Execution du trigger 'after' specifique au MODE 'insert' |
205 |
|
|
// Le premier parametre est vide car en MODE 'insert' |
206 |
|
|
// l'enregistrement n'existe pas encore donc il n'a pas |
207 |
|
|
// d'identifiant |
208 |
|
|
if($this->triggerajouterapres($this->valF[$this->clePrimaire], $this->f->db, $val, null) === false) { |
209 |
|
|
$this->correct = false; |
210 |
|
|
$this->addToLog(__METHOD__."(): ERROR", DEBUG_MODE); |
211 |
|
|
// Return |
212 |
|
|
return $this->end_treatment(__METHOD__, false); |
213 |
|
|
} |
214 |
nmeucci |
6050 |
$messageAddSuccess = _("Le dossier %s a été lié."); |
215 |
nmeucci |
5141 |
$this->addToMessage(sprintf($messageAddSuccess, $this->valF['dossier_cible'])); |
216 |
jymadier |
5017 |
|
217 |
|
|
// Template du lien vers le DI |
218 |
nmeucci |
5839 |
$template_link_di = "<a id='link_dossier_instruction_lie' title=\"%s\" class='lien' href='../scr/form.php?obj=dossier_instruction&action=777&idx=%s'> |
219 |
nmeucci |
5141 |
<span class='om-icon om-icon-16 om-icon-fix consult-16'></span>%s</a>"; |
220 |
jymadier |
5017 |
|
221 |
|
|
// Lien vers le DI |
222 |
nmeucci |
5141 |
$link_di = sprintf( |
223 |
|
|
$template_link_di, |
224 |
|
|
_("Acceder au dossier d'instruction"), |
225 |
|
|
$this->valF['dossier_cible'], |
226 |
|
|
_("Acceder au dossier d'instruction") |
227 |
|
|
); |
228 |
jymadier |
5017 |
|
229 |
|
|
// Message affiché à l'utilisateur |
230 |
nmeucci |
5141 |
$this->addToMessage('<br/>'.$link_di); |
231 |
jymadier |
5017 |
} |
232 |
|
|
} else { |
233 |
|
|
// Return |
234 |
|
|
return $this->end_treatment(__METHOD__, false); |
235 |
|
|
} |
236 |
|
|
// Return |
237 |
|
|
return $this->end_treatment(__METHOD__, true); |
238 |
|
|
} |
239 |
|
|
|
240 |
|
|
|
241 |
jymadier |
4945 |
function setType(&$form,$maj) { |
242 |
|
|
parent::setType($form,$maj); |
243 |
|
|
|
244 |
|
|
//type |
245 |
jymadier |
5017 |
$form->setType('lien_dossier_dossier','hidden'); |
246 |
jymadier |
4945 |
$form->setType('dossier_src','hidden'); |
247 |
jymadier |
5017 |
$form->setType('dossier_cible', 'text'); |
248 |
jymadier |
4945 |
$form->setType('type_lien','hidden'); |
249 |
|
|
} |
250 |
|
|
|
251 |
nmeucci |
5227 |
function setLib(&$form,$maj) { |
252 |
|
|
parent::setLib($form,$maj); |
253 |
|
|
$form->setLib('dossier_cible', _("dossier cible")); |
254 |
|
|
} |
255 |
jymadier |
5017 |
|
256 |
nmeucci |
5227 |
|
257 |
jymadier |
5017 |
function setLayout(&$form, $maj) { |
258 |
|
|
|
259 |
|
|
|
260 |
|
|
// Col1 : Fieldset "Dossier d'Instruction" |
261 |
|
|
// $form->setBloc('dossier_cible', 'D', '', 'col_9'); |
262 |
|
|
|
263 |
|
|
$form->setFieldset('dossier_cible', 'D', _("Lier un Dossier")); |
264 |
|
|
$form->setFieldset('dossier_cible', 'F'); |
265 |
|
|
|
266 |
|
|
|
267 |
|
|
// $form->setBloc('dossier_cible', 'F'); |
268 |
|
|
|
269 |
|
|
} |
270 |
|
|
|
271 |
|
|
|
272 |
|
|
function setvalF($val) { |
273 |
|
|
// |
274 |
|
|
parent::setValF($val); |
275 |
|
|
// |
276 |
|
|
if ($this->getParameter('maj') == 5) { |
277 |
|
|
// |
278 |
|
|
$dossier = $this->getParameter("idxformulaire"); |
279 |
|
|
// |
280 |
|
|
$this->valF["dossier_src"] = $dossier; |
281 |
|
|
$this->valF["dossier_cible"] = strtoupper(str_replace(" ", "", $this->f->db->escapesimple($this->valF["dossier_cible"]))); |
282 |
|
|
$this->valF["type_lien"] = "manuel"; |
283 |
|
|
} |
284 |
|
|
} |
285 |
|
|
|
286 |
|
|
function retoursousformulaire($idxformulaire, $retourformulaire, $val, |
287 |
|
|
$objsf, $premiersf, $tricolsf, $validation, |
288 |
|
|
$idx, $maj, $retour) { |
289 |
|
|
|
290 |
|
|
// Si le formulaire parent est dossier |
291 |
|
|
if($retourformulaire === "dossier_instruction") { |
292 |
|
|
// |
293 |
|
|
echo "\n<a class=\"retour\" "; |
294 |
|
|
echo "href=\"#\" "; |
295 |
|
|
|
296 |
jymadier |
6449 |
echo "onclick=\"ajaxIt('" . $objsf ."', '"; |
297 |
nmeucci |
5067 |
echo "../scr/sousform.php" |
298 |
jymadier |
6449 |
."?obj=" . $objsf |
299 |
jymadier |
5017 |
."&action=4" |
300 |
nmeucci |
5067 |
."&idx=0" |
301 |
jymadier |
5017 |
."&retourformulaire=$retourformulaire" |
302 |
|
|
."&idxformulaire=$idxformulaire');\""; |
303 |
|
|
echo "\" "; |
304 |
|
|
echo ">"; |
305 |
|
|
// |
306 |
|
|
echo _("Retour"); |
307 |
|
|
// |
308 |
|
|
echo "</a>\n"; |
309 |
|
|
|
310 |
|
|
} else { |
311 |
|
|
// |
312 |
|
|
parent::retoursousformulaire($idxformulaire, $retourformulaire, $val, |
313 |
|
|
$objsf, $premiersf, $tricolsf, $validation, |
314 |
|
|
$idx, $maj, $retour); |
315 |
|
|
} |
316 |
|
|
} |
317 |
|
|
|
318 |
|
|
|
319 |
|
|
/** |
320 |
|
|
* Surcharge de la méthode de vérification |
321 |
|
|
**/ |
322 |
|
|
function verifier($val, &$db, $DEBUG) { |
323 |
nmeucci |
5141 |
// Vérification des champs obligatoires |
324 |
jymadier |
5017 |
$this->checkRequired(); |
325 |
|
|
if ($this->correct === false) { |
326 |
|
|
return false; |
327 |
|
|
} |
328 |
nmeucci |
5141 |
|
329 |
|
|
// Un DI ne peut pas s'auto-lier |
330 |
jymadier |
5017 |
$id_dossier_cible = str_replace(" ", "", $this->valF['dossier_cible']); |
331 |
nmeucci |
5141 |
if ($id_dossier_cible == $this->getParameter("idxformulaire")) { |
332 |
jymadier |
5017 |
$this->correct = false; |
333 |
nhaye |
6395 |
$this->addToMessage(_("Vous ne pouvez pas lier un dossier à lui-même. Saisissez un nouveau numéro puis recommencez.")); |
334 |
jymadier |
5017 |
return false; |
335 |
|
|
} |
336 |
|
|
|
337 |
nmeucci |
5141 |
// Vérification de l'existence du DI cible (avec gestion multi) |
338 |
|
|
$where_collectivite = ""; |
339 |
|
|
if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) { |
340 |
|
|
$where_collectivite = " |
341 |
|
|
AND dossier.om_collectivite=".$_SESSION['collectivite']." |
342 |
jymadier |
5017 |
"; |
343 |
nmeucci |
5141 |
} |
344 |
|
|
$sql = " |
345 |
|
|
SELECT |
346 |
|
|
count(*) |
347 |
|
|
FROM |
348 |
|
|
".DB_PREFIXE."dossier |
349 |
|
|
WHERE |
350 |
|
|
dossier.dossier = '".strtoupper($id_dossier_cible)."' |
351 |
|
|
".$where_collectivite; |
352 |
|
|
$count = $this->f->db->getOne($sql); |
353 |
|
|
$this->f->addToLog(__METHOD__."(): db->getOne(\"".$sql."\");", VERBOSE_MODE); |
354 |
|
|
$this->f->isDatabaseError($count); |
355 |
|
|
if ($count === '0') { |
356 |
|
|
$this->correct = false; |
357 |
nhaye |
6406 |
$this->addToMessage( |
358 |
|
|
sprintf( |
359 |
|
|
_("Il n'existe aucun dossier correspondant au numéro %s. Saisissez un nouveau numéro puis recommencez."), |
360 |
|
|
$id_dossier_cible |
361 |
|
|
) |
362 |
|
|
); |
363 |
nmeucci |
6051 |
$this->form->setVal('dossier_cible', ''); |
364 |
nmeucci |
5141 |
return false; |
365 |
|
|
} |
366 |
jymadier |
5017 |
|
367 |
jymadier |
6404 |
require_once "../obj/dossier_instruction.class.php"; |
368 |
|
|
$inst_dossier = new dossier_instruction($id_dossier_cible, $f->db, DEBUG); |
369 |
|
|
|
370 |
|
|
// Contrôle d'accès au groupe et aux dossiers confidentiels du groupe du dossier cible |
371 |
|
|
if ($inst_dossier->can_user_access_dossier() === false) { |
372 |
|
|
$this->correct = false; |
373 |
nhaye |
6406 |
$this->addToMessage( |
374 |
|
|
sprintf( |
375 |
|
|
_("Il n'existe aucun dossier correspondant au numéro %s. Saisissez un nouveau numéro puis recommencez."), |
376 |
|
|
$id_dossier_cible |
377 |
|
|
) |
378 |
|
|
); |
379 |
jymadier |
6404 |
$this->form->setVal('dossier_cible', ''); |
380 |
|
|
return false; |
381 |
|
|
} |
382 |
|
|
|
383 |
nmeucci |
5141 |
// Vérification de l'existence d'un lien |
384 |
|
|
$type_link = $this->get_type_link($this->valF['dossier_src'], $this->valF['dossier_cible']); |
385 |
|
|
if ($type_link !== null) { |
386 |
|
|
switch ($type_link) { |
387 |
|
|
case 'manuel': |
388 |
|
|
$message_deja_lie = _("Le dossier %s est déjà lié au dossier courant."); |
389 |
|
|
break; |
390 |
|
|
case 'auto_recours': |
391 |
|
|
$message_deja_lie = _("Le dossier %s est déjà lié au dossier courant (lien automatique)."); |
392 |
|
|
break; |
393 |
|
|
case 'lien_par_da': |
394 |
|
|
$message_deja_lie = _("Le dossier %s est déjà lié au dossier courant (même dossier d'autorisation)."); |
395 |
|
|
break; |
396 |
|
|
default: |
397 |
|
|
$message_deja_lie = _("L'existence d'une liaison entre le dossier courant et le %s n'a pas pu être vérifiée."); |
398 |
|
|
$message_deja_lie .= '<br/>'; |
399 |
|
|
$message_deja_lie .= _("Veuillez contacter votre administrateur."); |
400 |
|
|
break; |
401 |
jymadier |
5017 |
} |
402 |
nmeucci |
5141 |
$this->addToMessage(sprintf($message_deja_lie, $id_dossier_cible)); |
403 |
|
|
$this->correct = false; |
404 |
|
|
return false; |
405 |
jymadier |
5017 |
} |
406 |
|
|
} |
407 |
|
|
|
408 |
nmeucci |
5141 |
/** |
409 |
|
|
* Récupère, s'il existe, le type du lien entre deux DI. |
410 |
|
|
* |
411 |
|
|
* Le lien peut être implicite (les DI ont le même DA) ou créé : |
412 |
|
|
* - manuellement (lors de l'ajout par l'utilisateur) ; |
413 |
|
|
* - automatiquement (lors de la création d'un DI contentieux). |
414 |
|
|
* |
415 |
|
|
* S'il s'agit d'une liaison implicite par le DA, |
416 |
|
|
* la notion de DI cible / source ne s'applique pas. |
417 |
|
|
* |
418 |
|
|
* Sinon elle s'applique et le lien est directionnel : |
419 |
|
|
* inverser les DI cible et source est susceptible de modifier le résultat. |
420 |
|
|
* |
421 |
|
|
* @param string $dossier_src ID du DI source |
422 |
|
|
* @param string $dossier_cible ID du DI cible |
423 |
|
|
* @return mixed NULL si aucune liaison sinon type du lien (STRING) |
424 |
|
|
*/ |
425 |
|
|
function get_type_link($dossier_src, $dossier_cible) { |
426 |
jymadier |
5017 |
|
427 |
nmeucci |
5141 |
// On vérifie s'il y a une entrée dans la table de liaison pour le sens |
428 |
|
|
// indiqué en paramètres : si c'est le cas on retourne le type du lien trouvé. |
429 |
jymadier |
5017 |
$sql = " |
430 |
|
|
SELECT |
431 |
|
|
type_lien |
432 |
|
|
FROM |
433 |
|
|
".DB_PREFIXE."lien_dossier_dossier |
434 |
|
|
WHERE |
435 |
|
|
dossier_src = '".strtoupper($dossier_src)."' |
436 |
|
|
AND dossier_cible = '".strtoupper($dossier_cible)."' |
437 |
|
|
"; |
438 |
|
|
$type_lien = $this->f->db->getOne($sql); |
439 |
|
|
$this->f->addToLog(__METHOD__."(): db->getOne(\"".$sql."\");", VERBOSE_MODE); |
440 |
nmeucci |
5141 |
$this->f->isDatabaseError($type_lien); |
441 |
jymadier |
5017 |
if ($type_lien !== null AND $type_lien !== '') { |
442 |
|
|
return $type_lien; |
443 |
|
|
} |
444 |
nmeucci |
5141 |
|
445 |
|
|
// Sinon on vérifie la présence d'une éventuelle liaison implicite par le DA. |
446 |
|
|
$sql = " |
447 |
|
|
SELECT |
448 |
|
|
count(*) |
449 |
|
|
FROM |
450 |
|
|
".DB_PREFIXE."dossier |
451 |
|
|
WHERE |
452 |
|
|
dossier = '".strtoupper($dossier_cible)."' |
453 |
|
|
AND dossier_autorisation = (SELECT dossier_autorisation |
454 |
|
|
FROM ".DB_PREFIXE."dossier |
455 |
|
|
WHERE dossier = '".strtoupper($dossier_src)."') |
456 |
|
|
"; |
457 |
|
|
$res = $this->f->db->getOne($sql); |
458 |
|
|
$this->f->addToLog(__METHOD__."(): db->getOne(\"".$sql."\");", VERBOSE_MODE); |
459 |
|
|
$this->f->isDatabaseError($res); |
460 |
|
|
if ($res === '1') { |
461 |
|
|
return 'lien_par_da'; |
462 |
|
|
} |
463 |
|
|
|
464 |
|
|
// Sinon aucun lien n'a été trouvé. |
465 |
|
|
return null; |
466 |
jymadier |
5017 |
} |
467 |
nmeucci |
6054 |
|
468 |
|
|
/** |
469 |
|
|
* Récupère l'instance du dossier d'instruction. |
470 |
|
|
* |
471 |
|
|
* @param string $dossier_instruction Identifiant du dossier d'instruction. |
472 |
|
|
* |
473 |
|
|
* @return object |
474 |
|
|
*/ |
475 |
|
|
function get_inst_dossier_instruction($dossier_instruction = null) { |
476 |
|
|
// |
477 |
|
|
return $this->get_inst_common("dossier_instruction", $dossier_instruction); |
478 |
|
|
} |
479 |
jymadier |
6404 |
|
480 |
|
|
/* |
481 |
|
|
* CONDITION - can_user_access_dossier_all_context |
482 |
|
|
* |
483 |
|
|
* Vérifie que l'utilisateur a bien accès au dossier d'instruction. |
484 |
|
|
* Cette méthode vérifie que l'utilisateur est lié au groupe du dossier, et si le |
485 |
|
|
* dossier est confidentiel qu'il a accès aux confidentiels de ce groupe. |
486 |
|
|
* |
487 |
|
|
*/ |
488 |
|
|
function can_user_access_dossier_all_context() { |
489 |
|
|
|
490 |
|
|
($this->f->get_submitted_get_value('idxformulaire') !== null ? $id_dossier = |
491 |
|
|
$this->f->get_submitted_get_value('idxformulaire') : $id_dossier = ""); |
492 |
|
|
// |
493 |
|
|
if ($id_dossier !== "") { |
494 |
|
|
require_once "../obj/dossier_instruction.class.php"; |
495 |
|
|
$dossier = new dossier_instruction($id_dossier, $f->db, DEBUG); |
496 |
|
|
// |
497 |
|
|
return $dossier->can_user_access_dossier(); |
498 |
|
|
} |
499 |
|
|
return false; |
500 |
|
|
} |
501 |
|
|
|
502 |
softime |
4927 |
} |
503 |
|
|
|
504 |
|
|
?> |