/** * Affiche les adresses par regroupements * Quand on clique sur un regroupement , on affiche la liste des elements contenant ce regroupement * * @return string * */ public function afficheListeRegroupee() { $html = ""; $t = new Template($this->getCheminPhysique() . $this->cheminTemplates); $t->set_filenames(array('listeRegroupee' => 'listeRegroupee.tpl')); $r = new archiRecherche(); if (isset($this->variablesGet['modeAffichageListe'])) { $modeAffichageListe = $this->variablesGet['modeAffichageListe']; } else { $modeAffichageListe = 'default'; } $idVilleGeneral = 1; // strasbourg par defaut $s = new objetSession(); if ($s->isInSession('archiIdVilleGeneral') && $s->getFromSession('archiIdVilleGeneral') != '') { $idVilleGeneral = $s->getFromSession('archiIdVilleGeneral'); } elseif (isset($this->variablesGet['archiIdVilleGeneral'])) { $idVilleGeneral = $this->variablesGet['archiIdVilleGeneral']; $s->addToSession('archiIdVilleGeneral', $idVilleGeneral); } $fetchInfosVille = $this->getInfosVille($idVilleGeneral, array('fieldList' => 'v.nom as nomVille')); $nomVilleGeneral = $fetchInfosVille['nomVille']; $t->assign_vars(array('liens' => "<a href='" . $this->creerUrl('', 'listeDossiers', array('modeAffichageListe' => 'parRues', 'archiIdVilleGeneral' => $idVilleGeneral)) . "'>" . _("Par rues de") . " " . $nomVilleGeneral . "</a> | <a href='" . $this->creerUrl('', 'listeDossiers', array('modeAffichageListe' => 'parQuartiers', 'archiIdVilleGeneral' => $idVilleGeneral)) . "'>" . _("Par quartiers de") . " " . $nomVilleGeneral . "</a> | <a href='" . $this->creerUrl('', 'listeDossiers', array('modeAffichageListe' => 'parVilles')) . "'>" . _("Par villes") . "</a>")); switch ($modeAffichageListe) { case 'parQuartiers': $pagination = new paginationObject(); $arrayQuartiers = $this->getIdQuartiersFrom($idVilleGeneral, 'ville'); $arrayQuartiersNotEmpty = $r->getIdQuartiersNotEmpty(); $arrayListeQuartiersNotEmpty = array(); $arrayListeAlphabetique = array(); foreach ($arrayQuartiers as $indice => $idQuartier) { if (in_array($idQuartier, $arrayQuartiersNotEmpty['arrayListeQuartiersNonVides'])) { $arrayListeQuartiersNotEmpty[] = $idQuartier; } } // pagination $nbEnregistrementTotaux = count($arrayListeQuartiersNotEmpty); // nombre d'images affichées sur une page $nbEnregistrementsParPage = 12; $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'archiPageCouranteVille', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire')); $t->assign_vars(array('pagination' => $arrayPagination['html'])); $req = "SELECT idQuartier, nom\n\t\t\t\t\t\tFROM quartier\n\t\t\t\t\t\tWHERE idQuartier in ('" . implode("','", $arrayListeQuartiersNotEmpty) . "')\n\t\t\t\t\t\t\t\tand nom<>'autre'\n\t\t\t\t\t\t\t\tORDER BY nom ASC\n\t\t\t\t\t\t\t\tLIMIT " . $arrayPagination['limitSqlDebut'] . "," . $nbEnregistrementsParPage . "\n\t\t\t\t\t\t\t\t\t\t"; $tableau = new tableau(); $res = $this->connexionBdd->requete($req); while ($fetch = mysql_fetch_assoc($res)) { // pour chaque ville on va regarder s'il y a des adresses qui correspondent et on les compte /*$reqCount = " SELECT distinct ha.idAdresse FROM historiqueAdresse ha2, historiqueAdresse ha LEFT JOIN sousQuartier sq ON sq.idQuartier = '".$fetch['idQuartier']."' LEFT JOIN rue r ON r.idSousQuartier = sq.idSousQuartier WHERE (ha.idRue = IFNULL(r.idRue , 0) OR ha.idQuartier = '".$fetch['idQuartier']."' OR ha.idSousQuartier = IFNULL(sq.idSousQuartier,0)) AND ha2.idHistoriqueAdresse = ha.idHistoriqueAdresse GROUP BY ha.idAdresse, ha.idHistoriqueAdresse HAVING ha.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse) ";*/ $reqRuesQuartier = "SELECT idRue FROM rue WHERE idSousQuartier IN (SELECT idSousQuartier FROM sousQuartier WHERE idQuartier=" . $fetch['idQuartier'] . ")"; $reqSousQuartier = "SELECT idSousQuartier FROM sousQuartier WHERE idQuartier = " . $fetch['idQuartier']; $nbAdressesTotales = 0; $nbAdressesRues = 0; $nbAdressesSousQuartiers = 0; $nbAdressesQuartiers = 0; $resRuesQuartier = $this->connexionBdd->requete($reqRuesQuartier); while ($fetchRuesQuartier = mysql_fetch_assoc($resRuesQuartier)) { $reqCountRuesQuartier = "SELECT count(distinct idAdresse) as nbAdressesRues from historiqueAdresse WHERE idRue='" . $fetchRuesQuartier['idRue'] . "'"; $resCountRuesQuartier = $this->connexionBdd->requete($reqCountRuesQuartier); $fetchAdressesRues = mysql_fetch_assoc($resCountRuesQuartier); $nbAdressesRues += $fetchAdressesRues['nbAdressesRues']; } $resSousQuartier = $this->connexionBdd->requete($reqSousQuartier); while ($fetchSousQuartier = mysql_fetch_assoc($resSousQuartier)) { $reqCountSousQuartierQuartier = "SELECT count(distinct idAdresse) as nbAdressesSousQuartiers FROM historiqueAdresse WHERE idSousQuartier='" . $fetchSousQuartier['idSousQuartier'] . "'"; $resCountSousQuartierQuartier = $this->connexionBdd->requete($reqCountSousQuartierQuartier); $fetchAdressesSousQuartiers = mysql_fetch_assoc($resCountSousQuartierQuartier); $nbAdressesSousQuartiers += $fetchAdressesSousQuartiers['nbAdressesSousQuartiers']; } $reqCountQuartiers = "SELECT count(distinct idAdresse) as nbAdressesQuartier FROM historiqueAdresse WHERE idQuartier = '" . $fetch['idQuartier'] . "'"; $resCountQuartiers = $this->connexionBdd->requete($reqCountQuartiers); $fetchCountQuartiers = mysql_fetch_assoc($resCountQuartiers); $nbAdressesQuartiers += $fetchCountQuartiers['nbAdressesQuartier']; $nbAdressesTotales = $nbAdressesRues + $nbAdressesSousQuartiers + $nbAdressesQuartiers; $nbResultats = "(" . $nbAdressesTotales . ")"; $htmlPhoto = ''; $urlPhoto = $this->getUrlImageFromQuartier($fetch['idQuartier'], 'moyen'); if (!pia_ereg("transparent.gif", $urlPhoto)) { // la fonction renvoi le lien vers une photo transparente si elle ne trouve pas de photo de du quartier $htmlPhoto = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_quartier' => $fetch['idQuartier'])) . "'><img src='" . $urlPhoto . "' border=0></a>"; } else { // pas de photo $htmlPhoto = "<span style='float:right;margin:0px;padding:0px;'><a href='" . $this->creerUrl('', 'adresseListe', array('recherche_quartier' => $fetch['idQuartier'])) . "'><table border='' style='margin:0px;padding:0px;border:1px solid #000000;font-size:11px;background-image:url(" . $this->getUrlImage() . "imageDefautArchiv2.jpg);' width=200 height=150><tr><td align=center valign=center style='padding-top:100px;'>Pas de photo</td></tr></table></a></span>"; } $lien = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_quartier' => $fetch['idQuartier'])) . "'>" . stripslashes($fetch['nom']) . "</a>" . $nbResultats; if ($nbAdressesTotales > 0) { $tableau->addValue($htmlPhoto . "<br>" . $lien); } } $t->assign_vars(array('elements' => $tableau->createHtmlTableFromArray(3))); break; case "parVilles": $arrayVillesNotEmpty = $r->getIdVillesNotEmpty(); $arrayListeVillesAvecAdresses = $arrayVillesNotEmpty["arrayIdVilles"]; $listeVilleAvecAdresses = implode(",", $arrayListeVillesAvecAdresses); //pagination $reqNbVilles = "\n\t\t\t\t\t\tSELECT 0\n\t\t\t\t\t\tFROM ville\n\t\t\t\t\t\twhere (idPays = '1' or idPays='2')\n\t\t\t\t\t\tAND idVille in (" . $listeVilleAvecAdresses . ")\n\t\t\t\t\t\t\t\tand nom <>'autre'\n\t\t\t\t\t\t\t\t"; $resNbVilles = $this->connexionBdd->requete($reqNbVilles); $nbEnregistrementTotaux = mysql_num_rows($resNbVilles); // nombre d'images affichées sur une page $nbEnregistrementsParPage = 12; $arrayPagination = $this->pagination(array('nomParamPageCourante' => 'archiPageCouranteVille', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire')); $t->assign_vars(array('pagination' => $arrayPagination['html'])); $req = "\n\t\t\t\t\t\tSELECT v.nom,v.idVille, lower(substr(v.nom,1,1)) as lettre\n\t\t\t\t\t\tFROM ville v\n\n\t\t\t\t\t\tWHERE (v.idPays = '1' or v.idPays='2')\n\t\t\t\t\t\tAND v.nom<>'autre'\n\t\t\t\t\t\tAND idVille in (" . $listeVilleAvecAdresses . ")\n\t\t\t\t\t\t\t\tORDER BY v.nom\n\t\t\t\t\t\t\t\tLIMIT " . $arrayPagination['limitSqlDebut'] . "," . $nbEnregistrementsParPage; $tableau = new tableau(); $res = $this->connexionBdd->requete($req); while ($fetch = mysql_fetch_assoc($res)) { $listeRuesVille = "SELECT idRue FROM rue WHERE idSousQuartier IN (SELECT idSousQuartier FROM sousQuartier WHERE idQuartier IN (SELECT idQuartier FROM quartier WHERE idVille='" . $fetch['idVille'] . "'))"; $listeSousQuartiersVille = "SELECT idSousQuartier FROM sousQuartier WHERE idQuartier IN (SELECT idQuartier FROM quartier WHERE idVille='" . $fetch['idVille'] . "')"; $listeQuartiersVille = "SELECT idQuartier FROM quartier WHERE idVille='" . $fetch['idVille'] . "'"; // comptage du nombre d'adresse liés a ces elements d'adresses $resRuesVille = $this->connexionBdd->requete($listeRuesVille); $nbRues = 0; while ($fetchRuesVilles = mysql_fetch_assoc($resRuesVille)) { $reqNbAdressesRue = "SELECT count(distinct idAdresse) as nbAdressesRue FROM historiqueAdresse WHERE idRue='" . $fetchRuesVilles['idRue'] . "'"; $resNbAdressesRue = $this->connexionBdd->requete($reqNbAdressesRue); $fetchNbAdressesRue = mysql_fetch_assoc($resNbAdressesRue); $nbRues += $fetchNbAdressesRue['nbAdressesRue']; } $resSousQuartiersVille = $this->connexionBdd->requete($listeSousQuartiersVille); $nbSousQuartiers = 0; while ($fetchSousQuartiersVille = mysql_fetch_assoc($resSousQuartiersVille)) { $reqNbAdressesSousQuartier = "SELECT count(distinct idAdresse) as nbAdressesSousQuartiers FROM historiqueAdresse WHERE idSousQuartier='" . $fetchSousQuartiersVille['idSousQuartier'] . "'"; $resNbAdressesSousQuartier = $this->connexionBdd->requete($reqNbAdressesSousQuartier); $fetchNbAdressesSousQuartier = mysql_fetch_assoc($resNbAdressesSousQuartier); $nbSousQuartiers += $fetchNbAdressesSousQuartier['nbAdressesSousQuartiers']; } $resQuartiersVille = $this->connexionBdd->requete($listeQuartiersVille); $nbQuartiers = 0; while ($fetchQuartiersVille = mysql_fetch_assoc($resQuartiersVille)) { $reqNbAdressesQuartier = "SELECT count(distinct idAdresse) as nbAdressesQuartiers FROM historiqueAdresse WHERE idQuartier='" . $fetchQuartiersVille['idQuartier'] . "'"; $resNbAdressesQuartier = $this->connexionBdd->requete($reqNbAdressesQuartier); $fetchNbAdressesQuartier = mysql_fetch_assoc($resNbAdressesQuartier); $nbQuartiers += $fetchNbAdressesQuartier['nbAdressesQuartiers']; } $nbVilles = 0; $reqNbAdressesVilles = "SELECT count(distinct idAdresse) as nbAdressesVilles FROM historiqueAdresse WHERE idVille='" . $fetch['idVille'] . "'"; $resNbAdressesVilles = $this->connexionBdd->requete($reqNbAdressesVilles); $fetchNbAdressesVilles = mysql_fetch_assoc($resNbAdressesVilles); $nbVilles = $fetchNbAdressesVilles['nbAdressesVilles']; $totalAdresses = $nbRues + $nbQuartiers + $nbVilles; $recherche = new archiRecherche(); $nbResult = $recherche->getNumberOfAdresse(array('ville' => $fetch['idVille'])); $nbResultats = " (" . $nbResult . ")"; $htmlPhoto = ""; $urlPhoto = $this->getUrlImageFromVille($fetch['idVille'], 'moyen'); if ($urlPhoto != '') { $htmlPhoto = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_ville' => $fetch['idVille'])) . "'><img src='" . $urlPhoto . "' border=0></a>"; } $lien = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_ville' => $fetch['idVille'])) . "'>" . stripslashes($fetch['nom']) . "</a>" . $nbResultats . "<br>"; if ($totalAdresses > 0) { $tableau->addValue($htmlPhoto . "<br>" . $lien); } } $t->assign_vars(array('elements' => $tableau->createHtmlTableFromArray(3))); break; case "parRuesDeQuartier": default: // DEFAULT : affichage parRues // s'il n'y a pas de criteres on affiche les dossiers des rues de strasbourg $r = new archiRecherche(); $s = new stringObject(); if (isset($this->variablesGet['archiIdQuartier']) && $this->variablesGet['archiIdQuartier'] != '') { $arrayRues = $this->getIdRuesFrom($this->variablesGet['archiIdQuartier'], 'quartier'); } else { $arrayRues = $this->getIdRuesFrom($idVilleGeneral, 'ville'); } $arrayRuesNotEmpty = $r->getIdRuesNotEmpty(); $arrayIdRuesNotEmpty = array(); $arrayListeAlphabetique = array(); foreach ($arrayRues as $indice => $idRue) { if (in_array($idRue, $arrayRuesNotEmpty['arrayIdRues'])) { $arrayIdRuesNotEmpty[] = $idRue; $reqInitiales = "SELECT lower(substring(nom,1,1)) as initiale FROM rue WHERE idRue='" . $idRue . "'"; $resInitiales = $this->connexionBdd->requete($reqInitiales); $fetchInitiales = mysql_fetch_assoc($resInitiales); $initiale = $fetchInitiales['initiale']; $arrayListeAlphabetique[] = $s->sansAccents($initiale); // enleve les accents if (!isset($this->variablesGet['lettreCourante']) || isset($this->variablesGet['lettreCourante']) && $s->sansAccents($initiale) == $this->variablesGet['lettreCourante']) { $arrayIdRuesNotEmptyWithSelection[] = $idRue; // prend en compte le nombre de rue selectionnée ou non par leur initiales } } } $sqlCritere = ""; if (isset($this->variablesGet['lettreCourante']) && $this->variablesGet['lettreCourante'] != '') { $sqlCritere = " AND lower(SUBSTRING(nom,1,1))=lower('" . $this->variablesGet['lettreCourante'] . "') "; } $nbEnregistrementTotaux = count($arrayIdRuesNotEmptyWithSelection); // nombre d'images affichées sur une page $nbEnregistrementsParPage = 40; $pagination = new paginationObject(); if (isset($this->variablesGet['archiIdQuartier'])) { $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'archiPageRuesQuartier', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'freeLink', 'urlFreeLink' => $this->creerUrl('', 'listeDossiers', array('archiIdQuartier' => $this->variablesGet['archiIdQuartier'], 'modeAffichageListe' => 'parRuesDeQuartier', 'archiPageRuesQuartier' => '##numPage##')))); } else { $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'archiPageCouranteVille', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire', 'arrayListeAlphabetique' => $arrayListeAlphabetique)); } $t->assign_vars(array('pagination' => $arrayPagination['html'])); $req = "\n\t\t\t\t\t\tSELECT nom,idRue,prefixe, lower(substr(nom,1,1)) as lettre\n\t\t\t\t\t\tFROM rue\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\tidRue in ('" . implode("','", $arrayIdRuesNotEmpty) . "')\n\t\t\t\t\t\t{$sqlCritere}\n\t\t\t\t\t\tORDER BY lettre\n\t\t\t\t\t\tLIMIT " . $arrayPagination['limitSqlDebut'] . "," . $nbEnregistrementsParPage; $res = $this->connexionBdd->requete($req); $tableau = new tableau(); while ($fetch = mysql_fetch_assoc($res)) { // pour chaque rue on va regarder s'il y a des adresses qui correspondent et on les compte (affichage du nombre de resultats) $reqCount = "SELECT count(distinct idAdresse) as nbAdresses FROM historiqueAdresse WHERE idRue='" . $fetch['idRue'] . "'"; $resCount = $this->connexionBdd->requete($reqCount); $fetchCount = mysql_fetch_assoc($resCount); $valCount = $fetchCount['nbAdresses']; $nbResultats = " (" . $valCount . ")"; $htmlPhoto = ''; //$urlPhoto = $this->getUrlImageFromRue($fetch['idRue'],'moyen'); $urlPhoto = "resizeImage.php?id=" . $this->getIdImageFromRue($fetch['idRue']); if (!pia_ereg("transparent.gif", $urlPhoto)) { // la fonction renvoi le lien vers une photo transparente si elle ne trouve pas de photo de la rue $htmlPhoto = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_rue' => $fetch['idRue'])) . "'><img src='" . $urlPhoto . "' border=0></a><br>"; } else { // pas de photo $htmlPhoto = "<a style='margin:0px;padding:0px;' href='" . $this->creerUrl('', 'adresseListe', array('recherche_rue' => $fetch['idRue'])) . "'><table border='' style='margin:0px;padding:0px;border:1px solid #000000;font-size:11px;background-image:url(" . $this->getUrlImage() . "imageDefautArchiv2.jpg);' width=200 height=150><tr><td align=center valign=center style='padding-top:100px;'>Pas de photo</td></tr></table></a>"; } $lien = "<a href='" . $this->creerUrl('', 'adresseListe', array('recherche_rue' => $fetch['idRue'])) . "'>" . stripslashes($fetch['prefixe'] . " " . $fetch['nom']) . "</a>" . $nbResultats; if ($valCount > 0) { $tableau->addValue($htmlPhoto . $lien); } } $t->assign_vars(array('elements' => $tableau->createHtmlTableFromArray(5))); break; } ob_start(); $t->pparse('listeRegroupee'); $html = ob_get_contents(); ob_end_clean(); return $html; }