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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4099 - (hide annotations)
Tue May 10 14:20:09 2016 UTC (8 years, 8 months ago) by nhaye
File size: 21791 byte(s)
Merge du developpement de la branche synchro_contraintes_commune

1 mbroquet 3730 <?php
2     /**
3     * Contient la classe SynchronisationContrainte
4     *
5     * @package openfoncier
6     * @version SVN : $Id: synchronisationContrainte.class.php 6066 2016-03-01 11:11:26Z nhaye $
7     */
8 nhaye 4099 require_once "../obj/geoads.class.php";
9 mbroquet 3730 /**
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 nhaye 4099 * Définition des cas d'utilisation
22     * cas 1 : utilisateur mono / synchro mono
23     * cas 2 : utilisateur mono / synchro multi
24     * cas 3 : utilisateur multi / synchro mono
25     * cas 4 : utilisateur multi / synchro multi
26     * @var String
27 mbroquet 3730 */
28 nhaye 4099 var $usecase;
29 mbroquet 3730 /**
30     * Liste des contraintes récupérées du SIG
31     * @var array
32     */
33     var $listContraintesSIG = array();
34     /**
35     * Liste des contraintes de la base de données
36     * @var array
37     */
38     var $listContraintesBDD = array();
39     /**
40     * Liste des contraintes "à archiver"
41     * @var array
42     */
43     var $listContraintesArchive = array();
44     /**
45     * Liste des contraintes "à ajouter"
46     * @var array
47     */
48     var $listContraintesAdd = array();
49     /**
50     * Liste des contraintes "à modifier"
51     * @var array
52     */
53     var $listContraintesEdit = array();
54     /**
55     * Liste des contraintes récupérées du SIG (seulement l'identifiant)
56     * @var array
57     */
58     var $listContraintesSIGIdContrainte = array();
59     /**
60     * Code HTTP de la réponse SOAP
61     * @var string
62     */
63     var $responseHTTP = null;
64     /**
65     * Message d'erreur de la réponse SOAP
66     * @var string
67     */
68     var $errorMessage = null;
69    
70     /**
71     * Constructeur
72     * @param object $f Instance de la classe Utils
73     */
74 nhaye 4099 public function __construct($f) {
75 mbroquet 3730 // Initialise $this->f
76     $this->f = $f;
77     // Permet lors de l'instantiation d'objets métiers d'avoir accès à f
78     $GLOBALS['f'] = $this->f;
79    
80 nhaye 4099 // Vérificationdu paramètre obligatoire du mode de traitement des contraintes
81     if(isset($this->f->collectivite["sig"]) !== true
82     and (
83     $this->f->collectivite["sig"]["sig_treatment_mod"] != "mono"
84     or $this->f->collectivite["sig"]["sig_treatment_mod"] != "multi")
85     ) {
86     $this->correct = false;
87     // Si pas défini on retourn une erreur
88     $this->f->displayMessage('error', _("Erreur de paramétrage.")." "._("Veuillez contacter votre administrateur."));
89     return false;
90     }
91    
92     // Récupération de l'id de la collectivité de l'utilisateur
93     $user_idx_collectivite = $_SESSION['collectivite'];
94     // Récupération de l'id de la collectivité multi
95     $idx_multi = $this->f->get_idx_collectivite_multi();
96     // Définition des cas d'utilisation
97     // cas 1 : utilisateur mono / synchro mono -> user_mono_sync_mono
98     // cas 2 : utilisateur mono / synchro multi -> user_mono_sync_multi
99     // cas 3 : utilisateur multi / synchro mono -> user_multi_sync_mono
100     // cas 4 : utilisateur multi / synchro multi -> user_multi_sync_multi
101     if($user_idx_collectivite != $idx_multi) {
102     $this->usecase = "user_mono";
103     } else {
104     $this->usecase = "user_multi";
105     }
106     $this->usecase .= "_sync_".$this->f->collectivite["sig"]["sig_treatment_mod"];
107    
108     // Si le formulaire est validé
109     if ($f->get_submitted_post_value('valider') !== null) {
110     // On lance le traitement de synchro
111     $this->constraint_sync_treatment();
112     }
113     // Affichage du formulaire (bouton de validation)
114     $this->view_form_sync();
115 mbroquet 3730 }
116    
117     /**
118     * Destructeur
119     */
120     public function __destruct() {
121     // Détruit l'instance de la classe Utils
122     // unset($this->f);
123     // // Détruis l'accès à la classe Utils
124     // unset($GLOBALS['f']);
125     }
126    
127 nhaye 4099 public function view_form_sync() {
128    
129     // Vérification du cas impossible : Administrateur mono / synchro multi
130     if($this->usecase === "user_mono_sync_multi") {
131     $this->f->displayMessage('error', _("Vous n'avez pas les droits nécessaires pour effectuer cette action."));
132     return false;
133     }
134    
135     // Ouverture du formulaire
136     printf("<form method=\"POST\" action=\"contrainte_synchronisation.php\" name=f2>");
137    
138     printf('<input type="hidden" name="valider" id="valider" value="1" />');
139    
140     // Bouton "Synchroniser"
141     printf("<div class=\"formControls\">");
142     printf("<input id=\"button-contrainte-synchronisation-synchroniser\" type=\"submit\" "
143     ."class=\"om-button ui-button ui-widget ui-state-default ui-corner-all\" value=\""
144     ._("synchroniser").
145     "\" role=\"button\" aria-disabled=\"false\">");
146     printf("</div>");
147    
148     // Fermeture du formulaire
149     printf("</form>");
150     }
151    
152     public function constraint_sync_treatment() {
153    
154    
155     switch ($this->usecase) {
156    
157     case 'user_multi_sync_multi':
158     case 'user_mono_sync_mono':
159    
160     $collectivite = $this->f->getCollectivite($_SESSION['collectivite']);
161     $this->collectivite_constraint_sync($collectivite);
162     break;
163    
164     case 'user_multi_sync_mono':
165     $sql_liste_collectivite = "SELECT om_collectivite FROM ".DB_PREFIXE."om_collectivite WHERE niveau = '1' ORDER BY libelle";
166     $res_liste_collectivite = $this->f->db->query($sql_liste_collectivite);
167     $this->f->addToLog(
168     "app/contrainte_synchronisation.php: db->query(\"".$sql_liste_collectivite."\")",
169     VERBOSE_MODE
170     );
171     $this->f->isDatabaseError($res_liste_collectivite);
172     while ($row = $res_liste_collectivite->fetchRow(DB_FETCHMODE_ASSOC)) {
173    
174     $collectivite = $this->f->getCollectivite($row['om_collectivite']);
175     if(isset($collectivite['sig'])) {
176     $this->collectivite_constraint_sync($collectivite);
177     }
178     }
179     break;
180     default:
181     # code...
182     break;
183     }
184    
185     }
186    
187     private function collectivite_constraint_sync($collectivite) {
188    
189     $message = "";
190     // Instance geoads
191     $geoads = new geoads($collectivite);
192     // Intérogation du web service du SIG
193     $this->listContraintesSIG = $geoads->recup_toutes_contraintes($collectivite['insee']);
194     //
195     // Met à jour toutes les listes des contraintes
196     $this->setAllListContraintes($collectivite["om_collectivite_idx"]);
197     // Initilisation des variables
198     $error = false;
199     if(isset($collectivite["ville"]) === true) {
200     $message = "<span class='bold'>".$collectivite["ville"]."</span><br />";
201     }
202    
203     // Nombre de contrainte "à ajouter"
204     $nb_contrainte_add = count(
205     $this->getListContraintesAdd());
206     // S'il y a des contraintes "à ajouter"
207     if ($nb_contrainte_add > 0) {
208     // Ajoute les contraintes "à ajouter"
209     $ajouter = $this->addContraintes($collectivite["om_collectivite_idx"]);
210     // Si une erreur s'est produite
211     if ($ajouter == false) {
212     //
213     $error = true;
214     $message .= _("une erreur s'est produite lors de l'ajout des nouvelles contraintes.")." "._("Contactez votre administrateur")."<br />";
215     }
216     // S'il n'y a pas d'erreur
217     if ($ajouter == true) {
218     //
219     $message .= "<span class='bold'>".$nb_contrainte_add."</span>"." "
220     ._("contrainte(s) ajoutee(s).")."<br />";
221     }
222     } else {
223     //
224     $message .= _("Aucune contraintes a ajouter.")."<br />";
225     }
226    
227     // Nombre de contraintes "à modifier"
228     $nb_contrainte_edit = count(
229     $this->getListContraintesEdit());
230     // S'il y a des contraintes "à modifier"
231     if ($nb_contrainte_edit > 0) {
232     // Modifie les contraintes "à modifier"
233     $modifier = $this->editContraintes($collectivite["om_collectivite_idx"]);
234     // Si une erreur s'est produite
235     if ($modifier == false) {
236     //
237     $error = true;
238     $message .= _("une erreur s'est produite lors de la modification des contraintes.")." "._("Contactez votre administrateur")."<br />";
239     }
240     // S'il n'y a pas d'erreur
241     if ($modifier == true) {
242     //
243     $message .= "<span class='bold'>".$nb_contrainte_edit."</span>"." "
244     ._("contrainte(s) modifiee(s).")."<br />";
245     }
246     } else {
247     //
248     $message .= _("Aucune contraintes a modifier.")."<br />";
249     }
250    
251     // Nombre de contraintes "à archiver"
252     $nb_contrainte_archive = count(
253     $this->getListContraintesArchive());
254     // S'il y a des contraintes "à archiver"
255     if ($nb_contrainte_archive > 0) {
256     // Archive les contraintes "à archiver"
257     $archiver = $this->archiveContraintes();
258     // Si une erreur s'est produite
259     if ($archiver == false) {
260     //
261     $error = true;
262     $message .= _("une erreur s'est produite lors de l'archivage des contraintes.")
263     ." "._("Contactez votre administrateur")."<br />";
264     }
265     // S'il n'y a pas d'erreur
266     if ($archiver == true) {
267     //
268     $message .= "<span class='bold'>".$nb_contrainte_archive."</span>"." "
269     ._("contrainte(s) archivee(s).")."<br />";
270     }
271     } else {
272     //
273     $message .= _("Aucune contraintes a archiver.")."<br />";
274     }
275    
276     //
277     if ($error == false) {
278     //
279     $this->f->displayMessage('valid', $message);
280    
281     }
282    
283     // S'il y a une erreur
284     if ($error == true) {
285     //
286     $this->f->displayMessage('error', $message);
287     $this->f->addToLog("synchronisationContraintes(): ".$message, DEBUG_MODE);
288     }
289    
290     }
291    
292 mbroquet 3730 /**
293     * Remplit toutes les listes de contrainte
294     */
295 nhaye 4099 public function setAllListContraintes($collectivite_idx) {
296 mbroquet 3730 //
297 nhaye 4099 $this->setListContraintesBDD($collectivite_idx);
298 mbroquet 3730 //
299     $this->setListContraintesAdd();
300     //
301     $this->setListContraintesEdit();
302     //
303     $this->setListContraintesSIGIdContrainte();
304     //
305     $this->setListContraintesArchive();
306     }
307    
308     /**
309     * Retourne la list des contraintes récupérées du SIG
310     * @return array Liste des contraintes
311     */
312     public function getListContraintesSIG() {
313     //
314     return $this->listContraintesSIG;
315     }
316    
317     /**
318     * Remplit la valeur de la réponse HTTP
319     * @param string $responseHTTP Réponse HTTP de la classe MessageSenderSOAP
320     */
321     private function setResponseHTTP($responseHTTP) {
322     //
323     $this->responseHTTP = $responseHTTP;
324     }
325    
326     /**
327     * Retourne le code réponse HTTP
328     * @return string Code réponse HTTP
329     */
330     public function getResponseHTTP() {
331     //
332     return $this->responseHTTP;
333     }
334    
335     /**
336     * Remplit la valeur du message d'erreur
337     * @param string $errorMessage Message d'erreur renvoyé par la classe MessageSenderSOAP
338     */
339     public function setErrorMessage($errorMessage){
340     $this->errorMessage = $errorMessage;
341     }
342    
343     /**
344     * Retourne le message d'erreur
345     * @return string Message d'erreur
346     */
347     public function getErrorMessage(){
348     return $this->errorMessage;
349     }
350    
351     /**
352 nhaye 4099 * Remplit la liste des contraintes récupérées de la base de données.
353     *
354     * @param integer $collectivite_idx identifiant de la collectivité
355 mbroquet 3730 */
356 nhaye 4099 public function setListContraintesBDD($collectivite_idx) {
357 mbroquet 3730
358     // Initialisation résultat
359     $resultArray = array();
360    
361     // Requête SQL
362     $sql = "SELECT numero
363     FROM ".DB_PREFIXE."contrainte
364     WHERE reference = 't'
365 nhaye 4099 AND om_validite_fin IS NULL
366     AND om_collectivite = ".$collectivite_idx;
367 mbroquet 3730 $this->f->addToLog("getListContraintes() : db->query(\"".$sql."\")", VERBOSE_MODE);
368     $res = $this->f->db->query($sql);
369     $this->f->isDatabaseError($res);
370    
371     // Tableau des résultats
372     while ($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
373     $resultArray[] = $row['numero'];
374     }
375    
376     //
377     $this->listContraintesBDD = $resultArray;
378     }
379    
380     /**
381     * Retourne la liste des contraintes récupérées de la base données
382     * @return array
383     */
384     public function getListContraintesBDD() {
385     //
386     return $this->listContraintesBDD;
387     }
388    
389     /**
390     * Remplit la liste des contraintes récupérées du SIG
391     * (seulement les identifiants)
392     */
393     public function setListContraintesSIGIdContrainte() {
394 nhaye 4099 $this->listContraintesSIGIdContrainte = array();
395 mbroquet 3730 // Pour chaque contraintes récupérées
396     foreach ($this->getListContraintesSIG() as $key => $contrainte) {
397     // Met l'identifiant de la contrainte dans la liste
398     $this->listContraintesSIGIdContrainte[] = $contrainte['contrainte'];
399     }
400     }
401    
402     /**
403     * Retourne la liste des contraintes récupérées du SIG
404     * (seulement les identifiants)
405     * @return array
406     */
407     public function getListContraintesSIGIdContrainte() {
408     //
409     return $this->listContraintesSIGIdContrainte;
410     }
411    
412     /**
413     * Remplit la liste des contraintes "à ajouter"
414     */
415     public function setListContraintesAdd() {
416 nhaye 4099 $this->listContraintesAdd = array();
417 mbroquet 3730 // Pour chaque contraintes récupérées
418     foreach ($this->listContraintesSIG as $key => $contrainte) {
419     // Si la contrainte n'est pas dans la liste des contraintes de
420     // la base de données
421     if (!in_array($contrainte['contrainte'], $this->listContraintesBDD)) {
422     // Met la contrainte dans la liste des "à ajouter"
423     $this->listContraintesAdd[] = $contrainte;
424     }
425     }
426     }
427    
428     /**
429     * Retourne la liste des contraintes "à ajouter"
430     * @return array
431     */
432     public function getListContraintesAdd() {
433     //
434     return $this->listContraintesAdd;
435     }
436    
437     /**
438     * Ajoute les contraintes de la liste listContraintesAdd
439     * @return boolean
440     */
441 nhaye 4099 public function addContraintes($collectivite_idx) {
442 mbroquet 3730 //
443     $return = true;
444     // Pour chaque contrainte "à ajouter"
445     foreach ($this->listContraintesAdd as $key => $contrainte) {
446     // Instancie la classe contrainte
447     require_once "../obj/contrainte.class.php";
448     $contrainteAdd = new contrainte("]", $this->f->db, DEBUG);
449     // Définit les valeurs
450     $val = array(
451     'contrainte' => ']',
452     'numero' => $contrainte['contrainte'],
453     'nature' => 'PLU',
454     'groupe' => $contrainte['groupe_contrainte'],
455     'sousgroupe' => (isset($contrainte['sous_groupe_contrainte']))?$contrainte['sous_groupe_contrainte']:"",
456     'libelle' => $contrainte['libelle'],
457     'reference' => true,
458     'texte' => null,
459     'no_ordre' => null,
460     'service_consulte' => false,
461 nhaye 4099 'om_collectivite' => $collectivite_idx,
462 mbroquet 3730 'om_validite_debut' => null,
463     'om_validite_fin' => null,
464     );
465     // Ajout de la contrainte
466     $ajouter = $contrainteAdd->ajouter($val, $this->f->db, DEBUG);
467     // Si la contrainte n'a pas été ajoutée
468     if ($ajouter == false) {
469     //
470     $return = false;
471     }
472     }
473    
474     //
475     return $return;
476     }
477    
478     /**
479     * Remplit la liste des contraintes "à modifier"
480     */
481     public function setListContraintesEdit() {
482 nhaye 4099 $this->listContraintesEdit = array();
483 mbroquet 3730 // Pour chaque contraintes récupérées
484     foreach ($this->listContraintesSIG as $key => $contrainte) {
485     // Si la contrainte est dans la liste des contraintes de
486     // la base de données
487     if (in_array($contrainte['contrainte'], $this->listContraintesBDD)) {
488     // Met la contrainte dans la liste des "à modifier"
489     $this->listContraintesEdit[] = $contrainte;
490     }
491     }
492     }
493    
494     /**
495     * Retourne la liste des contraintes "à modifier"
496     * @return array
497     */
498     public function getListContraintesEdit() {
499     //
500     return $this->listContraintesEdit;
501     }
502    
503     /**
504     * Modifie les contraintes la liste listContraintesEdit
505     * @return boolean
506     */
507     public function editContraintes() {
508     //
509     $return = true;
510     // Si la liste des contraintes "à modifier" n'est pas vide
511     if (!empty($this->listContraintesEdit)) {
512     // Pour chaque contrainte "à modifier"
513     foreach ($this->listContraintesEdit as $key => $contrainte) {
514     // Récupère l'identifiant de la contrainte de l'application
515     $contrainte['contrainte_bdd'] = $this->getContrainte($contrainte['contrainte']);
516     // Instancie la classe contrainte
517     require_once "../obj/contrainte.class.php";
518     $contrainteEdit = new contrainte($contrainte['contrainte_bdd'], $this->f->db, DEBUG);
519     // Déclare le tableau des valeurs
520     $val = array();
521     foreach ($contrainteEdit->champs as $key => $champ) {
522     $val[$champ] = $contrainteEdit->val[$key];
523     }
524     // Modifie les valeurs qui peuvent avoir subit une modification
525     $val['groupe'] = $contrainte['groupe_contrainte'];
526     $val['sousgroupe'] = (isset($contrainte['sous_groupe_contrainte']))?$contrainte['sous_groupe_contrainte']:"";
527     $val['libelle'] = $contrainte['libelle'];
528     // Modifie la contrainte
529     $modifier = $contrainteEdit->modifier($val, $this->f->db, DEBUG);
530     // Si la contrainte à été modifiée
531     if ($modifier == false) {
532     //
533     $return = false;
534     }
535     }
536     }
537     //
538     return $return;
539     }
540    
541     /**
542     * Remplit la liste des contraintes "à archiver"
543     */
544     public function setListContraintesArchive() {
545 nhaye 4099 $this->listContraintesArchive = array();
546 mbroquet 3730 // Pour chaque contraintes de la base de données
547     foreach ($this->getListContraintesBDD() as $key => $contrainte) {
548     // Si la contrainte n'est pas dans la liste des contraintes récupérées
549     if (!in_array($contrainte, $this->getListContraintesSIGIdContrainte())) {
550     // Met la contrainte dans la liste des "à archiver"
551     $this->listContraintesArchive[] = $contrainte;
552     }
553     }
554     }
555    
556     /**
557     * Retourne la liste des contraintes "à archiver"
558     * @return array
559     */
560     public function getListContraintesArchive() {
561     //
562     return $this->listContraintesArchive;
563     }
564    
565     /**
566     * Archive les contraintes de la liste listContraintesArchive
567     * @return boolean
568     */
569     public function archiveContraintes() {
570     //
571     $return = true;
572     // Pour chaque contrainte "à archiver"
573     foreach ($this->getListContraintesArchive() as $key => $contrainte) {
574     // Récupère l'identifiant de la contrainte de l'application
575     $contrainteId = $this->getContrainte($contrainte);
576     // Instancie la classe contrainte
577     require_once "../obj/contrainte.class.php";
578     $contrainteArchive = new contrainte($contrainteId, $this->f->db, DEBUG);
579     // Déclare le tableau des valeurs
580     $val = array();
581     // Récupération des valeurs
582     foreach($contrainteArchive->champs as $id => $champ) {
583     $val[$champ] = $contrainteArchive->val[$id];
584     }
585     // Met la date de fin de validité au jour pour archiver
586     $val['om_validite_fin'] = date('d/m/Y');
587     // Modifie la contrainte
588     $archiver = $contrainteArchive->modifier($val, $this->f->db, DEBUG);
589     // Si la contrainte n'a pas été modifiée
590     if ($archiver == false) {
591     //
592     $return = false;
593     }
594     }
595     //
596     return $return;
597     }
598    
599     /**
600     * Récupère l'identifiant d'un ccontrainte par rapport à son numéro
601     * @param string $numero Identifiant unique de la contrainte sur le SIG
602     * @return integer Identifiant de la contrainte dans l'application
603     */
604     private function getContrainte($numero) {
605    
606     // Initialisation résultat
607     $contrainte = "";
608    
609     // Requête SQL
610     $sql = "SELECT contrainte
611     FROM ".DB_PREFIXE."contrainte
612     WHERE numero = '".$numero."'";
613     $this->f->addToLog("getContrainte() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
614     $contrainte = $this->f->db->getOne($sql);
615     $this->f->isDatabaseError($contrainte);
616    
617     // Retourne résultat
618     return $contrainte;
619     }
620     }
621    
622 nhaye 4099 ?>

Properties

Name Value
svn:executable

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26