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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 564 - (show annotations)
Wed Oct 31 12:23:19 2012 UTC (12 years, 3 months ago) by mlimic
File size: 8401 byte(s)
save of the consultation updates via rest, version I
1 <?php
2
3 /*
4 * The base class for all of the xxxManagers used for processing the
5 * received requests.
6 *
7 * @author: Mirna Limic <[email protected]>
8 *
9 * Date: 15/10/2012
10 * Follow-up:
11 * Bugs: Unknown
12 *
13 */
14
15
16
17 require_once ("../obj/utils.class.php");
18 require_once ("../obj/om_utilisateur.class.php");
19
20 class MetierManager {
21
22
23 /**#@+
24 * @access protected
25 * @var string
26 */
27 var $KO = 'KO';
28 var $OK = 'OK';
29 var $NA = 'NA'; // not apllicable
30 var $BAD_DATA = 'BAD_DATA';
31 var $DEBUG = 0;
32 var $GENERIC_ERROR = "Error during request processing";
33
34 /*
35 * Constructeur.
36 *
37 * Sets 'collectivite', and 'login' in the $_SESSION.
38 * @todo The value stored in the $_SESSION['collectivite'] needs to
39 * be obtained rather than hardcoded.
40 * @todo The value stored in the $_SESSION['login'] could be obtained
41 * rather than being hardcoded to "somelogin".
42 * @uses utils Uses the obj/utils.class.php to establish a DB connection.
43 * @uses application::connectDatabase() In this function the execution
44 * could terminate if the connection to DB cannot be established. The
45 * important thing to prevent this is to set the $_SESSION['login'] to
46 * value that is not empty and that is bogus.
47 */
48 protected function __construct() {
49 session_start();
50 // Setter les variables de $_SESSION pour la connexion avec BD
51 $_SESSION['collectivite'] = 1; // Arles
52 // login has to be set to some value, i.e. it must not be empty,
53 // and $_SESSION['justlogin'] MUST NOT be set, otherwise
54 // isAuthenticated() inside of om_application will fail, and the
55 // the script will stop executing
56 $_SESSION['login'] = "somelogin";
57 // Genere une connexion a la base de donnees
58 $this->f = new utils("nohtml");
59 // set the type of the DB to use
60 $this->f->db->phptype = 'pgsql';
61 // save the reference to DB
62 $this->db = $this->f->db;
63 $this->msg = '';
64 }// fin constructeur
65
66
67 /*
68 * Destructor
69 *
70 * Unsets the instance of the utils class.
71 * Unsets in the $_SESSION the key=>value pairs that were set in
72 * the constructor.
73 */
74 protected function __destruct() {
75 unset($this->f);
76 unset($_SESSION['login']);
77 unset($_SESSION['collectivite']);
78 }
79
80
81 /*
82 * Checks that the data received in the request is valid.
83 *
84 * To be overridden in the derived classes.
85 * @return bool Always return true.
86 */
87 protected function requestValid() {
88 // A etre implemente dans les classes derivees
89 return true;
90 }
91
92
93 /*
94 * Filters out the HTML tags from a string.
95 *
96 * @param string $var The string from which to filter out the HTML tags.
97 * @return string Returns $var without the HTML tags.
98 */
99 private function filterOutHtmlTags($var) {
100 $pattern = '/<[\/]*[\sa-zA-Z0-9="]*[\/]*>/';
101 $replacement = '';
102 return preg_replace($pattern, $replacement, $var);
103 }
104
105
106 /*
107 * Executes the insertion of a record into DB by calling the
108 * dbform::ajouter() method.
109 *
110 * Precondition: $this->metier_instance is not null.
111 *
112 * @uses dbform::ajouter() The method that does insertion of data
113 * into a DB
114 * @return string Returns 'OK' on success, error message set by the
115 * application (if it was set), a generic error message otherwise.
116 */
117 protected function ajouter(&$data) {
118 // essai d'ajout des donnees dans la base de donnees
119 $this->metier_instance->ajouter($data, $this->db, $this->DEBUG);
120 if ($this->metier_instance->correct == false) {
121 if (isset($this->metier_instance->msg)
122 && !empty($this->metier_instance->msg)) {
123 return $this->filterOutHtmlTags($this->metier_instance->msg);
124 }
125 return $this->GENERIC_ERROR;
126 }
127 return $this->OK;
128 }
129
130
131 /*
132 * Executes the update of a record in DB by calling the
133 * dbform::modifier() method.
134 *
135 * Precondition: $this->metier_instance is not null.
136 *
137 * @uses dbform::modifier() The method that does insertion of data
138 * into a DB
139 * @return string Returns 'OK' on success, error message set by the
140 * application (if it was set), a generic error message otherwise.
141 */
142 protected function modifier(&$data) {
143 // essai de la modification des donnees dans la base de donnees
144 $ret = $this->metier_instance->modifier($data, $this->db, $this->DEBUG);
145 if ($this->metier_instance->correct == false) {
146 if (isset($this->metier_instance->msg)
147 && !empty($this->metier_instance->msg)) {
148 return $this->filterOutHtmlTags($this->metier_instance->msg);
149 }
150 return $this->GENERIC_ERROR;
151 }
152 return $this->OK;
153 }
154
155
156 /*
157 * Executes the insertion of a record into DB by calling the
158 * dbform::supprimer() method.
159 *
160 * Precondition: $this->metier_instance is not null.
161 *
162 * @uses dbform::supprimer() The method that does insertion of data
163 * into a DB
164 * @return string Returns 'OK' on success, error message set by the
165 * application (if it was set), a generic error message otherwise.
166 */
167 protected function supprimer(&$data) {
168 // essai de la suppression des donnes dans la base de donnees
169 $ret = $this->metier_instance->supprimer($data, $this->db, $this->DEBUG);
170 if ($this->metier_instance->correct == false) {
171 if (isset($this->metier_instance->msg)
172 && !empty($this->metier_instance->msg)) {
173 return $this->filterOutHtmlTags($this->metier_instance->msg);
174 }
175 return $this->GENERIC_ERROR;
176 }
177 return $this->OK;
178 }
179
180 /*
181 * This function is to be overwritten by the derived classes when a GET
182 * request is received.
183 *
184 * @return bool Always returns 'KO' to indicate that by default,
185 * extraction of data from the DB is not supported.
186 */
187 protected function extraire(&$data) {
188 //
189 return $this->KO;
190 }
191
192
193 /*
194 * Formats error and debug info messages created on DB failure.
195 * @param string $debuginfo The debug info returned from DB connection.
196 * @param string $message The message returned from the failed DB attempt.
197 * @return string Formatted error message.
198 */
199 protected function formatDBerror($debuginfo, $message) {
200 return "DEBUG INFO: ".$debuginfo." DEBUG MESSAGE: ".$message;
201 }
202
203
204 /*
205 * Sets the $msg attribute. Usefult for returning a message supplementary
206 * to the one associated with the return code.
207 * @param string $msg The message.
208 */
209 protected function setMessage($msg) {
210 if ($msg) {
211 $this->msg = $msg;
212 }
213 }
214
215
216 /*
217 * Returns the string stored in $msg attribute
218 * @return string The value of $this->msg.
219 */
220 public function getMessage() {
221 return $this->msg;
222 }
223
224
225 /*
226 * Verifies the result object returned from a DB query for any
227 * errors. If there was a DB error, the error message is stored
228 * in the $msg attribute.
229 * @param object $result DB result object.
230 * @param string $msg The prefix to the constructed DB error message.
231 * @return bool True on DB error, false otherwise.
232 */
233 protected function checkDBError($result, $msg = '') {
234 if (database::isError($result, true)) {
235 $this->addToLog("Error: $msg ".
236 $this->formatDBerror($result->getDebugInfo(),
237 $result->getMessage()));
238 $this->setMessage('ERREUR DE LA BD : '. $msg);
239 return true;
240 }
241 return false;
242 }
243
244
245 /*
246 * Adds errors to log
247 * @param string $message The message to add to log
248 * @param string $type The logging mode
249 * @todo what do we do with DB error messages if a REST call is made
250 */
251 function addToLog($message, $type = DEBUG_MODE) {
252 //
253 if (!defined('REST_REQUEST')) {
254 logger::instance()->log("class ".get_class($this)." - ".$message, $type);
255 }
256 }
257
258 }// fin classe
259 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26