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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 778 - (hide annotations)
Tue Nov 20 16:14:25 2012 UTC (12 years, 2 months ago) by fmichon
File size: 6654 byte(s)
Suppression de la surcharge des méthodes __construct() et __destructu) inutiles

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     * Cette méthode permet de gérer l'appel aux différentes méthodes
34     * correspondantes au module appelé.
35 mlimic 522 *
36 fmichon 733 * @param string $module Le module à exécuter reçu dans la requête
37     * @param mixed $data Les données reçues dans la requête
38     * @return string Le résultat du traitement
39 mlimic 522 */
40 mlimic 526 public function performMaintenance($module, $data) {
41 fmichon 733
42     // Si le module n'existe pas dans la liste des modules disponibles
43     // alors on ajoute un message d'informations et on retourne un
44     // un résultat d'erreur
45 mlimic 515 if (!in_array($module, array_keys($this->fptrs))) {
46 fmichon 733 $this->setMessage("Le module demandé n'existe pas");
47     return $this->BAD_DATA;
48 mlimic 515 }
49 fmichon 733
50     // Si le module existe dans la liste des modules disponibles
51     // alors on appelle la méthode en question et on retourne son résultat
52     return call_user_func(array($this, $this->fptrs[$module]), $data);
53    
54 mlimic 515 }
55 fmichon 733
56     /**
57     * Cette méthode permet d'effectuer la synchronisation des utilisateurs
58     * de l'application avec l'annuaire LDAP paramétré dans l'application.
59 mlimic 522 *
60 fmichon 733 * @param mixed $data Les données reçues dans la requête
61     * @return string Le résultat du traitement
62     *
63     * @todo XXX Faire une getsion des erreurs dans om_application pour
64     * permettre d'avoir un retour sur le déroulement de la synchronisation
65 mlimic 522 */
66 mlimic 526 public function synchronizeUsers($data) {
67 fmichon 733
68     // La gestion des erreurs ne permet pas de savoir si tout s'est déroulé
69     // correctement ou non donc on renvoi un retour erreur en attendant
70 fmichon 776 // on retrourne une erreur KO
71 fmichon 733 $this->setMessage("Erreur interne");
72     return $this->KO;
73    
74     // Appel aux méthodes de synchronisation des utilisateurs via l'annuaire
75     $results = $this->f->initSynchronization();
76     $this->f->synchronizeUsers($results);
77     return $this->OK;
78    
79 mlimic 515 }
80 fmichon 733
81     /**
82     * Cette méthode permet d'effectuer le traitement de gestion des avis
83     * tacites sur les consultations qui ont atteint leur date limite de
84     * retour.
85     *
86     * @param mixed $data Les données reçues dans la requête
87     * @return string Le résultat du traitement
88     *
89     * @todo XXX Traduire et commenter la méthode et voir si il est possible
90     * de la déplacer dans l'application
91 mlimic 537 */
92     public function updateConsultationsStates($data) {
93 fmichon 733
94 fmichon 767 // Nom de la table
95 mlimic 541 $table_name = 'consultation';
96 mlimic 537
97 fmichon 767 // Récupération de la liste des consultations correspondantes aux
98     // critères du traitement
99     $sql = "SELECT consultation FROM ".DB_PREFIXE."$table_name ";
100     $sql .= " WHERE date_limite < CURRENT_DATE" ;
101     $sql .= " AND date_retour IS NULL AND avis_consultation IS NULL ";
102 mlimic 537 $res = $this->db->query($sql);
103 fmichon 767 // Logger
104     $this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
105     //
106     if ($this->f->isDatabaseError($res, true)) {
107     $this->setMessage("Erreur de base de données.");
108 mlimic 537 return $this->KO;
109     }
110 fmichon 767
111 mlimic 537 $ids = array();
112     while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {
113     $ids[] = $row[0];
114     }
115     $res->free();
116    
117 fmichon 767 // Si aucune consultation n'est concernée par le traitement alors on
118     // ajoute un message d'informations et on retourne un résultat 'OK'
119 mlimic 537 if (count($ids) == 0) {
120 fmichon 767 $this->setMessage("Aucune mise à jour.");
121     return $this->OK;
122 mlimic 537 }
123 fmichon 767
124     // Récupération de la référence vers un avis_consultation correspondant
125     // au libellé 'Tacite'
126     $sql = "SELECT avis_consultation FROM ".DB_PREFIXE."avis_consultation ";
127     $sql .= " WHERE libelle = 'Tacite'";
128 mlimic 537 $res = $this->db->query($sql);
129 fmichon 767 // Logger
130     $this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
131     //
132     if ($this->f->isDatabaseError($res, true)) {
133     $this->setMessage("Erreur de base de données.");
134 mlimic 537 return $this->KO;
135     }
136 mlimic 540
137 mlimic 537 $favorable = -1;
138     while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {
139     $favorable = $row[0];
140     }
141     $res->free();
142    
143     // if we did not find the evaluation 'Favorable', return error
144     if ($favorable < 0) {
145 mlimic 541 $this->setMessage("'Favorable' n'est pas présent ".
146     "dans la columne : avis_consultation.libelle");
147 mlimic 537 return $this->KO;
148     }
149 mlimic 540
150 mlimic 537 // update the consultation table to set the 'Favorable' evaluation for
151     // the pertinent consultations
152     $fields = array('avis_consultation' => $favorable);
153 fmichon 767 $res = $this->db->autoExecute(DB_PREFIXE.$table_name, $fields,
154     DB_AUTOQUERY_UPDATE,
155     'consultation IN ('.implode(',', $ids).')');
156     // Logger
157     $this->addToLog("updateConsultationsStates(): db->autoExecute(\"".DB_PREFIXE.$table_name."\", ".print_r($fields, true).", DB_AUTOQUERY_UPDATE, \"consultation IN (\"".implode(',', $ids)."\")", VERBOSE_MODE);
158     //
159     if ($this->f->isDatabaseError($res, true)) {
160     $this->setMessage("Erreur de base de données.");
161 mlimic 537 return $this->KO;
162     }
163 mlimic 540
164     // $res->getDebugInfo(), $res->getMessage()
165 mlimic 541 $this->setMessage('Il y a eu '.count($ids).' demandes de consultations dont '.
166     'l\'avis été passé à Tacite');
167 mlimic 540 return $this->OK;
168 fmichon 733
169 mlimic 537 }
170 mlimic 540
171 mlimic 515 }
172    
173     ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26