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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2440 - (hide annotations)
Wed Oct 30 18:48:35 2013 UTC (11 years, 3 months ago) by nhaye
File size: 6634 byte(s)
Affichage d'un message d'erreur si la valeur null est affectée à un champ de règle d'action alors que le champ correspondant dans la table dossier ne peut pas l'être.

1 fraynaud 3 <?php
2 fmichon 1546 /**
3     * Ce fichier contient la déclaration de la classe "action".
4     *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8 fraynaud 3
9 fmichon 1549 //
10 fmichon 1546 require_once "../gen/obj/action.class.php";
11    
12     /**
13     *
14     *
15     */
16 fraynaud 3 class action extends action_gen {
17    
18 nhaye 2440 // Handler d'un objet de classe dossier
19     var $dossier;
20    
21 fmichon 1546 function action($id, &$db, $debug) {
22     $this->constructeur($id, $db, $debug);
23     }
24 fraynaud 3
25 softime 2308 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 nhaye 2440 // 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 softime 2308 // 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 vpihour 2326 // Remplace les opérateurs par un espace puis transforme la
86 softime 2308 // chaine en un tableau
87     $tabValue = str_replace($operateurs, " ", $value);
88 vpihour 2326 // Tableau des champs
89 softime 2308 $tabValue = explode(" ", $tabValue);
90 nhaye 2371 // Supprime les numériques et null du tableau
91 softime 2308 foreach ($tabValue as $key_tab => $value) {
92     if (is_numeric($value)) {
93     unset($tabValue[$key_tab]);
94 nhaye 2371 } elseif ($value == "NULL" || $value == "null") {
95     unset($tabValue[$key_tab]);
96 softime 2308 }
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 fmichon 1546 /**
124 nhaye 2440 * 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 fmichon 1546 *
145     */
146 fmichon 1541 function formSpecificContent($maj) {
147 fmichon 1546 /**
148     * Affichage des champs qu'il est possible d'utiliser dans les règles
149     */
150     // Archives du dossier
151 fmichon 1541 echo "<h4>"._("Valeurs du dossier avant l'evenement")."</h4>";
152 softime 2376 echo "[archive_etat] [archive_delai] [archive_accord_tacite]
153     [archive_avis]";
154 fmichon 1541 echo "<br/>";
155 softime 2376 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 softime 2142 [duree_validite]";
163 fmichon 1546 // Champs de l'événement
164 fmichon 1541 echo "<h4>"._("Parametres de l'evenement")."</h4>";
165 softime 2376 echo "[etat] [delai] [accord_tacite] [avis_decision]
166     [delai_notification] [date_evenement] [autorite_competente]";
167 softime 2142 // Champs du type détaillé du dossier d'autorisation
168 softime 2376 echo "<h4>"._("Parametres du type detaille du dossier d'autorisation")
169     ."</h4>";
170 softime 2142 echo "[duree_validite_parametrage]";
171 nhaye 2371 echo "<h4>"._("Suppression de la valeur")."</h4>";
172     echo "[null]";
173 fmichon 1541 }
174    
175 fmichon 1546 }
176    
177     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26