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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5070 - (hide annotations)
Thu Nov 10 14:31:56 2016 UTC (8 years, 2 months ago) by nmeucci
Original Path: branches/contentieux-dossiers-lies/obj/lien_dossier_dossier.class.php
File size: 14560 byte(s)
correction du comportement des sous-tableaux multiples

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26