/[openfoncier]/trunk/obj/utils.class.php
ViewVC logotype

Contents of /trunk/obj/utils.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2282 - (show annotations)
Thu Sep 12 10:14:50 2013 UTC (11 years, 4 months ago) by softime
File size: 20249 byte(s)
- Modification de la class SOAP : l'url ne sert à rien
- Modification des script + config  en conséquence de la classe
- Ajout du fichier wsdl à utiliser sur le int dans trs en attendant qu'il fopnctionne par le lien

1 <?php
2 /**
3 * Ce fichier est destine a permettre la surcharge de certaines methodes de
4 * la classe om_application pour des besoins specifiques de l'application
5 *
6 * @package openmairie_exemple
7 * @version SVN : $Id: utils.class.php 547 2011-08-25 12:03:42Z fmichon $
8 */
9
10 /**
11 *
12 */
13 require_once "../dyn/locales.inc.php";
14
15 /**
16 *
17 */
18 require_once "../dyn/include.inc.php";
19
20 /**
21 *
22 */
23 require_once "../dyn/debug.inc.php";
24
25 /**
26 *
27 */
28 (defined("PATH_OPENMAIRIE") ? "" : define("PATH_OPENMAIRIE", ""));
29
30 /**
31 *
32 */
33 require_once PATH_OPENMAIRIE."om_application.class.php";
34
35 /**
36 *
37 */
38 class utils extends application {
39
40 // {{{
41
42 /**
43 *
44 */
45 function isAccredited($obj = NULL, $operator = "AND") {
46 // Lorsque l'utilisateur a le login 'admin' alors il est authorisé à
47 // accéder à toutes les fonctions du logiciel
48 // XXX à modifier pour changer ça vers un profil et non un login utilisateur
49 if ($_SESSION["login"] == "admin") {
50 return true;
51 }
52 // Fonctionnement standard
53 return parent::isAccredited($obj, $operator);
54 }
55
56 // }}}
57
58 // {{{
59
60 var $om_utilisateur = array();
61 var $user_is_instr = NULL;
62 var $user_is_service = NULL;
63 var $user_is_admin = NULL;
64 var $user_is_service_ext = NULL;
65 var $user_is_qualificateur = NULL;
66 var $user_is_chef = NULL;
67 var $user_is_divisionnaire = NULL;
68 var $user_is_service_int = NULL;
69
70 /**
71 * Méthode de récupération des informations de l'utilisateur connecté.
72 */
73 function getUserInfos() {
74
75 // Si l'utilisateur est loggé $_SESSION existe
76 if(isset($_SESSION['login']) AND !empty($_SESSION['login'])) {
77
78 // Récupération des infos utilisateur
79 $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".
80 "FROM ".DB_PREFIXE."om_utilisateur WHERE login = '".$_SESSION['login']."'";
81 $resUser=$this->db->query($sqlUser);
82 $this->addToLog("getUserInfos(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);
83 if ( database::isError($resUser)){
84 die();
85 }
86 $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);
87
88 // Récupère le profil et test si c'est un
89 $sqlProfil = "SELECT libelle FROM ".DB_PREFIXE."om_profil WHERE om_profil = ".$this->om_utilisateur['om_profil'];
90 $resProfil=$this->db->getOne($sqlProfil);
91 $this->addToLog("getUserInfos(): db->getOne(\"".$sqlProfil."\");", VERBOSE_MODE);
92 if (database::isError($resProfil)){
93 die();
94 }
95 // Sauvegarde le libelle du profil
96 $this->om_utilisateur["libelle_profil"] = $resProfil;
97
98 // si c'est un administrateur technique
99 if ($resProfil == "ADMINISTRATEUR TECHNIQUE") {
100 $this->user_is_admin = true;
101 } else {
102 $this->user_is_admin = false;
103 }
104
105 //si c'est un service externe
106 if ($resProfil == "SERVICE CONSULTÉ") {
107 $this->user_is_service_ext = true;
108 } else {
109 $this->user_is_service_ext = false;
110 }
111
112 //si c'est un service interne
113 if ($resProfil == "SERVICE CONSULTÉ INTERNE") {
114 $this->user_is_service_int = true;
115 } else {
116 $this->user_is_service_int = false;
117 }
118
119 // si c'est un qualificateur
120 if ($resProfil == "QUALIFICATEUR") {
121 $this->user_is_qualificateur = true;
122 } else {
123 $this->user_is_qualificateur = false;
124 }
125
126 // si c'est un chef de service
127 if ($resProfil == "CHEF DE SERVICE") {
128 $this->user_is_chef = true;
129 } else {
130 $this->user_is_chef = false;
131 }
132
133 // si c'est un divisionnaire
134 if ($resProfil == "DIVISIONNAIRE") {
135 $this->user_is_divisionnaire = true;
136 } else {
137 $this->user_is_divisionnaire = false;
138 }
139
140 // Récupération des infos instructeur
141 $sqlInstr = "SELECT instructeur.instructeur, instructeur.nom, instructeur.telephone,
142 division.division, division.code, division.libelle ".
143 "FROM ".DB_PREFIXE."instructeur INNER JOIN ".DB_PREFIXE."division ON division.division=instructeur.division ".
144 "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
145 $resInstr=$this->db->query($sqlInstr);
146 $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);
147 if ( database::isError($resInstr)){
148 die();
149 }
150 $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);
151 // Si il y a un resultat c'est un instructeur
152 if(count($tempInstr)>0) {
153 $this->user_is_instr=true;
154 $this->om_utilisateur = array_merge($this->om_utilisateur,$tempInstr);
155 } else {
156 $this->user_is_instr=false;
157 }
158
159 // Récupération des infos de services consultés
160 $sqlServ = "SELECT service.service, service.abrege, service.libelle ".
161 "FROM ".DB_PREFIXE."service ".
162 "INNER JOIN ".DB_PREFIXE."lien_service_om_utilisateur ON lien_service_om_utilisateur.service=service.service ".
163 "WHERE lien_service_om_utilisateur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
164 $resServ=$this->db->query($sqlServ);
165 $this->addToLog("getUserInfos(): db->query(\"".$sqlServ."\");", VERBOSE_MODE);
166 if ( database::isError($resServ)){
167 die();
168 }
169
170 while ($tempServ=&$resServ->fetchRow(DB_FETCHMODE_ASSOC)) {
171 $this->om_utilisateur['service'][]=$tempServ;
172 }
173 // Si il y a un resultat c'est un utilisateur de service
174 if(isset($this->om_utilisateur['service'])) {
175 $this->user_is_service=true;
176 } else {
177 $this->user_is_service=false;
178 }
179 }
180 }
181
182 /**
183 * getter user_is_service
184 */
185 function isUserService() {
186 //
187 if (is_null($this->user_is_service)) {
188 //
189 $this->getUserInfos();
190 }
191 //
192 return $this->user_is_service;
193 }
194
195 /**
196 * getter user_is_instr
197 */
198 function isUserInstructeur() {
199 //
200 if (is_null($this->user_is_instr)) {
201 //
202 $this->getUserInfos();
203 }
204 //
205 return $this->user_is_instr;
206 }
207
208 function isUserAdministrateur() {
209 //
210 if (is_null($this->user_is_admin)) {
211 //
212 $this->getUserInfos();
213 }
214 //
215 return $this->user_is_admin;
216 }
217
218 /**
219 * getter user_is_service_ext
220 */
221 function isUserServiceExt() {
222 //
223 if (is_null($this->user_is_service_ext)) {
224 //
225 $this->getUserInfos();
226 }
227 //
228 return $this->user_is_service_ext;
229 }
230
231 /**
232 * getter user_is_service_int
233 */
234 function isUserServiceInt() {
235 //
236 if (is_null($this->user_is_service_int)) {
237 //
238 $this->getUserInfos();
239 }
240 //
241 return $this->user_is_service_int;
242 }
243
244 /**
245 * getter user_is_qualificateur
246 */
247 function isUserQualificateur() {
248 //
249 if (is_null($this->user_is_qualificateur)) {
250 //
251 $this->getUserInfos();
252 }
253 //
254 return $this->user_is_qualificateur;
255 }
256
257 /**
258 * getter user_is_chef
259 */
260 function isUserChef() {
261 //
262 if (is_null($this->user_is_chef)) {
263 //
264 $this->getUserInfos();
265 }
266 //
267 return $this->user_is_chef;
268 }
269
270 /**
271 * getter user_is_divisionnaire
272 */
273 function isUserDivisionnaire() {
274 //
275 if (is_null($this->user_is_divisionnaire)) {
276 //
277 $this->getUserInfos();
278 }
279 //
280 return $this->user_is_divisionnaire;
281 }
282
283 // Ajout de variables de session contenant la division pour permettre une
284 // utilisation plus efficace dans les requetes
285 function triggerAfterLogin($utilisateur = NULL) {
286 //
287 $sql = "SELECT instructeur.division, division.code
288 FROM ".DB_PREFIXE."instructeur
289 LEFT JOIN ".DB_PREFIXE."division
290 ON instructeur.division = division.division
291 WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";
292 $res = $this->db->query($sql);
293 $this->addToLog("triggerAfterLogin(): db->query(\"".$sql."\");", VERBOSE_MODE);
294 if ( database::isError($res)){
295 die();
296 }
297 $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
298 //
299 if (isset($row["division"]) && $row["division"] != NULL) {
300 $_SESSION["division"] = $row["division"];
301 $_SESSION["division_code"] = $row["code"];
302 } else {
303 $_SESSION["division"] = "0";
304 $_SESSION["division_code"] = "";
305 }
306
307 }
308
309 // Affichage des actions supplémentaires
310 function displayActionExtras() {
311 // Affichage de la division si l'utilisateur en possède une
312 if ($_SESSION["division"] != 0) {
313 echo "\t\t\t<li class=\"action-division\">";
314 echo "(".$_SESSION['division_code'].")";
315 echo "</li>\n";
316 }
317 }
318
319 // }}}
320
321
322 function getDivisionFromDossier($dossier) {
323 //
324 $sql = "select division from ".DB_PREFIXE."dossier ";
325 $sql .= " where dossier='".$dossier."'";
326 //
327 $division = $this->db->getOne($sql);
328 $this->addToLog("getDivisionFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
329 database::isError($division);
330 //
331 return $division;
332 }
333
334 // {{{ GESTION DES FICHIERS
335
336 /**
337 *
338 */
339 function notExistsError ($explanation = NULL) {
340 // message
341 $message_class = "error";
342 $message = _("Cette page n'existe pas.");
343 $this->addToMessage ($message_class, $message);
344 //
345 $this->setFlag(NULL);
346 $this->display();
347
348 //
349 die();
350 }
351
352 // }}}
353 /**
354 * Retourne le statut du dossier d'instruction
355 * @param string $idx Identifiant du dossier d'instruction
356 * @return string Le statut du dossier d'instruction
357 */
358 function getStatutDossier($idx){
359
360 $statut = '';
361
362 //Si l'identifiant du dossier d'instruction fourni est correct
363 if ( $idx != '' ){
364
365 //On récupère le statut de l'état du dossier à partir de l'identifiant du
366 //dossier d'instruction
367 $sql = "SELECT etat.statut
368 FROM ".DB_PREFIXE."dossier
369 LEFT JOIN
370 ".DB_PREFIXE."etat
371 ON
372 dossier.etat = etat.etat
373 WHERE dossier ='".$idx."'";
374 $statut = $this->db->getOne($sql);
375 $this->addToLog("getStatutDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
376 if ( database::isError($statut)){
377 die();
378 }
379 }
380 return $statut;
381 }
382
383 /**
384 * Formate le champ pour le type Timestamp
385 * @param date $date_str Date
386 * @param boolean $show Format pour l'affichage
387 * @return mixed False si le traitement échoue ou la date formatée
388 */
389 function formatTimestamp ($date_str, $show = true) {
390
391 // Sépare la date et l'heure
392 $date = explode(" ", $date_str);
393 if (count($date) != 2) {
394 return false;
395 }
396
397 // Date en BDD
398 $date_db = explode ('-', $date[0]);
399 // Date en affichage
400 $date_show = explode ('/', $date[0]);
401
402 // Contrôle la composition de la date
403 if (count ($date_db) != 3 and count ($date_show) != 3) {
404 return false;
405 }
406
407 if (count ($date_db) == 3) {
408 // Vérifie que c'est une date valide
409 if (!checkdate($date_db[1], $date_db[2], $date_db[0])) {
410 return false;
411 }
412 // Si c'est pour l'affichage de la date
413 if ($show == true) {
414 return $date_db [2]."/".$date_db [1]."/".$date_db [0]." ".$date[1];
415 } else {
416 return $date[0];
417 }
418 }
419
420 //
421 if (count ($date_show) == 3) {
422 // Vérifie que c'est une date valide
423 if (!checkdate($date_show[1], $date_show[0], $date_show[2])) {
424 return false;
425 }
426 // Si c'est pour l'affichage de la date
427 if ($show == true) {
428 return $date[0];
429 } else {
430 return $date_show [2]."-".$date_show [1]."-".$date_show [0]." ".$date[1];
431 }
432
433 }
434 return false;
435
436 }
437
438 /**
439 * Permet de calculer la liste des parcelles à partir de la chaîne passée en paramètre
440 * et la retourner sous forme d'un tableau associatif
441 *
442 * @param string $strParcelles chaîne de la parcelles
443 * @return array (array(quartier, section, parcelle), ...)
444 */
445 function parseParcelles($strParcelles) {
446
447 // Séparation des lignes
448 $references = explode(";", $strParcelles);
449 $liste_parcelles = array();
450
451 // On boucle sur chaque ligne pour ajouter la liste des parcelles de chaque ligne
452 foreach ($references as $parcelles) {
453
454 // On transforme la chaîne de la ligne de parcelles en tableau
455 $ref = str_split($parcelles);
456 // Les 1er caractères sont numériques
457 $num = true;
458
459 // Tableau des champs de la ligne de références cadastrales
460 $reference_tab = array();
461 $temp = "";
462 foreach ($ref as $carac) {
463
464 // Permet de tester si le caractère courant est de même type que le précédent
465 if(is_numeric($carac) === $num) {
466 $temp .= $carac;
467 } else {
468 // Bascule
469 $num = !$num;
470 // On stock le champ
471 $reference_tab[] = $temp;
472 // re-init de la valeur temporaire pour le champ suivant
473 $temp = $carac;
474 }
475 }
476 // Stockage du dernier champ sur lequel il n'y a pas eu de bascule
477 $reference_tab[] = $temp;
478 // Calcul des parcelles
479 $quartier = $reference_tab[0];
480 $sect = $reference_tab[1];
481
482 $ancien_ref_parc = "";
483 for ($i=2; $i < count($reference_tab); $i+=2) {
484 $parc["quartier"] = $quartier;
485 // Met en majuscule si besoin
486 $parc["section"] = strtoupper($sect);
487 if( $ancien_ref_parc == "" OR $reference_tab[$i-1] == "/") {
488 // 1ere parcelle ou parcelle individuelle
489 // Compléte par des "0" le début de la chaîne si besoin
490 $parc["parcelle"] = str_pad($reference_tab[$i], 4, "0", STR_PAD_LEFT);
491 // Ajout d'une parcelle à la liste
492 $liste_parcelles[] = $parc;
493 } elseif ($reference_tab[$i-1] == "A") {
494 // Interval de parcelles
495 for ($j=$ancien_ref_parc+1; $j <= $reference_tab[$i]; $j++) {
496 // Compléte par des "0" le début de la chaîne si besoin
497 $parc["parcelle"] = str_pad($j, 4, "0", STR_PAD_LEFT);
498 // Ajout d'une parcelle à la liste
499 $liste_parcelles[] = $parc;
500 }
501 }
502 //Gestion des erreurs
503 else{
504
505 echo _("Une erreur de formattage a ete detecte dans la reference cadastrale du dossier ").$this->row['dossier'];
506 }
507 // Sauvegarde de la référence courante de parcelle
508 $ancien_ref_parc = $reference_tab[$i];
509 }
510 }
511
512 return $liste_parcelles;
513 }
514
515 /**
516 * Formate les parcelles en ajoutant le code impôt
517 * @param array $liste_parcelles Tableau des parcelles
518 * @return string Liste des parcelles formatées
519 */
520 function formatParcelleToSend($liste_parcelles) {
521
522 //
523 $wParcelle = array();
524
525 //Formatage des références cadastrales pour l'envoi
526 foreach ($liste_parcelles as $value) {
527
528 // On ajoute les données dans le tableau que si quartier + section + parcelle
529 // a été fourni
530 if ($value["quartier"] !== ""
531 && $value["section"] !== ""
532 && $value["parcelle"] !== ""){
533
534 //On récupère le code impôt de l'arrondissement
535 $arrondissement = $this->getCodeImpotByQuartier($value["quartier"]);
536
537 //On ajoute la parcelle, si un arrondissement a été trouvé
538 if ($arrondissement!=="") {
539 //
540 $wParcelle[] = $arrondissement.$value["quartier"]." ".
541 $value["section"].$value["parcelle"];
542
543 }
544 }
545 }
546
547 //
548 return $wParcelle;
549 }
550
551 /**
552 * Récupère le code impôt par rapport au quartier
553 * @param string $quartier Numéro de quartier
554 * @return string Code impôt
555 */
556 function getCodeImpotByQuartier($quartier) {
557
558 $arrondissement = "";
559
560 // Si le quartier fournis est correct
561 if ($quartier != "") {
562
563 // Requête SQL
564 $sql = "SELECT
565 arrondissement.code_impots
566 FROM
567 ".DB_PREFIXE."arrondissement
568 LEFT JOIN
569 ".DB_PREFIXE."quartier
570 ON
571 quartier.arrondissement = arrondissement.arrondissement
572 WHERE
573 quartier.code_impots = '".$quartier."'";
574 $this->addToLog("getCodeImpotByQuartier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
575 $arrondissement = $this->db->getOne($sql);
576 $this->isDatabaseError($arrondissement);
577 }
578
579 // Retour
580 return $arrondissement;
581 }
582
583 /**
584 * Vérification des paramètres
585 */
586 function checkParams() {
587 parent::checkParams();
588
589 (isset($this->config['path_scan']) ? "" : $this->config['path_scan'] = '../trs/numerisation/');
590
591 $default_sig_elyx = array(
592 'wsdl' => '../tests/wsurbanisme.wsdl',
593 'login' => 'sig',
594 'password' => 'sig',
595 );
596 (isset($this->config['sig_elyx']) ? "" : $this->config['sig_elyx'] = $default_sig_elyx);
597 }
598
599 /**
600 * Retourne true si tous les paramètres du SIG externe ont bien été définis
601 * @return bool true/false
602 */
603 public function issetSIGParameter() {
604 if($this->getParameter("sig_web_server") != NULL AND
605 $this->getParameter("sig_web_server") != "" AND
606 $this->getParameter("sig_couche_emprise_dossier") != NULL AND
607 $this->getParameter("sig_couche_emprise_dossier") != "" AND
608 $this->getParameter("sig_couche_affichage_dossier") != NULL AND
609 $this->getParameter("sig_couche_affichage_dossier") != "" AND
610 $this->getParameter("sig_couche_affichage_parcelle") != NULL AND
611 $this->getParameter("sig_couche_affichage_parcelle") != "") {
612 return true;
613 } else {
614 return false;
615 }
616 }
617
618 }
619
620 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26