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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3381 - (show annotations)
Fri Apr 3 08:36:11 2015 UTC (9 years, 10 months ago) by softime
File size: 21110 byte(s)
* Amélioration - Ajout de la gestion des nouvelles actions pour la classe dossier (et ses surcharges), donnees_technique, rapport_instruction.
1 <?php
2
3 //
4 require_once "dossier.class.php";
5
6 //
7 class dossier_instruction extends dossier {
8
9 function dossier_instruction($id, &$db, $DEBUG) {
10 //
11 //$this->constructeur($id, $db, $DEBUG);
12 $this->dossier($id, $db, $DEBUG);
13 }
14
15 /**
16 * Définition des actions disponibles sur la classe.
17 *
18 * @return void
19 */
20 function init_class_actions() {
21 //
22 parent::init_class_actions();
23
24 // ACTION - 001 - modifier
25 //
26 $this->class_actions[1]["portlet"]["libelle"] = _("Modifier");
27
28 // ACTION - 002 - supprimer
29 //
30 $this->class_actions[2]["portlet"]["libelle"] = _("Supprimer");
31 $this->class_actions[2]["portlet"]["order"] = 125;
32
33 // ACTION - 100 - donnees_techniques
34 // Affiche dans un overlay les données techniques
35 $this->class_actions[100] = array(
36 "identifier" => "donnees_techniques",
37 "portlet" => array(
38 "type" => "action-self",
39 "libelle" => _("Données techniques"),
40 "order" => 100,
41 "class" => "rediger-16",
42 ),
43 "view" => "view_donnees_techniques",
44 "permission_suffix" => "consulter",
45 "condition" => "can_open_rapport_instruction",
46 );
47
48 // ACTION - 110 - rapport_instruction
49 // Affiche dans un overlay le rapport d'instruction
50 $this->class_actions[110] = array(
51 "identifier" => "rapport_instruction",
52 "portlet" => array(
53 "type" => "action-self",
54 "libelle" => _("Rapport d'instruction"),
55 "order" => 110,
56 "class" => "rediger-16",
57 ),
58 "view" => "view_rapport_instruction",
59 "permission_suffix" => "consulter",
60 "condition" => "can_open_rapport_instruction",
61 );
62
63 // ACTION - 120 - geolocalisation
64 // Affiche dans un overlay la géolocalisation
65 $this->class_actions[120] = array(
66 "identifier" => "geolocalisation",
67 "portlet" => array(
68 "type" => "action-self",
69 "libelle" => _("Geolocalisation"),
70 "order" => 120,
71 "class" => "rediger-16",
72 ),
73 "view" => "view_geolocalisation",
74 "permission_suffix" => "consulter",
75 "condition" => "can_open_rapport_geolocalisation",
76 );
77
78 // ACTION - 130 - edition
79 // Affiche l'édition
80 $this->class_actions[130] = array(
81 "identifier" => "edition",
82 "portlet" => array(
83 "type" => "action-blank",
84 "libelle" => _("Recapitulatif"),
85 "order" => 130,
86 "class" => "pdf-16",
87 ),
88 "view" => "view_edition",
89 "permission_suffix" => "consulter",
90 );
91 }
92
93 /**
94 * CONDITION - can_open_rapport_instruction.
95 *
96 * Condition pour afficher le rapport d'instruction en overlay.
97 *
98 * @return boolean
99 */
100 function can_open_rapport_instruction() {
101
102 // Le contrôle de la permission doit se faire seulement sur cet argument
103 $permission = $this->f->isAccredited(array('rapport_instruction', 'rapport_instruction_rediger', ), 'OR');
104
105 // Si l'utilisateur n'a pas la bonne permission
106 // et que le rapport est finalisé
107 if ($permission == false) {
108 //
109 return false;
110 }
111
112 //
113 return true;
114 }
115
116 /**
117 * CONDITION - can_open_geolocalisation.
118 *
119 * Condition pour afficher la géolocalisation en overlay.
120 *
121 * @return boolean
122 */
123 function can_open_geolocalisation() {
124
125 // Le contrôle de la permission doit se faire seulement sur cet argument
126 $permission = $this->f->isAccredited(array('geolocalisation', 'geolocalisation_consulter', ), 'OR');
127
128 // Si l'utilisateur n'a pas la bonne permission
129 // et que le rapport est finalisé
130 if ($permission == false) {
131 //
132 return false;
133 }
134
135 //
136 return true;
137 }
138
139 /**
140 * VIEW - view_edition.
141 *
142 * Affiche le récapitulatif du dossier d'instruction.
143 *
144 * @return void
145 */
146 function view_edition() {
147
148 // Identifiant du dossier
149 $idx = $this->getVal($this->clePrimaire);
150
151 // Redirection vers le script d'édition pdf avec les bons paramètres
152 header("Location: ../pdf/pdfetat.php?idx=".$idx."&obj=".$this->table);
153 exit();
154 }
155
156 /**
157 * VIEW - view_donnees_techniques.
158 *
159 * Redirige pour ouvrir le formulaire en ajaxIt dans un overlay.
160 * Cette action est bindée pour utiliser la fonction popUpIt.
161 *
162 * @return void
163 */
164 function view_donnees_techniques() {
165
166 // Vérification de l'accessibilité sur l'élément
167 $this->checkAccessibility();
168
169 //
170 $idx = $this->getVal($this->clePrimaire);
171 $obj = "donnees_techniques";
172
173 //
174 $this->redirect_onglet($idx, $obj);
175 }
176
177 /**
178 * VIEW - view_rapport_instruction.
179 *
180 * Redirige pour ouvrir le formulaire en ajaxIt dans un overlay.
181 * Cette action est bindée pour utiliser la fonction popUpIt.
182 *
183 * @return void
184 */
185 function view_rapport_instruction() {
186
187 // Vérification de l'accessibilité sur l'élément
188 $this->checkAccessibility();
189
190 //
191 $idx = $this->getVal($this->clePrimaire);
192 $obj = "rapport_instruction";
193
194 //
195 $this->redirect_onglet($idx, $obj);
196 }
197
198 /**
199 * Redirige vers un sousform.
200 *
201 * @return void
202 */
203 function redirect_onglet($idx = "", $obj = "", $sousform = "") {
204 //
205 $this->f->disableLog();
206
207 // Seulement si le numéro de dossier est fourni
208 if ($this->f->isAccredited($obj) != false
209 && isset($idx) && !is_null($idx)
210 && isset($obj) && !is_null($obj)){
211
212 // Vérifie que l'objet n'existe pas
213 $sql = "SELECT
214 ".$obj."
215 FROM
216 ".DB_PREFIXE.$obj."
217 where
218 dossier_instruction = '$idx'";
219 // Ajout au log
220 $this->f->addToLog($obj.".php: db->query(\"".$sql."\");", VERBOSE_MODE);
221 // Exécution de la requête
222 $res = $this->f->db->query($sql);
223 $this->f->isDatabaseError($res);
224
225 // S'il n'y en a pas, afficher le formulaire d'ajout
226 if ( $res->numrows() == 0 ){
227 //
228 echo '
229 <script type="text/javascript" >
230 overlayIt(\''.$obj.'\',\'../scr/sousform.php?objsf='.$obj.'&obj='.$obj.'&action=0&retourformulaire=dossier_instruction&idxformulaire='.$idx.'\', 1);
231 </script>
232 ';
233 }
234 // Sinon afficher l'objet en consultation
235 elseif ( $res->numrows() > 0 && $sousform != "dossier_autorisation" ){
236 //
237 $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
238 //
239 echo '
240 <script type="text/javascript" >
241 overlayIt(\''.$obj.'\',\'../scr/sousform.php?objsf='.$obj.'&idxformulaire='.$idx.'&retourformulaire='.$obj.'&obj='.$obj.'&action=3&idx='.$row[$obj].'\', 1);
242 </script>
243 ';
244 }
245 elseif ( $res->numrows() > 0 && $sousform == "dossier_autorisation" ){
246 //
247 $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
248 //
249 echo '
250 <script type="text/javascript" >
251 overlayIt(\''.$obj.'\',\'../scr/sousform.php?objsf='.$obj.'&idxformulaire='.$idx.'&retourformulaire='.$obj.'&obj='.$obj.'&action=3&idx='.$row[$obj].'&visualisation=dossier_autorisation\', 1);
252 </script>
253 ';
254 }
255 }
256 }
257
258 /**
259 * VIEW - view_geolocalisation.
260 *
261 * Redirige pour ouvrir le formulaire en ajaxIt dans un overlay.
262 * Cette action est bindée pour utiliser la fonction popUpIt.
263 *
264 * @return void
265 */
266 function view_geolocalisation() {
267
268 // Vérification de l'accessibilité sur l'élément
269 $this->checkAccessibility();
270
271 //
272 $idx = $this->getVal($this->clePrimaire);
273
274 // Récupération des données de sig_elyx
275 $sqlDonneesSIG = "SELECT *
276 FROM ".DB_PREFIXE."sig_elyx
277 WHERE dossier = '$idx'";
278 $resDonneesSIG = $this->f->db->query($sqlDonneesSIG);
279 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDonneesSIG."\")", VERBOSE_MODE);
280 $this->f->isDatabaseError($resDonneesSIG);
281 $rowDonneesSIG = &$resDonneesSIG->fetchRow(DB_FETCHMODE_ASSOC);
282
283 // Récupération des données du dossier d'instruction
284 $sqlDonneesDI = "SELECT dossier, geom, dossier_libelle,
285 terrain_references_cadastrales, terrain_adresse_voie_numero,
286 terrain_adresse_voie, terrain_adresse_lieu_dit, terrain_adresse_localite,
287 terrain_adresse_code_postal, terrain_adresse_bp, terrain_adresse_cedex
288 FROM ".DB_PREFIXE."dossier
289 WHERE dossier = '$idx'";
290 $resDonneesDI = $this->f->db->query($sqlDonneesDI);
291 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDonneesDI."\")", VERBOSE_MODE);
292 $this->f->isDatabaseError($resDonneesDI);
293 $rowDonneesDI = &$resDonneesDI->fetchRow(DB_FETCHMODE_ASSOC);
294
295 // Récupération des contraintes liées au DI
296 $sqlDossierContrainte = "SELECT dossier_contrainte, reference
297 FROM ".DB_PREFIXE." dossier_contrainte
298 WHERE dossier = '".$idx."'";
299 $resDossierContrainte = $this->f->db->query($sqlDossierContrainte);
300 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDossierContrainte."\")", VERBOSE_MODE);
301 $this->f->isDatabaseError($resDossierContrainte);
302
303 //
304 $geom = "";
305 //
306 if (isset($rowDonneesDI) && $rowDonneesDI['geom'] != '') {
307 //
308 $sqlGEOM = "SELECT public.ST_AsText('".$rowDonneesDI['geom']."'::geometry)";
309 $geom = $this->f->db->getOne($sqlGEOM);
310 $this->f->addToLog(__METHOD__."() : db->getOne(\"".$sqlGEOM."\")", VERBOSE_MODE);
311 }
312
313 // Compteurs de contrainte manuelle et automatique
314 $nb_conrainte_man = 0;
315 $nb_conrainte_sig = 0;
316 // Nombre de contrainte du DI
317 while ($rowDossierContrainte = &$resDossierContrainte->fetchRow(DB_FETCHMODE_ASSOC)) {
318 //
319 if ($rowDossierContrainte['reference'] == 'f') {
320 $nb_conrainte_man++;
321 } else {
322 $nb_conrainte_sig++;
323 }
324 }
325 // Modifie les messages en fonction du nombre de contrainte
326 if ($nb_conrainte_man == 0) {
327 $msg_contrainte_man = _("Aucune contraintes ajoutees depuis l'application");
328 } else {
329 $msg_contrainte_man = $nb_conrainte_man." "._("contrainte(s) ajoutee(s) depuis l'application");
330 }
331 if ($nb_conrainte_sig == 0) {
332 $msg_contrainte_sig = _("Aucune contraintes ajoutees depuis le SIG");
333 } else {
334 $msg_contrainte_sig = $nb_conrainte_sig." "._("contrainte(s) ajoutee(s) depuis le SIG");
335 }
336 $contrainte_val = "<span id='msg_contrainte_man'>".$msg_contrainte_man."</span>"."<br />".
337 "<span id='msg_contrainte_sig'>".$msg_contrainte_sig."</span>";
338
339 // Affichage du fil d'Ariane
340 $this->f->displaySubTitle(_("Geolocalisation") . "->" . $rowDonneesDI["dossier_libelle"]);
341 $this->f->display();
342
343 // Message affiché
344 $message_field = '<div class="message ui-widget ui-corner-all ui-state-highlight ui-state-%s" id="%s">
345 <p>
346 <span class="ui-icon ui-icon-info"></span>
347 <span class="text">%s<br></span>
348 </p>
349 </div>';
350
351 // Message d'erreur si les références cadastrales ont été modifiées
352 // dans le dossier d'instruction
353 if (isset($rowDonneesSIG["terrain_references_cadastrales_archive"]) &&
354 $rowDonneesSIG["terrain_references_cadastrales_archive"] != $rowDonneesDI["terrain_references_cadastrales"]) {
355
356 $messageRefCadUtilisees = (is_null($rowDonneesSIG["terrain_references_cadastrales_archive"])&&
357 $rowDonneesSIG["terrain_references_cadastrales_archive"]!="")?
358 _("Les references cadastrales utilisees par le SIG")." : ".
359 $rowDonneesSIG["terrain_references_cadastrales_archive"] :
360 _("Aucune reference cadastrale n'est renseignee pour le SIG");
361
362 printf($message_field, "error", "geolocalisation-message",
363 "<p>"._("Les references cadastrales ont ete modifiees dans le dossier d'instruction.")."</p>".
364 "<p>".$messageRefCadUtilisees."</p>");
365 }
366
367 // Bouton retour
368 $button_return = '<div class="formControls">
369 <a id="retour-button" onclick="redirectPortletAction(1,\'main\'); refresh_page_return();" href="#" class="retour">Retour</a>
370 </div>';
371
372 // Affiche le bouton de retour
373 printf($button_return);
374
375 // Début du formulaire
376 printf("\n<!-- ########## START FORMULAIRE ########## -->\n");
377 printf("<div class=\"formEntete ui-corner-all\">\n");
378
379 // Champ pour le bouton
380 $button_field = '<div class="field field-type-static">
381 <div class="form-libelle">
382 <label id="lib-%1$s" class="libelle-%1$s" for="%1$s">
383 %2$s
384 </label>
385 </div>
386 <div class="form-content">
387 <span id="%1$s" class="field_value">
388 %3$s
389 </span>
390 </div>
391 </div>';
392
393 // Boutons d'action sur la géolocalisation
394 $button = '<input type="submit" class="om-button ui-button ui-widget ui-state-default ui-corner-all" id="%s-button" value="%s" onclick="%s" role="button" aria-disabled="false">';
395
396 // Affiche le bouton permettant de lancer tous les traitements
397 printf('<div class="alignBtnCenter">');
398 printf($button, "chance", "J'ai de la chance", "all_geolocalisation_treatments('$idx', '"._("Etes vous sur de vouloir recuperer les contraintes ?")."')");
399 printf('</div>');
400
401 // Tableau pour afficher l'interface sur deux colonnes
402 printf("<div class='sousform-geolocalisation'><div class='list-buttons-geolocalisation'>");
403
404 //Affichage des boutons
405 printf($button_field, 'verif_parcelle', sprintf($button, 'verif_parcelle', "Vérifier les parcelles", "geolocalisation_treatment('$idx', 'verif_parcelle', set_geolocalisation_message)"), $this->build_message('verif_parcelle', $message_field, $rowDonneesSIG, $this->f));
406
407 printf($button_field, 'calcul_emprise', sprintf($button, 'calcul_emprise', "Calculer l'emprise", "geolocalisation_treatment('$idx', 'calcul_emprise', '')"), $this->build_message('calcul_emprise', $message_field, $rowDonneesSIG, $this->f));
408
409 printf($button_field, 'dessin_emprise', sprintf($button, 'dessin_emprise', "Dessiner l'emprise", "geolocalisation_treatment('$idx', 'dessin_emprise', redirection_elyxweb)"), $this->build_message('dessin_emprise', $message_field, $rowDonneesSIG, $this->f));
410
411 printf($button_field, 'calcul_centroide', sprintf($button, 'calcul_centroide', "Calculer le centroïde", "geolocalisation_treatment('$idx', 'calcul_centroide', set_geolocalisation_centroide)"), $this->build_message('calcul_centroide', $message_field, $rowDonneesSIG, $this->f));
412
413 printf($button_field, 'recup_contrainte', sprintf($button, 'recup_contrainte', "Récupérer les contraintes", "geolocalisation_treatment('$idx', 'recup_contrainte', set_geolocalisation_contrainte, '"._("Etes vous sur de vouloir recuperer les contraintes ?")."')"), $this->build_message('recup_contrainte', $message_field, $rowDonneesSIG, $this->f));
414
415 //
416 printf("</div>");
417
418 // Le formulaire n'a pas été validé
419 $validation = 1;
420 // Le formulaire est en mode consultation
421 $maj = 3;
422
423 // Champs du formulaire
424 $champs = array("centroide", "contrainte", "adresse", "references_cadastrales");
425
426 // Création d'un nouvel objet de type formulaire
427 $form = new formulaire(NULL, $validation, $maj, $champs);
428
429 // Configuration des types de champs
430 foreach ($champs as $key) {
431 $form->setType($key, 'static');
432 }
433 $form->setType("references_cadastrales", "referencescadastralesstatic");
434
435 // Configuration des libellés
436 $form->setLib("references_cadastrales", _("terrain_references_cadastrales"));
437 $form->setLib("adresse", _("adresse"));
438 $form->setLib("centroide", _("centroide"));
439 $form->setLib("contrainte", _("contrainte"));
440
441 // Configuration des données
442 $form->setVal("references_cadastrales", $rowDonneesDI["terrain_references_cadastrales"]);
443 $form->setVal("adresse", $rowDonneesDI["terrain_adresse_voie_numero"]." ".$rowDonneesDI["terrain_adresse_voie"]." ".$rowDonneesDI["terrain_adresse_lieu_dit"]." ".$rowDonneesDI["terrain_adresse_code_postal"]." ".$rowDonneesDI["terrain_adresse_localite"]." ".$rowDonneesDI["terrain_adresse_bp"]." ".$rowDonneesDI["terrain_adresse_cedex"]);
444 if($geom != "") {
445 $form->setVal('centroide',
446 "<a id='action-form-localiser'".
447 " target='_SIG' href='../app/redirect_plan_sig.php?idx=".$rowDonneesDI["dossier"]."'>".
448 "<span class='om-icon om-icon-16 om-icon-fix sig-16' title='Localiser'>Localiser</span> ".
449 $geom.
450 " </a>");
451 } else {
452 $form->setVal('centroide', $geom);
453 }
454 $form->setVal("contrainte", $contrainte_val);
455
456 // Affichage des champs
457 $form->setBloc("centroide", "D", _("Donnees du dossier d'instruction"), "alignForm col_12");
458 $form->setBloc("centroide", "DF", "", "geoloc_form alignForm col_12");
459 $form->setBloc("contrainte", "DF", "", "geoloc_form alignForm col_12");
460 $form->setBloc("adresse", "DF", "", "geoloc_form alignForm col_12");
461 $form->setBloc("references_cadastrales", "DF", "", "geoloc_form alignForm col_12");
462 $form->setBloc("references_cadastrales", "F");
463
464 $form->afficher($champs, $validation, false, false);
465 // Ferme le tableau pour l'affichage sur deux colonnes
466 printf("</div></div>");
467
468 //Ajout d'un div vide pour éviter les superspositions des div
469 printf("<div class=\"both\"></div>");
470
471 // Fin du formulaire
472 printf("</div></div>");
473
474 // Affiche le bouton de retour
475 printf($button_return);
476 }
477
478 /**
479 * Compose le message affiché à l'utilisateur
480 * @param string $field_name Nom du champ
481 * @param string $message_field Code html du message
482 * @param array $rowDonneesSIG Tableau des données
483 * @param object $f Instance de la classe utils
484 * @return string Message
485 */
486 function build_message($field_name, $message_field, $rowDonneesSIG, $f) {
487
488 // Récupération des infos
489 $date = (isset($rowDonneesSIG["date_".$field_name])) ? $this->f->formatTimestamp($rowDonneesSIG["date_".$field_name]) : "";
490 $etat = (isset($rowDonneesSIG["etat_".$field_name])) ? $rowDonneesSIG["etat_".$field_name] : "";;
491 $text = (isset($rowDonneesSIG["message_".$field_name])) ? $rowDonneesSIG["message_".$field_name] : "";;
492
493 // id du message
494 $id_message = $field_name."-message";
495
496 // Définit le type du message "empty", "valid" ou "error"
497 // empty : message grisé
498 // valid : message de validation
499 // error : message d'erreur
500 $type_message = "empty";
501 if ($etat != "") {
502 //
503 $type_message = "valid";
504 if ($etat == 'f') {
505 $type_message = "error";
506 }
507 }
508
509 // Si il y a une date, un message est ajouté en debut
510 if ($date != "") {
511 //
512 $date = sprintf(_("Dernier traitement effectue le %s."), $date);
513 }
514
515 // Si aucun message alors l'action n'a jamais été effectuée
516 if ($text == "") {
517 //
518 $text = _("Action non effectuee.");
519 //
520 $type_message = "empty";
521 }
522
523 // Compose le message
524 $message = sprintf($message_field, $type_message, $id_message, $date." ".$text);
525
526 // retour
527 return $message;
528 }
529 }
530
531 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26