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

Diff of /trunk/obj/lot.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 5169 by softime, Thu Nov 17 18:17:08 2016 UTC revision 9245 by softime, Fri Apr 3 09:21:03 2020 UTC
# Line 1  Line 1 
1  <?php  <?php
2  //$Id: lot.class.php 4698 2015-04-30 16:17:47Z nmeucci $  /**
3  //gen openMairie le 08/11/2012 14:59   * DBFORM - 'lot' - Surcharge gen.
4     *
5     * @package openads
6     * @version SVN : $Id$
7     */
8    
9  require_once ("../gen/obj/lot.class.php");  require_once ("../gen/obj/lot.class.php");
10    
11  class lot extends lot_gen {  class lot extends lot_gen {
12    
13      var $donnees_techniques;      /**
14      var $idDT;       * Définition des actions disponibles sur la classe.
15      var $inst_dossier = null;       *
16      var $inst_dossier_autorisation = null;       * @return void
17      var $inst_dossier_autorisation_type_detaille = null;       */
18        function init_class_actions() {
19            //
20            parent::init_class_actions();
21    
22            // ACTION - 001 - ajouter
23            //        
24            $this->class_actions[0]["condition"] = array("is_ajoutable", "can_user_access_dossier_contexte_ajout");
25            
26            // ACTION - 001 - modifier
27            //
28            $this->class_actions[1]["condition"] = array("is_modifiable", "can_user_access_dossier_contexte_modification");
29            
30            // ACTION - 002 - supprimer
31            //
32            $this->class_actions[2]["condition"] = array("is_supprimable", "can_user_access_dossier_contexte_modification");
33    
34            // ACTION - 100 - donnees_techniques
35            // Affiche dans un overlay les données techniques
36            $this->class_actions[100] = array(
37                "identifier" => "donnees_techniques",
38                "portlet" => array(
39                    "type" => "action-self",
40                    "libelle" => _("Données techniques"),
41                    "order" => 100,
42                    "class" => "rediger-16",
43                ),
44                "view" => "view_donnees_techniques",
45                "permission_suffix" => "donnees_techniques_consulter",
46                "condition" => "can_user_access_dossier_contexte_modification",
47            );
48    
49            // ACTION - 100 - transferer_lot_nouveaux_demandeurs
50            // Transfert les lots de demandeur
51            $this->class_actions[110] = array(
52                "identifier" => "transferer_lot_nouveaux_demandeurs",
53                "portlet" => array(
54                    "type" => "action-direct",
55                    "libelle" => _("Transferer ce lot aux nouveaux demandeurs"),
56                    "order" => 110,
57                    "class" => "transferer-16",
58                ),
59                "permission_suffix" => "transferer",
60                "method" => "transferer_lot_demandeurs",
61                "condition" => "can_user_access_dossier_contexte_modification",
62            );
63        }
64    
65        /**
66         * TREATMENT - transferer_lot_demandeurs.
67         *
68         * Permet de permet de transferer les lots aux nouveau demandeur.
69         *
70         *
71         * @param array $val  valeurs soumises par le formulaire
72         * @param null  $dnu1 @deprecated Ancienne ressource de base de données.
73         * @param null  $dnu2 @deprecated Ancien marqueur de débogage.
74         *
75         * @return boolean
76         */
77        function transferer_lot_demandeurs($val = array(), &$dnu1 = null, $dnu2 = null) {
78    
79            // Cette méthode permet d'exécuter une routine en début des méthodes
80            // dites de TREATMENT.
81            $this->begin_treatment(__METHOD__);
82    
83    
84            /*Donnees*/
85            $idxDossier = $this->getVal("dossier");
86            //Si les liaisons n'existent pas déjà
87            $sql = "SELECT
88                        lot.lot as lot, lien_lot_demandeur.demandeur as demandeur
89                    FROM
90                        ".DB_PREFIXE."lien_dossier_demandeur
91                    INNER JOIN ".DB_PREFIXE."lien_lot_demandeur
92                        ON
93                            lien_lot_demandeur.demandeur = lien_dossier_demandeur.demandeur
94                    INNER JOIN ".DB_PREFIXE."lot
95                        ON
96                            lot.lot = ".$this->getVal($this->clePrimaire)."
97                    WHERE lien_dossier_demandeur.dossier = '$idxDossier'";
98    
99            $res = $this->f->db->query($sql);
100            $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
101            
102            // Si une erreur survient
103            if (database::isError($res, true)) {
104    
105                // Appel de la methode de recuperation des erreurs
106                $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
107                $res->free();
108                $this->correct = false;
109                // Termine le traitement
110                return $this->end_treatment(__METHOD__, false);
111            }
112            
113            // Récupère la liste des demandeurs associés aux lot et dossier d'instruction
114            $listDemandeurLie = array();
115            if ($res->numrows() > 0) {
116                
117                $i = 0;        
118                while($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
119                    
120                     $listDemandeurLie[$i++] = $row['demandeur'];
121                }
122            }
123            echo (" nbDossierDemandeurIJ: " . $res->numrows());
124            
125            $res->free();
126            // Récupère les demandeurs du dossier d'instruction
127            $sql = "SELECT
128                        lien_dossier_demandeur.demandeur as demandeur,
129                        lien_dossier_demandeur.petitionnaire_principal as pp
130                    FROM
131                        ".DB_PREFIXE."lien_dossier_demandeur
132                    WHERE lien_dossier_demandeur.dossier = '$idxDossier'";
133    
134            $res = $this->f->db->query($sql);
135            $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
136            
137            // Si une erreur survient
138            if (database::isError($res, true)) {
139    
140                // Appel de la methode de recuperation des erreurs
141                $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
142                $res->free();
143                $this->correct = false;
144                // Termine le traitement
145                return $this->end_treatment(__METHOD__, false);
146            }
147            
148            echo (" nbDossierDemandeurWD: " . $res->numrows());
149            
150            // Transfert des demandeurs entre le dossier et le lot
151            if (count($listDemandeurLie) != $res->numrows()){
152                
153                //Supprime les anciens liens
154                $sql = "DELETE FROM ".DB_PREFIXE."lien_lot_demandeur
155                        WHERE lien_lot_demandeur.lot = ".$this->getVal($this->clePrimaire);
156    
157                $res2 = $this->f->db->query($sql);
158    
159                echo (" delLotDemandeur: " . $res2);
160                $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
161                
162            
163                // Si une erreur survient
164                if (database::isError($res2, true)) {
165    
166                    // Appel de la methode de recuperation des erreurs
167                    $this->erreur_db($res2->getDebugInfo(), $res2->getMessage(), '');
168                    $res2->free();
169                    $this->correct = false;
170                    // Termine le traitement
171                    return $this->end_treatment(__METHOD__, false);
172                }
173                
174                $ret = "";
175    
176    
177                // Créé autant de liaisons que de demandeurs liés au dossier d'instruction
178                while($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
179                    
180                    if (!in_array($row['demandeur'], $listDemandeurLie)){
181                          
182                        $valLLD = array();
183                        $valLLD['lien_lot_demandeur'] = NULL;
184                        $valLLD['lot'] = $this->getVal($this->clePrimaire);
185                        $valLLD['demandeur'] = $row['demandeur'];
186                        $valLLD['petitionnaire_principal'] = $row['pp'];
187                            
188                        $lld = $this->f->get_inst__om_dbform(array(
189                            "obj" => "lien_lot_demandeur",
190                            "idx" => "]",
191                        ));
192                        $lld->valF = array();
193                                                
194                        $lld->ajouter($valLLD) ;
195                        
196                        $sql = "SELECT
197                                    civilite.code as code,
198                                    CASE WHEN demandeur.qualite='particulier'
199                                        THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
200                                        ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
201                                    END as nom
202                                FROM
203                                    ".DB_PREFIXE."demandeur
204                                LEFT JOIN
205                                    ".DB_PREFIXE."civilite
206                                    ON
207                                        demandeur.particulier_civilite = civilite.civilite OR
208                                        demandeur.personne_morale_civilite = civilite.civilite
209                                WHERE demandeur.demandeur = ".$row['demandeur'];
210        
211                        $res2 = $this->f->db->query($sql);
212                        $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
213    
214                        // Si une erreur survient
215                        if (database::isError($res2, true)) {
216    
217      function lot($id,&$db,$debug) {                          // Appel de la methode de recuperation des erreurs
218          $this->constructeur($id,$db,$debug);                          $this->erreur_db($res2->getDebugInfo(), $res2->getMessage(), '');
219                            $res2->free();
220                            $this->correct = false;
221                            // Termine le traitement
222                            return $this->end_treatment(__METHOD__, false);
223                        }
224    
225                        $row=& $res2->fetchRow(DB_FETCHMODE_ASSOC);
226                        $ret .= $row['code']. " " . $row['nom'] . "<br/>" ;
227    
228                        $res2->free();
229                    }
230                }
231                $res->free();
232                
233                //Envoie du message de retour
234                $this->addToMessage(_("Transfert effectue avec succès"));
235            }
236            //Sinon
237            else {
238                //Envoie du message de retour
239                $this->addToMessage(_("Les demandeurs ont déjà été transférés"));
240            }
241    
242            // Termine le traitement
243            return $this->end_treatment(__METHOD__, true);
244        }
245    
246        /**
247         * Ouvre le sous-formulaire passé en paramètre en overlay
248         * en mode ajout si aucun n'existe sinon en mode modifier.
249         *
250         * @return void
251         */
252        function display_overlay($idx = "", $obj = "") {
253            // Seulement si le numéro de dossier est fourni
254            if (isset($idx) && !empty($idx)
255                && isset($obj) && !empty($obj)){
256    
257                // Vérifie que l'objet n'existe pas
258                $sql = "SELECT donnees_techniques
259                FROM ".DB_PREFIXE."donnees_techniques
260                WHERE donnees_techniques.lot = ".$idx;
261                // Ajout au log
262                $this->f->addToLog($obj.".php: db->query(\"".$sql."\");", VERBOSE_MODE);
263                // Exécution de la requête
264                $res = $this->f->db->query($sql);
265                $this->f->isDatabaseError($res);
266    
267                // S'il n'y en a pas, afficher le formulaire d'ajout
268                if ($res->numrows() == 0) {
269                    //
270                    echo '
271                        <script type="text/javascript" >
272                            overlayIt(\''.$obj.'\',\''.OM_ROUTE_SOUSFORM.'&obj=donnees_techniques'.
273                                '&retourformulaire=lot&action=0&idxformulaire='. $idx. '\', 1);
274                        </script>
275                    ';
276                }
277                // Sinon afficher l'objet en consultation
278                else {
279                    //
280                    $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
281                    //
282                    echo '
283                        <script type="text/javascript" >
284                            overlayIt(\''.$obj.'\',\''.OM_ROUTE_SOUSFORM.'&obj=donnees_techniques'.
285                                '&retourformulaire=lot&action=5&idxformulaire='. $idx. '&idx=' . $row['donnees_techniques'] .'&objsf='.$obj.'\', 1);
286                        </script>
287                    ';
288                }
289            }
290        }
291    
292        /**
293         * CONDITION - is_ajoutable.
294         *
295         * Condition pour pouvoir ajouter
296         *
297         * @return boolean
298         */
299        function is_ajoutable() {
300            // Test du bypass
301            if ($this->f->isAccredited("lot_ajouter_bypass")) {
302                return true;
303            }
304            // Test des autres conditions
305            return $this->is_ajoutable_or_modifiable_or_supprimable();
306        }
307    
308        /**
309         * CONDITION - is_modifiable.
310         *
311         * Condition pour afficher le bouton modifier
312         *
313         * @return boolean
314         */
315        function is_modifiable() {
316            // Test du bypass
317            if ($this->f->isAccredited("lot_modifier_bypass")) {
318                return true;
319            }
320            // Test des autres conditions
321            return $this->is_ajoutable_or_modifiable_or_supprimable();
322        }
323    
324        /**
325         * CONDITION - is_supprimable.
326         *
327         * Condition pour afficher le bouton supprimer
328         * @return boolean
329         */
330        function is_supprimable() {
331            // Test du bypass
332            if ($this->f->isAccredited("lot_supprimer_bypass")) {
333                return true;
334            }
335            // Test des autres conditions
336            return $this->is_ajoutable_or_modifiable_or_supprimable();
337        }
338    
339    
340        /**
341         * Conditions pour afficher les boutons modifier et supprimer
342         *
343         * @return boolean
344         */
345         function is_ajoutable_or_modifiable_or_supprimable() {
346             // Tester si le dossier est cloturé ,
347             // et si l'instructeur est de la même division
348             if ($this->is_instructeur_from_division_dossier() === true and
349                 $this->is_dossier_instruction_not_closed() === true){
350                 return true;
351             }
352    
353      }// fin constructeur           return false;
354         }
355    
356    
357      /**      /**
358       * Méthode qui effectue les requêtes de configuration des champs.       * VIEW - view_donnees_techniques.
359       *       *
360       * @param object  &$form Formulaire.       * Ouvre le sous-formulaire en ajaxIt dans un overlay.
361       * @param integer $maj   Mode du formulaire.       * Cette action est bindée pour utiliser la fonction popUpIt.
362       *       *
363       * @return void       * @return void
364       */       */
365      public function setSelect(&$form,$maj) {      function view_donnees_techniques() {
366            $dossier = $this->getVal("dossier");
367            // Vérification de l'accessibilité sur l'élément
368            $this->checkAccessibility();
369            //
370            $this->display_overlay(
371                $this->getVal($this->clePrimaire),
372                "donnees_techniques"
373            );
374        }
375    
376        /**
377         * SETTER_FORM - setSelect.
378         *
379         * @return void
380         */
381        function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) {
382          // Le parent n'est pas appelé délibérament pour cause de performance.          // Le parent n'est pas appelé délibérament pour cause de performance.
383          // En effet, celui-ci charge toutes les données de la table dossier et          // En effet, celui-ci charge toutes les données de la table dossier et
384          // de la table dossier_autorisation.          // de la table dossier_autorisation.
385            // parent::setSelect($form, $maj);
386      }      }
387    
388        /**
389      function triggerAjouterApres($id, &$db, $val, $DEBUG) {       * TRIGGER - triggerajouterapres.
390          parent::triggerAjouterApres($id, $db, $val, $DEBUG);       *
391         * @return boolean
392         */
393        function triggerajouterapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
394            $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
395            parent::triggerajouterapres($id, $dnu1, $val);
396    
397          // Si en sous-formulaire          // Si en sous-formulaire
398          if($this->getParameter("idxformulaire") != "") {          if($this->getParameter("idxformulaire") != "") {
399    
400              // Insertion du lien demandeur/lot              // Insertion du lien demandeur/lot
401              require_once ("../obj/lien_lot_demandeur.class.php");              $lld = $this->f->get_inst__om_dbform(array(
402              $lld = new lien_lot_demandeur("]", $db, $DEBUG);                  "obj" => "lien_lot_demandeur",
403                    "idx" => "]",
404                ));
405              $sqlDemandeur = "SELECT * FROM ".DB_PREFIXE."lien_dossier_demandeur              $sqlDemandeur = "SELECT * FROM ".DB_PREFIXE."lien_dossier_demandeur
406                                  WHERE dossier='".$this->getParameter("idxformulaire")."'";                                  WHERE dossier='".$this->getParameter("idxformulaire")."'";
407              $res = $db->query($sqlDemandeur);              $res = $this->f->db->query($sqlDemandeur);
408              $this->f->addToLog("triggerAjouterApres() : db->query(\"".$sqlDemandeur."\");", VERBOSE_MODE);              $this->f->addToLog(__METHOD__."(): db->query(\"".$sqlDemandeur."\");", VERBOSE_MODE);
409              if ( database::isError($res)){              if ( database::isError($res)){
410                  die();                  die();
411              }              }
# Line 54  class lot extends lot_gen { Line 414  class lot extends lot_gen {
414                  unset($row['dossier']);                  unset($row['dossier']);
415                  $row['lien_lot_demandeur'] = "";                  $row['lien_lot_demandeur'] = "";
416                  $row['lot'] = $this->valF["lot"];                  $row['lot'] = $this->valF["lot"];
417                  $lld->ajouter($row, $db, $DEBUG);                  $lld->ajouter($row);
418              }              }
419    
420              // Ajoute une ligne dans les données techniques              // Ajoute une ligne dans les données techniques
# Line 79  class lot extends lot_gen { Line 439  class lot extends lot_gen {
439                    
440          $form->setType('dossier_autorisation', 'hidden');          $form->setType('dossier_autorisation', 'hidden');
441          $form->setType('dossier','hidden');          $form->setType('dossier','hidden');
442            
443            if($maj == "110") {
444                $form->setType('lot', 'hidden');
445                $form->setType('libelle', 'hidden');
446                $form->setType('dossier_autorisation', 'hidden');
447                $form->setType('dossie', 'hidden');
448            }
449      }      }
450    
   
451      /**      /**
452       * Permet d'affecter des valeurs aux champs de sous formulaires       * SETTER_FORM - setValsousformulaire (setVal).
453         *
454         * @return void
455       */       */
456      function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,&$db,$DEBUG=null) {      function setValsousformulaire(&$form, $maj, $validation, $idxformulaire, $retourformulaire, $typeformulaire, &$dnu1 = null, $dnu2 = null) {
457            parent::setValsousformulaire($form, $maj, $validation, $idxformulaire, $retourformulaire, $typeformulaire);
458          //          //
459          if($validation == 0) {          $this->retourformulaire = $retourformulaire;
460              //          //
461              $is_in_context_of_di = $this->is_in_context_of_foreign_key("dossier", $this->getParameter('retourformulaire'));          if ($validation == 0) {
462              //              $is_in_context_of_di = $this->is_in_context_of_foreign_key("dossier", $this->getParameter("retourformulaire"));
463              $is_in_context_of_da = $this->is_in_context_of_foreign_key("dossier_autorisation", $this->getParameter('retourformulaire'));              $is_in_context_of_da = $this->is_in_context_of_foreign_key("dossier_autorisation", $this->getParameter("retourformulaire"));
464                //
465              //              if ($is_in_context_of_di === true) {
466              if($is_in_context_of_di === true) {                  $form->setVal("dossier", $this->getParameter("idxformulaire"));
467                  //                  $inst_di = $this->get_inst_dossier($this->getParameter("idxformulaire"));
468                  $form->setVal('dossier', $this->getParameter('idxformulaire'));                  $form->setVal("dossier_autorisation", $inst_di->getVal("dossier_autorisation"));
                 // Instancie le dossier  
                 $inst_di = $this->get_inst_dossier($this->getParameter('idxformulaire'));  
                 // Récupère la valeur du dossier d'autorisation  
                 $form->setVal('dossier_autorisation', $inst_di->getVal('dossier_autorisation'));  
469              }              }
   
470              //              //
471              if($is_in_context_of_da === true) {              if ($is_in_context_of_da === true) {
472                  //                  $form->setVal("dossier_autorisation", $this->getParameter("idxformulaire"));
                 $form->setVal('dossier_autorisation', $this->getParameter('idxformulaire'));  
473              }              }
474          }// fin validation          }
475      }// fin setValsousformulaire      }
476        
477      /**      /**
478       * Ajout de la liste des demandeurs       * Ajout de la liste des demandeurs
479       */       */
# Line 143  class lot extends lot_gen { Line 506  class lot extends lot_gen {
506                      ORDER BY demandeur.type_demandeur DESC";                      ORDER BY demandeur.type_demandeur DESC";
507                                            
508              $res = $this->f->db->query($sql);              $res = $this->f->db->query($sql);
509              $this->f->addToLog("sousformSpecificContent() : db->query(\"".$sql."\")");              $this->f->addToLog("sousformSpecificContent() : db->query(\"".$sql."\")", VERBOSE_MODE);
510              if ( database::isError($res)){              if ( database::isError($res)){
511                  die();                  die();
512              }              }
# Line 179  class lot extends lot_gen { Line 542  class lot extends lot_gen {
542          }          }
543      }      }
544    
     /**  
      * Surcharge pour gérer les actions disponibles dans le portlet  
      */  
     function checkAccessibility() {  
         //  
         parent::checkAccessibility();  
           
         $idxformulaire = $this->getParameter("idxformulaire");  
         $retourformulaire = $this->getParameter("retourformulaire");  
         //Si le dossier d'instruction auquel est rattaché le lot est  
         //cloturé, on affiche pas les liens du portlet  
         if ( $idxformulaire != '' &&  
             (  
                 $retourformulaire == 'dossier' ||  
                 $retourformulaire == 'dossier_instruction' ||  
                 $retourformulaire == 'dossier_instruction_mes_encours' ||  
                 $retourformulaire == 'dossier_instruction_tous_encours' ||  
                 $retourformulaire == 'dossier_instruction_mes_clotures' ||  
                 $retourformulaire == 'dossier_instruction_tous_clotures'  
             )){  
                   
             //On récuppère le statut du dossier d'instruction          
             $statut = $this->f->getStatutDossier($idxformulaire);  
             if ( $this->f->isUserInstructeur() && $statut == "cloture" ){  
                   
                 //On cache le lien de modification  
                 $this->parameters["actions"]["modifier"] = NULL;  
                 $this->parameters["actions"]["supprimer"] = NULL;  
                 $this->actions_sup["transferer"] = NULL;  
                   
                 //Si le dossier lié n'a pas de données techniques  
                 if ( !$this->hasDonneesTechniquesDossier($idxformulaire) ){  
                     $this->actions_sup["editer_donnees"] = NULL;  
                 }  
             }  
         }  
   
         /*  
          * Si l'utilisateur est un instructeur sans bypass sur l'action et si  
          * sa division ne correspond pas à celle du dossier alors on n'affiche  
          * pas cette action dans le portlet.  
          */  
   
         $instr_with_different_div = false;  
         if ($this->f->isUserInstructeur()  
             && isset($this->f->om_utilisateur["division"])  
             && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {  
             $instr_with_different_div = true;  
         }  
   
         // MODIFIER  
         if ($this->f->can_bypass("lot", "modifier") == false  
             && $instr_with_different_div == true) {  
             //  
             $this->parameters["actions"]["modifier"] = NULL;  
         }  
         // SUPPRIMER  
         if ($this->f->can_bypass("lot", "supprimer") == false  
             && $instr_with_different_div == true) {  
             //  
             $this->parameters["actions"]["supprimer"] = NULL;  
         }  
         // TRANSFERER  
         if ($this->f->can_bypass("lot", "transferer") == false  
             && $instr_with_different_div == true) {  
             //  
             unset($this->actions_sup["transferer"]);  
         }  
         // EDITER DONNEES TECHNIQUES  
         if ($this->f->can_bypass("lot", "editer_donnees") == false  
             && $instr_with_different_div == true) {  
             //  
             unset($this->actions_sup["editer_donnees"]);  
         }  
     }  
       
     /**  
      * Cette methode est à surcharger elle permet de tester dans chaque classe  
      * des droits spécifiques en fonction des données  
      */  
     function canAccess() {  
   
         $retourformulaire = $this->getParameter("retourformulaire");  
         // Si l'utilisateur est un instructeur et que le dossier est cloturé  
         if ( $this->f->isUserInstructeur() &&  
             $this->f->getStatutDossier($this->getParameter("idxformulaire")) == "cloture" &&  
             (  
                 $retourformulaire == 'dossier' ||  
                 $retourformulaire == 'dossier_instruction' ||  
                 $retourformulaire == 'dossier_instruction_mes_encours' ||  
                 $retourformulaire == 'dossier_instruction_tous_encours' ||  
                 $retourformulaire == 'dossier_instruction_mes_clotures' ||  
                 $retourformulaire == 'dossier_instruction_tous_clotures'  
             ) && $this->getParameter("maj") != 3) {  
               
             return false;  
         }  
545    
         // Récupération du bypass adéquat  
         // XXX - actions spécifiques non testées  
         $bypass = false;  
         if (($this->f->can_bypass("lot", "ajouter") == true && $this->getParameter("maj") == 0)  
             || ($this->f->can_bypass("lot", "modifier") == true && $this->getParameter("maj") == 1)  
             || ($this->f->can_bypass("lot", "supprimer") == true && $this->getParameter("maj") == 2)) {  
             $bypass = true;  
         }  
         // Si, hors mode consulter, l'utilisateur est un instructeur sans bypass  
         // dont la division ne correspond pas à celle du dossier  
         if ($this->getParameter("maj") != 3 && $bypass == false && $this->f->isUserInstructeur()  
             && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {  
             //  
             return false;  
         }  
         //  
         return true;  
     }  
       
546      /**      /**
547       * Retourne true s'il y a des données techniques lié au dossier d'instruction       * Retourne true s'il y a des données techniques lié au dossier d'instruction
548       * @param string $idx Identifiant du dossier d'instruction       * @param string $idx Identifiant du dossier d'instruction
# Line 315  class lot extends lot_gen { Line 562  class lot extends lot_gen {
562                      ON                      ON
563                          donnees_techniques.dossier_instruction = dossier.dossier                          donnees_techniques.dossier_instruction = dossier.dossier
564                  WHERE dossier.dossier = '".$idx."'";                  WHERE dossier.dossier = '".$idx."'";
565              $donnees_techniques = $this->db->query($sql);              $donnees_techniques = $this->f->db->query($sql);
566              $this->f->addToLog("hasDonneesTechniquesDossier() : db->query(\"".$sql."\")", VERBOSE_MODE);              $this->f->addToLog("hasDonneesTechniquesDossier() : db->query(\"".$sql."\")", VERBOSE_MODE);
567              if ( database::isError($donnees_techniques)){              if ( database::isError($donnees_techniques)){
568                  die();                  die();
# Line 328  class lot extends lot_gen { Line 575  class lot extends lot_gen {
575          return FALSE;          return FALSE;
576      }      }
577    
     /**  
      * Cette variable permet de stocker le résultat de la méthode  
      * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de  
      * ces appels.  
      * @var string Code de la division du dossier en cours  
      */  
     var $_division_from_dossier = NULL;  
   
     /**  
      * Cette méthode permet de récupérer le code de division correspondant  
      * au dossier sur lequel on se trouve.  
      *  
      * @return string Code de la division du dossier en cours  
      */  
     function getDivisionFromDossier() {  
   
         // Cette méthode peut être appelée plusieurs fois lors d'une requête.  
         // Pour éviter de refaire le traitement de recherche de la division  
         // alors on vérifie si nous ne l'avons pas déjà calculé.  
         if ($this->_division_from_dossier != NULL) {  
             // Logger  
             $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);  
             // On retourne la valeur déjà calculée  
             return $this->_division_from_dossier;  
         }  
   
         // Par défaut, on définit la valeur du dossier à NULL  
         $dossier = NULL;  
         // Test sur le mode et le contexte du formulaire  
         if ($this->getParameter("maj") == 0  
             && ($this->getParameter("retourformulaire") == "dossier"  
                 || $this->getParameter("retourformulaire") == "dossier_instruction"  
                 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"  
                 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"  
                 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"  
                 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {  
             // Si on se trouve en mode AJOUT (seul mode où l'enregistrement  
             // n'existe pas en base de données) ET que nous nous trouvons  
             // dans le contexte d'un dossier d'instruction alors on récupère  
             // le numéro de dossier depuis le paramètre 'idxformulaire'  
             $dossier = $this->getParameter("idxformulaire");  
         } else {  
             // Sinon on récupère le numéro de dossier dans le champs dossier de  
             // l'enregistrement (en base de données)  
             $dossier = $this->getVal("dossier");  
         }  
   
         // On appelle la méthode de la classe utils qui renvoi le code de la  
         // division d'un dossier, on la stocke pour ne pas refaire le calcul au  
         // prochain appel de cette méthode  
         $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);  
         // Logger  
         $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);  
         // On retourne la valeur retournée  
         return $this->_division_from_dossier;  
   
     }  
   
578    
579      /**      /**
580       * Cette méthode est appelée lors de la suppression d’un objet, elle permet       * Cette méthode est appelée lors de la suppression d’un objet, elle permet
# Line 396  class lot extends lot_gen { Line 585  class lot extends lot_gen {
585       *       *
586       * @return boolean       * @return boolean
587       */       */
588      public function cleSecondaire($id) {      function cleSecondaire($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
589          // Surcharge pour éviter les contrôles sur les tables liées en cas          // Surcharge pour éviter les contrôles sur les tables liées en cas
590          // de suppression          // de suppression
591          return true;          return true;
# Line 418  class lot extends lot_gen { Line 607  class lot extends lot_gen {
607          // Résultat          // Résultat
608          $res = $this->f->db->query($sql);          $res = $this->f->db->query($sql);
609          // Log          // Log
610          $this->f->addToLog(__METHOD__."() : db->query(\"".$sql."\")");          $this->f->addToLog(__METHOD__."() : db->query(\"".$sql."\")", VERBOSE_MODE);
611          //          //
612          if ($this->f->isDatabaseError($res, true)) {          if ($this->f->isDatabaseError($res, true)) {
613              return false;              return false;
# Line 444  class lot extends lot_gen { Line 633  class lot extends lot_gen {
633          // Résultat          // Résultat
634          $res = $this->f->db->query($sql);          $res = $this->f->db->query($sql);
635          // Log          // Log
636          $this->f->addToLog(__METHOD__."() : db->query(\"".$sql."\")");          $this->f->addToLog(__METHOD__."() : db->query(\"".$sql."\")", VERBOSE_MODE);
637          //          //
638          if ($this->f->isDatabaseError($res, true)) {          if ($this->f->isDatabaseError($res, true)) {
639              return false;              return false;
# Line 454  class lot extends lot_gen { Line 643  class lot extends lot_gen {
643          return true;          return true;
644      }      }
645    
   
646      /**      /**
647       * Permet d’effectuer des actions avant la modification des données dans la       * TRIGGER - triggersupprimer.
      * base.  
      *  
      * @param mixed  $id    Identifiant de l'objet.  
      * @param object &$db   Instance BDD.  
      * @param array  $val   Liste des valeurs.  
      * @param mixed  $DEBUG Mode du debug.  
648       *       *
649       * @return boolean       * @return boolean
650       */       */
651      public function triggersupprimer($id, &$db, $val, $DEBUG) {      function triggersupprimer($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
652            $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
653    
654          // Suppression du lien entre le lot et les demandeurs          // Suppression du lien entre le lot et les demandeurs
655          $delete_lien_lot_demandeur = $this->delete_lien_lot_demandeur($id);          $delete_lien_lot_demandeur = $this->delete_lien_lot_demandeur($id);
         //  
656          if ($delete_lien_lot_demandeur === false) {          if ($delete_lien_lot_demandeur === false) {
             //  
657              return false;              return false;
658          }          }
659    
660          // Suppression des données techniques lié au lot          // Suppression des données techniques lié au lot
661          $delete_donnees_techniques = $this->delete_donnees_techniques($id);          $delete_donnees_techniques = $this->delete_donnees_techniques($id);
         //  
662          if ($delete_donnees_techniques === false) {          if ($delete_donnees_techniques === false) {
             //  
663              return false;              return false;
664          }          }
665    
# Line 488  class lot extends lot_gen { Line 667  class lot extends lot_gen {
667          return true;          return true;
668      }      }
669    
   
670      /**      /**
671       * Ajout les données techniques au lot.       * Ajout les données techniques au lot.
672       *       *
# Line 497  class lot extends lot_gen { Line 675  class lot extends lot_gen {
675      protected function add_donnees_techniques() {      protected function add_donnees_techniques() {
676    
677          // Instancie la classe donnees_techniques en ajout          // Instancie la classe donnees_techniques en ajout
678          require_once '../obj/donnees_techniques.class.php';          $inst_dt = $this->f->get_inst__om_dbform(array(
679          $inst_dt = new donnees_techniques("]", $this->f->db, DEBUG);              "obj" => "donnees_techniques",
680                "idx" => "]",
681            ));
682    
683          // Toutes les valeurs sont mis à null          // Toutes les valeurs sont mis à null
684          foreach($inst_dt->champs as $value) {          foreach($inst_dt->champs as $value) {
# Line 518  class lot extends lot_gen { Line 698  class lot extends lot_gen {
698          }          }
699    
700          // Ajoute l'enregistrement dans la table donnees_techniques          // Ajoute l'enregistrement dans la table donnees_techniques
701          $add = $inst_dt->ajouter($valF, $this->f->db, DEBUG);          $add = $inst_dt->ajouter($valF);
702          //          //
703          if ($add === false) {          if ($add === false) {
704              //              //
# Line 534  class lot extends lot_gen { Line 714  class lot extends lot_gen {
714      /**      /**
715       * Récupère l'instance du dossier.       * Récupère l'instance du dossier.
716       *       *
      * @param string $dossier Identifiant de l'objet.  
      *  
      * @return object  
      */  
     public function get_inst_dossier($dossier = null) {  
         //  
         return $this->get_inst_common("dossier", $dossier);  
     }  
   
   
     /**  
      * Récupère l'instance du dossier.  
      *  
717       * @param string $dossier_autorisation Identifiant de l'objet.       * @param string $dossier_autorisation Identifiant de l'objet.
718       *       *
719       * @return object       * @return object
# Line 590  class lot extends lot_gen { Line 757  class lot extends lot_gen {
757    
758      }      }
759    
760        /*
761         * CONDITION - can_user_access_dossier_contexte_ajout
762         *
763         * Vérifie que l'utilisateur a bien accès au dossier d'instruction passé dans le
764         * formulaire d'ajout.
765         * Cette méthode vérifie que l'utilisateur est lié au groupe du dossier, et si le
766         * dossier est confidentiel qu'il a accès aux confidentiels de ce groupe.
767         *
768         */
769        function can_user_access_dossier_contexte_ajout() {
770    
771            ($this->f->get_submitted_get_value('idxformulaire') !== null ? $id_dossier =
772                $this->f->get_submitted_get_value('idxformulaire') : $id_dossier = "");
773            //
774            if ($id_dossier !== "") {
775                $dossier = $this->f->get_inst__om_dbform(array(
776                    "obj" => "dossier_instruction",
777                    "idx" => $id_dossier,
778                ));
779                //
780                return $dossier->can_user_access_dossier();
781            }
782            return false;
783        }
784    
785       /*
786         * CONDITION - can_user_access_dossier_contexte_modification
787         *
788         * Vérifie que l'utilisateur a bien accès au dossier lié au lot instanciée.
789         * Cette méthode vérifie que l'utilisateur est lié au groupe du dossier, et si le
790         * dossier est confidentiel qu'il a accès aux confidentiels de ce groupe.
791         *
792         */
793        function can_user_access_dossier_contexte_modification() {
794    
795            $id_dossier = $this->getVal('dossier');
796            //
797            if ($id_dossier !== "" && $id_dossier !== null) {
798                $dossier = $this->f->get_inst__om_dbform(array(
799                    "obj" => "dossier_instruction",
800                    "idx" => $id_dossier,
801                ));
802                //
803                return $dossier->can_user_access_dossier();
804            }
805            return false;
806        }
807    
808    
809  }// fin classe  }// fin classe
 ?>  
810    

Legend:
Removed from v.5169  
changed lines
  Added in v.9245

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26