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

Diff of /trunk/services/metier/metiermanager.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 740 by fmichon, Mon Nov 19 10:10:42 2012 UTC revision 780 by fmichon, Tue Nov 20 16:37:20 2012 UTC
# Line 25  class MetierManager { Line 25  class MetierManager {
25      var $NA = 'NA'; // not apllicable      var $NA = 'NA'; // not apllicable
26      var $BAD_DATA = 'BAD_DATA';      var $BAD_DATA = 'BAD_DATA';
27      var $DEBUG = 0;      var $DEBUG = 0;
28        /**#@-*/
29    
30      /**      /**
31       * Constructeur       * Constructeur
32       *       *
33       * Sets 'collectivite', and 'login' in the $_SESSION.       * Attribue les valeurs au $_SESSION['collectivite'] et $_SESSION['login']
34       * @todo The value stored in the $_SESSION['collectivite'] needs to       * @todo La valeur stockee dans $_SESSION['collectivite'] doit etre
35       * be obtained rather than hardcoded.       * obtenue plutot que code en dur.
36       * @todo The value stored in the $_SESSION['login'] could be obtained       * @todo La valeur stockee dans $_SESSION['login'] doit etre
37       * rather than being hardcoded to "somelogin".       * obtenue plutot que code en dur.
38       * @uses utils Uses the obj/utils.class.php to establish a DB connection.       * @uses utils Utilise obj/utils.class.php pour etablir une connexion BD
39       * @uses application::connectDatabase() In this function the execution       * @uses application::connectDatabase() Dans cette fonction l'execution
40       * could terminate if the connection to DB cannot be established. The       * pourrait s'terminer si la connexion avec BD echuait. Pour empecher
41       * important thing to prevent this is to set the $_SESSION['login'] to       * que cela se produise, on mit $_SESSION['login'] a une valeur qui est
42       * value that is not empty and that is bogus.       * pas vide est qui donne l'utilisateur tout le droit necessaire.
43       */       */
44      protected function __construct() {      public function __construct() {
45    
46            // Logger
47            $this->addToLog("__construct(): start", EXTRA_VERBOSE_MODE);
48    
49          //          //
50          session_start();          session_start();
51          // Setter les variables de $_SESSION pour la connexion avec BD          // Setter les variables de $_SESSION pour la connexion avec BD
52          $_SESSION['collectivite'] = 1;          $_SESSION['collectivite'] = 1;
53          // login has to be set to some value, i.e. it must not be empty,          // login doit etre mis a une valeur qui n'est pas une chaine vide, et
54          // and $_SESSION['justlogin'] MUST NOT be set, otherwise          // le $_SESSION['justlogin'] NE DOIT PAS ETRE set pour que l'execution
55          // isAuthenticated() inside of om_application will fail, and the          // ne s'arrete pas dans la fonction isAuthenticated() de l'om_application
         // the script will stop executing  
56          $_SESSION['login'] = "admin";          $_SESSION['login'] = "admin";
57    
58          // Genere une connexion a la base de donnees          // Genere une connexion a la base de donnees
59          $this->f = new utils("nohtml");          $this->f = new utils("nohtml");
60    
61          // save the reference to DB          // sauvegarde la reference au BD
62          $this->db = $this->f->db;          $this->db = $this->f->db;
63    
64          //          // initialise le msg attribute qui est utilise pour stocker les
65            // messages de retour (reussite ou erreur)
66          $this->msg = '';          $this->msg = '';
67    
68            // Logger
69            $this->addToLog("__construct(): end", EXTRA_VERBOSE_MODE);
70    
71      }      }
72    
73      /*      /*
# Line 69  class MetierManager { Line 77  class MetierManager {
77       * Unsets in the $_SESSION the key=>value pairs that were set in       * Unsets in the $_SESSION the key=>value pairs that were set in
78       * the constructor.       * the constructor.
79       */       */
80      protected function __destruct() {      public function __destruct() {
81    
82            // Logger
83            $this->addToLog("__destruct(): start", EXTRA_VERBOSE_MODE);
84    
85          //          //
86          unset($this->f);          unset($this->f);
# Line 77  class MetierManager { Line 88  class MetierManager {
88          //          //
89          unset($_SESSION['login']);          unset($_SESSION['login']);
90          unset($_SESSION['collectivite']);          unset($_SESSION['collectivite']);
91    
92            // Logger
93            $this->addToLog("__destruct(): end", EXTRA_VERBOSE_MODE);
94    
95            // Mode DEBUG
96            // logger::instance()->writeLogToFile();
97    
98      }      }
99    
100      /*      /*
101       * Executes the insertion of a record into DB by calling the       * Fait l'insertion d'un redord dans la BD par l'appel de la methode
102       * dbform::ajouter() method.       * dbform::ajouter().
103       *       *
104       * Precondition: $this->metier_instance is not null.       * Precondition: $this->metier_instance n'est pas NULL.
105       *       *
106       * @uses dbform::ajouter() The method that does insertion of data       * @uses dbform::ajouter() La methode qui fait l'insertion dans la BD.
107       * into a DB       * @param mixed $data Tableau qui contient les donnees a ajouter dans la BD
108       * @return string Returns 'OK' on success, error message set by the       * @param string $msg_OK Le message a retourner en cas de success
109       * application (if it was set), a generic error message otherwise.       * @param string $msg_KO Le message a retourner en cas de echec
110         * @return string En cas de success on retourne 'OK'. En cas d'erreur
111         * on retourne le message d'erreur stocke dans l'atribut $msg, si l'atribut
112         * $msg n'est pas vide, ou un message d'erreur generique si $msg est vide.
113       */       */
114      protected function ajouter(&$data, $msg_OK = null, $msg_KO = null) {      protected function ajouter(&$data, $msg_OK = null, $msg_KO = null) {
115          // essai d'ajout des donnees dans la base de donnees          // essai d'ajout des donnees dans la base de donnees
# Line 96  class MetierManager { Line 117  class MetierManager {
117          if ($this->metier_instance->correct == false) {          if ($this->metier_instance->correct == false) {
118              if (isset($this->metier_instance->msg)              if (isset($this->metier_instance->msg)
119                  && !empty($this->metier_instance->msg)) {                  && !empty($this->metier_instance->msg)) {
120                  $this->setMessage($this->filterOutHtmlTags(                  $this->setMessage($this->filtreBalisesHtml(
121                                      $this->metier_instance->msg));                                      $this->metier_instance->msg));
122                  return $this->KO;                  return $this->KO;
123              }              }
# Line 115  class MetierManager { Line 136  class MetierManager {
136    
137    
138      /*      /*
139       * Executes the update of a record in DB by calling the       * Fait l'insertion d'un redord dans la BD par l'appel de la methode
140       * dbform::modifier() method.       * dbform::modifier() method.
141       *       *
142       * Precondition: $this->metier_instance is not null.       * Precondition: $this->metier_instance n'est pas NULL.
143       *       *
144       * @uses dbform::modifier() The method that does insertion of data       * @uses dbform::modifier() La methode qui fait la modification des
145       * into a DB       * donnees dans la BD.
146       * @return string Returns 'OK' on success, error message set by the       * @param mixed $data Tableau qui contient les donnees a modifier dans la BD
147       * application (if it was set), a generic error message otherwise.       * @param string $msg_OK Le message a retourner en cas de success
148         * @param string $msg_KO Le message a retourner en cas de echec
149         * @return string Retourne 'OK' en reussite, une message d'erreur en
150         * cas d'echec si le message d'erreur etait stocke dans $this->msg, ou
151         * un message d'erreur generique autrement.
152       */           */    
153      protected function modifier($data, $msg_OK = null, $msg_KO = null) {      protected function modifier($data, $msg_OK = null, $msg_KO = null) {
154          // essai de la modification des donnees dans la base de donnees          // essai de la modification des donnees dans la base de donnees
# Line 131  class MetierManager { Line 156  class MetierManager {
156          if ($this->metier_instance->correct == false) {          if ($this->metier_instance->correct == false) {
157              if (isset($this->metier_instance->msg)              if (isset($this->metier_instance->msg)
158                  && !empty($this->metier_instance->msg)) {                  && !empty($this->metier_instance->msg)) {
159                  $this->setMessage($this->filterOutHtmlTags(                  $this->setMessage($this->filtreBalisesHtml(
160                                      $this->metier_instance->msg));                                      $this->metier_instance->msg));
161                  return $this->KO;                  return $this->KO;
162              }              }
# Line 149  class MetierManager { Line 174  class MetierManager {
174    
175    
176      /*      /*
177       * Executes the insertion of a record into DB by calling the       * Fait la suppression d'un redord dans la BD par l'appel de la methode
178       * dbform::supprimer() method.       * dbform::supprimer() method.
179       *       *
180       * Precondition: $this->metier_instance is not null.       * Precondition: $this->metier_instance n'est pas NULL.
181       *       *
182       * @uses dbform::supprimer() The method that does insertion of data       * @uses dbform::supprimer() La methode qui fait la suppression des
183       * into a DB       * donnees dans la BD.
184       * @return string Returns 'OK' on success, error message set by the       * @param mixed $data Tableau qui contient les donnees a modifier dans la BD
185       * application (if it was set), a generic error message otherwise.       * @param string $msg_OK Le message a retourner en cas de success
186         * @param string $msg_KO Le message a retourner en cas de echec     *
187         * @return string Retourne 'OK' en reussite, une message d'erreur en
188         * cas d'echec si le message d'erreur etait stocke dans $this->msg, ou
189         * un message d'erreur generique autrement.
190       */       */
191      protected function supprimer(&$data) {      protected function supprimer(&$data, $msg_OK, $msg_KO) {
192          // essai de la suppression des donnes dans la base de donnees          // essai de la suppression des donnes dans la base de donnees
193          $this->metier_instance->supprimer($data, $this->db, $this->DEBUG);          $this->metier_instance->supprimer($data, $this->db, $this->DEBUG);
194          if ($this->metier_instance->correct == false) {          if ($this->metier_instance->correct == false) {
195              if (isset($this->metier_instance->msg)              if (isset($this->metier_instance->msg)
196                  && !empty($this->metier_instance->msg)) {                  && !empty($this->metier_instance->msg)) {
197                  $this->setMessage($this->filterOutHtmlTags(                  $this->setMessage($this->filtreBalisesHtml(
198                                      $this->metier_instance->msg));                                      $this->metier_instance->msg));
199                  return $this->KO;                  return $this->KO;
200              }              }
201              $this->setMessage($msg_KO);              $this->setMessage($msg_KO);
202              return $this->KO;              return $this->KO;
203          }          }
204          // now check for any DB errors          // verifie que il n'y a pas eu des erreurs de la BD
205          if (isset($this->metier_instance->errors['db_debuginfo'])) {          if (isset($this->metier_instance->errors['db_debuginfo'])) {
206              $this->setMessage($msg_KO);              $this->setMessage($msg_KO);
207              return $this->KO;                          return $this->KO;            
# Line 182  class MetierManager { Line 211  class MetierManager {
211      }      }
212    
213      /*      /*
214       * Formats error and debug info messages created on DB failure.       * Attribue une valeur au attribute $msg de la classe. Utilise dans le
215       * @param string $debuginfo The debug info returned from DB connection.       * retour d'une demande arrive par l'inteface REST
216       * @param string $message The message returned from the failed DB attempt.       * @param string $msg The chaine des caracteres a stocker dans
217       * @return string Formatted error message.       * l'attribute msg.
      */  
     protected function formatDBerror($debuginfo, $message) {  
         return "DEBUG INFO: ".$debuginfo."              DEBUG MESSAGE: ".$message;  
     }  
       
       
     /*  
      * Sets the $msg attribute. Usefult for returning a message supplementary  
      * to the one associated with the return code.  
      * @param string $msg The message.  
218       */       */
219      protected function setMessage($msg) {      protected function setMessage($msg) {
220          if ($msg) {          if ($msg) {
# Line 205  class MetierManager { Line 224  class MetierManager {
224    
225            
226      /*      /*
227       * Returns the string stored in $msg attribute       * Retourne le chaine des caracteres stocke dans l'attribut $msg
228       * @return string The value of $this->msg.       * @return string La valeur de $this->msg.
229       */       */
230      public function getMessage() {      public function getMessage() {
231          return $this->msg;          return $this->msg;
232      }      }
233    
       
234      /*      /*
235       * Verifies the result object returned from a DB query for any       * Ajoute une chaine des caracteres dans le log.
236       * errors. If there was a DB error, the error message is stored       * @param string $message Le message qui doit etre ajoute dans le log.
237       * in the $msg attribute.       * @param string $type Le mode de log.
238       * @param object $result DB result object.       * @todo Qu'est ce que on va faire avec des messages d'erreur de la BD si
239       * @param string $msg The prefix to the constructed DB error message.       * le traitement etait initie par une demande arrivee par REST ?
      * @return bool True on DB error, false otherwise.  
      */  
     protected function checkDBError($result, $msg = '') {  
         if (database::isError($result, true)) {  
             $this->addToLog("Error: $msg ".  
                     $this->formatDBerror($result->getDebugInfo(),  
                     $result->getMessage()));  
             $this->setMessage('ERREUR DE LA BD : '. $msg);  
             return true;  
         }  
         return false;  
     }  
       
       
     /*  
      * Adds errors to log  
      * @param string $message The message to add to log  
      * @param string $type The logging mode  
      * @todo what do we do with DB error messages if a REST call is made  
240       */       */
241      function addToLog($message, $type = DEBUG_MODE) {      function addToLog($message, $type = DEBUG_MODE) {
242          //          //
243          if (!defined('REST_REQUEST')) {          logger::instance()->log("class ".get_class($this)." - ".$message, $type);
             logger::instance()->log("class ".get_class($this)." - ".$message, $type);  
         }  
244      }      }
245    
246        // {{{
247    
248        /**
249         * Le principe de cette méthode est de récupérer la valeur de la clé
250         * primaire de l'instance de l'objet métier.
251         */
252        protected function getMetierInstanceValForPrimaryKey() {
253    
254            //
255            return $this->getMetierInstanceValForField($this->metier_instance->clePrimaire);
256    
257        }
258    
259        /**
260         * Le principe de cette méthode est de récupérer la valeur du field passé
261         * en paramètre dans l'attribut 'val' de l'instance de l'objet métier.
262         *
263         * @param string $field Nom du champ  à récupérer
264         */
265        protected function getMetierInstanceValForField($field) {
266    
267            // Si l'objet métier n'a pas été instancié alors on retourne NULL
268            if ($this->metier_instance == NULL) {
269                return NULL;
270            }
271            // On récupère la clé de la valeur '$field' dans l'attribut 'champs' de
272            // l'objet
273            $key = array_search($field,
274                                $this->metier_instance->champs);
275            // Si la clé n'est pas présente dans le tableau alors on retourne NULL
276            if (is_null($key) || $key === false) {
277                return NULL;
278            }
279            // Si on ne retrouve pas la clé dans l'attribut 'val' de l'objet alors
280            // on retour NULL
281            if (!isset($this->metier_instance->val[$key])) {
282                return NULL;
283            }
284            // Logger
285            $this->addToLog("getMetierInstanceValForField(): \$field = \"".$field."\" ; return ".$this->metier_instance->val[$key].";", EXTRA_VERBOSE_MODE);
286            // On retourne la valeur du champ représentant la clé primaire
287            return $this->metier_instance->val[$key];
288    
289        }
290    
291        // }}}
292    
293      // {{{ METHODES UTILITAIRES      // {{{ METHODES UTILITAIRES
294    
# Line 258  class MetierManager { Line 301  class MetierManager {
301       * @param string $var The string from which to filter out the HTML tags.       * @param string $var The string from which to filter out the HTML tags.
302       * @return string Returns $var without the HTML tags.       * @return string Returns $var without the HTML tags.
303       */       */
304      private function filterOutHtmlTags($var) {      private function filtreBalisesHtml($var) {
305          $pattern = '/<[\/]*[\sa-zA-Z0-9="]*[\/]*>/';          $pattern = '/<[\/]*[\sa-zA-Z0-9="]*[\/]*>/';
306          $replacement = '';          $replacement = '';
307          return preg_replace($pattern, $replacement, $var);          return preg_replace($pattern, $replacement, $var);
# Line 300  class MetierManager { Line 343  class MetierManager {
343    
344      /**      /**
345       * Cette méthode vérife la validité d'un timestamp       * Cette méthode vérife la validité d'un timestamp
346         * @param string $date_str Chaine des chracteres contenant le datestamp
347         * dans la forme JJ/MM/YYYY H:MI"
348         * @param string $date_db Parametre de sortie. Il contient la date dans le
349         * format de BD timestamp: 'YYYY-MM-JJ hh:mm'
350         * @param bool $time_search Indicated wheather hours and minutes should be
351         * searched for in the $date_str or not
352         * @return True if the timestamp is valid, false otherwise.
353       */       */
354      protected function timestampValid($date_str, &$date_db, $time_search = false) {      protected function timestampValide($date_str, &$date_db, $time_search = false) {
355          $date_db = null;          $date_db = null;
356          // check that the date is valid          // check that the date is valid
357          $date_time = explode(" ", $date_str);          $date_time = explode(" ", $date_str);
# Line 344  class MetierManager { Line 394  class MetierManager {
394      }      }
395    
396      // }}}      // }}}
397        
398  }  }
399    
400  ?>  ?>

Legend:
Removed from v.740  
changed lines
  Added in v.780

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26