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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3024 - (hide annotations)
Tue May 13 16:51:36 2014 UTC (10 years, 8 months ago) by vpihour
File size: 13670 byte(s)
Correction de la mauvaise gestion des erreurs

1 softime 2715 <?php
2     /**
3     * Contient la classe SynchronisationContrainte
4     *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8    
9     /**
10     * Cette classe permet la synchronisation des contraintes
11     * du SIG et de l'application
12     */
13     class SynchronisationContrainte {
14    
15     /**
16     * Instance de la classe Utils
17     * @var object
18     */
19     var $f = null;
20     /**
21     * Retour du SOAP
22     * @var array
23     */
24     var $execute = array();
25     /**
26     * Liste des contraintes récupérées du SIG
27     * @var array
28     */
29     var $listContraintesSIG = array();
30     /**
31     * Liste des contraintes de la base de données
32     * @var array
33     */
34     var $listContraintesBDD = array();
35     /**
36     * Liste des contraintes "à archiver"
37     * @var array
38     */
39     var $listContraintesArchive = array();
40     /**
41     * Liste des contraintes "à ajouter"
42     * @var array
43     */
44     var $listContraintesAdd = array();
45     /**
46     * Liste des contraintes "à modifier"
47     * @var array
48     */
49     var $listContraintesEdit = array();
50     /**
51     * Liste des contraintes récupérées du SIG (seulement l'identifiant)
52     * @var array
53     */
54     var $listContraintesSIGIdContrainte = array();
55     /**
56     * Code HTTP de la réponse SOAP
57     * @var string
58     */
59     var $responseHTTP = null;
60 vpihour 3024 /**
61     * Message d'erreur de la réponse SOAP
62     * @var string
63     */
64     var $errorMessage = null;
65 softime 2715
66     /**
67     * Constructeur
68     * @param object $f Instance de la classe Utils
69     */
70     public function __construct($f) {
71     // Initialise $this->f
72     $this->f = $f;
73     // Permet lors de l'instantiation d'objets métiers d'avoir accès à f
74     $GLOBALS['f'] = $this->f;
75    
76     // Récupération de la configuration du soap
77     $conf = $this->f->config['sig_elyx'];
78     // Instance de la classe permettant d'envoyer des requête SOAP
79     require_once '../services/outgoing/MessageSenderSoap.class.php';
80     $soap = new MessageSenderSoap($conf['wsdl'], $conf['login'], $conf['password']);
81    
82     // Données à envoyer au wsdl
83     $data = array(
84     "wType" => "2",
85     );
86     // Exécute le webservice
87     $this->execute = $soap->execute('getContrainteNRU', $data);
88     // Initialise la réponse HTTP
89     $this->setResponseHTTP($soap->getResponseCode());
90 vpihour 3024
91     $this->setErrorMessage($soap->getErrorMessage());
92 softime 2715 }
93    
94     /**
95     * Destructeur
96     */
97     public function __destruct() {
98     // Détruit l'instance de la classe Utils
99     unset($this->f);
100     // Détruis l'accès à la classe Utils
101     unset($GLOBALS['f']);
102     }
103    
104     /**
105     * Remplit toutes les listes de contrainte
106     */
107     public function setAllListContraintes() {
108     //
109     $this->setListContraintesSIG();
110     //
111     $this->setListContraintesBDD();
112     //
113     $this->setListContraintesAdd();
114     //
115     $this->setListContraintesEdit();
116     //
117     $this->setListContraintesSIGIdContrainte();
118     //
119     $this->setListContraintesArchive();
120     }
121    
122     /**
123     * Remplit la liste des contraintes récupérées du SIG
124     */
125     public function setListContraintesSIG() {
126     //
127 vpihour 2782 $this->listContraintesSIG = $this->execute["return"];
128 softime 2715 }
129    
130     /**
131     * Retourne la list des contraintes récupérées du SIG
132     * @return array Liste des contraintes
133     */
134     public function getListContraintesSIG() {
135     //
136     return $this->listContraintesSIG;
137     }
138    
139     /**
140     * Remplit la valeur de la réponse HTTP
141     * @param string $responseHTTP Réponse HTTP de la classe MessageSenderSOAP
142     */
143     private function setResponseHTTP($responseHTTP) {
144     //
145     $this->responseHTTP = $responseHTTP;
146     }
147    
148     /**
149     * Retourne le code réponse HTTP
150     * @return string Code réponse HTTP
151     */
152     public function getResponseHTTP() {
153     //
154     return $this->responseHTTP;
155     }
156    
157     /**
158 vpihour 3024 * Remplit la valeur du message d'erreur
159     * @param string $errorMessage Message d'erreur renvoyé par la classe MessageSenderSOAP
160     */
161     public function setErrorMessage($errorMessage){
162     $this->errorMessage = $errorMessage;
163     }
164    
165     /**
166     * Retourne le message d'erreur
167     * @return string Message d'erreur
168     */
169     public function getErrorMessage(){
170     return $this->errorMessage;
171     }
172    
173     /**
174 softime 2715 * Remplit la liste des contraintes récupérées de la base de données
175     */
176     public function setListContraintesBDD() {
177    
178     // Initialisation résultat
179     $resultArray = array();
180    
181     // Requête SQL
182     $sql = "SELECT numero
183     FROM ".DB_PREFIXE."contrainte
184     WHERE reference = 't'
185     AND om_validite_fin IS NULL";
186     $this->f->addToLog("getListContraintes() : db->query(\"".$sql."\")", VERBOSE_MODE);
187     $res = $this->f->db->query($sql);
188     $this->f->isDatabaseError($res);
189    
190     // Tableau des résultats
191     while ($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
192     $resultArray[] = $row['numero'];
193     }
194    
195     //
196     $this->listContraintesBDD = $resultArray;
197     }
198    
199     /**
200     * Retourne la liste des contraintes récupérées de la base données
201     * @return array
202     */
203     public function getListContraintesBDD() {
204     //
205     return $this->listContraintesBDD;
206     }
207    
208     /**
209     * Remplit la liste des contraintes récupérées du SIG
210     * (seulement les identifiants)
211     */
212     public function setListContraintesSIGIdContrainte() {
213    
214     // Pour chaque contraintes récupérées
215     foreach ($this->getListContraintesSIG() as $key => $contrainte) {
216     // Met l'identifiant de la contrainte dans la liste
217     $this->listContraintesSIGIdContrainte[] = $contrainte['idContrainte'];
218     }
219     }
220    
221     /**
222     * Retourne la liste des contraintes récupérées du SIG
223     * (seulement les identifiants)
224     * @return array
225     */
226     public function getListContraintesSIGIdContrainte() {
227     //
228     return $this->listContraintesSIGIdContrainte;
229     }
230    
231     /**
232     * Remplit la liste des contraintes "à ajouter"
233     */
234     public function setListContraintesAdd() {
235    
236     // Pour chaque contraintes récupérées
237     foreach ($this->listContraintesSIG as $key => $contrainte) {
238     // Si la contrainte n'est pas dans la liste des contraintes de
239     // la base de données
240     if (!in_array($contrainte['idContrainte'], $this->listContraintesBDD)) {
241     // Met la contrainte dans la liste des "à ajouter"
242     $this->listContraintesAdd[] = $contrainte;
243     }
244     }
245     }
246    
247     /**
248     * Retourne la liste des contraintes "à ajouter"
249     * @return array
250     */
251     public function getListContraintesAdd() {
252     //
253     return $this->listContraintesAdd;
254     }
255    
256     /**
257     * Ajoute les contraintes de la liste listContraintesAdd
258     * @return boolean
259     */
260     public function addContraintes() {
261     //
262     $return = true;
263     // Pour chaque contrainte "à ajouter"
264     foreach ($this->listContraintesAdd as $key => $contrainte) {
265     // Instancie la classe contrainte
266     require_once "../obj/contrainte.class.php";
267     $contrainteAdd = new contrainte("]", $this->f->db, DEBUG);
268     // Définit les valeurs
269     $val = array(
270     'contrainte' => ']',
271     'numero' => $contrainte['idContrainte'],
272     'nature' => 'PLU',
273     'groupe' => $contrainte['groupe'],
274     'sousgroupe' => $contrainte['ssgroupe'],
275     'libelle' => $contrainte['libelle'],
276     'reference' => true,
277     'texte' => null,
278     'no_ordre' => null,
279     'service_consulte' => false,
280     'om_validite_debut' => null,
281     'om_validite_fin' => null,
282     );
283     // Ajout de la contrainte
284     $ajouter = $contrainteAdd->ajouter($val, $this->f->db, DEBUG);
285     // Si la contrainte n'a pas été ajoutée
286     if ($ajouter == false) {
287     //
288     $return = false;
289     }
290     }
291    
292     //
293     return $return;
294     }
295    
296     /**
297     * Remplit la liste des contraintes "à modifier"
298     */
299     public function setListContraintesEdit() {
300    
301     // Pour chaque contraintes récupérées
302     foreach ($this->listContraintesSIG as $key => $contrainte) {
303     // Si la contrainte est dans la liste des contraintes de
304     // la base de données
305     if (in_array($contrainte['idContrainte'], $this->listContraintesBDD)) {
306     // Met la contrainte dans la liste des "à modifier"
307     $this->listContraintesEdit[] = $contrainte;
308     }
309     }
310     }
311    
312     /**
313     * Retourne la liste des contraintes "à modifier"
314     * @return array
315     */
316     public function getListContraintesEdit() {
317     //
318     return $this->listContraintesEdit;
319     }
320    
321     /**
322     * Modifie les contraintes la liste listContraintesEdit
323     * @return boolean
324     */
325     public function editContraintes() {
326     //
327     $return = true;
328     // Si la liste des contraintes "à modifier" n'est pas vide
329     if (!empty($this->listContraintesEdit)) {
330     // Pour chaque contrainte "à modifier"
331     foreach ($this->listContraintesEdit as $key => $contrainte) {
332     // Récupère l'identifiant de la contrainte de l'application
333     $contrainte['contrainte'] = $this->getContrainte($contrainte['idContrainte']);
334     // Instancie la classe contrainte
335     require_once "../obj/contrainte.class.php";
336     $contrainteEdit = new contrainte($contrainte['contrainte'], $this->f->db, DEBUG);
337     // Déclare le tableau des valeurs
338     $val = array();
339     // Récupération des valeurs
340     foreach($contrainteEdit->champs as $id => $champ) {
341     $val[$champ] = $contrainteEdit->val[$id];
342     }
343     // Modifie les valeurs qui peuvent avoir subit une modification
344     $val['groupe'] = $contrainte['groupe'];
345     $val['sousgroupe'] = $contrainte['ssgroupe'];
346     $val['libelle'] = $contrainte['libelle'];
347     // Modifie la contrainte
348     $modifier = $contrainteEdit->modifier($val, $this->f->db, DEBUG);
349     // Si la contrainte à été modifiée
350     if ($modifier == false) {
351     //
352     $return = false;
353     }
354     }
355     }
356     //
357     return $return;
358     }
359    
360     /**
361     * Remplit la liste des contraintes "à archiver"
362     */
363     public function setListContraintesArchive() {
364    
365     // Pour chaque contraintes de la base de données
366     foreach ($this->getListContraintesBDD() as $key => $contrainte) {
367     // Si la contrainte n'est pas dans la liste des contraintes récupérées
368     if (!in_array($contrainte, $this->getListContraintesSIGIdContrainte())) {
369     // Met la contrainte dans la liste des "à archiver"
370     $this->listContraintesArchive[] = $contrainte;
371     }
372     }
373     }
374    
375     /**
376     * Retourne la liste des contraintes "à archiver"
377     * @return array
378     */
379     public function getListContraintesArchive() {
380     //
381     return $this->listContraintesArchive;
382     }
383    
384     /**
385     * Archive les contraintes de la liste listContraintesArchive
386     * @return boolean
387     */
388     public function archiveContraintes() {
389     //
390     $return = true;
391     // Pour chaque contrainte "à archiver"
392     foreach ($this->getListContraintesArchive() as $key => $contrainte) {
393     // Récupère l'identifiant de la contrainte de l'application
394     $contrainteId = $this->getContrainte($contrainte);
395     // Instancie la classe contrainte
396     require_once "../obj/contrainte.class.php";
397     $contrainteArchive = new contrainte($contrainteId, $this->f->db, DEBUG);
398     // Déclare le tableau des valeurs
399     $val = array();
400     // Récupération des valeurs
401     foreach($contrainteArchive->champs as $id => $champ) {
402     $val[$champ] = $contrainteArchive->val[$id];
403     }
404     // Met la date de fin de validité au jour pour archiver
405     $val['om_validite_fin'] = date('d/m/Y');
406     // Modifie la contrainte
407     $archiver = $contrainteArchive->modifier($val, $this->f->db, DEBUG);
408     // Si la contrainte n'a pas été modifiée
409     if ($archiver == false) {
410     //
411     $return = false;
412     }
413     }
414     //
415     return $return;
416     }
417    
418     /**
419     * Récupère l'identifiant d'un ccontrainte par rapport à son numéro
420     * @param string $numero Identifiant unique de la contrainte sur le SIG
421     * @return integer Identifiant de la contrainte dans l'application
422     */
423     private function getContrainte($numero) {
424    
425     // Initialisation résultat
426     $contrainte = "";
427    
428     // Requête SQL
429     $sql = "SELECT contrainte
430     FROM ".DB_PREFIXE."contrainte
431     WHERE numero = '".$numero."'";
432     $this->f->addToLog("getContrainte() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
433     $contrainte = $this->f->db->getOne($sql);
434     $this->f->isDatabaseError($contrainte);
435    
436     // Retourne résultat
437     return $contrainte;
438     }
439     }
440    
441     ?>

Properties

Name Value
svn:executable *
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26