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

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

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

revision 2170 by softime, Tue Aug 27 11:03:59 2013 UTC revision 2178 by softime, Thu Aug 29 09:56:20 2013 UTC
# Line 434  class utils extends application { Line 434  class utils extends application {
434          return false;          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                    $parc["section"] = $sect;
486                    if( $ancien_ref_parc == "" OR $reference_tab[$i-1] == "/") {
487                        // 1ere parcelle ou parcelle individuelle
488                        $parc["parcelle"] = $reference_tab[$i];
489                        // Ajout d'une parcelle à la liste
490                        $liste_parcelles[] = $parc;
491                    } elseif ($reference_tab[$i-1] == "A") {
492                        // Interval de parcelles
493                        for ($j=$ancien_ref_parc+1; $j <= $reference_tab[$i]; $j++) {
494                            // Compléte par des "0" le début de la chaîne si besoin
495                            $parc["parcelle"] = str_pad($j, 4, "0", STR_PAD_LEFT);
496                            // Ajout d'une parcelle à la liste
497                            $liste_parcelles[] = $parc;
498                        }
499                    }
500                    //Gestion des erreurs
501                    else{
502                        
503                        echo _("Une erreur de formattage a ete detecte dans la reference cadastrale du dossier ").$this->row['dossier'];
504                    }
505                    // Sauvegarde de la référence courante de parcelle
506                    $ancien_ref_parc = $reference_tab[$i];
507                }
508            }
509    
510            return $liste_parcelles;
511        }
512    
513        /**
514         * Formate les parcelles en ajoutant le code impôt
515         * @param  array    $liste_parcelles   Tableau des parcelles
516         * @return string                      Liste des parcelles formatées
517         */
518        function formatParcelleToSend($liste_parcelles) {
519    
520            //
521            $wParcelle = "";
522    
523            //Formatage des références cadastrales pour l'envoi
524            foreach ($liste_parcelles as $value) {
525                    
526                // On ajoute les données dans le tableau que si quartier + section + parcelle
527                // a été fourni
528                if ($value["quartier"]!==""&&$value["section"]!==""&&$value["parcelle"]!==""){
529                    
530                    //On récupère le code impôt de l'arrondissement
531                    $arrondissement = $this->getCodeImpotByQuartier($value["quartier"]);
532                    
533                    //On ajoute la parcelle, si un arrondissement a été trouvé
534                    if ($arrondissement!=="") {
535                        //
536                        $wParcelle .= $arrondissement.$value["quartier"]." ".
537                            $value["section"].$value["parcelle"].";";
538    
539                    }
540                }
541            }
542    
543            //
544            return $wParcelle;
545        }
546    
547        /**
548         * Récupère le code impôt par rapport au quartier
549         * @param  string $quartier Numéro de quartier
550         * @return string           Code impôt
551         */
552        function getCodeImpotByQuartier($quartier) {
553    
554            $arrondissement = "";
555    
556            // Si le quartier fournis est correct
557            if ($quartier != "") {
558    
559                // Requête SQL
560                $sql = "SELECT
561                            arrondissement.code_impots
562                        FROM
563                            ".DB_PREFIXE."arrondissement
564                        LEFT JOIN
565                            ".DB_PREFIXE."quartier
566                            ON
567                                quartier.arrondissement = arrondissement.arrondissement
568                        WHERE
569                            quartier.code_impots = '".$quartier."'";
570                $this->addToLog("getCodeImpotByQuartier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
571                $arrondissement = $this->db->getOne($sql);
572                $this->isDatabaseError($arrondissement);
573            }
574    
575            // Retour
576            return $arrondissement;
577        }
578    
579        /**
580         * Vérification des paramètres
581         */
582        function checkParams() {
583            parent::checkParams();
584    
585            (isset($this->config['path_scan']) ? "" : $this->config['path_scan'] = '../trs/numerisation/');
586            
587            $default_sig_elyx = array(
588                'url' => 'http://localhost/openads/tests/sig_elyx_test.php',
589                'wsdl' => '../tests/wsurbanisme.wsdl',
590                'login' => 'sig',
591                'password' => 'sig',
592            );
593            (isset($this->config['sig_elyx']) ? "" : $this->config['sig_elyx'] = $default_sig_elyx);
594        }
595    
596  }  }
597    
598  ?>  ?>

Legend:
Removed from v.2170  
changed lines
  Added in v.2178

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26