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