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 |
|
// 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 |
|
* Permet de vérifier que des champs existe dans une table |
620 |
|
* @param array $list_fields Liste des champs à tester |
621 |
|
* @param string $table Table où les champs doivent exister |
622 |
|
* @return mixed Retourne les champs qui n'existent pas |
623 |
|
* ou true |
624 |
|
*/ |
625 |
|
public function check_field_exist($list_fields, $table) { |
626 |
|
|
627 |
|
// Requête SQL pour récupérer le nom des colonnes |
628 |
|
$sql = "SELECT column_name |
629 |
|
FROM information_schema.columns |
630 |
|
WHERE table_schema = '".substr(DB_PREFIXE, 0, -1)."' |
631 |
|
AND table_name = '".$table."' |
632 |
|
ORDER BY ordinal_position"; |
633 |
|
$this->addToLog("check_field_exist() : db->query(\"".$sql."\")", VERBOSE_MODE); |
634 |
|
$res = $this->db->query($sql); |
635 |
|
$this->isDatabaseError($res); |
636 |
|
|
637 |
|
// Tant qu'il y a un résultat |
638 |
|
while ($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) { |
639 |
|
|
640 |
|
// Le nom de la colonne est mise dans un tableau |
641 |
|
$list_column[] = $row['column_name']; |
642 |
|
} |
643 |
|
|
644 |
|
// Tableau des champs en erreur |
645 |
|
$error_fields = array(); |
646 |
|
|
647 |
|
// Pour chaque champ à tester |
648 |
|
foreach ($list_fields as $value) { |
649 |
|
|
650 |
|
// S'il n'apparaît pas dans la liste des champs possible |
651 |
|
if (!in_array($value, $list_column)) { |
652 |
|
|
653 |
|
// Alors le champ est ajouté au tableau des erreurs |
654 |
|
$error_fields[] = $value; |
655 |
|
} |
656 |
|
} |
657 |
|
|
658 |
|
// Si le tableau des erreurs n'est pas vide on le retourne |
659 |
|
if (count($error_fields) > 0) { |
660 |
|
return $error_fields; |
661 |
|
} |
662 |
|
|
663 |
|
// Sinon on retourne le booléen true |
664 |
|
return true; |
665 |
|
|
666 |
|
} |
667 |
|
|
668 |
} |
} |
669 |
|
|
670 |
?> |
?> |