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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 776 - (hide annotations)
Tue Nov 20 16:07:32 2012 UTC (12 years, 2 months ago) by fmichon
File size: 6954 byte(s)
Règles de codage + Commentaires

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 fmichon 776 // on retrourne une erreur KO
91 fmichon 733 $this->setMessage("Erreur interne");
92     return $this->KO;
93    
94     // Appel aux méthodes de synchronisation des utilisateurs via l'annuaire
95     $results = $this->f->initSynchronization();
96     $this->f->synchronizeUsers($results);
97     return $this->OK;
98    
99 mlimic 515 }
100 fmichon 733
101     /**
102     * Cette méthode permet d'effectuer le traitement de gestion des avis
103     * tacites sur les consultations qui ont atteint leur date limite de
104     * retour.
105     *
106     * @param mixed $data Les données reçues dans la requête
107     * @return string Le résultat du traitement
108     *
109     * @todo XXX Traduire et commenter la méthode et voir si il est possible
110     * de la déplacer dans l'application
111 mlimic 537 */
112     public function updateConsultationsStates($data) {
113 fmichon 733
114 fmichon 767 // Nom de la table
115 mlimic 541 $table_name = 'consultation';
116 mlimic 537
117 fmichon 767 // Récupération de la liste des consultations correspondantes aux
118     // critères du traitement
119     $sql = "SELECT consultation FROM ".DB_PREFIXE."$table_name ";
120     $sql .= " WHERE date_limite < CURRENT_DATE" ;
121     $sql .= " AND date_retour IS NULL AND avis_consultation IS NULL ";
122 mlimic 537 $res = $this->db->query($sql);
123 fmichon 767 // Logger
124     $this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
125     //
126     if ($this->f->isDatabaseError($res, true)) {
127     $this->setMessage("Erreur de base de données.");
128 mlimic 537 return $this->KO;
129     }
130 fmichon 767
131 mlimic 537 $ids = array();
132     while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {
133     $ids[] = $row[0];
134     }
135     $res->free();
136    
137 fmichon 767 // Si aucune consultation n'est concernée par le traitement alors on
138     // ajoute un message d'informations et on retourne un résultat 'OK'
139 mlimic 537 if (count($ids) == 0) {
140 fmichon 767 $this->setMessage("Aucune mise à jour.");
141     return $this->OK;
142 mlimic 537 }
143 fmichon 767
144     // Récupération de la référence vers un avis_consultation correspondant
145     // au libellé 'Tacite'
146     $sql = "SELECT avis_consultation FROM ".DB_PREFIXE."avis_consultation ";
147     $sql .= " WHERE libelle = 'Tacite'";
148 mlimic 537 $res = $this->db->query($sql);
149 fmichon 767 // Logger
150     $this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
151     //
152     if ($this->f->isDatabaseError($res, true)) {
153     $this->setMessage("Erreur de base de données.");
154 mlimic 537 return $this->KO;
155     }
156 mlimic 540
157 mlimic 537 $favorable = -1;
158     while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {
159     $favorable = $row[0];
160     }
161     $res->free();
162    
163     // if we did not find the evaluation 'Favorable', return error
164     if ($favorable < 0) {
165 mlimic 541 $this->setMessage("'Favorable' n'est pas présent ".
166     "dans la columne : avis_consultation.libelle");
167 mlimic 537 return $this->KO;
168     }
169 mlimic 540
170 mlimic 537 // update the consultation table to set the 'Favorable' evaluation for
171     // the pertinent consultations
172     $fields = array('avis_consultation' => $favorable);
173 fmichon 767 $res = $this->db->autoExecute(DB_PREFIXE.$table_name, $fields,
174     DB_AUTOQUERY_UPDATE,
175     'consultation IN ('.implode(',', $ids).')');
176     // Logger
177     $this->addToLog("updateConsultationsStates(): db->autoExecute(\"".DB_PREFIXE.$table_name."\", ".print_r($fields, true).", DB_AUTOQUERY_UPDATE, \"consultation IN (\"".implode(',', $ids)."\")", VERBOSE_MODE);
178     //
179     if ($this->f->isDatabaseError($res, true)) {
180     $this->setMessage("Erreur de base de données.");
181 mlimic 537 return $this->KO;
182     }
183 mlimic 540
184     // $res->getDebugInfo(), $res->getMessage()
185 mlimic 541 $this->setMessage('Il y a eu '.count($ids).' demandes de consultations dont '.
186     'l\'avis été passé à Tacite');
187 mlimic 540 return $this->OK;
188 fmichon 733
189 mlimic 537 }
190 mlimic 540
191 mlimic 515 }
192    
193     ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26