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

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

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

revision 406 by nhaye, Thu Sep 20 16:26:58 2012 UTC revision 2562 by softime, Mon Dec 2 17:06:04 2013 UTC
# Line 1  Line 1 
1  <?php  <?php
2  //$Id$  /**
3  //gen openMairie le 10/02/2011 20:15   * Ce fichier contient la déclaration de la classe "action".
4  require_once ("../gen/obj/action.class.php");   *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8    
9    //
10    require_once "../gen/obj/action.class.php";
11    
12    /**
13     *
14     *
15     */
16  class action extends action_gen {  class action extends action_gen {
17    
18      function action($id,&$db,$debug) {      // Handler d'un objet de classe dossier
19          $this->constructeur($id,$db,$debug);      var $dossier;
20      }// fin constructeur  
21        function action($id, &$db, $debug) {
22      function setTaille(&$form, $maj) {          $this->constructeur($id, $db, $debug);
         parent::setTaille($form, $maj);  
         $form->setTaille('action',20);  
         $form->setTaille('libelle',60);  
         $form->setTaille('regle_etat',60);  
         $form->setTaille('regle_delai',60);  
         $form->setTaille('regle_accord_tacite',60);  
         $form->setTaille('regle_avis',60);  
         $form->setTaille('regle_date_limite',60);  
         $form->setTaille('regle_date_notification_delai',60);  
         $form->setTaille('regle_date_complet',60);  
         $form->setTaille('regle_date_validite',60);  
         $form->setTaille('regle_date_decision',60);  
         $form->setTaille('regle_date_chantier',60);  
         $form->setTaille('regle_date_achevement',60);  
         $form->setTaille('regle_date_conformite',60);  
         $form->setTaille('regle_date_rejet',60);  
23      }      }
 }// fin classe  
 ?>  
24    
25        function verifier($val = array(), &$db, $DEBUG){
26            parent::verifier($val, $db, $DEBUG);
27    
28            // Requête SQL pour récupérer les champs de la table action contenant
29            // "regle_"
30            $sql = "SELECT column_name
31                    FROM information_schema.columns
32                    WHERE table_schema = '".substr(DB_PREFIXE, 0, -1)."'
33                    AND table_name = 'action'
34                    AND column_name LIKE 'regle_%'
35                    ORDER BY ordinal_position";
36            $this->addToLog("verifier() : db->query(\"".$sql."\")", VERBOSE_MODE);
37            $res = $db->query($sql);
38            $this->f->isDatabaseError($res);
39    
40            $list_column = array();
41            // Tant qu'il y a un résultat
42            while ($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
43                
44                // Le nom de la colonne est mise dans un tableau
45                $list_column[] = $row['column_name'];
46            }
47    
48            $list_fields = array();
49            // Pour chaque colonne
50            foreach ($list_column as $value) {
51                
52                // Vérifie que le champs existe dans le formulaire et qu'il n'est
53                // pas vide
54                if (isset($this->valF[$value])
55                    && $this->valF[$value] != ''
56                    && $this->valF[$value] != NULL) {
57                    $list_fields[$value] = $this->valF[$value];
58                }
59            }
60    
61            // Si le tableau contenant les champs à tester n'est pas vide
62            if (count($list_fields) > 0) {
63    
64                //
65                foreach ($list_fields as $key => $value) {
66    
67                     // Vérification de la possibilité des champs de la table dossier
68                     // correspondants aux règles d'être mis à null
69                    if($this->valF[$key] == "NULL" OR $this->valF[$key] == "null") {
70                        if($this->fieldCanBeNull(substr($key, 6)) === false) {
71                            // Affiche l'erreur
72                            $this->correct=false;
73                            $error_message = _("Le champ %s des dossiers ne peut etre mis a NULL.");
74                            $this->addToMessage(sprintf($error_message, "<b>"._(substr($key, 6))."</b>"));
75    
76                        }
77                    }
78    
79                    // Liste des opérateurs possible
80                    $operateurs = array(">=", "<=", "+", "-");
81    
82                    // Supprime tous les espaces de la chaîne de caractère
83                    $value = str_replace(' ', '', $value);
84                    
85                    // Remplace les opérateurs par un espace puis transforme la
86                    // chaine en un tableau
87                    $tabValue = str_replace($operateurs, " ", $value);
88                    // Tableau des champs
89                    $tabValue = explode(" ", $tabValue);
90                    // Supprime les numériques et null du tableau
91                    foreach ($tabValue as $key_tab => $value) {
92                        if (is_numeric($value)) {
93                            unset($tabValue[$key_tab]);
94                        } elseif ($value == "NULL" || $value == "null") {
95                            unset($tabValue[$key_tab]);
96                        }
97                    }
98    
99                    // Vérifie les champs utilisés pour la restriction
100                    $check_field_exist = $this->f->check_field_exist($tabValue,
101                        'instruction');
102                    if ($check_field_exist !== true) {
103    
104                        // Liste des champs en erreur
105                        $string_error_fields = implode(", ", $check_field_exist);
106    
107                        // Message d'erreur
108                        $error_message = _("Le champ %s n'est pas utilisable pour le champ %s");
109                        // Si plusieurs champs sont en erreur
110                        if (count($check_field_exist) > 1) {
111                            $error_message = _("Les champs %s ne sont pas utilisable pour le champ %s");
112                        }
113    
114                        // Affiche l'erreur
115                        $this->correct=false;
116                        $this->addToMessage(sprintf($error_message, $string_error_fields, _($key)));
117                    }
118                }
119            }
120            
121        }
122    
123        /**
124         * Vérification que les champs ciblés par les règles contenant NULL peuvent
125         * l'être.
126         * @param  string $field champ impacté par la règle
127         * @return boolean       peut être null = true else false
128         */
129        function fieldCanBeNull($field) {
130            // Instantiation de la classe dossier si pas déjà fait
131            if(!isset($this->dossier) OR empty($this->dossier)) {
132                require_once '../obj/dossier.class.php';
133                $this->dossier = new dossier(']', $this->db, DEBUG);
134            }
135            // Si le champ passé en param est dans la liste des champs obligatoires
136            // de la table dossier return false
137            if(array_search($field, $this->dossier->required_field) !== false) {
138                return false;
139            }
140            return true;
141        }
142    
143        /**
144         *
145         */
146        function formSpecificContent($maj) {
147            /**
148             * Affichage des champs qu'il est possible d'utiliser dans les règles
149             */
150            // Archives du dossier
151            echo "<h4>"._("Valeurs du dossier avant l'evenement")."</h4>";
152            echo "[archive_etat] [archive_delai] [archive_accord_tacite]
153            [archive_avis]";
154            echo "<br/>";
155            echo "[archive_date_dernier_depot] [archive_date_complet]
156            [archive_date_rejet] [archive_date_limite]
157            [archive_date_notification_delai] [archive_date_decision]
158            [archive_date_validite] [archive_date_achevement]
159            [archive_date_conformite] [archive_date_chantier]
160            [archive_etat_pendant_incompletude] [archive_date_limite_incompletude]
161            [archive_delai_incompletude] [archive_autorite_competente]
162            [duree_validite]";
163            // Champs de l'événement
164            echo "<h4>"._("Parametres de l'evenement")."</h4>";
165            echo "[etat] [delai] [accord_tacite] [avis_decision]
166            [delai_notification] [date_evenement] [autorite_competente]";
167            // Champs récupérés depuis l'événement d'instruction principal
168            echo "<h4>"._("Valeurs de l'evenement d'instruction principal")."</h4>";
169            echo "[date_envoi_signature] [date_retour_signature] [date_envoi_rar] [date_retour_rar] [date_envoi_rar] [date_retour_rar] [date_envoi_controle_legalite] [date_retour_controle_legalite]";
170            // Champs du type détaillé du dossier d'autorisation
171            echo "<h4>"._("Parametres du type detaille du dossier d'autorisation")
172                ."</h4>";
173            echo "[duree_validite_parametrage]";
174            echo "<h4>"._("Suppression de la valeur")."</h4>";
175            echo "[null]";
176        }
177    
178    }
179    
180    ?>

Legend:
Removed from v.406  
changed lines
  Added in v.2562

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26