/[openfoncier]/trunk/services/metier/maintenancemanager.php
ViewVC logotype

Annotation of /trunk/services/metier/maintenancemanager.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 767 - (hide annotations)
Tue Nov 20 11:50:00 2012 UTC (12 years, 2 months ago) by fmichon
File size: 6916 byte(s)
Indentation, Optimisation et Commentaires + suppression de la méthode verifieResultatBD + Utilisation de la méthode addToLog + Ajout de logs sur les requêtes SQL

1 mlimic 515 <?php
2 fmichon 733 /**
3     * Ce fichier permet de déclarer la classe MaintenanceManager, qui effectue les
4     * traitements pour la ressource 'maintenance'.
5 mlimic 522 *
6 fmichon 733 * @package openfoncier
7     * @version SVN : $Id$
8 mlimic 522 */
9    
10 fmichon 733 // Inclusion de la classe de base MetierManager
11     require_once("./metier/metiermanager.php");
12 mlimic 515
13 fmichon 733 /**
14 fmichon 734 * Cette classe hérite de la classe MetierManager. Elle permet d'effectuer des
15     * traitements pour la ressource 'maintenance' qui ont vocation à être
16     * déclenché de manière automatique ou par une application externe. Par
17     * exemple, un cron permet chaque soir d'exécuter la synchronisation des
18     * utilisateurs de l'application avec l'annuaire LDAP.
19 fmichon 733 */
20 mlimic 515 class MaintenanceManager extends MetierManager {
21 fmichon 733
22     /**
23     * @var mixed Ce tableau permet d'associer un module a une méthode,
24     * le module (key) est celui reçu dans la requête REST, la méthode (value)
25     * est la méthode de cette classe qui va exécuter le traitement
26 mlimic 522 */
27 fmichon 733 var $fptrs = array(
28     'user' => 'synchronizeUsers',
29     'consultation' => 'updateConsultationsStates',
30     );
31    
32     /**
33     * Constructeur
34 mlimic 522 */
35 mlimic 526 public function __construct() {
36 fmichon 733
37     // Appel du constructeur parent
38 mlimic 515 parent::__construct();
39 fmichon 733
40 mlimic 515 }
41 mlimic 522
42 fmichon 733 /**
43     * Destructeur
44     */
45 mlimic 526 public function __destruct() {
46 fmichon 733
47     // Appel du destructeur parent
48 mlimic 515 parent::__destruct();
49 fmichon 733
50 mlimic 515 }
51 fmichon 733
52     /**
53     * Cette méthode permet de gérer l'appel aux différentes méthodes
54     * correspondantes au module appelé.
55 mlimic 522 *
56 fmichon 733 * @param string $module Le module à exécuter reçu dans la requête
57     * @param mixed $data Les données reçues dans la requête
58     * @return string Le résultat du traitement
59 mlimic 522 */
60 mlimic 526 public function performMaintenance($module, $data) {
61 fmichon 733
62     // Si le module n'existe pas dans la liste des modules disponibles
63     // alors on ajoute un message d'informations et on retourne un
64     // un résultat d'erreur
65 mlimic 515 if (!in_array($module, array_keys($this->fptrs))) {
66 fmichon 733 $this->setMessage("Le module demandé n'existe pas");
67     return $this->BAD_DATA;
68 mlimic 515 }
69 fmichon 733
70     // Si le module existe dans la liste des modules disponibles
71     // alors on appelle la méthode en question et on retourne son résultat
72     return call_user_func(array($this, $this->fptrs[$module]), $data);
73    
74 mlimic 515 }
75 fmichon 733
76     /**
77     * Cette méthode permet d'effectuer la synchronisation des utilisateurs
78     * de l'application avec l'annuaire LDAP paramétré dans l'application.
79 mlimic 522 *
80 fmichon 733 * @param mixed $data Les données reçues dans la requête
81     * @return string Le résultat du traitement
82     *
83     * @todo XXX Faire une getsion des erreurs dans om_application pour
84     * permettre d'avoir un retour sur le déroulement de la synchronisation
85 mlimic 522 */
86 mlimic 526 public function synchronizeUsers($data) {
87 fmichon 733
88     // La gestion des erreurs ne permet pas de savoir si tout s'est déroulé
89     // correctement ou non donc on renvoi un retour erreur en attendant
90     $this->setMessage("Erreur interne");
91     return $this->KO;
92    
93     // Appel aux méthodes de synchronisation des utilisateurs via l'annuaire
94     $results = $this->f->initSynchronization();
95     $this->f->synchronizeUsers($results);
96     return $this->OK;
97    
98 mlimic 515 }
99 fmichon 733
100     /**
101     * Cette méthode permet d'effectuer le traitement de gestion des avis
102     * tacites sur les consultations qui ont atteint leur date limite de
103     * retour.
104     *
105     * @param mixed $data Les données reçues dans la requête
106     * @return string Le résultat du traitement
107     *
108     * @todo XXX Traduire et commenter la méthode et voir si il est possible
109     * de la déplacer dans l'application
110 mlimic 537 */
111     public function updateConsultationsStates($data) {
112 fmichon 733
113 fmichon 767 // Nom de la table
114 mlimic 541 $table_name = 'consultation';
115 mlimic 537
116 fmichon 767 // Récupération de la liste des consultations correspondantes aux
117     // critères du traitement
118     $sql = "SELECT consultation FROM ".DB_PREFIXE."$table_name ";
119     $sql .= " WHERE date_limite < CURRENT_DATE" ;
120     $sql .= " AND date_retour IS NULL AND avis_consultation IS NULL ";
121 mlimic 537 $res = $this->db->query($sql);
122 fmichon 767 // Logger
123     $this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
124     //
125     if ($this->f->isDatabaseError($res, true)) {
126     $this->setMessage("Erreur de base de données.");
127 mlimic 537 return $this->KO;
128     }
129 fmichon 767
130 mlimic 537 $ids = array();
131     while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {
132     $ids[] = $row[0];
133     }
134     $res->free();
135    
136 fmichon 767 // Si aucune consultation n'est concernée par le traitement alors on
137     // ajoute un message d'informations et on retourne un résultat 'OK'
138 mlimic 537 if (count($ids) == 0) {
139 fmichon 767 $this->setMessage("Aucune mise à jour.");
140     return $this->OK;
141 mlimic 537 }
142 fmichon 767
143     // Récupération de la référence vers un avis_consultation correspondant
144     // au libellé 'Tacite'
145     $sql = "SELECT avis_consultation FROM ".DB_PREFIXE."avis_consultation ";
146     $sql .= " WHERE libelle = 'Tacite'";
147 mlimic 537 $res = $this->db->query($sql);
148 fmichon 767 // Logger
149     $this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
150     //
151     if ($this->f->isDatabaseError($res, true)) {
152     $this->setMessage("Erreur de base de données.");
153 mlimic 537 return $this->KO;
154     }
155 mlimic 540
156 mlimic 537 $favorable = -1;
157     while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {
158     $favorable = $row[0];
159     }
160     $res->free();
161    
162     // if we did not find the evaluation 'Favorable', return error
163     if ($favorable < 0) {
164 mlimic 541 $this->setMessage("'Favorable' n'est pas présent ".
165     "dans la columne : avis_consultation.libelle");
166 mlimic 537 return $this->KO;
167     }
168 mlimic 540
169 mlimic 537 // update the consultation table to set the 'Favorable' evaluation for
170     // the pertinent consultations
171     $fields = array('avis_consultation' => $favorable);
172 fmichon 767 $res = $this->db->autoExecute(DB_PREFIXE.$table_name, $fields,
173     DB_AUTOQUERY_UPDATE,
174     'consultation IN ('.implode(',', $ids).')');
175     // Logger
176     $this->addToLog("updateConsultationsStates(): db->autoExecute(\"".DB_PREFIXE.$table_name."\", ".print_r($fields, true).", DB_AUTOQUERY_UPDATE, \"consultation IN (\"".implode(',', $ids)."\")", VERBOSE_MODE);
177     //
178     if ($this->f->isDatabaseError($res, true)) {
179     $this->setMessage("Erreur de base de données.");
180 mlimic 537 return $this->KO;
181     }
182 mlimic 540
183     // $res->getDebugInfo(), $res->getMessage()
184 mlimic 541 $this->setMessage('Il y a eu '.count($ids).' demandes de consultations dont '.
185     'l\'avis été passé à Tacite');
186 mlimic 540 return $this->OK;
187 fmichon 733
188 mlimic 537 }
189 mlimic 540
190 mlimic 515 }
191    
192     ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26