fonction affichant le formulaire permettant aux admins d'ajouter de nouvelles adresses (rue, sousQuartier, Quartier, ....)
11240
public function afficheFormulaireNouvelleAdresse($criteres = array())
    {
        $html="";

        // verification des droits
        $a = new archiAuthentification();
        $u = new archiUtilisateur();

        if ($u->isAuthorized('admin_rues', $a->getIdUtilisateur()) && $u->isAuthorized('admin_quartiers', $a->getIdUtilisateur()) && $u->isAuthorized('admin_sousQuartiers', $a->getIdUtilisateur())) {
            $t=new Template('modules/archi/templates/');
            $t->set_filenames((array('nouvelleAdresse'=>'nouvelleAdresseFormulaire.tpl')));

            if (!isset($criteres['typeNew'])) {
                $criteres['typeNew']='newRue';
            }

            $typeButtonSubmit='submit';

            switch ($criteres['typeNew']) {
                case 'newRue':
                    $t->assign_block_vars('afficheComplement', array());
                    $criteres['modeAffichage_rue'] = 1;
                    break;
                case 'newSousQuartier':
                    $criteres['modeAffichage_sousQuartier'] = 1;
                    break;
                case 'newQuartier':
                    $criteres['modeAffichage_quartier'] = 1;
                    break;
                case 'newVille':
                    $t->assign_block_vars('afficheCodePostal', array());
                    $criteres['modeAffichage_ville'] = 1;

                    $typeButtonSubmit='button';
                    $paramsGoogleMap = array('googleMapKey'=>$this->googleMapKey);

                    $googleMap = new googleMap($paramsGoogleMap);
                    $js="";
                    $js.= $googleMap->getJsFunctions();
                    $js.= $googleMap->getJSInitGeoCoder();

                    $jsToExecute="document.getElementById('formAjoutNouvelleAdresse').action='".$this->creerUrl('ajoutNouvelleAdresse', '')."';document.getElementById('formAjoutNouvelleAdresse').submit();";

                    $arrayJsCoordonneesFromGoogleMap = $googleMap->getJSRetriveCoordonnees(array(
                            'nomChampLatitudeRetour'=>'latitude',
                            'nomChampLongitudeRetour'=>'longitude',
                            'getAdresseFromElementById'=>true,
                            'jsAdresseValue'=>"document.getElementById('nouvelElement').value+' '+document.getElementById('pays').options[document.getElementById('pays').selectedIndex].innerHTML",
                            'jsToExecuteIfOK'=>$jsToExecute,
                            'jsToExecuteIfNoAddressFound'=>$jsToExecute
                    ));

                    $js.= $arrayJsCoordonneesFromGoogleMap['jsFunctionToExecute'];



                    $t->assign_vars(array(
                            "champsLongitudeLatitude"=>"<input type='text' name='longitude' id='longitude' value=''><input type='text' name='latitude' id='latitude' value=''>",
                            "jsLongitudeLatitude"=>$js,
                            "typeButtonSubmit"=>"button",
                            "onClickButtonSubmit"=>$arrayJsCoordonneesFromGoogleMap['jsFunctionCall']
                    )); // gestion de la recherche des coordonnees googlemap

                    break;
                case 'newPays':
                    $criteres['modeAffichage_pays'] = 1;
                    break;
                default:
                    $criteres['modeAffichage_rue'] = 1;
            }

            $a = new archiAuthentification();
            if ($a->getIdProfil()==3) {// l'utilisateur est un moderateur , on le limite a la ville qu'il administre
                $t->assign_block_vars('liensModerateur', array());
                $t->assign_vars(array(
                        'urlNewRue'     =>  $this->creerUrl('', 'ajoutNouvelleAdresse', array('typeNew' => 'newRue')),
                        'urlNewSousQuartier'    =>  $this->creerUrl('', 'ajoutNouvelleAdresse', array('typeNew' => 'newSousQuartier')),
                        'urlNewQuartier'    =>  $this->creerUrl('', 'ajoutNouvelleAdresse', array('typeNew' => 'newQuartier'))
                ));
            } else {
                $t->assign_block_vars('liensAdmin', array());
                $t->assign_vars(array(
                        'urlNewRue'     =>  $this->creerUrl('', 'ajoutNouvelleAdresse', array('typeNew' => 'newRue')),
                        'urlNewSousQuartier'    =>  $this->creerUrl('', 'ajoutNouvelleAdresse', array('typeNew' => 'newSousQuartier')),
                        'urlNewQuartier'    =>  $this->creerUrl('', 'ajoutNouvelleAdresse', array('typeNew' => 'newQuartier')),
                        'urlNewVille'       =>  $this->creerUrl('', 'ajoutNouvelleAdresse', array('typeNew' => 'newVille')),
                        'urlNewPays'        =>  $this->creerUrl('', 'ajoutNouvelleAdresse', array('typeNew' => 'newPays'))
                ));
            }





            $t->assign_vars(array(
                    'afficheChoixAdresse'=>$this->afficheChoixAdresse($criteres),
                    'typeNouvelElement'=>$criteres['typeNew'],
                    'formAction'=>$this->creerUrl('ajoutNouvelleAdresse'),
                    'typeButtonSubmit'=>$typeButtonSubmit
            ));


            ob_start();
            $t->pparse('nouvelleAdresse');
            $html=ob_get_contents();
            ob_end_clean();
        } else {
            $erreurObj = new objetErreur();
            $erreurObj->ajouter("Vous n'avez pas les droits pour acceder à cette partie du site");
            echo $erreurObj->afficher();
        }

        return $html;
    }
714419
public function afficheComparateur($criteres = array())
    {
        $html="";
        $t = new Template('modules/archi/templates/');
        //$t->set_filenames((array('evl'=>'evenementFormulaire.tpl')));
        $t->set_filenames((array('comparaison'=>'comparaisonEvenements.tpl')));

        $s = new stringObject();

        // *****************************************************************************************************************
        // recuperation des parametres  , idHistoriqueEvenementAncien et idHistoriqueEvenementNouveau
        $idHistoriqueEvenementAncien =0;
        $idHistoriqueEvenementNouveau=0;

        // post
        if (isset($this->variablesGet['idHistoriqueEvenementAncien']) && $this->variablesGet['idHistoriqueEvenementAncien']!='' && $this->variablesGet['idHistoriqueEvenementAncien']!='0') {
            $idHistoriqueEvenementAncien = $this->variablesGet['idHistoriqueEvenementAncien'];
        }

        if (isset($this->variablesGet['idHistoriqueEvenementNouveau']) && $this->variablesGet['idHistoriqueEvenementNouveau']!='' && $this->variablesGet['idHistoriqueEvenementNouveau']!='0') {
            $idHistoriqueEvenementNouveau = $this->variablesGet['idHistoriqueEvenementNouveau'];
        }

        // ou criteres
        if (isset($criteres['idHistoriqueEvenementAncien']) && $criteres['idHistoriqueEvenementAncien']!='' && $criteres['idHistoriqueEvenementAncien']!='0') {
            $idHistoriqueEvenementAncien = $criteres['idHistoriqueEvenementAncien'];
        }

        if (isset($criteres['idHistoriqueEvenementNouveau']) && $criteres['idHistoriqueEvenementNouveau']!='' && $criteres['idHistoriqueEvenementNouveau']!='0') {
            $idHistoriqueEvenementNouveau = $criteres['idHistoriqueEvenementNouveau'];
        }

        // *****************************************************************************************************************

        // affichage de la page courante ( donc avec le nouvel idHistoriqueEvenement )
        $evenement = new archiEvenement();

        // on recupere l'idEvenement
        $query = "select idEvenement from historiqueEvenement where idHistoriqueEvenement = '".$idHistoriqueEvenementNouveau."'";
        $res = $this->connexionBdd->requete($query);
        $fetch = mysql_fetch_assoc($res);

        $retourCourant="";
        if (isset($fetch['idEvenement'])) {
            $retourCourant = $this->afficher($fetch['idEvenement']);


            $retourNouveau = $evenement->afficherFromIdHistoriqueEvenement($idHistoriqueEvenementNouveau);

            $retourAncien = $evenement->afficherFromIdHistoriqueEvenement($idHistoriqueEvenementAncien);

            // en dessous nous affichons le tableau de comparaison
            $t->assign_vars(array(
                    'evenementCourant'=>$retourCourant['html'],
                    'versionAvant'=>$retourAncien,
                    'versionMaintenant'=>$retourNouveau,
                    'lienVersionPrecedente'=>"location.href='".$this->creerUrl('supprimerHistoriqueEvenement', '', array('archiIdHistoriqueEvenement'=>$idHistoriqueEvenementNouveau))."';"
            ));

            $html.="<b>Différences dans la description : </b><br>";
            $arrayDiffHtml = $s->getTexteDifferences(array('nouveau'=>stripslashes($evenement->afficherFromIdHistoriqueEvenement($idHistoriqueEvenementNouveau, array('returnDescriptionOnly'=>true))),'ancien'=>stripslashes($evenement->afficherFromIdHistoriqueEvenement($idHistoriqueEvenementAncien, array('returnDescriptionOnly'=>true)))));
            $html.=$arrayDiffHtml['html'];
            //$html.= $s->getTxtDiffByPEAR(array('nouveau'=>stripslashes($evenement->afficherFromIdHistoriqueEvenement($idHistoriqueEvenementNouveau,array('returnDescriptionOnly'=>true))),'ancien'=>stripslashes($evenement->afficherFromIdHistoriqueEvenement($idHistoriqueEvenementAncien,array('returnDescriptionOnly'=>true)))));
            // => ok mais a mettre en forme



            ob_start();
            $t->pparse('comparaison');
            $html .= ob_get_contents();
            ob_end_clean();
        } else {
            $erreurObject = new objetErreur();
            $erreurObject->ajouter("L'événement ne peut pas être affiché. Celui-ci a été effacé.");
            $html.=$erreurObject->afficher();
        }

        return $html;
    }
550292
function link($timeout, $compile, scope, ngelt, attrs, ctrl) {
		ctrl.reItems = new RegExp("\s?limitTo\s?\:\s?" + attrs.ngLimit + "\s?\:\s?" + attrs.ngBegin + ""); // pour déterminer quel items sont gerer
		scope.ngBegin = 0;
		scope.ngLimit = 1;
		ctrl.ngelt = ngelt; // on sauve l'element jquery
		ctrl.elt = getHtmlElement(ngelt); // on sauve l'element
		ctrl.ngsb = $compile("<span mode='hidden' class='scrollbar')></span>")(scope);
		var info = $compile("<span ng-show='ctrl.infos' class='infos-scrolling' ng-bind='ctrl.infos'></span>")(scope);
		ngelt.append(info);
		ngelt.append(ctrl.ngsb);
		ctrl.sb = getHtmlElement(ctrl.ngsb);
		var watcherClears = [];
		if (ngelt.css('display') === 'none') { // si c'est une popup, on surveille le display
			var watcherClear = scope.$watch(function (scope) {
				return scope.ctrl.ngelt.css('display');
			}, function (v1, v2, s) {
				if (v1 !== 'none') {
					if (s.max) {
						s.ngLimit = s.max;
						s.ctrl.updateTotal();
					} else {
						s.ngLimit = 1;
						s.ctrl.updateSize();
					}
					watcherClear();
				}
			});
			watcherClears.push(watcherClear);
		}
		if (ctrl.horizontal) {
			watcherClears.push(scope.$watch(function (scope) {
				return scope.ctrl.ngelt.width();
			}, function (v1, v2, s) {
				if (v1 !== v2) {
					s.ctrl.getScrollbarArea().invalid = true;
					s.ctrl.getEltArea().invalid = true;
					s.ctrl.updateSize();
				}
			}));
		} else {
			watcherClears.push(scope.$watch(function (scope) {
				return scope.ctrl.ngelt.height();
			}, function (v1, v2, s) {
				if (v1 !== v2) {
					s.ctrl.getScrollbarArea().invalid = true;
					s.ctrl.getEltArea().invalid = true;
					s.ctrl.updateSize();
				}
			}));
		}
		var totalTimer;
		watcherClears.push(scope.$watch('total', function (v1, v2, s) {
			if (v1 !== v2) {
				if(totalTimer) $timeout.cancel(totalTimer);
				totalTimer = $timeout(s.ctrl.updateTotal, s.debounce || DEBOUNCE, true);
			}
		}));
		var limitTimer;
		watcherClears.push(scope.$watch('ngLimit', function (v1, v2, s) {
			if (v1 !== v2) {
				if(limitTimer) $timeout.cancel(limitTimer);
				limitTimer = $timeout(s.ctrl.updateLimit, s.debounce || DEBOUNCE, true);
			}
		}));
		watcherClears.push(scope.$watch('ngBegin', function (v1, v2, s) {
			if (v1 >= 0 && v1 <= s.total - s.ctrl.getInnerLimit()) {
				s.ctrl.updateBegin();
			} else if (v1 < 0) {
				s.ngBegin = 0;
			} else {
				s.ngBegin = Math.max(s.total - s.ctrl.getInnerLimit(), 0);
			}
		}));
		scope.$on('$destroy', function () {
			ctrl.removeEventListeners();
			watcherClears.forEach(function (watcherClear) {
				watcherClear();
			});
		});
		ctrl.addEventListeners();
	}
282135
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>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<a href='".$this->creerUrl('', 'listeDossiers', array('modeAffichageListe'=>'parQuartiers','archiIdVilleGeneral'=>$idVilleGeneral))."'>"._("Par quartiers de")." ".$nomVilleGeneral."</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<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
						FROM quartier
						WHERE idQuartier in ('".implode("','", $arrayListeQuartiersNotEmpty)."')
								and nom<>'autre'
								ORDER BY nom ASC
								LIMIT ".$arrayPagination['limitSqlDebut'].",".$nbEnregistrementsParPage."
										";

                $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 = "
						SELECT 0
						FROM ville
						where (idPays = '1' or idPays='2')
						AND idVille in (".$listeVilleAvecAdresses.")
								and nom <>'autre'
								";
                $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 = "
						SELECT v.nom,v.idVille, lower(substr(v.nom,1,1)) as lettre
						FROM ville v

						WHERE (v.idPays = '1' or v.idPays='2')
						AND v.nom<>'autre'
						AND idVille in (".$listeVilleAvecAdresses.")
								ORDER BY v.nom
								LIMIT ".$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 = "
						SELECT nom,idRue,prefixe, lower(substr(nom,1,1)) as lettre
						FROM rue
						WHERE
						idRue in ('".implode("','", $arrayIdRuesNotEmpty)."')
						$sqlCritere
						ORDER BY lettre
						LIMIT ".$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;
    }
1156437
public function ajouterNouveauDossier()
    {
        $mail = new mailObject();
        // ******************************************************
        // en premier lieu on ajoute l'adresse
        // ******************************************************
        $arrayNewAdresses = array();
        
        $longitude='0';
        $latitude='0';
        if (isset($this->variablesPost['idUnique']) && count($this->variablesPost['idUnique'])>0) {
            if (isset($this->variablesPost['latitude']) && isset($this->variablesPost['longitude']) && $this->variablesPost['latitude']!='' && $this->variablesPost['longitude']!='') {
                $longitude = $this->variablesPost['longitude'];
                $latitude = $this->variablesPost['latitude'];
            }
            
            foreach ($this->variablesPost['idUnique'] as $indice => $valueIdUnique) {
                if ($this->variablesPost['rue'][$valueIdUnique]!='' && $this->variablesPost['rue'][$valueIdUnique]!='0') {
                    $arrayNewAdresses[] = $this->ajouterAdresseFromArray(
                        array(
                            'idPays'=>1, 
                            'idVille'=>$this->variablesPost['ville'], 
                            'idQuartier' => $this->variablesPost['quartiers'], 
                            'idSousQuartier'=>$this->variablesPost['sousQuartiers'], 
                            'numero'=>$this->variablesPost['numero'][$valueIdUnique], 
                            'indicatif'=>$this->variablesPost['indicatif'][$valueIdUnique], 
                            'idRue'=>$this->variablesPost['rue'][$valueIdUnique], 
                            'longitude'=>$this->variablesPost['longitude'][$valueIdUnique], 
                            'latitude'=>$this->variablesPost['latitude'][$valueIdUnique]
                        )
                    );
                } else {
                    $arrayNewAdresses[] = $this->ajouterAdresseFromArray(
                        array(
                            'idPays'=>1, 
                            'idVille'=>$this->variablesPost['ville'], 
                            'idQuartier' => $this->variablesPost['quartiers'], 
                            'idSousQuartier'=>$this->variablesPost['sousQuartiers'], 
                            'numero'=>0, 
                            'indicatif'=>0, 
                            'idRue'=>0, 
                            'longitude'=>'', 
                            'latitude'=>''
                        )
                    );
                }
            }
            
            
            $sql = "SELECT ha1.idAdresse as idAdresse
				FROM historiqueAdresse ha1, historiqueAdresse ha2
				WHERE ha2.idAdresse = ha1.idAdresse
				AND ha1.idRue='".$tabForm['rue']['value']."'
				AND ha1.idSousQuartier='".$tabForm['sousQuartier']['value']."'
				AND ha1.idQuartier='".$tabForm['quartier']['value']."'
				AND ha1.idVille='".$tabForm['ville']['value']."'
				AND ha1.idPays='".$tabForm['pays']['value']."'
				AND ha1.numero = '".$tabForm['numero']['value']."'
				AND ha1.date='".$tabForm['date']['value']."'
				AND ha1.idIndicatif='".$tabForm['indicatif']['value']."'
				GROUP BY ha1.idAdresse, ha1.idHistoriqueAdresse
				HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)";
            $resDouble = $this->connexionBdd->requete($sql);
            $arrayDouble = mysql_fetch_assoc($resDouble);
            
			$this->addEvent("adresse",  $arrayNewAdresses);
            
            // enfin on regenere les caches
            //$cache = new cacheObject();
            //$cache->refreshCache();
        } else if (isset($_POST["metier"]) && !empty($_POST["nom"])) {
            $this->ajouter();
            $newPerson=array(
            		array(
            				"idAdresse"=>mysql_insert_id(),
            				'newAdresse'=>true
            		)
            );
            $this->addEvent("personne",  $newPerson);
        } else {
            $this->erreurs->ajouter("Aucune fiche n'a pu être ajoutée. Vérifiez la saisie du champ.");
        }
    }
406959
function afficheAccueil($params=array())
	{
		$t = new Template($this->getCheminPhysique().$this->cheminTemplates);
		$t->set_filenames(array('accueil'=>'accueil.tpl'));
		$html = '';
		$infos = "";

		$calque = new calqueObject();
		$date = new dateObject();
		$auth = new archiAuthentification();

		
		
		if ($auth->estConnecte()) {
			$t->assign_block_vars('estConnecte', array());
		}

		$t->assign_vars(
				array(
						'urlAjoutAdresse'=>$this->creerUrl('', 'ajoutNouveauDossier')
				)
		);

		$adresses = new archiAdresse();

		if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage']!='') {
			$modeAffichage = $this->variablesGet['modeAffichage'];
		} else {
			$modeAffichage = '';
		}

		switch($modeAffichage) {
			// **********************************************************************************************************************************
			// PROFIL
			// **********************************************************************************************************************************
			case 'profil':

				$t->assign_block_vars('afficheProfil', array());

				$t->assign_vars(
						array(
								'onglet1'=>"<a href='".$this->creerUrl('', 'afficheAccueil', array('modeAffichage'=>''))."'><font color='#FFFFFF'>"._("Nouveautés")."</font></a>",
								'onglet2'=>_("Mon Profil"),
								'onglet3'=>"<a href='".$this->creerUrl('', 'afficheAccueil', array('modeAffichage'=>'monArchi'))."'><font color='#FFFFFF'>"._("Mon Archi")."</font></a>"
						)
				);


				$u = new archiUtilisateur();
				$s = new objetSession();

				if ($s->isInSession('utilisateurConnecte'.$this->idSite)) {
					$profil = $u->afficher(array(), $s->getFromSession('utilisateurConnecte'.$this->idSite), 'utilisateurProfil');
				} else {
					//header('Location: ?archiAffichage=authentification&archiActionPrecedente=afficheProfil');
					$authentification = new ArchiAuthentification();
					echo $authentification->afficheFormulaireAuthentification();
				}


				$t->assign_vars(array('htmlProfil'=>$profil));
				break;
				//Mon Archi
			case 'monArchi':

				$t->assign_block_vars('afficheMonArchi', array());

				$t->assign_vars(
						array(
								'onglet1'=>"<a href='".$this->creerUrl('', 'afficheAccueil', array('modeAffichage'=>''))."'><font color='#FFFFFF'>"._("Nouveautés")."</font></a>",
								'onglet2'=>"<a href='".$this->creerUrl('', 'afficheAccueil', array('modeAffichage'=>'profil'))."'><font color='#FFFFFF'>"._("Mon Profil")."</font></a>",
								'onglet3'=>_("Mon Archi")
						)
				);

				$utilisateur = new archiUtilisateur();
				$adresse = new archiAdresse();


				$arrayInfosConnexions = $utilisateur->getInfosConnexions($auth->getIdUtilisateur());

				$arrayInfosModifs = $utilisateur->getInfosModifsPerso($auth->getIdUtilisateur());

				$monArchi="<table border=''><tr><td width=500><h2>"._("Mon Archi")."</h2></td></tr></table>";
				if (mysql_fetch_assoc($this->connexionBdd->requete("SELECT idImage FROM historiqueImage WHERE idUtilisateur = '".$auth->getIdUtilisateur()."' AND licence = '3'"))) {
					$monArchi.= "<strong>"._("Certaines de vos images ne sont pas librement réutilisables !")."</strong>";
					$monArchi.="<br/>";
					$monArchi.=_("Cliquez")." <a href='".$this->creerUrl("",  "batchLicence")."'>"._("ici")."</a> "._("pour les publier sous licence libre.");
					$monArchi.="<br/><br/>";
				}
				$monArchi.="<div style='font-size:12px;'>
						<b>"._("En tant qu'utilisateur vous pouvez :")."</b><ul>
						<li> <a href='".$this->creerUrl('', 'ajoutNouveauDossier')."' onmouseover=\"".$calque->getJsContextHelpOnMouseOver(_("En ajoutant votre adresse vous contribuez au développement du site. Mais d\'abord qu\'entend t-on par \"votre adresse\" ? Et bien cela peut être l\'immeuble ou la maison que vous occupez. Un immeuble que vous aimez mais que vous ne trouvez pas sur le site. Avec le développement des appareils photo numériques,  il devient très simple de prendre une photo,  et de la copier sur l\'ordinateur. Ajouter une adresse dans www.archi-strasbourg.org ne prend pas plus de 20 secondes. Copier la photo 10 secondes de plus..."))."\" onmouseout='".$calque->getJSContextHelpOnMouseOut()."'>"._("ajouter des adresses")."</a></li>
						<li> <span onmouseover=\"".$calque->getJsContextHelpOnMouseOver(_("Vous pouvez ajouter des photos afin d'illustrer une adresse."))."\" onmouseout=\"".$calque->getJSContextHelpOnMouseOut()."\"> "._("ajouter des photos à une adresse")."</span></li>
						<li> <span onmouseover=\"".$calque->getJsContextHelpOnMouseOver(_("Vous pouvez ajouter des évènements sur toute adresse qu'un autre utilisateur a créée."))."\" onmouseout=\"".$calque->getJSContextHelpOnMouseOut()."\">"._("ajouter des évènements à une adresse")."</span></li>
						<li> <span onmouseover=\"".$calque->getJsContextHelpOnMouseOver(_("En activant votre alerte mail sur les adresses,  vous serez prevenu de toute modification sur une adresse dont vous êtes l'auteur"))."\" onmouseout=\"".$calque->getJSContextHelpOnMouseOut()."\">"._("être prévenu par mail d'une modification de vos participations")."</span></li>
						<li> <span onmouseover=\"".$calque->getJsContextHelpOnMouseOver(_("En acceptant de recevoir les mails concernant les nouvelles adresses,  vous serez prévenu de l'ajout d'une nouvelle adresse sur le site."))."\" onmouseout=\"".$calque->getJSContextHelpOnMouseOut()."\">"._("être averti des nouvelles adresses")."</span></li>
						<li> <span onmouseover=\"".$calque->getJsContextHelpOnMouseOver(_("Grâce à l'alerte par mail sur les commentaires,  vous pouvez débattre avec les autres utilisateurs."))."\" onmouseout=\"".$calque->getJSContextHelpOnMouseOut()."\">"._("être averti des nouveaux commentaires ajoutés sur une adresse que vous avez créée.")."</span></li></ul>";
				$monArchi.="<b>"._("Vos statistiques :")."</b><br>";
				$monArchi.=""._("Vous vous êtes connecté :")." ".$arrayInfosConnexions['nbConnexions']." fois<br>";
				$monArchi.="&nbsp;&nbsp;&nbsp;"._("Date de votre dernière connexion :")." ".$this->date->toFrench($arrayInfosConnexions['derniereConnexion'])."<br>";

				$monArchi.="<p>
						&nbsp;&nbsp;&nbsp;"._("Nombre d'images modifiées :")." ".$arrayInfosModifs['nbModifImage']."<br />
						&nbsp;&nbsp;&nbsp;"._("Nombre d'images ajoutées :")." ".$arrayInfosModifs['nbAjoutImage']."<br />
						&nbsp;&nbsp;&nbsp;"._("Nombre d'évènements modifiés :")." ".$arrayInfosModifs['nbModifEvenement']."<br />
						&nbsp;&nbsp;&nbsp;"._("Nombre d'évènements ajoutés :")." ".$arrayInfosModifs['nbAjoutEvenement']."</p>";
				// ******************************************************************************************************************************************
				// liste des evenements ajoutés ou modifiés par l'utilisateur
				// ******************************************************************************************************************************************
				$paginationEvenements = new paginationObject();

				// calcul du nombre d'evenements ajoutes ou modifies pour la pagination
				$req = "
						SELECT distinct ha1.idAdresse, he1.dateCreationEvenement as dateCreationEvenement

						FROM evenements he2,  evenements he1
						LEFT JOIN _evenementEvenement ee1 ON ee1.idEvenementAssocie = he1.idEvenement
						LEFT JOIN _adresseEvenement ae ON ae.idEvenement = ee1.idEvenement
						LEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse
						LEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse

						WHERE he2.idEvenement = he1.idEvenement
						AND he1.idUtilisateur = '".$auth->getIdUtilisateur()."'
								GROUP BY he1.idEvenement,  ha1.idAdresse,  ha1.idHistoriqueAdresse
								HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
								";
				$res = $this->connexionBdd->requete($req);

				//$fetchNbEvenements = mysql_fetch_assoc($res);

				$nbEnregistrementTotaux = mysql_num_rows($res);


				$nbEnregistrementsParPage=5;

				$arrayPaginationEvenements=$paginationEvenements->pagination(
						array(
								'nomParamPageCourante'=>'archiMonArchiEvenementPage',
								'nbEnregistrementsParPage'=>$nbEnregistrementsParPage,
								'nbEnregistrementsTotaux'=>$nbEnregistrementTotaux,
								'typeLiens'=>'noformulaire'
						)
				);



				$req = "
						SELECT distinct ha1.idAdresse as idAdresse, he1.dateCreationEvenement as dateCreationEvenement,  ha1.numero,  ha1.idRue,  ha1.idSousQuartier,  ha1.idQuartier,  ha1.idVille, ha1.idIndicatif,

						ha1.idAdresse as idAdresse,  ha1.numero,  ha1.idQuartier,  ha1.idVille, ind.nom,

						r.nom as nomRue,
						sq.nom as nomSousQuartier,
						q.nom as nomQuartier,
						v.nom as nomVille,
						p.nom as nomPays,
						ha1.numero as numeroAdresse,
						ha1.idRue,
						r.prefixe as prefixeRue,
						IF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,
						IF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,
						IF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,
						IF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays,

						ha1.numero as numero,
						ha1.idHistoriqueAdresse,
						ha1.idIndicatif as idIndicatif


						FROM evenements he2,  evenements he1
						LEFT JOIN _evenementEvenement ee1 ON ee1.idEvenementAssocie = he1.idEvenement
						LEFT JOIN _adresseEvenement ae ON ae.idEvenement = ee1.idEvenement
						LEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse
						LEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse

						LEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif

						LEFT JOIN rue r         ON r.idRue = ha1.idRue
						LEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )
						LEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )
						LEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )
						LEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )


						WHERE he2.idEvenement = he1.idEvenement
						AND he1.idUtilisateur = '".$auth->getIdUtilisateur()."'
								GROUP BY he1.idEvenement,  ha1.idAdresse,  ha1.idHistoriqueAdresse
								HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
								ORDER BY he1.dateCreationEvenement DESC

								";

				$req = $paginationEvenements->addLimitToQuery($req);

				$res = $this->connexionBdd->requete($req);
				$monArchi.="<b>"._("Liste de vos derniers évènements créés :")."</b><br>";
				$monArchi.=$arrayPaginationEvenements['html'];
				$tableauEvenements = new tableau();
				if (mysql_num_rows($res)==0) {
					$monArchi.="<br>"._("Vous n'avez pas encore ajouté d'évènement.")."<br>";
				}
				while ($fetch = mysql_fetch_assoc($res)) {
					$tableauEvenements->addValue($date->toFrench($fetch['dateCreationEvenement']));
					$tableauEvenements->addValue("<a href='".$this->creerUrl('', 'adresseDetail', array('archiIdAdresse'=>$fetch['idAdresse']))."'>".stripslashes($adresse->getIntituleAdresse($fetch))."</a>");
				}

				$monArchi.= $tableauEvenements->createHtmlTableFromArray(2, "font-size:12px;");

				// ******************************************************************************************************************************************
				// liste des adresses ajoutés par l'utilisateur
				// ******************************************************************************************************************************************
				$paginationAdresses = new paginationObject();

				$nbEnregistrementsParPage=5;

				$req = "
						SELECT distinct ha1.idAdresse
						FROM historiqueAdresse ha2,  historiqueAdresse ha1
						LEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif
						WHERE ha2.idAdresse = ha1.idAdresse
						AND ha1.idUtilisateur = '".$auth->getIdUtilisateur()."'
								GROUP BY ha1.idAdresse ,  ha1.idHistoriqueAdresse
								HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
								ORDER BY ha1.date DESC
								";

				$res = $this->connexionBdd->requete($req);
				$nbEnregistrementTotaux=mysql_num_rows($res);
				$arrayPaginationAdresses=$paginationAdresses->pagination(
						array(
								'nomParamPageCourante'=>'archiMonArchiAdressesPage',
								'nbEnregistrementsParPage'=>$nbEnregistrementsParPage,
								'nbEnregistrementsTotaux'=>$nbEnregistrementTotaux,
								'typeLiens'=>'noformulaire'
						)
				);

				$req = "
						SELECT distinct ha1.idAdresse as idAdresse, ha1.date as date,  ha1.numero,  ha1.idRue,  ha1.idSousQuartier,  ha1.idQuartier,  ha1.idVille, ha1.idIndicatif,

						ha1.idAdresse as idAdresse,  ha1.numero,  ha1.idQuartier,  ha1.idVille, ind.nom,

						r.nom as nomRue,
						sq.nom as nomSousQuartier,
						q.nom as nomQuartier,
						v.nom as nomVille,
						p.nom as nomPays,
						ha1.numero as numeroAdresse,
						ha1.idRue,
						r.prefixe as prefixeRue,
						IF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,
						IF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,
						IF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,
						IF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays,

						ha1.numero as numero,
						ha1.idHistoriqueAdresse,
						ha1.idIndicatif as idIndicatif


						FROM historiqueAdresse ha2,  historiqueAdresse ha1

						LEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif

						LEFT JOIN rue r         ON r.idRue = ha1.idRue
						LEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )
						LEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )
						LEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )
						LEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )
						WHERE ha2.idAdresse = ha1.idAdresse
						AND ha1.idUtilisateur = '".$auth->getIdUtilisateur()."'
								GROUP BY ha1.idAdresse ,  ha1.idHistoriqueAdresse
								HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
								ORDER BY ha1.date DESC
								";
				$req = $paginationAdresses->addLimitToQuery($req);

				$res = $this->connexionBdd->requete($req);
				$monArchi.="<br><b>"._("Liste de vos adresses :")." </b><br>";
				$monArchi.=$arrayPaginationAdresses['html'];
				$tableauAdresse = new tableau();

				if (mysql_num_rows($res)==0) {
					$monArchi.="<br>"._("Vous n'avez pas encore ajouté d'adresse.")."<br>";
				}

				while ($fetch = mysql_fetch_assoc($res)) {
					$tableauAdresse->addValue($date->toFrench($fetch['date']));
					$tableauAdresse->addValue("<a href='".$this->creerUrl('', 'adresseDetail', array('archiIdAdresse'=>$fetch['idAdresse']))."'>".stripslashes($adresse->getIntituleAdresse($fetch))."</a>");
				}

				$monArchi.=$tableauAdresse->createHtmlTableFromArray(2, "font-size:12px;");

				// ******************************************************************************************************************************************
				// liste des adresses ou l'utilisateur a ajouté un commentaire
				// ******************************************************************************************************************************************
				$paginationCommentaires = new paginationObject();
				$nbEnregistrementsParPage=5;
				$req = "

						SELECT c.idCommentaire
						FROM commentaires c
						LEFT JOIN _adresseEvenement ae ON ae.idEvenement = c.idEvenementGroupeAdresse
						LEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse
						LEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse
						WHERE c.idUtilisateur = '".$auth->getIdUtilisateur()."' OR c.email='".$utilisateur->getMailUtilisateur($auth->getIdUtilisateur())."'
								AND CommentaireValide=1
								GROUP BY ha1.idAdresse,  ha1.idHistoriqueAdresse
								HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
								ORDER BY c.date DESC
								";
				$res = $this->connexionBdd->requete($req);
				$nbEnregistrementTotaux=mysql_num_rows($res);
				$arrayPaginationCommentaires=$paginationCommentaires->pagination(
						array(
								'nomParamPageCourante'=>'archiMonArchiAdressesPage',
								'nbEnregistrementsParPage'=>$nbEnregistrementsParPage,
								'nbEnregistrementsTotaux'=>$nbEnregistrementTotaux,
								'typeLiens'=>'noformulaire'
						)
				);

				$req = "

						SELECT distinct ha1.idAdresse as idAdresse, c.date as dateCommentaire, ha1.date as date,  ha1.numero,  ha1.idRue,  ha1.idSousQuartier,  ha1.idQuartier,  ha1.idVille, ha1.idIndicatif,

						ha1.idAdresse as idAdresse,  ha1.numero,  ha1.idQuartier,  ha1.idVille, ind.nom,

						r.nom as nomRue,
						sq.nom as nomSousQuartier,
						q.nom as nomQuartier,
						v.nom as nomVille,
						p.nom as nomPays,
						ha1.numero as numeroAdresse,
						ha1.idRue,
						r.prefixe as prefixeRue,
						IF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,
						IF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,
						IF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,
						IF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays,

						ha1.numero as numero,
						ha1.idHistoriqueAdresse,
						ha1.idIndicatif as idIndicatif

						FROM commentaires c
						LEFT JOIN _adresseEvenement ae ON ae.idEvenement = c.idEvenementGroupeAdresse
						LEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse
						LEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse

						LEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif

						LEFT JOIN rue r         ON r.idRue = ha1.idRue
						LEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )
						LEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )
						LEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )
						LEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )

						WHERE c.idUtilisateur = '".$auth->getIdUtilisateur()."' OR c.email='".$utilisateur->getMailUtilisateur($auth->getIdUtilisateur())."'
						AND CommentaireValide=1
						GROUP BY ha1.idAdresse,  ha1.idHistoriqueAdresse
						HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
						ORDER BY c.date DESC
								";

				$req = $paginationCommentaires->addLimitToQuery($req);

				$res = $this->connexionBdd->requete($req);
				$monArchi.="<br><b>"._("Liste de vos derniers commentaires :")." </b><br>";
				$monArchi.=$arrayPaginationCommentaires['html'];
				$tableauCommentaires = new tableau();

				if (mysql_num_rows($res)==0) {
					$monArchi.="<br>"._("Vous n'avez pas encore ajouté de commentaire.")."<br>";
				}

				while ($fetch = mysql_fetch_assoc($res)) {
					$tableauCommentaires->addValue($date->toFrench($fetch['dateCommentaire']));
					$tableauCommentaires->addValue("<a href='".$this->creerUrl('', 'adresseDetail', array('archiIdAdresse'=>$fetch['idAdresse']))."'>".stripslashes($adresse->getIntituleAdresse($fetch))."</a>");
				}

				$monArchi.=$tableauCommentaires->createHtmlTableFromArray(2, "font-size:12px;");
				
				
				$monArchi.="<a href=".$this->creerUrl('', 'mesInterets', array()).">Afficher mes interets </a>";

			
				$t->assign_vars(array('htmlMonArchi'=>$monArchi));
				$t->assign_vars(array('calqueHelp'=>$calque->getHtmlDivContextualHelp()));

				break;
				// **********************************************************************************************************************************
				// ACCUEIL
				// **********************************************************************************************************************************
			default:
				$params=array();
				$s = new objetSession();
				if (isset($this->variablesGet['archiIdVilleGeneral']) && $this->variablesGet['archiIdVilleGeneral']!=0 && $this->variablesGet['archiIdVilleGeneral']!='') {
					$params['idVille'] = $this->variablesGet['archiIdVilleGeneral'];
					$s->addToSession('archiIdVilleGeneral', $params['idVille']);
				} elseif ($s->isInSession('archiIdVilleGeneral') && $s->getFromSession('archiIdVilleGeneral')) {
					$params['idVille'] = $s->getFromSession('archiIdVilleGeneral');
					$s->addToSession('archiIdVilleGeneral', $params['idVille']);
				}
				if (isset($this->variablesGet['archiNomVilleGeneral'])
				&& $this->variablesGet['archiNomVilleGeneral']!=''
						) {
					$a = new archiAdresse();

					$params['idVille'] = $a->getIdVilleFromNomVille($this->variablesGet['archiNomVilleGeneral']);

					$_GET['archiIdVilleGeneral'] = $params['idVille'];

					// on place la ville general dans la session ,  ca simplifiera pas mal de choses

					$s->addToSession('archiIdVilleGeneral', $params['idVille']);

				}

				$news = $this->getLatestNewsInfo(1);
					
				//Simple templates
				$t->set_filenames(array('news' => 'accueil/news.tpl'));
				$t->set_filenames(array('derniereModfis' => 'accueil/lastmodifs.tpl'));
				$t->set_filenames(array('commentaire' => 'accueil/commentaire.tpl'));
				$t->set_filenames(array('favoris' => 'accueil/favoris.tpl'));
				$t->set_filenames(array('lastVisit' => 'accueil/lastVisit.tpl'));


				$news['titreCategory'] = 'Actualité de l\'association';
				$news['urlNewsList'] = $this->creerUrl('', 'toutesLesActualites', array());
				$t->assign_block_vars('newsAccueil', $news);
					

				//Gestion pour les commentaires
				$latestComments = $this->getLatestComments(2);
				$t->assign_vars(array(
						'commentaireSectionTitle'=>_("COMMENTAIRES RÉCENTS"),
						'urlListCommentaire' => $this->creerUrl('','tousLesCommentaires')
				));

				foreach ($latestComments as $com){
					$e = new archiEvenement();
					$commentaire = array(
							'date'=> $com['date'],
							'nom' =>  $com['nom'],
							'prenom' => $com['prenom'],
							'adresse' => $com['adresse'],
							'urlAdresse' => $com['urlAdresse'],
							'urlPersonne' => $com['urlPersonne'] ,
							'commentaire' => $com['commentaire']
					);
					$t->assign_block_vars('commentaire', $commentaire);
				}

				$lastModifs = $this->getLatestModification(8);
				foreach ( $lastModifs as $modif ) {
					if(isset($modif['idEvenement']) && $modif['idEvenement']){
						$idAdresse = $modif ['idAdresse'];
						$e = new archiEvenement ();
						$adresseArray = $e->getArrayAdresse ( $modif ['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse' );
						// Adresse
						$adresse = '';
						$adresse = $e->getAddressText ( $adresseArray );
						$infoImage = array ();
						// Image
						$a = new archiAdresse ();
						
						$reqImageEvtRelated = "				
							SELECT hi.idHistoriqueImage,hi.dateUpload,1 as priorite
							FROM historiqueImage hi
							LEFT JOIN _evenementImage ei on ei.idImage = hi.idImage
							WHERE ei.idEvenement = " . $modif ['idEvenement'] . "
					
									UNION
									
							SELECT hi.idHistoriqueImage,hi.dateUpload,2 as priorite
							FROM `evenements` evt
							LEFT JOIN _evenementEvenement ee ON ee.idEvenementAssocie = evt.idEvenement
							LEFT JOIN evenements evt2 ON evt2.idEvenement = ee.idEvenement
							LEFT JOIN historiqueImage hi on hi.idImage = evt2.idImagePrincipale
							LEFT JOIN _evenementImage ei ON ei.idImage = hi.idImage
							WHERE ee.idEvenement IS NOT NULL
							AND evt.idEvenement IS NOT NULL
							AND evt.idEvenement != 0
							AND ei.idEvenement =" . $modif ['idEvenement'] . "
							AND ee.idEvenement =" . $modif ['idEvenementGroupeAdresse'] . "
							
							ORDER BY priorite DESC
							LIMIT 1
							";
						$resImageEvtRelated = $this->connexionBdd->requete ( $reqImageEvtRelated );
						$arrayImage = mysql_fetch_assoc ( $resImageEvtRelated );
						if (isset ( $arrayImage ) && $arrayImage != '') {
							$infoImage = $arrayImage;
						} else {
							$reqImagePrincipale = "
						
							SELECT hi.idHistoriqueImage,hi.dateUpload
							FROM historiqueImage hi
							LEFT JOIN evenements evt on evt.idImagePrincipale = hi.idImage
							WHERE evt.idEvenement =" . $modif ['idEvenementGroupeAdresse'] . "
							LIMIT 1
							";
							$resImagePrincipale = $this->connexionBdd->requete ( $reqImagePrincipale );
							if (mysql_num_rows ( $reqImagePrincipale ) >= 1) {
								$infoImage = mysql_fetch_assoc ( $resImagePrincipale );
							} else {
								
								$reqOtherImage = "SELECT hi.idHistoriqueImage,hi.dateUpload
							FROM historiqueImage hi
							LEFT JOIN _evenementImage ei ON ei.idImage = hi.idImage
							LEFT JOIN _evenementEvenement ee on ee.idEvenementAssocie = ei.idEvenement
							WHERE ee.idEvenement IS NOT NULL
							AND ee.idEvenement =" . $modif ['idEvenementGroupeAdresse'] . "
							
							LIMIT 1
							";
								$resOtherImage = $this->connexionBdd->requete ( $reqOtherImage );
								if (mysql_num_rows ( $resOtherImage ) >= 1) {
									$infoImage = mysql_fetch_assoc ( $resOtherImage );
								}
							}
						}
						$urlImage = "";
						$urlEvenement = "";
						// Url Evenement
						$idEvenementGroupeAdresses = $e->getIdGroupeEvenement ( $modif ['idEvenement'] );
						if ($modif ['type'] == 'adresse') {
							$urlEvenement = $this->creerUrl ( '', '', array (
									'archiAffichage' => 'adresseDetail',
									'archiIdAdresse' => $idAdresse,
									'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses 
							) );
							// $urlImage = "resizeImage.php?id=".$infoImage['idHistoriqueImage']."&height=200&width=200";
							
							if (isset ( $infoImage ['dateUpload'] ) && isset ( $infoImage ['idHistoriqueImage'] ) && $infoImage ['idHistoriqueImage'] != '' && $infoImage ['dateUpload'] != '') {
								$urlImage = "images/grand/" . $infoImage ['dateUpload'] . "/" . $infoImage ['idHistoriqueImage'] . ".jpg";
							} else {
								$urlImage = "images/placeholder.jpg";
							}
						} else {
							$urlEvenement = $this->creerUrl ( '', '', array (
									'archiAffichage' => 'evenementListe',
									'selection' => "personne",
									'id' => $modif ['idPersonne'] 
							) );
							$urlImage = ArchiPersonne::getImage ( $modif ['idPersonne'], 'resized' );
						}
						
						// Description
						$so = new StringObject ();
						$bbcode = new bbCodeObject ();
						$description = $bbcode->stripBBCode ( $modif ['description'] );
						$description = $so->truncateStringToWord ( $description, 130, ' ', '...' );
						
						$t->assign_block_vars ( 'lastModif', array (
								'miniatureLabelLeft' => $modif ['typeEvenement'],
								'miniatureLabelRight' => $modif ['dateCreationEvenement'],
								'adresse' => ucfirst ( $adresse ),
								'ville' => ucfirst ( $adresseArray [0] ['nomVille'] ),
								'urlMiniature' => $urlImage,
								'urlEvenement' => $urlEvenement,
								'description' => $description,
								'titre' => $modif ['titre'] 
						) );
					}
					else{
						
					}
				}

				 

				//Gestion des dernieres visites
				$t->assign_vars(array('lastVisitTitle' => _("Dernières visites")));
				$lastVisitArray=$_SESSION['lastVisited'];
				if(empty($lastVisitArray)){
					$visite = array('content' => _("Vous n'avez visité aucune adresse pour le moment"));
					$t->assign_block_vars('lastVisitMessage', $visite);
				}
				else{
					foreach ($lastVisitArray as $lastVisit){
						$titre="";
						if($lastVisit['idAdresse'] != '' && $lastVisit['idEvenementGroupeAdresse']!=''){
							$idAdresse = $lastVisit['idAdresse'];
							$e = new archiEvenement();
							$adresseArray = $e->getArrayAdresse($lastVisit['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');

							//Adresse
							$adresse = '';
							$adresse = $e->getAddressText($adresseArray);

							//Image
							$requeteImage = "
									SELECT hi.idHistoriqueImage ,hi.dateUpload, e.idEvenement
									FROM historiqueImage hi
									LEFT JOIN evenements e on e.idImagePrincipale = hi.idImage
									WHERE e.idEvenement = ".$lastVisit['idEvenementGroupeAdresse']."
									AND e.idImagePrincipale !=0 
									";
							$resultImage = $this->connexionBdd->requete($requeteImage);
							$array_image = mysql_fetch_assoc($resultImage);
							
								
							$a = new archiAdresse();
							if($array_image['idHistoriqueImage']==0 || !isset($array_image['idHistoriqueImage']) || $array_image['idHistoriqueImage']==''){
								$infoImage = $a->getUrlImageFromAdresse($idAdresse,'moyen');
								$image = new archiImage();
								$resImage = $image->getImagesEvenementsFromAdresse($idAdresse,  $lastVisit);
								$infoImage = mysql_fetch_assoc($resImage);
							}
							else{
								$infoImage=$array_image;
							}

							if(isset($infoImage['dateUpload']) && isset($infoImage['idHistoriqueImage'])&& $infoImage['idHistoriqueImage'] !='' && $infoImage['dateUpload'] !=''){
								$urlImage = "images/grand/".$infoImage['dateUpload']."/".$infoImage['idHistoriqueImage'].".jpg";
							}
							else{
								$urlImage="images/placeholder.jpg";
							}
								
							
							//Url Evenement
							$idEvenementGroupeAdresses = $lastVisit['idEvenementGroupeAdresse'];
							$urlEvenement = $this->creerUrl('', '', array('archiAffichage'=>'adresseDetail','archiIdAdresse'=>$idAdresse,'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresses));
								
								// Description
							$requeteDescription = "
									
									SELECT evt.description
									FROM evenements evt
									LEFT JOIN _evenementEvenement ee ON ee.idEvenementAssocie = evt.idEvenement
									LEFT JOIN positionsEvenements pe ON pe.idEvenementGroupeAdresse = ee.idEvenement
									WHERE ee.idEvenement =" . $lastVisit ['idEvenementGroupeAdresse'] . "
									ORDER BY pe.position
											";
							$resDescription = $this->connexionBdd->requete ( $requeteDescription );
							$arrayDescription = mysql_fetch_assoc($resDescription);
							$so = new StringObject();
							
							$description = $so->sansBalises($arrayDescription['description']);
							$description = stripslashes($description);
							$description = $so->truncateStringToWord($description, 80,' ','...');

							if(isset($lastVisit) && !empty($lastVisit) && isset($lastVisit['idEvenementGroupeAdresse'] )&& !empty($lastVisit['idEvenementGroupeAdresse']) && isset($lastVisit['idAdresse']) && !empty($lastVisit['idAdresse'])){
								//Titre
								$resTitre = $e->getIdEvenementTitre($lastVisit);
								$requeteTitre = "
										SELECT evt.titre
										FROM evenements evt
										WHERE evt.idEvenement = ".$resTitre."
												";
								$resTitre = $this->connexionBdd->requete($requeteTitre);
								$titreArray = mysql_fetch_array($resTitre);
								if($titreArray['titre'] != ''){
									//$titre = $adresse;
									$titre = $titreArray['titre'];
										
								}
								else{
								}
							}

							$visite = array(
									'adresse' => $adresse,
									'urlMiniature' => $urlImage,
									'urlEvenement' => $urlEvenement,
									'description' => $description,
									'titre' => $titre
							);
							$t->assign_block_vars('lastVisit', $visite);
						}
					}
				}


				$t->assign_vars(array(
						'lastModifTitle' => _("Dernières modifications"),
						'urlCustomNewsFeed'=>$this->creerUrl('', 'mesInterets', array())
				));


				//Associate template to the general template
				$t->assign_var_from_handle('news', 'news');
				$t->assign_var_from_handle('dernieresModifs', 'derniereModfis');
				$t->assign_var_from_handle('commentaires', 'commentaire');
				$t->assign_var_from_handle('lastVisits', 'lastVisit');
				
				break;
				

		}

		ob_start();
		$t->pparse('accueil');
		$html .= ob_get_contents();
		ob_end_clean();
		return $html;
	}
607875
public function afficheSelectQuartier($params = array())
    {
        $html="";
        $t=new Template('modules/archi/templates/');
        $t->set_filenames((array('listeQuartiers'=>'listeQuartiers.tpl')));

        $a = new archiAuthentification();
        $u = new archiUtilisateur();


        $sqlWhereVillesModerees = "";
        if ($a->getIdProfil()==3) { // l'utilisateur est un moderateur , on affiche que les quartiers qu'il peut moderer suivant les villes qu'il peut moderer
            $arrayIdVilles = $u->getArrayVillesModereesPar($a->getIdUtilisateur());

            if (count($arrayIdVilles)>0) {
                $sqlWhereVillesModerees = " AND idVille IN (".implode(",", $arrayIdVilles).") ";
            } else {
                $sqlWhereVillesModerees = " AND idVille =0 "; // si le moderateur n'a pas de ville a moderer on affiche aucun quartier (sinon la requete les afficheraient tous)
            }
        }


        $fromVille="";
        if (isset($params['idVille']) && $params['idVille']!='') {
            $fromVille = " AND idVille='".$params['idVille']."' ";
        } elseif (isset($this->variablesGet['archiIdVille']) && $this->variablesGet['archiIdVille']!='') {
            $fromVille = " AND idVille='".$this->variablesGet['archiIdVille']."' ";
        } elseif (isset($this->variablesGet['idVille']) && $this->variablesGet['idVille']!='') {
            $fromVille = " AND idVille='".$this->variablesGet['idVille']."' ";
        }

        $resQuartiers=$this->connexionBdd->requete("select idQuartier,nom from quartier where 1=1 and nom<>'autre' ".$sqlWhereVillesModerees." ".$fromVille." order by nom");
        while ($fetchQuartiers = mysql_fetch_assoc($resQuartiers)) {
            $selected="";
            if (isset($params['idQuartier']) && $params['idQuartier']!='' && $params['idQuartier'] == $fetchQuartiers['idQuartier']) {
                $selected=" selected ";
            }

            $t->assign_block_vars("quartiers", array(
                    'nom'=>$fetchQuartiers['nom'],
                    'id'=>$fetchQuartiers['idQuartier'],
                    'selected'=>$selected
            ));
        }



        // on peut desactiver les mise a jour des elements
        $javascriptSousQuartier = "";
        if (!isset($params['noSousQuartier']) || $params['noSousQuartier']!=true) {
            $javascriptSousQuartier ="
					document.getElementById('sousQuartiers').innerHTML='<option value=0>Aucun</option>';
					document.getElementById('sousQuartiers').selectedIndex=0;
					appelAjax('".$this->creerUrl('', 'afficheSelectSousQuartier', array('noHeaderNoFooter'=>1))."&archiIdQuartier='+document.getElementById('quartiers').value,'champSousQuartier')
							";
        }

        $t->assign_vars(array('javascript'=>"
				function onChangeListeQuartier()
				{
				".$javascriptSousQuartier."
		"));

        $t->assign_vars(array('onChangeListeQuartier'=>"onChangeListeQuartier();"));



        ob_start();
        $t->pparse('listeQuartiers');
        $html=ob_get_contents();
        ob_end_clean();

        return $html;
    }
547109
public function getRoles() {

        if (empty($this->roles)) {

            // On initialise les variables
            $refs  = array();
            $roles = array();
            $usergroups = $this->getUserGroups();

            // On construit l'arbre des rôles.
            foreach ($usergroups as $usergroup) {

                $thisref = &$refs[$usergroup->id];
                $thisref = new Role($usergroup->id);
                $thisref->title = $usergroup->title;

                if ($usergroup->parent_id > 0) {
                    $refs[$usergroup->parent_id]->addChild($thisref);
                }

                // On stocke les rôles dans un tableau pour leur associer les règles plus tard.
                $roles[$usergroup->id] = &$thisref;

            }

            $this->roles = $roles;
        }

        return $this->roles;

    }
290239
public function ajouter()
    {
        $html = '';
        $erreur = array();
        $tabForm = array();
        $ajoutOk = false;
        $aAuthentification = new archiAuthentification();
        $formulaire = new formGenerator();
        if ($aAuthentification->estConnecte() == 0) {
            echo 'utilisateur non connecté';
            $this->erreurs->ajouter('Vous n\'êtes pas connecté !');
        } elseif (isset($this->variablesPost['ajoutSousEvenement'])) {
            $tabForm=$this->getEvenementFields('nouveauDossier');

            $erreur = $formulaire->getArrayFromPost($tabForm);

            if (count($erreur) == 0) {
                $this->connexionBdd->getLock(array('evenements'));

                //***************
                //**  GESTION DES VARIABLES
                //**

                $titre              = mysql_escape_string($tabForm['titre']['value']);
                $description        = mysql_escape_string($tabForm['description']['value']);
                $dateDebut          = $this->date->toBdd($this->date->convertYears($tabForm['dateDebut']['value']));
                $isDateDebutEnviron = $tabForm['isDateDebutEnviron']['value'];
                $dateFin            = $this->date->toBdd($this->date->convertYears($tabForm['dateFin']['value']));
                $idSource=0;
                if ($tabForm['source']['value']!='') {
                    $idSource    = $tabForm['source']['value'];
                }
                $idUtilisateur   = $aAuthentification->getIdUtilisateur();
                $idTypeStructure = $tabForm['typeStructure']['value'];
                $idTypeEvenement = $tabForm['typeEvenement']['value'];
                $nbEtages = $tabForm['nbEtages']['value'];


                $ISMH           = $tabForm['ISMH']['value'];
                $MH             = $tabForm['MH']['value'];


                //**************
                //**  VERIFICATION DOUBLON
                //**

                $sqlVerificationDoublon = "
						SELECT he1.idEvenement
						FROM evenements he2, evenements he1
						RIGHT JOIN _evenementEvenement ee ON ee.idEvenement = '".$this->variablesPost['evenementGroupeAdresse']."'
						WHERE he2.idEvenement = he1.idEvenement
						AND he1.titre='".$titre."'
						AND he1.idEvenement = ee.idEvenementAssocie
						AND he1.description = \"".$description."\"
						AND he1.dateDebut = \"".$dateDebut."\"
						AND he1.isDateDebutEnviron = '".$isDateDebutEnviron."'
						AND he1.dateFin = \"".$dateFin."\"
						AND he1.idSource = '".$idSource."'
						AND he1.idTypeStructure='".$idTypeStructure."'
						AND he1.idTypeEvenement='".$idTypeEvenement."'
						GROUP BY he1.idEvenement, he1.idEvenement
						";

                $res = $this->connexionBdd->requete($sqlVerificationDoublon);

                if (mysql_num_rows($res) != 0) {
                    $this->erreurs->ajouter(_("Exactement le même enregistrement existe déjà !"));

                    // on défini les informations pour pouvoir tout de même afficher l'événement
                    $rep         = mysql_fetch_object($res);
                    $idEvenement = $rep->idEvenement;
                    $ajoutOk     = true;
                } else {
                    //***************
                    //**  ENREGISTREMENT
                    //**
                    //$idEvenement = $this->getNewIdEvenement();
                    // si c'est un événement sans événements parents
                    // c'est qu'il faut créer un evenement vide
                    // ayant pour type d'événement un groupe d'adresses
                    // sur lequel on va donc lier les adresses

                    if (!isset($this->variablesPost['evenementGroupeAdresse']) || $this->variablesPost['evenementGroupeAdresse']=='') {//(empty($tabForm['evenements']['value']))
                    // creation de l'evenement parent groupe d'adresse
                        $sql = "INSERT INTO evenements (titre, description, dateDebut, dateFin, idSource, idUtilisateur, idTypeStructure, idTypeEvenement,dateCreationEvenement)
								VALUES ('', '', '', '', ".$idSource.", ".$idUtilisateur.", 0, '".$this->getIdTypeEvenementGroupeAdresse()."', now())";

                        $this->connexionBdd->requete($sql);
                        $tabForm['evenements']['value'][] = $idEvenement;

                        $idEvenement = $this->connexionBdd->getLastId();
                        $idSousEvenement =$idEvenement+ 1; // id du sous evenements lié à l'evenement groupe d'adresses


                        // on lie les adresses a l'evenement groupe d'adresse
                        if (!empty($tabForm['adresses']['value'])) {
                            $sqlEvenementAdresse = "INSERT INTO _adresseEvenement (idAdresse,idEvenement) VALUES ";
                            foreach (array_unique($tabForm['adresses']['value']) as $idAdresse) {
                                $sqlEvenementAdresse .= '('.$idAdresse.', '.$idEvenement.'),';
                            }
                            $sqlEvenementAdresse = pia_substr($sqlEvenementAdresse, 0, -1);
                            $this->connexionBdd->requete($sqlEvenementAdresse);
                        }
                    } else {
                        $idSousEvenement = $idEvenement; // si on est dans le cas d'un ajout de sous evenement simple , sans creation de groupe d'adresse, on recupere l'id d'un nouvel element virtuel (getNewIdEVenement)
                    }



                    // debug
                    if ($nbEtages=='') {
                        $nbEtages=0;
                    }

                    // ajout de l'evenement fils
                    $sqlHistoriqueEvenement =
                    "INSERT INTO evenements (
								titre,
								description,
								dateDebut,
								dateFin,
								idSource,
								idUtilisateur,
								idTypeStructure,
								idTypeEvenement,
								dateCreationEvenement ,
								nbEtages,
								ISMH,
								MH,
								isDateDebutEnviron
							)

							VALUES (
								\"".$titre."\",
								\"".$description."\",
								'".$dateDebut."',
								'".$dateFin."',
								 ".$idSource.",
								 ".$idUtilisateur.",
						 		'".$idTypeStructure."',
				 				'".$idTypeEvenement."',
		 						now(),
		 						".$nbEtages.",
	 							'".$ISMH."',
	 							'".$MH."',
	 							'".$isDateDebutEnviron."'
 														)";
                    $this->connexionBdd->requete($sqlHistoriqueEvenement);


                    $idSousEvenement=$this->connexionBdd->getLastId();


                    if (!empty($tabForm['courant']['value'])) {
                        $sqlEvenementCourantArchitectural = "INSERT INTO _evenementCourantArchitectural (idCourantArchitectural, idEvenement) VALUES ";
                        foreach (array_unique($tabForm['courant']['value']) as $idCourant) {
                            $sqlEvenementCourantArchitectural .= '('.$idCourant.', '.$idSousEvenement.'),';
                        }
                        $sqlEvenementCourantArchitectural = pia_substr($sqlEvenementCourantArchitectural, 0, -1);

                        $this->connexionBdd->requete($sqlEvenementCourantArchitectural);
                    }

                    if (!empty($tabForm['personnes']['value'])) {
                        $sqlEvenementPersonne = "INSERT INTO _evenementPersonne (idPersonne, idEvenement) VALUES ";
                        foreach (array_unique($tabForm['personnes']['value']) as $idPersonne) {
                            $sqlEvenementPersonne .= '('.$idPersonne.', '.$idSousEvenement.'),';
                        }
                        $sqlEvenementPersonne = pia_substr($sqlEvenementPersonne, 0, -1);
                        $this->connexionBdd->requete($sqlEvenementPersonne);
                    }


                    //TODO : Gestion du tableau de source
                    /*
					 if(!empty($tabForm['source']['value'])){
					$sqlEvenementSource = "INSERT INTO _evenementSource (idSource, idEvenement) VALUES ";
					foreach ( array_unique($tabForm['source']['value']) AS $idSource)
					{
					$sqlEvenementSource .= '('.$idSource.', '.$idSousEvenement.'),';
					}
					$sqlEvenementSource = pia_substr( $sqlEvenementSource, 0, -1);

					$this->connexionBdd->requete($sqlEvenementSource);
					}
					*/




                    // ajout de l'evenement enfant à l'evenement groupe d'adresse

                    if (!isset($this->variablesPost['evenementGroupeAdresse']) || $this->variablesPost['evenementGroupeAdresse']=='') {//(empty($tabForm['evenements']['value']))
                    // cas liaison entre le nouvel evenement groupe d'adresse et le nouvel evenement fils // ajout d'un evenement
                        $sqlEvenementEvenement = "
								insert into _evenementEvenement (idEvenement,idEvenementAssocie)
								values ('".$idEvenement."','".$idSousEvenement."');
										";
                        //debug($sqlEvenementEvenement);
                        $this->connexionBdd->requete($sqlEvenementEvenement);
                    } else {
                        // cas liaison entre l'element groupe d'adresse precisé dans $tabForm['evenementGroupeAdresse'] et le nouvel evenement fils // ajout d'un sous evenement
                        $sqlEvenementEvenement = "
								insert into _evenementEvenement (idEvenement,idEvenementAssocie)
								values ('".$this->variablesPost['evenementGroupeAdresse']."','".$idSousEvenement."')
										";
                        //debug($sqlEvenementEvenement);
                        $this->connexionBdd->requete($sqlEvenementEvenement);
                    }

                    $ajoutOk = true;
                }

                // libération de la table
                $this->connexionBdd->freeLock(array('evenements'));
            }
        }

        if ($ajoutOk === true) {
            if (isset($idSousEvenement)) {
                $idEvenementGroupeAdresse = $this->getIdEvenementGroupeAdresseFromIdEvenement($idSousEvenement);

                // d'abord on classe les evenements (les positions précédentes sont conservees)
                $this->majPositionsEvenements(array('idEvenementGroupeAdresse'=>$idEvenementGroupeAdresse,'idNouvelEvenement'=>$idSousEvenement));

                $mail = new mailObject();
                $adresse = new archiAdresse();
                $reqAdresses = $adresse->getIdAdressesFromIdEvenement(array('idEvenement'=>$idSousEvenement));

                $resAdresses = $this->connexionBdd->requete($reqAdresses);
                $arrayVilles=array();
                $arrayAdresses = array();
                while ($fetchAdresses = mysql_fetch_assoc($resAdresses)) {
                    $arrayVilles[] = $adresse->getIdVilleFrom($fetchAdresses['idAdresse'], 'idAdresse');
                    $arrayAdresses[] = $fetchAdresses['idAdresse'];
                }

                $arrayVilles = array_unique($arrayVilles);
                $arrayAdresses = array_unique($arrayAdresses);

                if ($idPerson=archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    header("Location: ".$this->creerUrl('', '', array('archiAffichage'=>'evenementListe', 'selection'=>"personne", 'id'=>$idPerson), false, false));
                }

                // ************************************************************************************************************************************************
                // envoi d'un mail a l'auteur de l'adresse
                // ************************************************************************************************************************************************
                $utilisateur = new archiUtilisateur();
                $arrayUtilisateurs = $utilisateur->getCreatorsFromAdresseFrom($idSousEvenement, 'idEvenement');

                $intituleAdresse = $adresse->getIntituleAdresseFrom($idSousEvenement, 'idEvenement');
                foreach ($arrayUtilisateurs as $indice => $idUtilisateurAdresse) {
                    if ($idUtilisateurAdresse != $aAuthentification->getIdUtilisateur()) {
                        $infosUtilisateur = $utilisateur->getArrayInfosFromUtilisateur($idUtilisateurAdresse);
                        if ($infosUtilisateur['alerteAdresses']=='1' && $infosUtilisateur['compteActif']=='1' && $infosUtilisateur['idProfil']!='4') {
                            $messageDebut = "Un utilisateur a ajouté un événement sur une adresse dont vous êtes l'auteur.";
                            $messageDebut.= "Pour vous rendre sur l'événement : <br>";
                            $messageDebut.="<a href='".$this->creerUrl('', '', array('archiAffichage'=>'adresseDetail','archiIdAdresse'=>$arrayAdresses[0],'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))."'>".$intituleAdresse."</a><br>";
                            $messageFin= $this->getMessageDesabonnerAlerteMail();

                            if ($utilisateur->isMailEnvoiImmediat($idUtilisateurAdresse)) {
                                $mail->sendMail($mail->getSiteMail(), $infosUtilisateur['mail'], 'Mise a jour d\'un événement d\'une adresse dont vous êtes l\'auteur.', $messageDebut.$messageFin, true);
                            } else {
                                $utilisateur->ajouteMailEnvoiRegroupes(array('contenu'=>$messageDebut,'idDestinataire'=>$idUtilisateurAdresse,'idTypeMailRegroupement'=>10));
                            }
                        }
                    }
                }
                // ************************************************************************************************************************************************

                // ************************************************************************************************************************************************
                // envoi au administrateurs qui sont en mode alerteAdresse
                // ************************************************************************************************************************************************

                $message = "";
                $message .= "Un nouvel événement a été ajouté sur l'adresse suivante : <br>";
                $message.="<a href='".$this->creerUrl('', '', array('archiAffichage'=>'adresseDetail','archiIdAdresse'=>$arrayAdresses[0],'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))."'>".$adresse->getIntituleAdresseFrom($idSousEvenement, 'idEvenement')."</a>";

                $mail->sendMailToAdministrators($mail->getSiteMail(), "Un nouvel événement a été ajouté - ".$intituleAdresse, $message, " AND alerteAdresses='1' ", true);
                $utilisateur->ajouteMailEnvoiRegroupesAdministrateurs(array('contenu'=>$message,'idTypeMailRegroupement'=>10,'criteres'=>" and alerteAdresses='1' "));
                // ************************************************************************************************************************************************

                // *************************************************************************************************************************************************************
                // envoi mail aussi au moderateur si ajout sur adresse de ville que celui ci modere
                $u = new archiUtilisateur();


                $arrayListeModerateurs = $u->getArrayIdModerateursActifsFromVille($arrayVilles[0], array("sqlWhere"=>" AND alerteAdresses='1' "));
                if (count($arrayListeModerateurs)>0) {
                    foreach ($arrayListeModerateurs as $indice => $idModerateur) {
                        if ($aAuthentification->getIdUtilisateur()!=$idModerateur) {
                            if ($u->isMailEnvoiImmediat($idModerateur)) {
                                $mailModerateur = $u->getMailUtilisateur($idModerateur);
                                $mail->sendMail($mail->getSiteMail(), $mailModerateur, "Un nouvel événement a été ajouté - ".$intituleAdresse, $message, true);
                            } else {
                                $u->ajouteMailEnvoiRegroupes(array('contenu'=>$message,'idDestinataire'=>$idModerateur,'idTypeMailRegroupement'=>10));
                            }
                        }
                    }
                }

                // *************************************************************************************************************************************************************

                if ($idPerson=archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    header("Location: ".$this->creerUrl('', '', array('archiAffichage'=>'evenementListe', 'selection'=>"personne", 'id'=>$idPerson), false, false));
                } else {
                    $adresse = new archiAdresse();
                    $idGroupeAdresse = $this->getParent($idSousEvenement);
                    $idAdresse = $this->getIdAdresseFromIdEvenementGroupeAdresse($idGroupeAdresse);

                    $url= $this->creerUrl(
                        '',
                        '',
                        array(
                                'archiAffichage'=>'adresseDetail',
                                "archiIdAdresse"=>$idAdresse,
                                "archiIdEvenementGroupeAdresse"=>$idGroupeAdresse
                        )
                    );
                        header("Location: ".htmlspecialchars_decode($url));
                }
            }
        } else {
            $html .= $this->afficheFormulaire($tabForm);
        }

        return $html;
    }
828619
public function enregistreModificationAdresse()
    {
         $errors = array();
        if (isset($this->variablesGet['tableName']) && $this->variablesGet['tableName']!='') {
            switch ($this->variablesGet['tableName']) {
                // **********************************************************************************************************************************************************
                // rue
                // **********************************************************************************************************************************************************
                case 'rue':
                    $req="";
                    if (isset($this->variablesPost['sousQuartiers']) && $this->variablesPost['sousQuartiers']!='0') {
                        $req = "UPDATE rue SET idSousQuartier='".$this->variablesPost['sousQuartiers']."', nom=\"".$this->variablesPost['intitule']."\", prefixe=\"".$this->variablesPost['complement']."\" WHERE idRue = '".$this->variablesPost['idRue']."'";

                        $idModifie = $this->variablesPost['idRue'];
                    } elseif (isset($this->variablesPost['quartiers']) && $this->variablesPost['quartiers']!='0') {
                    // recherche du sous quartier 'autre' , s'il n'existe pas , on le cree
                        $reqSousQuartierAutre = "
                                    SELECT idSousQuartier
                                    FROM sousQuartier
                                    WHERE idQuartier = '".$this->variablesPost['quartiers']."'
                                    AND nom='autre'
                                    ";

                        $resSousQuartierAutre = $this->connexionBdd->requete($reqSousQuartierAutre);
                        $idSousQuartierAutre = 0;
                        if (mysql_num_rows($resSousQuartierAutre)==1) {
                        // le sousQuartier autre existe , on recupere son ID
                            $fetchSousQuartierAutre = mysql_fetch_assoc($resSousQuartierAutre);
                            $idSousQuartierAutre = $fetchSousQuartierAutre['idSousQuartier'];
                        }

                        if (mysql_num_rows($resSousQuartierAutre)>1) {
                            $errors[]="Probleme detecté dans les sousQuartiers 'autre', merci de contacter l'administrateur.<br>";
                        }

                        if (mysql_num_rows($resSousQuartierAutre)==0) {
                        // le sousQuartier 'autre' pour le quartier n'existe pas , il faut le creer et renvoyer son ID
                            $reqInsertNouveauSousQuartierAutre = "INSERT INTO sousQuartier (idQuartier,nom) VALUES ('".$this->variablesPost['quartiers']."',\"autre\")";
                            $resInsertNouveauSousQuartierAutre = $this->connexionBdd->requete($reqInsertNouveauSousQuartierAutre);
                            $idSousQuartierAutre = mysql_insert_id();
                        }

                        if ($idSousQuartierAutre!=0) {
                            $req = "UPDATE rue SET idSousQuartier='".$idSousQuartierAutre."', nom=\"".$this->variablesPost['intitule']."\", prefixe=\"".$this->variablesPost['complement']."\" WHERE idRue = '".$this->variablesPost['idRue']."'";
                            $idModifie = $this->variablesPost['idRue'];
                        } else {
                            $errors[] = "Il y a eu un souci a la selection automatique du sous quartier, merci de contacter l'administrateur.<br>";
                        }
                    } elseif (isset($this->variablesPost['ville']) && $this->variablesPost['ville']!='0') {
                    // l'adresse est une ville , ceci ne sera pas beaucoup utilisé car en principe une adresse est au moins une ville et un quartier , mais il a des adresses qui ne sont que des villes quand meme
                        // recherche du quartier 'autre' de la ville s'il n'existe pas , on le cree
                        $reqQuartierAutre = "SELECT idQuartier FROM quartier WHERE idVille='".$this->variablesPost['ville']."' and nom='autre'";
                        $resQuartierAutre = $this->connexionBdd->requete($reqQuartierAutre);

                        $idQuartierAutre = 0;
                        if (mysql_num_rows($resQuartierAutre)==1) {
                        // le quartier autre existe, on passe au sousQuartier
                            $fetchQuartierAutre = mysql_fetch_assoc($resQuartierAutre);
                            $idQuartierAutre = $fetchQuartierAutre['idQuartier'];

                            // on verifie que le sousQuartiers 'autre' existe pour le quartier 'autre' trouve

                            // recherche du sous quartier 'autre' , s'il n'existe pas , on le cree
                            $reqSousQuartierAutre = "
                                        SELECT idSousQuartier
                                        FROM sousQuartier
                                        WHERE idQuartier = '".$idQuartierAutre."'
                                        AND nom='autre'
                                        ";

                            $resSousQuartierAutre = $this->connexionBdd->requete($reqSousQuartierAutre);
                            $idSousQuartierAutre = 0;
                            if (mysql_num_rows($resSousQuartierAutre)==1) {
                            // le sousQuartier autre existe , on recupere son ID
                                $fetchSousQuartierAutre = mysql_fetch_assoc($resSousQuartierAutre);
                                $idSousQuartierAutre = $fetchSousQuartierAutre['idSousQuartier'];
                            }

                            if (mysql_num_rows($resSousQuartierAutre)>1) {
                                $errors[] = "Probleme detecté dans les sousQuartiers 'autre', merci de contacter l'administrateur.<br>";
                            }

                            if (mysql_num_rows($resSousQuartierAutre)==0) {
                            // le sousQuartier 'autre' pour le quartier n'existe pas , il faut le creer et renvoyer son ID
                                $reqInsertNouveauSousQuartierAutre = "INSERT INTO sousQuartier (idQuartier,nom) VALUES ('".$idQuartierAutre."',\"autre\")";
                                $resInsertNouveauSousQuartierAutre = $this->connexionBdd->requete($reqInsertNouveauSousQuartierAutre);
                                $idSousQuartierAutre = mysql_insert_id();
                            }

                            if ($idSousQuartierAutre!=0) {
                                $req = "UPDATE rue SET idSousQuartier='".$idSousQuartierAutre."', nom=\"".$this->variablesPost['intitule']."\", prefixe=\"".$this->variablesPost['complement']."\" WHERE idRue = '".$this->variablesPost['idRue']."'";
                            } else {
                                $errors[] = "Il y a eu un souci a la selection automatique du sous quartier, merci de contacter l'administrateur.<br>";
                            }

                            if (mysql_num_rows($resQuartierAutre)>1) {
                                $errors[] =  "Probleme detecté dans les quartiers 'autre', merci de contacter l'administrateur.<br>";
                            }
                        }
                        if (mysql_num_rows($resQuartierAutre)==0) {
                        // le quartier autre n'existe pas , il faut le cree
                            $reqInsertQuartierAutre = "INSERT INTO quartier (idVille,nom) VALUES ('".$this->variablesPost['ville']."','autre')";
                            $resInsertQuartierAutre = $this->connexionBdd->requete($reqInsertQuartierAutre);
                            $idQuartierAutre = mysql_insert_id();

                            // on ajoute aussi le sousQuartier 'autre' pour le quartier 'autre' cree , on va quand meme regarder s'il n'existe pas un enregistrement pour etre sur qu'il n'y a pas de souci d'integrité
                                                        // recherche du sous quartier 'autre' , s'il n'existe pas , on le cree
                            $reqSousQuartierAutre = "
                                        SELECT idSousQuartier
                                        FROM sousQuartier
                                        WHERE idQuartier = '".$idQuartierAutre."'
                                        AND nom='autre'
                                        ";

                            $resSousQuartierAutre = $this->connexionBdd->requete($reqSousQuartierAutre);
                            $idSousQuartierAutre = 0;
                            if (mysql_num_rows($resSousQuartierAutre)==1) {
                            // le sousQuartier autre existe , on recupere son ID
                                $fetchSousQuartierAutre = mysql_fetch_assoc($resSousQuartierAutre);
                                $idSousQuartierAutre = $fetchSousQuartierAutre['idSousQuartier'];
                            }

                            if (mysql_num_rows($resSousQuartierAutre)>1) {
                                $errors[] =  "Probleme detecté dans les sousQuartiers 'autre', merci de contacter l'administrateur.<br>";
                            }

                            if (mysql_num_rows($resSousQuartierAutre)==0) {
                            // le sousQuartier 'autre' pour le quartier n'existe pas , il faut le creer et renvoyer son ID
                                $reqInsertNouveauSousQuartierAutre = "INSERT INTO sousQuartier (idQuartier,nom) VALUES ('".$idQuartierAutre."',\"autre\")";
                                $resInsertNouveauSousQuartierAutre = $this->connexionBdd->requete($reqInsertNouveauSousQuartierAutre);
                                $idSousQuartierAutre = mysql_insert_id();
                            }

                            if ($idSousQuartierAutre!=0) {
                                $req = "UPDATE rue SET idSousQuartier='".$idSousQuartierAutre."', nom=\"".$this->variablesPost['intitule']."\", prefixe=\"".$this->variablesPost['complement']."\" WHERE idRue = '".$this->variablesPost['idRue']."'";
                            } else {
                                $errors[] =  "Il y a eu un souci a la selection automatique du sous quartier, merci de contacter l'administrateur.<br>";
                            }

                            if (mysql_num_rows($resQuartierAutre)>1) {
                                $errors[] =  "Probleme detecté dans les quartiers 'autre', merci de contacter l'administrateur.<br>";
                            }
                        }
                    }


                    if ($req!="") {
                    // execution de la requete de mise a jour de la rue
                        $res = $this->connexionBdd->requete($req);
                        $idModifie = $this->variablesPost['idRue'];
                    } else {
                        $errors[] =  "erreur dans la modification de la rue<br>";
                    }

                    break;
                // **********************************************************************************************************************************************************
                // sous quartier
                // **********************************************************************************************************************************************************
                case 'sousQuartier':
                    // un sousQuartier appartient toujours a un quartier

                    //﻿array(8) { ["idRue"]=>  string(1) "5" ["pays"]=>  string(1) "1" ["ville"]=>  string(1) "1" ["quartiers"]=>  string(2) "13" ["sousQuartiers"]=>  string(1) "8" ["intitule"]=>  string(13) "Saint-Nicolas" ["complement"]=>  string(4) "quai" ["modifier"]=>  string(8) "Modifier" }
                    $req="";
                    if ($this->variablesPost['quartiers']!='0' && $this->variablesPost['ville']!='0' && $this->variablesPost['pays']!='0') {
                        $req = "UPDATE sousQuartier SET idQuartier = '".$this->variablesPost['quartiers']."',nom=\"".$this->variablesPost['intitule']."\" WHERE idSousQuartier = '".$this->variablesPost['idSousQuartier']."'";
                    } else {
                        $errors[] =  "Erreur : un sous quartier ne peut pas appartenir a aucun quartier.<br>";
                    }

                    if ($req!="") {
                    // execution de la requete de mise a jour de la rue
                        $res = $this->connexionBdd->requete($req);
                        $idModifie = $this->variablesPost['idSousQuartier'];
                    } else {
                        $errors[] =  "erreur dans la modification du sous quartier<br>";
                    }
                    break;
                // **********************************************************************************************************************************************************
                // quartier
                // **********************************************************************************************************************************************************
                case 'quartier':
                    // un quartier appartient toujours a une ville

                    //﻿array(8) { ["idRue"]=>  string(1) "5" ["pays"]=>  string(1) "1" ["ville"]=>  string(1) "1" ["quartiers"]=>  string(2) "13" ["sousQuartiers"]=>  string(1) "8" ["intitule"]=>  string(13) "Saint-Nicolas" ["complement"]=>  string(4) "quai" ["modifier"]=>  string(8) "Modifier" }
                    $req="";
                    if ($this->variablesPost['ville']!='0' && $this->variablesPost['pays']!='0') {
                        $req = "UPDATE quartier SET idVille = '".$this->variablesPost['ville']."',nom=\"".$this->variablesPost['intitule']."\" WHERE idQuartier = '".$this->variablesPost['idQuartier']."'";
                    } else {
                        $errors[] =  "Erreur : un quartier ne peut pas appartenir a aucune ville.<br>";
                    }

                    if ($req!="") {
                    // execution de la requete de mise a jour de du quartier
                        $res = $this->connexionBdd->requete($req);
                        $idModifie = $this->variablesPost['idQuartier'];
                    } else {
                        $errors[] =  "erreur dans la modification du quartier<br>";
                    }
                    break;
                // **********************************************************************************************************************************************************
                // ville
                // **********************************************************************************************************************************************************
                case 'ville':
                    // une ville appartient toujours a un pays

                    //﻿array(8) { ["idRue"]=>  string(1) "5" ["pays"]=>  string(1) "1" ["ville"]=>  string(1) "1" ["quartiers"]=>  string(2) "13" ["sousQuartiers"]=>  string(1) "8" ["intitule"]=>  string(13) "Saint-Nicolas" ["complement"]=>  string(4) "quai" ["modifier"]=>  string(8) "Modifier" }
                    $req="";
                    if ($this->variablesPost['pays']!='0') {
                        $req = "UPDATE ville SET idPays = '".$this->variablesPost['pays']."',nom=\"".$this->variablesPost['intitule']."\",codepostal=\"".$this->variablesPost['codePostal']."\", longitude='".$this->variablesPost['longitude']."',latitude='".$this->variablesPost['latitude']."' WHERE idVille = '".$this->variablesPost['idVille']."'";
                    } else {
                        $errors[] =  "Erreur : une ville ne peut pas appartenir a aucun pays.<br>";
                    }

                    if ($req!="") {
                    // execution de la requete de mise a jour de la ville
                        $res = $this->connexionBdd->requete($req);
                        $idModifie = $this->variablesPost['idVille'];
                    } else {
                        $errors[] =  "erreur dans la modification de la ville<br>";
                    }
                    break;
                // **********************************************************************************************************************************************************
                // pays
                // **********************************************************************************************************************************************************
                case 'pays':
                    $req = "UPDATE pays SET nom=\"".$this->variablesPost['intitule']."\" WHERE idPays = '".$this->variablesPost['idPays']."'";
                    $res = $this->connexionBdd->requete($req);
                    $idModifie = $this->variablesPost['idPays'];
                    break;
            }

            if (isset($this->variablesGet['tableName']) && isset($req) && $req!='') {
                $mail = new mailObject();
                $a = new archiAuthentification();
                $u = new archiUtilisateur();
                $arrayInfosUtilisateur = $u->getArrayInfosFromUtilisateur($a->getIdUtilisateur());

                $messageAdmins = "Un élément d'adresse a été modifié";
                $messageAdmins .=" par : ".$arrayInfosUtilisateur['nom']." ".$arrayInfosUtilisateur['prenom']."<br>";

                $messageAdmins .= "type d'élément : ".$this->variablesGet['tableName']."<br><br>";
                $messageAdmins.="<a href='".$this->creerUrl('', 'adminAdresseDetail', array('tableName'=>$this->variablesGet['tableName'],'idModification'=>$idModifie))."'>".$this->creerUrl('', 'adminAdresseDetail', array('tableName'=>$this->variablesGet['tableName'],'idModification'=>$idModifie))."</a>";

                $messageModerateur ="Un élément d'adresse a été modifié<br>";
                $messageModerateur .="type d'élément : ".$this->variablesGet['tableName']."<br><br>";
                $messageModerateur.="<a href='".$this->creerUrl('', 'adminAdresseDetail', array('tableName'=>$this->variablesGet['tableName'],'idModification'=>$idModifie))."'>".$this->creerUrl('', 'adminAdresseDetail', array('tableName'=>$this->variablesGet['tableName'],'idModification'=>$idModifie))."</a>";


                $mail->sendMailToAdministrators($mail->getSiteMail(), "archi-strasbourg.org : un utilisateur modifié un élément d'adresse", $messageAdmins, " and alerteMail='1' ", true);

                $u->ajouteMailEnvoiRegroupesAdministrateurs(array('contenu'=>$messageAdmins,'idTypeMailRegroupement'=>6,'criteres'=>" and alerteMail='1' "));


                $tableName = $this->variablesGet['tableName'];
                // envoi de mail aux moderateur de la ville
                /*if(in_array($tableName,array('rue','sousQuartier','quartier')))
                {
                    $identifiantName='';
                    switch($tableName)
                    {
                        case 'rue':
                            $identifiantName='idRue';
                        break;
                        case 'sousQuartier':
                            $identifiantName='idSousQuartier';
                        break;
                        case 'quartier':
                            $identifiantName='idQuartier';
                        break;
                    }

                    $idVille = $this->getIdVilleFrom($idModifie,$identifiantName);
                    $arrayListeModerateurs = $u->getArrayIdModerateursActifsFromVille($idVille,array("sqlWhere"=>" AND alerteAdresses='1' "));
                    if(count($arrayListeModerateurs)>0)
                    {
                        foreach($arrayListeModerateurs as $indice => $idModerateur)
           	              {
                            if($idModerateur!=$a->getIdUtilisateur() && $u->isAuthorized('admin_rues',$idModerateur) && $u->isAuthorized('admin_sousQuartiers',$idModerateur) && $u->isAuthorized('admin_quartiers',$idModerateur))
                            {
                                $mailModerateur = $u->getMailUtilisateur($idModerateur);
                                $mail->sendMail($mail->getSiteMail(),$mailModerateur,"archi-strasbourg.org : un utilisateur a modifié un élément d'adresse",$messageModerateur,true);
                            }
                        }
                    }
                }*/
            }
        }
        return $errors;
    }
647357
public function getAdressesMemeLocalite($idAdresse = 0, $typeLocalite = 'rue')
    {
        // lien retour vers l'affichage du detail de l'adresse
        $html="<a href=\"".$this->creerUrl('', 'adresseDetail', array('archiIdAdresse'=>$idAdresse))."\">Retour</a><br>";

        // recuperation des adresses liees
        $reqAdresses = "

            SELECT ha1.idAdresse as idAdresse,ha1.idRue as idRue, ha1.idQuartier as idQuartier, ha1.idSousQuartier as idSousQuartier, ha1.idPays as idPays , ha1.idVille as idVille
            FROM historiqueAdresse ha2, historiqueAdresse ha1
            WHERE ha2.idAdresse = ha1.idAdresse
            AND ha1.idAdresse = '".$idAdresse."'
            GROUP BY ha1.idAdresse, ha1.idHistoriqueAdresse
            HAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
        ";

        $res = $this->connexionBdd->requete($reqAdresses);

        $rues = array();
        $quartiers = array();
        $sousQuartiers = array();
        $pays = array();
        $villes = array();
        $sql="";
        $tabIdAdressesNotToDisplay = array();
        $arrayComplementTitre=array();
        if (mysql_num_rows($res)>0) {
            while ($fetch = mysql_fetch_assoc($res)) {
                //$tabAdresses[] = array('idRue'=>$fetch['idRue'],'idQuartier'=>$fetch['idQuartier'],'idSousQuartier'=>$fetch['idSousQuartier'],'idPays'=>$fetch['idPays'],'idVille'=>$fetch['idVille']);
                if ($typeLocalite=="rue") {
                    if ($fetch['idRue']!='0') {
                        $rues[] = $fetch['idRue'];
                    }

                    $arrayComplementTitre[]="à la rue";
                } elseif ($typeLocalite=="quartier") {
                    // recherche du quartier
                    if ($fetch['idRue']!='0') {
                    // recherche du quartier de la rue
                        $reqQuartier = "
                            SELECT q.idQuartier as idQuartier
                            FROM quartier q
                            RIGHT JOIN sousQuartier sq ON sq.idQuartier = q.idQuartier
                            RIGHT JOIN rue r ON r.idSousQuartier = sq.idSousQuartier
                            WHERE r.idRue = '".$fetch['idRue']."'
                        ";

                        $resQuartier = $this->connexionBdd->requete($reqQuartier);

                        while ($fetchQuartier = mysql_fetch_assoc($resQuartier)) {
                            $quartiers[] = $fetchQuartier['idQuartier'];
                        }
                    }

                    if ($fetch['idQuartier']!='0') {
                        $quartiers[] = $fetch['idQuartier'];
                    }

                    $arrayComplementTitre[]="au quartier";
                }

                    $tabIdAdressesNotToDisplay[]=$fetch['idAdresse'];
            }

            if (count($rues)>0) {
                $sql.=" AND ha1.idRue in ('".implode("','", array_unique($rues))."') ";
            }

            if (count($quartiers)>0) {
                $sql.=" AND q.idQuartier in ('".implode("','", array_unique($quartiers))."') ";
            }

            if (count($rues)==0 && count($quartiers)==0) {
                $sql.=" AND ha1.idAdresse ='0' ";
            }


            $sql.=" AND ha1.idAdresse not in ('".implode("','", $tabIdAdressesNotToDisplay)."') ";
        }

        // affichage de la liste des adresses
        $retour = $this->afficherListe(array('sqlSelectionExterne'=>$sql,'titre'=>'Adresses relatives '.implode(",", $arrayComplementTitre).': ','desactivateRedirection'=>1));

        $html .=$retour['html'];

        return $html;
    }
437122
private function ajoutRue($idSousQuartier, $nom, $prefixe)
    {
        // on verifie qu'il n'existe pas deja une rue du meme nom dans la ville
        // recherche de la ville
        $reqVille = "
                    SELECT distinct v.idVille as idVille
                    FROM ville v
                    LEFT JOIN quartier q ON q.idVille = v.idVille
                    LEFT JOIN sousQuartier sq ON sq.idQuartier = q.idQuartier
                    WHERE
                        sq.idSousQuartier = '$idSousQuartier'
                    ";
        $resVille = $this->connexionBdd->requete($reqVille);
        $adresseExistante = 0;
        if (mysql_num_rows($resVille)>0) {
            $fetchVille = mysql_fetch_assoc($resVille);
            $idVille =$fetchVille['idVille'];


            $reqVerif = "
            SELECT r.idRue
            FROM rue r
            LEFT JOIN sousQuartier sq ON sq.idSousQuartier = r.idSousQuartier
            LEFT JOIN quartier q ON q.idQuartier = sq.idQuartier
            LEFT JOIN ville v ON v.idVille = q.idVille
            WHERE
            LOWER(r.nom) = LOWER(\"".$nom."\")
            AND LOWER(r.prefixe) = LOWER(\"".$prefixe."\")
            AND v.idVille = '".$idVille."'
            ";

            $resVerif=$this->connexionBdd->requete($reqVerif);
            if (mysql_num_rows($resVerif)>0) {
                $adresseExistante = 1;
            }
        }


        $sql="
            SELECT idRue
            FROM rue
            WHERE idSousQuartier = '".$idSousQuartier."'
            AND LOWER(nom) = LOWER(\"".$nom."\")
            AND LOWER(prefixe) = LOWER(\"".$prefixe."\")
        ";

        $res=$this->connexionBdd->requete($sql);
        $newIdRue = 0;
        if ($adresseExistante || mysql_num_rows($res)>0) {
            $this->erreurs->ajouter(_("Erreur :")." "._("il y a déjà un enregistrement de rue du même nom dans cette ville"));
        } else {
            // ajout
            $this->connexionBdd->requete("
                INSERT INTO rue (idSousQuartier,nom,prefixe)
                VALUES ('".$idSousQuartier."',\"".$nom."\",\"".$prefixe."\")
            ");

            $newIdRue = mysql_insert_id();
        }

        return $newIdRue;
    }
1226623
public function afficheStatistiques()
	{
		$t = new Template($this->getCheminPhysique().$this->cheminTemplates);
		$t->set_filenames(array('statsAccueil'=>'statistiquesAccueil.tpl'));

		// recherche du nombre d'evenements
		$reqEvenements = "SELECT DISTINCT idEvenement as nbEvenements FROM evenements;";
		$resEvenements = $this->connexionBdd->requete($reqEvenements);

		// recherche du nombre d'adresses
		$reqAdresses = "SELECT DISTINCT idAdresse as nbAdresses FROM historiqueAdresse;";
		$resAdresses = $this->connexionBdd->requete($reqAdresses);

		// recherche du nombre de photos
		$reqPhotos = "SELECT DISTINCT idImage as nbImages FROM historiqueImage;";
		$resPhotos = $this->connexionBdd->requete($reqPhotos);

		$t->assign_vars(array('architectes'=>$this->getListeArchitectesProductifs(array('sqlLimit'=>"LIMIT 10", "noPagination"=>true))));
		$t->assign_vars(array('rues'=>$this->getListeRuesCompletes(array('sqlLimit'=>"LIMIT 10", "noPagination"=>true))));

		$t->assign_vars(array('voirTousLesArchitectes'=>"<a href='".$this->creerUrl('', 'tousLesArchitectesClasses')."'>"._("Voir tous les architectes classés")."</a>"));

		$t->assign_vars(array('voirToutesLesRues'=>"<a href='".$this->creerUrl('', 'toutesLesRuesCompletesClassees')."'>"._("Voir toutes les rues classées")."</a>"));

		$t->assign_vars(array('nbAdresses'=>mysql_num_rows($resAdresses)));
		$t->assign_vars(array('nbEvenements'=>mysql_num_rows($resEvenements)));
		$t->assign_vars(array('nbPhotos'=>mysql_num_rows($resPhotos)));

		ob_start();
		$t->pparse('statsAccueil');
		$html .= ob_get_contents();
		ob_end_clean();

		return $html;
	}
309505
public function getAdminListeRues()
    {
        $html     = "";
        $a        = new archiAuthentification();
        $u        = new archiUtilisateur();
        $sqlWhere = "";

        // si l'utilisateur est un moderateur on le limite a la gestion des rues des villes qu'il modere
        if ($a->getIdProfil()==3) {
            $arrayVillesFromModerateur = $u->getArrayVillesModereesPar($a->getIdUtilisateur());
            if (count($arrayVillesFromModerateur)>0) {
                $sqlWhere = " AND r.idSousQuartier in (SELECT idSousQuartier FROM sousQuartier WHERE idQuartier IN (SELECT idQuartier FROM quartier WHERE idVille in (".implode(",", $arrayVillesFromModerateur)."))) ";
            } else {
                $sqlWhere = " AND r.idRue='0' ";
            }
        }

        // recherche
        $objetDeLaRecherche = "";
        $sqlRecherche = "";
        if (isset($this->variablesPost['validationFormulaireAdministration']) && $this->variablesPost['validationFormulaireAdministration']=='rechercheAdministration' && $this->variablesPost['rechercheFormulaireAdministration']!='') {
            $objetDeLaRecherche = stripslashes($this->variablesPost['rechercheFormulaireAdministration']);
            $sqlRecherche = " AND LOWER(CONCAT_WS(' ',prefixe,r.nom,sq.nom,q.nom,v.nom)) LIKE \"%".pia_strtolower($objetDeLaRecherche)."%\" ";
        }

        // suppression
        // on verifie les dependances
        if (isset($this->variablesPost['validationFormulaireAdministration']) && $this->variablesPost['validationFormulaireAdministration']=='suppression') {
            // gestion de la suppression
            if (isset($this->variablesPost['selection']) && count($this->variablesPost['selection'])>0) {
                //nom de champ identifiant
                $champIdentifiant = "idRue";
                $dependances[0]   = array('table'=>'historiqueAdresse', 'champLie'=>'idRue', 'message'=>"Attention il existe des dépendances au niveau de la table historiqueAdresse");
                $erreurObj        = new objetErreur();
                if (count($dependances)>0) {
                    foreach ($dependances as $indice=>$dependance) {
                        $reqVerifDependance = "SELECT * FROM ".$dependance['table']." WHERE ".$dependance['champLie']." in (".implode(",", $this->variablesPost['selection']).")";
                        $resVerifDependance = $this->connexionBdd->requete($reqVerifDependance);
                        if (mysql_num_rows($resVerifDependance)>0) {
                            $erreurObj->ajouter($dependance['message']);
                        }
                    }
                    if ($erreurObj->getNbErreurs()>0) {
                        $erreurObj->ajouter("La suppression n'a pu être effectuée, veuillez contacter l'administrateur de la base de données");
                    }
                    $html .= $erreurObj->afficher();
                }
                if ($erreurObj->getNbErreurs()==0) {
                    $reqDelete = "delete from rue where ".$champIdentifiant." in (".implode(",", $this->variablesPost['selection']).")";
                    $resDelete = $this->connexionBdd->requete($reqDelete);
                    echo "suppression effectuée<br>";
                }
            }
        }
        $reqCount        = "SELECT r.idRue as idRue, r.nom as nomRue, r.prefixe as prefixe, sq.nom as nomSousQuartier, q.nom as nomQuartier,v.nom as nomVille
            FROM rue r
            LEFT JOIN sousQuartier sq ON sq.idSousQuartier = r.idSousQuartier
            LEFT JOIN quartier q ON q.idQuartier = sq.idQuartier
            LEFT JOIN ville v ON v.idVille = q.idVille
            WHERE 1=1
            $sqlWhere
            $sqlRecherche
            ";
        $resCount        = $this->connexionBdd->requete($reqCount);
        $nbLignesTotales = mysql_num_rows($resCount);

        // pagination
        $nbEnregistrementsParPage = 20;
        $pagination               = new paginationObject();
        $arrayPagination          = $pagination->pagination(array('nomParamPageCourante'=>'pageCourantePagination', 'nbEnregistrementsParPage'=>$nbEnregistrementsParPage, 'nbEnregistrementsTotaux'=>$nbLignesTotales, 'typeLiens'=>'formulaire', 'idFormulaire'=>'formListe', 'champPageCourante'=>'pageCourantePagination', 'nomChampActionFormulaireOnSubmit'=>'validationFormulaireAdministration', 'nomActionFormulaireOnSubmit'=>'rechercheAdministration'));
        $req                      = "
        
            SELECT r.idRue as idRue, r.nom as nomRue, r.prefixe as prefixe, sq.nom as nomSousQuartier, q.nom as nomQuartier,v.nom as nomVille
            FROM rue r
            LEFT JOIN sousQuartier sq ON sq.idSousQuartier = r.idSousQuartier
            LEFT JOIN quartier q ON q.idQuartier = sq.idQuartier
            LEFT JOIN ville v ON v.idVille = q.idVille
            WHERE 1=1 $sqlWhere $sqlRecherche
            LIMIT ".$arrayPagination['limitSqlDebut'].",".$nbEnregistrementsParPage;
        $res                      = $this->connexionBdd->requete($req);
        $tableau                  = new tableau();
        $tableau->addValue("Sélection");
        $tableau->addValue("idRue");
        $tableau->addValue("prefixe");
        $tableau->addValue("nom de la rue");
        $tableau->addValue("localisation");
        while ($fetch = mysql_fetch_assoc($res)) {
            if ($fetch['idRue']!=0) {
                $tableau->addValue("<input type='checkbox' name='selection[]' value='".$fetch['idRue']."'>");
                $tableau->addValue("<a href='".$this->creerUrl('', 'adminAdresseDetail', array('tableName'=>'rue', 'idModification'=>$fetch['idRue']))."'>".$fetch['idRue']."</a>");
                $tableau->addValue(stripslashes($fetch['prefixe']));
                $tableau->addValue(stripslashes($fetch['nomRue']));
                $localisation = array();
                if ($fetch['nomSousQuartier']!='' && $fetch['nomSousQuartier']!='autre') {
                    $localisation[] = $fetch['nomSousQuartier'];
                }
                if ($fetch['nomQuartier']!='' && $fetch['nomQuartier']!='autre') {
                    $localisation[] = $fetch['nomQuartier'];
                }
                if ($fetch['nomVille']!='' && $fetch['nomVille']!='autre') {
                    $localisation[] = $fetch['nomVille'];
                }
                $tableau->addValue(stripslashes(implode(" - ", $localisation)));
            }
        }
        $html .= "<form name='formListe' id='formListe' enctype='multipart/form-data' method='POST'>";
        $html .= "Recherche : <input type='text' name='rechercheFormulaireAdministration' id='rechercheFormulaireAdministration' value='".$objetDeLaRecherche."'>";
        $html .= "<input type='submit' onclick=\"document.getElementById('validationFormulaireAdministration').value='rechercheAdministration';\"><br>";
        $html .= $arrayPagination['html'].'<br>';
        $html .= "<input type='hidden' name='pageCourantePagination' id='pageCourantePagination' value=''>";
        $html .= "<input type='hidden' name='validationFormulaireAdministration' id='validationFormulaireAdministration' value=''>";
        $html .= $tableau->createHtmlTableFromArray(5);
        $html .= "<input type='submit' value='Supprimer la selection' onclick=\"document.getElementById('validationFormulaireAdministration').value='suppression';\" name='supprimer'>";
        $html .= "<input type='button' name='ajouter' value='ajouter' onclick=\"location.href='".$this->creerUrl('', 'ajoutNouvelleAdresse')."';\">";
        $html .= "</form>";
        return $html;
    }
956911
public function afficherRecapitulatifAdresses($idEvenementGroupeAdresse = 0)
    {
        $html="";
        $t = new Template('modules/archi/templates/');
        $t->set_filenames((array('recapitulatifAdresses'=>'recapitulatifAdresses.tpl')));

        $retourAdresse=$this->afficherListe(
            array(
                'archiIdEvenement'=>$idEvenementGroupeAdresse, 'useTemplateFile'=>'listeAdressesDetailEvenement.tpl'
            ),
            'listeDesAdressesDuGroupeAdressesSurDetailAdresse'
        );

        $t->assign_vars(array('recapitulatifAdresses'=>$retourAdresse['html']));
        $t->assign_vars(
            array(
                'urlAutresBiensRue'=>$retourAdresse['arrayRetourLiensVoirBatiments']['urlAutresBiensRue'],
                'urlAutresBiensQuartier'=>$retourAdresse['arrayRetourLiensVoirBatiments']['urlAutresBiensQuartier']
            )
        );
        $idAdresseCourante = 0;
        if (isset($this->variablesGet['archiIdAdresse'])) {
            $idAdresseCourante = $this->variablesGet['archiIdAdresse'];
        }



        // 
        // affichage carte googlemap dans une iframe

        // && $coordonnees['latitude']>48.3776285 && $coordonnees['latitude']<48.78554409 && $coordonnees['longitude']>7.47482299 && $coordonnees['longitude']<7.993927001
        $coordonnees = $this->getCoordonneesFrom($retourAdresse['arrayIdAdresses'][0], 'idAdresse');

        if (count($coordonnees)==2 && $coordonnees['longitude']!='' && $coordonnees['latitude']!='' && $coordonnees['longitude']!='0' && $coordonnees['latitude']!='0' && $coordonnees['longitude']>0 && $coordonnees['latitude']>0) {
            $evenement = new archiEvenement();
            $calqueGoogleMap = new calqueObject(array('idPopup'=>10));

            $contenuIFramePopup = $evenement->getContenuIFramePopupGoogleMap(array(
                                        'idAdresseCourante'=>$idAdresseCourante,
                                        'calqueObject'=>$calqueGoogleMap,
                                        'idEvenementGroupeAdresseCourant'=>$idEvenementGroupeAdresse
                                        ));


            $t->assign_block_vars('isCarteGoogle', array(
                    'src'=>$this->creerUrl('', 'afficheGoogleMapIframe', array('noHeaderNoFooter'=>1,'longitude'=>$coordonnees['longitude'],'latitude'=>$coordonnees['latitude'],'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse,'archiIdAdresse'=>$idAdresseCourante)),
                    'lienVoirCarteGrand'=>"<a href='#' onclick=\"".$calqueGoogleMap->getJsOpenPopupNoDraggableWithBackgroundOpacity()."document.getElementById('iFrameDivPopupGM').src='".$this->creerUrl('', 'afficheGoogleMapIframe', array('longitude'=>$coordonnees['longitude'],'latitude'=>$coordonnees['latitude'],'noHeaderNoFooter'=>true,'archiIdAdresse'=>$idAdresseCourante,'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse,'modeAffichage'=>'popupDetailAdresse'))."';\" style='font-size:11px;'>"._("voir la carte en + grand")."</a>",
                    'popupGoogleMap'=>$calqueGoogleMap->getDivNoDraggableWithBackgroundOpacity(array('top'=>20,'lienSrcIFrame'=>'','contenu'=>$contenuIFramePopup))
                    ));
            $t->assign_vars(array('largeurTableauAdresse'=>420,'hauteurRecapAdresse'=>'277'));
        } else {
            $t->assign_vars(array('largeurTableauAdresse'=>700,'hauteurRecapAdresse'=>''));
        }
        // 




        ob_start();
        $t->pparse('recapitulatifAdresses');
        $html .= ob_get_contents();
        ob_end_clean();

        return $html;
    }
1185241
public void initialize(Email email) {
		
		// Initialisation de l'Etat de Controle de la chaine vide
		this.matchOnEmpty = email.matchOnEmpty();
		
		// Construction du pattern des mails
		pattern = Pattern.compile(
				"^" + ATOM + "+(\\." + ATOM + "+)*@"
				+ DOMAIN
				+ "|"
				+ IP_DOMAIN
				+ ")$",
				java.util.regex.Pattern.CASE_INSENSITIVE
		);
	}
726845
public function afficher($idEvenement = null, $modeAffichage = '', $idHistoriqueEvenement = null, $paramChampCache = array(), $params = array())
    {
        $authentification = new ArchiAuthentification();
        $estConnecte=$authentification->estConnecte();
        $estAdmin = $authentification->estAdmin();
        $estModerateur = $authentification->estModerateur();
        $userId = $authentification->getIdUtilisateur();

        $html = '';
        $erreurObject = new objetErreur();

        $t = new Template('modules/archi/templates/');
        $t->set_filenames(array('ev'=>'evenement.tpl'));
        $isMH   =   false;
        $isISMH =   false;
        $isAffichageSingleEvenement=false;
        $listeGroupeAdressesAffichees = array(); // liste des groupes d'adresses reellement affichés , donc dans cette liste ne figure pas les groupe d'adresses ou il n'y a pas d'evenements liés

        $u = new archiUtilisateur();

        // on renvoi le nom de type de structure ( ceci sert a voir si on affiche aussi le type de structure sur l'evenement suivant du groupe d'adresse (pour eviter les redondances) )
        $retourIdTypeStructure="";
        // on renvoi le titre de l'evenement pour l'affichage des ancres
        $retourTitreAncre="";
        $retourNomTypeEvenement="";
        $retourDate="";
        $retourDateFin = "";
        $nomTable = "evenements";

        $adresse = new archiAdresse();

        $imageObject = new imageObject(); // objet image du framework

        $idAdresseCourante = 0;
        if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse']!='') {
            $idAdresseCourante = $this->variablesGet['archiIdAdresse'];
        }

        $t->assign_vars(array("divDisplayMenuAction"=>"none"));


        if (!isset($idEvenement) || $idEvenement == null || $idEvenement=='') {
            if (isset($this->variablesGet['archiIdEvenement']) && $this->variablesGet['archiIdEvenement'] !='') {
                if ($modeAffichage!='consultationHistoriqueEvenement') {
                    $idEvenement = $this->variablesGet['archiIdEvenement'];
                }
            }
        }

        // fabrication de la requete en fonction des parametres
        $sqlEvenementsAdressesLiees="";
        if (empty($idEvenement)) {
            if ($modeAffichage=='consultationHistoriqueEvenement') {
                // on affiche les idHistoriqueEvenement de l'evenement choisi
                $isAffichageSingleEvenement=true;
                $sqlWhere = 'hE.idHistoriqueEvenement='.$idHistoriqueEvenement;
                $nomTable="historiqueEvenement";
            }

            if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage']=='comparaisonEvenement') {
            // debug pour eviter un message d'erreur si l'evenement n'existe pas dans l'affichage de la comparaison d'evenement ancien/nouveau
            }
        } else {
            if ($modeAffichage=='simple') {
            // l'idEvenement en parametre correspond a l'evenement enfant a afficher
                $sqlWhere = 'hE.idEvenement='.$idEvenement;
            } else {
                // l'idEvenement en parametres correspond a un evenement enfant on va donc chercher l'evenement parent qui correspond au groupe d'adresses
                $sqlWhere = '(hE.idEvenement=
						IF (
						(SELECT _eE.idEvenement FROM _evenementEvenement _eE
						LEFT JOIN evenements USING (idEvenement)
						LEFT JOIN typeEvenement tE USING (idTypeEvenement) WHERE idEvenementAssocie='.$idEvenement.' LIMIT 1),
						(SELECT _eE.idEvenement FROM _evenementEvenement _eE
						LEFT JOIN evenements USING (idEvenement)
						LEFT JOIN typeEvenement tE USING (idTypeEvenement) WHERE idEvenementAssocie='.$idEvenement.' LIMIT 1),
						'.$idEvenement.')) ';

                // si on est en mode de deplacement d'image
                // ou de selection de titre
                // on rajoute le formulaire sur la page
                if ($estConnecte && ((isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage']=='1')||(isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre']=='1') )) {
                    $html.="<form action='' name='formulaireEvenement' method='POST' enctype='multipart/form-data' id='formulaireEvenement'>
							<input type='hidden' name='actionFormulaireEvenement' id='actionFormulaireEvenement' value=''>";
                }
            }
        }

        if (isset($sqlWhere)) {
            /*
			 **  REQUÊTE
			*/
            // recuperation des données de l'evenement groupe d'adresses
            // on ne fait pas de group by   having
            // on prend simplement le dernier enregistrement classé selon l'idHistoriqueEvenement
            // et donc le nombre de resultats de la requete permet de recuperer le nombre d'historiques sur l'evenement dans la foulée
            $sql = 'SELECT  hE.idEvenement,
					hE.titre, hE.idSource,
					hE.idTypeStructure,
					hE.idTypeEvenement,
					hE.description,
					hE.dateDebut,
					hE.dateFin,
					hE.dateDebut,
					hE.dateFin,
					tE.nom AS nomTypeEvenement,
					tS.nom AS nomTypeStructure,
					s.nom AS nomSource,
					u.nom AS nomUtilisateur,
					u.prenom as prenomUtilisateur,
					tE.groupe,
					hE.ISMH ,
					hE.MH,
					date_format(hE.dateCreationEvenement,"'._("%e/%m/%Y à %kh%i").'") as dateCreationEvenement,
					hE.isDateDebutEnviron as isDateDebutEnviron,
					u.idUtilisateur as idUtilisateur,
					hE.numeroArchive as numeroArchive

					FROM '.$nomTable .' hE
					LEFT JOIN source s      ON s.idSource = hE.idSource
					LEFT JOIN typeStructure tS  ON tS.idTypeStructure = hE.idTypeStructure
					LEFT JOIN typeEvenement tE  ON tE.idTypeEvenement = hE.idTypeEvenement
					LEFT JOIN utilisateur u     ON u.idUtilisateur = hE.idUtilisateur
					WHERE '.$sqlWhere.'
			ORDER BY hE.idEvenement DESC';

            $rep = $this->connexionBdd->requete($sql);
        } else {
            echo "<p><strong>Cette fiche n'existe plus, merci de <a href='".$this->creerUrl("", "contact")."'>contacter un administrateur</a>.</strong></p>";
        }

        // lien vers le formulaire d'ajout d'une adresse pour un evenement parent
        // recherche de l'evenement parent
        $idEvenementGroupeAdresse=$this->getParent($idEvenement);
        if ($idEvenementGroupeAdresse==0) {
            $idEvenementGroupeAdresse = $idEvenement; // pas de parent trouvé , donc l'evenement est lui meme un parent
        }

        // ***************************
        // gestion mode deplacement d'images
        // ***************************
        $styleColorDeplacementActif="";
        $afficheSelectionImages=1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage']=='1') {
            $styleColorDeplacementActif="color:red;";
            $afficheSelectionImages=0;
        }
        $t->assign_vars(
            array(
                        'urlLierAdresseAEvenement'=>$this->creerUrl('', 'formulaireGroupeAdresses', array('archiIdEvenementGroupeAdresses'=>$idEvenementGroupeAdresse)),
                        'urlAjouterEvenement'=>$this->creerUrl('', 'ajouterSousEvenement', array('archiIdEvenement'=>$idEvenementGroupeAdresse)),
                        'urlDeplacerImages'=>$this->creerUrl('', 'evenement', array('idEvenement'=>$idEvenementGroupeAdresse,'afficheSelectionImage'=>$afficheSelectionImages)),
                        'styleModeDeplacementImageActif'=>"$styleColorDeplacementActif;"
                )
        );

        // **********************************
        // gestion selection du titre du groupe d'adresse
        // **********************************
        $styleColorSelectionTitreActif = "";
        $afficheSelectionTitre = 1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre']=='1') {
            $styleColorSelectionTitreActif = "color:red;";
            $afficheSelectionTitre = 0;
        }


        $t->assign_vars(
            array(
                        'urlSelectionTitreAdresse'=>$this->creerUrl('', 'evenement', array('idEvenement'=>$idEvenementGroupeAdresse,'afficheSelectionTitre'=>$afficheSelectionTitre)),
                        'styleModeChoixTitre'=>$styleColorSelectionTitreActif
                )
        );

        // *******************************************
        // gestion selection de l'image principale du groupe d'adresse
        // *******************************************
        $styleColorSelectionImagePrincipaleActif = "";
        $afficheSelectionImagePrincipale = 1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionImagePrincipale']) && $this->variablesGet['afficheSelectionImagePrincipale']=='1') {
            $styleColorSelectionImagePrincipaleActif = "color:red";
            $afficheSelectionImagePrincipale = 0;
        }

        $t->assign_vars(
            array(
                        'urlSelectionImagePrincipale'=>$this->creerUrl('', 'evenement', array('idEvenement'=>$idEvenementGroupeAdresse,'afficheSelectionImagePrincipale'=>$afficheSelectionImagePrincipale)),
                        'styleModeSelectionImagePrincipale'=>$styleColorSelectionImagePrincipaleActif
                )
        );


        // *******************************************
        // gestion positionnement evenements
        // *******************************************
        $styleColorPositionnementEvenements = "";
        $affichePositionnementEvenements = 1;
        if ($estConnecte && isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements']=='1') {
            $styleColorPositionnementEvenements = "color:red";
            $affichePositionnementEvenements = 0;

            $this->addToJsHeader($imageObject->getJSFunctionsDragAndDrop(array('withBalisesScript'=>true))); // rajoute les fonctions de deplacement d'elements dans le header du formulaire
        }



        $t->assign_vars(
            array(
                        'urlPositionnementEvenements'=>$this->creerUrl('', 'evenement', array('archiIdAdresse'=>$idAdresseCourante,'idEvenement'=>$idEvenementGroupeAdresse, 'affichePositionnementEvenements'=>$affichePositionnementEvenements)),
                        'styleModePositionnementEvenements'=>$styleColorPositionnementEvenements
                )
        );


        if (isset($sqlWhere) && mysql_num_rows($rep) > 0) {
            $nbHistorique  = mysql_num_rows($rep)-1; // on ne compte pas le groupe d'adresse qui a le meme idEvenement
            $res = mysql_fetch_object($rep);
            $idEvenement = $res->idEvenement;
            // si c'est un groupe d'adresse, on n'affiche pas le détail de l'événement, juste ses événements enfants
            if ($res->groupe!=3) {
                if ($modeAffichage === 'simple' || $modeAffichage=='consultationHistoriqueEvenement') {
                    $t->assign_block_vars('simple', array());
                    // si l'evenement est un evenement externe au groupe d'adresse , on affiche un menu different a droite
                    if (isset($params['isLieFromOtherAdresse']) && $params['isLieFromOtherAdresse']==true) {
                    // on recupere d'abord l'idAdresse de cet evenement externe
                        $reqAdresses = $adresse->getIdAdressesFromIdEvenement(array('idEvenement'=>$idEvenement));
                        $resAdresses = $this->connexionBdd->requete($reqAdresses);
                        $fetchAdressesExternes = mysql_fetch_assoc($resAdresses);
                        $intituleAdresse = $adresse->getIntituleAdresseFrom($fetchAdressesExternes['idAdresse'], 'idAdresse');
                        //$t->assign_vars(array("divDisplayMenuAction"=>"none"));

                        $ancrePositionAdresseLiee = "";

                        $positionSurAdresseOrigine = $adresse->getPositionFromEvenement($idEvenement);

                        if ($positionSurAdresseOrigine!='' && $positionSurAdresseOrigine!='0') {
                            $ancrePositionAdresseLiee = "#".$positionSurAdresseOrigine;
                        }

                        $t->assign_vars(array("urlEvenementExterne"=>"<small>"._("Adresse d'origine :")." <a href='".$this->creerUrl('', 'adresseDetail', array('archiIdAdresse'=>$fetchAdressesExternes['idAdresse'])).$ancrePositionAdresseLiee."'>".$intituleAdresse."</a></small>"));
                    } else {
                        if ($modeAffichage!='consultationHistoriqueEvenement') {
                            $t->assign_vars(array("divDisplayMenuAction"=>"table"));
                        }
                    }

                    if ($estConnecte) {
                        $t->assign_block_vars('simple.menuAction', array());
                        if ($modeAffichage!='consultationHistoriqueEvenement') {
                            if (isset($params['isLieFromOtherAdresse']) && $params['isLieFromOtherAdresse']==true) {
                                $t->assign_vars(array("divDisplayMenuAction"=>"none")); // si un utilisateur est connecté , et que l'evenement est un evenement lie , on affiche pas le menu d'action
                            } else {
                                $t->assign_vars(array("divDisplayMenuAction"=>"table")); // si un utilisateur est connecté et que l'evenement n'est pas un evenement lié, on affiche le menu d'action
                            }
                        } else {
                            $t->assign_vars(array("divDisplayMenuAction"=>"none")); // si on est en mode d'affichage de l'historique d'un evenement, on ne propose pas de menu action
                        }


                        if ($u->isAuthorized('evenement_lier_adresses', $userId)) {
                            if (!archiPersonne::isPerson($idEvenementGroupeAdresse) && ($u->getIdProfil($userId)==4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse'))) {
                                $t->assign_block_vars('simple.menuAction.afficheElementMenuLierAdresse', array());
                            }
                        }
                    }

                    if ($estAdmin) {
                        $t->assign_block_vars('simple.menuAction.isAdmin', array());
                    }

                    if ($u->isAuthorized('evenement_supprimer', $userId)) {
                        $isModerateurFromVilleCourante = false;
                        if ($authentification->getIdProfil() == 3) { //moderateur
                            $arrayVillesModerees = $u->getArrayVillesModereesPar($userId);
                            $idVilleAdresseCourante = $adresse->getIdVilleFrom($idEvenement, 'idEvenement');
                            if (in_array($idVilleAdresseCourante, $arrayVillesModerees)) {
                                $isModerateurFromVilleCourante=true;
                            }
                        }
                        if ($authentification->getIdProfil() == 4 || $isModerateurFromVilleCourante) { // est on administrateur ou moderateur de la ville ?
                            $t->assign_block_vars('simple.menuAction.isAdminOrModerateurFromVille', array());
                            if ($estConnecte && $estAdmin && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage']=='1') {
                                $t->assign_block_vars('simple.menuAction.isAdmin.isAffichageSelectionImages', array());
                            }
                        }
                    }

                    if (!archiPersonne::isPerson($idEvenementGroupeAdresse) && $u->isAuthorized('evenement_deplacer', $userId)) {
                        $t->assign_block_vars('simple.menuAction.afficheElementMenuDeplacerEvenement', array());
                    }

                    if ($estConnecte && $estAdmin && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage']=='1') {
                        //$t->assign_block_vars('simple.menuAction.isAdminOrModerateurFromVille',array());
                    }
                }

                // ******************************************************************************************************
                // Affichage des dates
                $dateTxt="";
                $environDateDebutTxt = "";
                if ($res->isDateDebutEnviron=='1') {
                    $environDateDebutTxt = "environ ";
                }


                switch (strtolower($res->nomTypeEvenement)) {
                    case 'information (nouveautés)':
                    case 'extension':
                    case 'inauguration':
                    case 'exposition':
                        $articleAvantTypeEvenement = "de l'";
                        break;
                    default:
                        $articleAvantTypeEvenement = "de";
                        break;
                }

                if (substr($res->dateDebut, 5)=="00-00") {
                    $datetime=substr($res->dateDebut, 0, 4);
                } else {
                    $datetime = $res->dateDebut;
                }

                if ($res->nomTypeEvenement =='Construction') {
                    if ($res->dateDebut!='0000-00-00') {
                        $dateTxt=_("Année de construction :")." <time itemprop='startDate' datetime='".$datetime."'>".$environDateDebutTxt.$this->date->toFrenchAffichage($res->dateDebut)."</time>";
                    }

                    if ($res->dateFin!='0000-00-00') {
                        $dateTxt.=" (-> ".$this->date->toFrenchAffichage($res->dateFin).")";
                        $retourDateFin = " (-> ".$this->date->toFrenchAffichage($res->dateFin).")";
                    }
                } else {
                    if ($res->dateDebut != '0000-00-00') {
                        if ($res->MH != '1' && $res->ISMH != '1') {
                            if (pia_strlen($this->date->toFrench($res->dateDebut))<=4) {
                                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                                    $nomTypeEvenement = "début";
                                } else {
                                    $nomTypeEvenement=strtolower($res->nomTypeEvenement);
                                }
                                    $dateTxt=_("Année")." ".$articleAvantTypeEvenement." <time itemprop='startDate' datetime='".$datetime."'>".$nomTypeEvenement." : $environDateDebutTxt".$this->date->toFrenchAffichage($res->dateDebut)."</time>";
                            } else {
                                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                                    $typeEvenement = "";
                                } else {
                                    $typeEvenement=$articleAvantTypeEvenement." ".strtolower($res->nomTypeEvenement);
                                }
                                $dateTxt=_("Date")." <time itemprop='startDate' datetime='".$datetime."'>".$typeEvenement." : $environDateDebutTxt".$this->date->toFrenchAffichage($res->dateDebut)."</time>";
                            }
                        }

                        if ($res->MH=='1') {
                            $dateTxt= "<b>"._("Classement Monument Historique")."</b> $environDateDebutTxt le ".$this->date->toFrenchAffichage($res->dateDebut);
                            $isMH=true;
                        }

                        if ($res->ISMH == '1') {
                            $dateTxt = "<b>"._("Inscription à l'Inventaire Supplémentaire des Monuments Historiques")."</b> $environDateDebutTxt : ".$this->date->toFrenchAffichage($res->dateDebut);
                            if ($res->MH =='1') {
                                $dateTxt.="<br><b>"._("Classement Monument Historique")."</b> $environDateDebutTxt : ".$this->date->toFrenchAffichage($res->dateDebut);
                            }
                            $isISMH=true;
                        }
                    }

                    if ($res->dateFin != '0000-00-00') {
                        if (pia_strlen($this->date->toFrench($res->dateFin))<=4) {
                            $dateTxt.=" "._("à")." ".$this->date->toFrenchAffichage($res->dateFin);
                        } else {
                            $dateTxt.=" "._("au")." ".$this->date->toFrenchAffichage($res->dateFin);
                        }
                    }
                }
                // ******************************************************************************************************
                // on renseigne la variable nomTypeStructure pour la renvoyer au retour de la fonction
                $retourIdTypeStructure = $res->idTypeStructure;
                // idem pour le titre qui sera affiché en resume pour le tableau de liens
                $retourTitreAncre="";
                if (stripslashes($res->titre)!='') {
                    $retourTitreAncre .= htmlspecialchars(stripslashes($res->titre));
                } else {
                    $retourTitreAncre .= _("Sans titre");
                }

                $retourNomTypeEvenement=$res->nomTypeEvenement;
                $retourDate=$environDateDebutTxt." ".$this->date->toFrench($res->dateDebut);
                $dateDebut=$res->dateDebut;
                if (isset($paramChampCache['idTypeStructurePrecedent']) && $res->idTypeStructure==$paramChampCache['idTypeStructurePrecedent']) {
                    $typeStructure='';
                } else {
                    if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                        $typeStructure="";
                    } else {
                        $typeStructure="Structure : <a href='".$this->creerUrl('', 'evenementListe', array('selection' => 'typeStructure', 'id' => $res->idTypeStructure))."'>".$res->nomTypeStructure."</a><br>";
                    }
                }
                $source = "";
                if ($res->idSource!=0) {
                    $source="Source : <a href='".$this->creerUrl(
                        '',
                        'listeAdressesFromSource',
                        array(
                                    'source'=>$res->idSource,
                                    'submit'=>'Rechercher'

                            )
                    )."' onmouseover=\"document.getElementById('calqueDescriptionSource').style.top=(getScrollHeight()+150)+'px';
									document.getElementById('calqueDescriptionSource').style.display='block';
									document.getElementById('iframe').src='".$this->creerUrl(
                        '',
                        'descriptionSource',
                        array(
                                                    'archiIdSource'=>$res->idSource,
                                                    'noHeaderNoFooter'=>1

                                            )
                    )."';\"
									>".stripslashes($res->nomSource)."</a><br>";
                } else {
                    // exception temporaire (?)
                    if ($res->numeroArchive!='') { // s'il y a un numero d'archive et pas de source précisée , on dit que la source est "archives municipales" (voir fabien)
                        $reqSourceStatic ="SELECT nom as nomSource FROM source WHERE idSource='24'";
                        $resSourceStatic = $this->connexionBdd->requete($reqSourceStatic);
                        $fetchSourceStatic = mysql_fetch_assoc($resSourceStatic);
                        $source="Source : <a href='".$this->creerUrl('', 'listeAdressesFromSource', array('submit'=>'Rechercher','source'=>24))."' onmouseover=\"document.getElementById('calqueDescriptionSource').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDescriptionSource').style.display='block';document.getElementById('iframe').src='".$this->creerUrl('', 'descriptionSource', array('archiIdSource'=>24,'noHeaderNoFooter'=>1))."';\" onmouseout=\"document.getElementById('calqueDescriptionSource').style.display='none';\">".stripslashes($fetchSourceStatic['nomSource'])."</a><br>";
                    }
                }

                // DESCRIPTION ---
                $bbCode = new bbCodeObject();
                $description = $bbCode->convertToDisplay(array('text'=>$res->description));
                $description = empty($description)?"":"<div itemprop='description' class='desc'>".$description."</div>";
                // --


                // numeroArchive
                $numeroArchive = "";
                if ($res->numeroArchive!='') {
                // modif fabien du 15/04/2011 suite mail directrice Archives de Strasbourg Mme Perry Laurence
                    $numeroArchive = "Cote Archives de Strasbourg : ".$res->numeroArchive."<br>";
                }

                $adressesLieesHTML = $this->getAdressesLieesAEvenement(array('modeRetour'=>'affichageSurDetailEvenement','idEvenement'=>$idEvenement));
                if ($adressesLieesHTML!='') {
                    $adressesLieesHTML="<b>"._("Liste des adresses liées :")."</b> <br>".$adressesLieesHTML;
                }


                // recherche s'il y a un historique sur l'evenement courant ( plusieurs mises à jour)
                $lienHistoriqueEvenementCourant="";
                $labelHistorique="";
                if ($estConnecte && $this->getNbEvenementsInHistorique(array('idEvenement'=>$idEvenement))>1 && $modeAffichage!='consultationHistoriqueEvenement' && (!isset($params['isLieFromOtherAdresse']) || $params['isLieFromOtherAdresse']!=true)) {
                    $labelHistorique = _("(Consulter l'historique)");
                    $lienHistoriqueEvenementCourant=$this->creerUrl('', 'consultationHistoriqueEvenement', array('archiIdEvenement'=>$idEvenement));
                }

                $onClickEvenementDeplacerVersGA="";
                if ($estConnecte && $u->isAuthorized('evenement_deplacer', $userId) && $modeAffichage!='consultationHistoriqueEvenement' && isset($params['calquePopupDeplacerEvenement'])) {
                    $onClickEvenementDeplacerVersGA = "document.getElementById('".$params['calquePopupDeplacerEvenement']->getJSIFrameId()."').src='".$this->creerUrl('', 'recherche', array('noHeaderNoFooter'=>1,'modeAffichage'=>"popupDeplacerEvenementVersGroupeAdresse","idEvenementADeplacer"=>$res->idEvenement))."';document.getElementById('".$params['calquePopupDeplacerEvenement']->getJSDivId()."').style.display='block';";
                }

                $dateEnvoi="";
                $txtEnvoi = _("envoyé");

                if (!$this->isFirstIdHistoriqueEvenementFromHistorique($res->idEvenement)) {
                    $txtEnvoi = _("modifié");
                }

                $dateEnvoi = _("le")." ".$res->dateCreationEvenement;

                $arrayIdAdresseToUrl = array();
                if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse']!='') {
                    $arrayIdAdresseToUrl = array('archiIdAdresse'=>$this->variablesGet['archiIdAdresse']);
                }

                $resTypeEvenement = $this->connexionBdd->requete("SELECT idTypeEvenement,nom FROM typeEvenement where groupe = '".$this->getGroupeFromTypeEvenement($res->idTypeEvenement)."'");

                $fetchTypeEvenement = mysql_fetch_assoc($resTypeEvenement);
                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    $typeEvenement=_("Biographie");
                    $urlTypeEvenement="";
                } else {
                    $typeEvenement=$res->nomTypeEvenement;
                    $urlTypeEvenement=$this->creerUrl('', 'evenementListe', array('selection' => 'typeEvenement', 'id' => $res->idTypeEvenement));
                }
                $titre=empty($res->titre)?"<meta itemprop='name' content='".$fetchTypeEvenement['nom']."' />":"<h3 itemprop='name'>".htmlspecialchars(stripslashes($res->titre))."</h3>";

                $user = new archiUtilisateur();
                $user->setUserId($res->idEvenement);
                $urlProfilPic = $user->getImageAvatar(array('idUtilisateur'=>$res->idUtilisateur));
                $utilisateur="<a href='".$this->creerUrl('', 'detailProfilPublique', array('archiIdUtilisateur'=>$res->idUtilisateur,'archiIdEvenementGroupeAdresseOrigine'=>$idEvenementGroupeAdresse))."'>".$res->nomUtilisateur." ".$res->prenomUtilisateur."</a>";

                $t->assign_vars(array(
                        'txtEnvoi'    => $txtEnvoi,
                        'dateEnvoi'     =>$dateEnvoi,
                        'titre'       => $titre,
                        'utilisateur' => "<a href='".$this->creerUrl('', 'detailProfilPublique', array('archiIdUtilisateur'=>$res->idUtilisateur,'archiIdEvenementGroupeAdresseOrigine'=>$idEvenementGroupeAdresse))."'>".$res->nomUtilisateur." ".$res->prenomUtilisateur."</a>",
                        'dates'   => $dateTxt,
                        'typeEvenement' => $typeEvenement,
                        'typeStructure' => $typeStructure,
                        'idSource'  => $res->idSource,
                        'source'    => $source,
                        'description'   => $description,
                        'urlTypeEvenement' => $urlTypeEvenement,
                        'urlTypeStructure' => $this->creerUrl('', 'evenementListe', array('selection' => 'typeStructure', 'id' => $res->idTypeStructure)),
                        'ajouterEvenement'           => '',
                        'supprimerEvenement'             => $this->creerUrl('supprimerEvenement', '', array('archiIdEvenement'=>$res->idEvenement)),
                        'supprimerHistoriqueEvenement'   => $this->creerUrl('supprimerHistoriqueEvenement', '', array('archiIdHistoriqueEvenement'=>$res->idHistoriqueEvenement)),
                        'ajouterImage'     => $this->creerUrl('', 'ajoutImageEvenement', array('archiIdEvenement'=>$res->idEvenement)),
                        'modifierImage'    => $this->creerUrl('', 'modifierImageEvenement', array('archiIdEvenement'=>$res->idEvenement)),
                        'modifierEvenement'=> $this->creerUrl('', 'modifierEvenement', array_merge(array('archiIdEvenement' => $res->idEvenement,'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse), $arrayIdAdresseToUrl)),

                        'urlImporterImage'=>"#",
                        'onClickImporterImage'=>"document.getElementById('formulaireEvenement').action='".$this->creerUrl('deplacerImagesSelectionnees', 'evenement', array('idEvenement'=>$idEvenement))."&deplacerVersIdEvenement=".$res->idEvenement."';document.getElementById('actionFormulaireEvenement').value='deplacerImages';if(confirm('Voulez-vous vraiment déplacer ces images ?')){document.getElementById('formulaireEvenement').submit();}",
                        'urlSupprimerImage'=>"#",
                        'onClickSupprimerImage'=>"document.getElementById('formulaireEvenement').action='".$this->creerUrl('supprimerImagesSelectionnees', 'evenement', array('idEvenement'=>$idEvenement))."';document.getElementById('actionFormulaireEvenement').value='supprimerImages';if(confirm('Voulez-vous vraiment supprimer ces images ?')){document.getElementById('formulaireEvenement').submit();}",
                        'urlLierAdresses'=>$this->creerUrl('', 'afficheFormulaireEvenementAdresseLiee', array('idEvenement'=>$res->idEvenement)),
                        'listeAdressesLiees'=>$adressesLieesHTML,
                        'lienHistoriqueEvenementCourant'=>$lienHistoriqueEvenementCourant,

                        'urlDeplacerVersNouveauGroupeAdresse'=>$this->creerUrl('deplacerEvenementVersNouveauGA', 'evenement', array('idEvenement'=>$res->idEvenement)),

                        'onClickDeplacerVersAdresses'=>$onClickEvenementDeplacerVersGA,
                        'numeroArchive'=>$numeroArchive,
                        'idEvenement'=>$res->idEvenement,
                        'urlProfilPic'=> $urlProfilPic,
                        'infoTitre'=> $utilisateur . " a ".$txtEnvoi." un événement",
                        'txtEnvoi' => $txtEnvoi,
                        'labelLienHistorique'=>$labelHistorique
                ));

                $idEvenement = $res->idEvenement;

                // affichage des images de l'evenement
                if ($modeAffichage!='consultationHistoriqueEvenement') {
                    $images = new archiImage();

                    $arrayImagesVuesSurByDate=array();
                    if (isset($params['imagesVuesSurLinkedByDate']) && count($params['imagesVuesSurLinkedByDate'])>0) {
                        $arrayImagesVuesSurByDate = $params['imagesVuesSurLinkedByDate'];
                    }

                    $t->assign_vars(array( 'imagesLiees' => $images->afficherFromEvenement($idEvenement, array('withoutImagesVuesSurPrisesDepuis'=>true,'imagesVuesSurLinkedByDate'=>$arrayImagesVuesSurByDate,'idGroupeAdresseEvenementAffiche'=>$idEvenementGroupeAdresse))));
                }

                if (($idPerson=archiPersonne::isPerson($idEvenementGroupeAdresse)) && isset($params["nextEvent"])) {
                    $req = "
							SELECT dateDebut
							FROM evenements
							WHERE idEvenement = '".$params["nextEvent"]."'
									ORDER BY idEvenement DESC LIMIT 1
									";

                    $res = $this->connexionBdd->requete($req);
                    $date2 =mysql_fetch_object($res);
                    $linkedEventsHTML=archiPersonne::displayEvenementsLies($idPerson, $dateDebut, $date2->dateDebut);

                    $t->assign_vars(array("evenementsLiesPersonne" => $linkedEventsHTML));
                } elseif ($idPerson=archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    $linkedEventsHTML=archiPersonne::displayEvenementsLies($idPerson, $dateDebut, 3000);
                    $t->assign_vars(array("evenementsLiesPersonne" => $linkedEventsHTML));
                }


                /*
				 * COURANTS ARCHI
				 */
                $rep = $this->connexionBdd->requete('
						SELECT  cA.idCourantArchitectural, cA.nom
						FROM _evenementCourantArchitectural _eA
						LEFT JOIN courantArchitectural cA  ON cA.idCourantArchitectural  = _eA.idCourantArchitectural
						WHERE _eA.idEvenement='.$idEvenement.'
						ORDER BY cA.nom ASC');

                if (mysql_num_rows($rep)>0) {
                    $t->assign_block_vars('simple.isCourantArchi', array());
                    while ($res = mysql_fetch_object($rep)) {
                        $t->assign_block_vars('simple.isCourantArchi.archi', array(
                                'url' => $this->creerUrl('', 'evenementListe', array('selection' => 'courant', 'id' => $res->idCourantArchitectural)),
                                'nom' => $res->nom));
                    }
                }

                /*
				 **  PERSONNES
				*/

                $rep = $this->connexionBdd->requete('
						SELECT  p.idPersonne, m.nom as metier, p.nom, p.prenom
						FROM _evenementPersonne _eP
						LEFT JOIN personne p ON p.idPersonne = _eP.idPersonne
						LEFT JOIN metier m ON m.idMetier = p.idMetier
						WHERE _eP.idEvenement='.$idEvenement.'
						ORDER BY p.nom DESC');

                $metier="";
                while ($res = mysql_fetch_object($rep)) {
                    if (isset($res->metier) && $res->metier!='') {
                        $metier = $res->metier.' : ';
                    }
                    $t->assign_block_vars('simple.pers', array(
                            'urlDetail'    => $this->creerUrl('', 'personne', array('idPersonne' => $res->idPersonne)),
                            'urlEvenement' => $this->creerUrl('', 'evenementListe', array('selection' => 'personne', 'id' => $res->idPersonne)),
                            'nom' => stripslashes($res->nom),
                            'prenom' => stripslashes($res->prenom),
                            'metier' => stripslashes($metier),
                            'idPerson' => $res->idPersonne,
                            'idEvent' => $idEvenement
                    ));
                    if ($estConnecte) {
                        $t->assign_block_vars('simple.pers.connected', array());
                    }
                }

                //*
                //**    Historique
                //*/

                $t->assign_vars(array( 'nbHistorique' => $nbHistorique));
                if ($nbHistorique > 0) {
                    $t->assign_block_vars('histo', array('url' => $this->creerUrl('', 'historiqueEvenement', array('idEvenement' => $idEvenement))));
                }
            }
            // *************************************************************************************************************************************
            // affichage des adresses et evenements lies dans la partie supérieur du detail
            // que l'événement soit un groupe d'adresse ou non, on affiche les enfants
            // *************************************************************************************************************************************
            if ($modeAffichage!='simple' && $modeAffichage!='consultationHistoriqueEvenement') {
                $tabIdEvenementsLies=$this->getEvenementsLies($idEvenement); // recherche des sous evenements (idEvenementAssocie) du groupe d'adresse

                if (count($tabIdEvenementsLies)>0) {
                    $listeGroupeAdressesAffichees[] =  $idEvenement;
                    $t->assign_block_vars('noSimple', array());  // vu que la fonction afficher est recursive , on affiche cette partie uniquement en affichant 'non simple'
                    //=> affichage simple = affichage de l'evenement => affichage non simple = affichage de la page ...
                    if ($modeAffichage=="personne") {
                    } else {
                        $retourAdresse=$adresse->afficherListe(array('archiIdEvenement'=>$idEvenement,'useTemplateFile'=>'listeAdressesDetailEvenement.tpl'), "listeDesAdressesDuGroupeAdressesSurDetailAdresse"); // modeAffichage => listeDesAdressesDuGroupeAdressesSurDetailAdresse
                    }
                    $idAdresseCourante = 0;
                    if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse']!='') {
                        $idAdresseCourante = $this->variablesGet['archiIdAdresse'];
                    }
                    if ($modeAffichage!="personne") {
                        // ************************************************************************************************************************
                        // affichage carte googlemap dans une iframe

                        $coordonnees = $adresse->getCoordonneesFrom($idEvenement, 'idEvenementGroupeAdresse');//$retourAdresse['arrayIdAdresses'][0]
                        // si pas de coordonnees , on va chercher les coordonnees de la ville courante
                        if ($coordonnees['longitude']==0 && $coordonnees['latitude']==0) {
                            $idVilleAdresseCourante = $adresse->getIdVilleFrom($idAdresseCourante, 'idAdresse');
                            $coordonnees = $adresse->getCoordonneesFrom($idVilleAdresseCourante, 'idVille');
                        }



                        $calqueGoogleMap = new calqueObject(array('idPopup'=>10));
                        $contenuIFramePopup = $this->getContenuIFramePopupGoogleMap(array(
                                'idAdresseCourante'=>$idAdresseCourante,
                                'calqueObject'=>$calqueGoogleMap,
                                'idEvenementGroupeAdresseCourant'=>$idEvenement
                        ));
                        // ********************************************************************************************************************************

                        $t->assign_block_vars('noSimple.isCarteGoogle', array(
                                'src'=>$this->creerUrl('', 'afficheGoogleMapIframe', array('noHeaderNoFooter'=>1,'longitude'=>$coordonnees['longitude'],'latitude'=>$coordonnees['latitude'],'archiIdAdresse'=>$idAdresseCourante,'archiIdEvenementGroupeAdresse'=>$idEvenement)),
                                'lienVoirCarteGrand'=>"<a href='#' onclick=\"".$calqueGoogleMap->getJsOpenPopupNoDraggableWithBackgroundOpacity()."document.getElementById('iFrameDivPopupGM').src='".$this->creerUrl('', 'afficheGoogleMapIframe', array('longitude'=>$coordonnees['longitude'],'latitude'=>$coordonnees['latitude'],'noHeaderNoFooter'=>true,'archiIdAdresse'=>$idAdresseCourante,'archiIdEvenementGroupeAdresse'=>$idEvenement,'modeAffichage'=>'popupDetailAdresse'))."';\" class='bigger' style='font-size:11px;'>"._("Voir la carte en + grand")."</a>",
                                'popupGoogleMap'=>$calqueGoogleMap->getDivNoDraggableWithBackgroundOpacity(array('top'=>20,'lienSrcIFrame'=>'','contenu'=>$contenuIFramePopup))
                        ));//'popupGoogleMap'=>$calqueGoogleMap->getDiv(array('width'=>550,'height'=>570,'lienSrcIFrame'=>''))."<script  >".$calqueGoogleMap->getJsToDragADiv()."</script>"
                        $t->assign_vars(array('largeurTableauResumeAdresse'=>415,'hauteurRecapAdresse'=>'270'));

                        // ************************************************************************************************************************
                        // affichage de l'encars des adresses avec les photos avant et apres l'adresse courante
                        $arrayEncartAdresses = $adresse->getArrayEncartAdressesImmeublesAvantApres(array('idEvenementGroupeAdresse'=>$idEvenementGroupeAdresse));
                        $t->assign_block_vars('noSimple.adresses', array(
                                'adressesLiees' => $arrayEncartAdresses['html']));
                        $t->assign_vars(
                            array(
                                        'urlAutresBiensRue'=>$retourAdresse['arrayRetourLiensVoirBatiments']['urlAutresBiensRue'],
                                        'urlAutresBiensQuartier'=>$retourAdresse['arrayRetourLiensVoirBatiments']['urlAutresBiensQuartier']
                                )
                        );

                        if ($estConnecte) {
                            $t->assign_block_vars('noSimple.isConnected', array());
                            $t->assign_block_vars('noSimple.adresses.isConnected', array());
                        }

                        if ($retourAdresse['nbAdresses']==0) {
                            $t->assign_vars(array('intituleActionAdresses'=>_("Ajouter une adresse")));
                        } else {
                            $t->assign_vars(array('intituleActionAdresses'=>_("Modifier")));
                        }

                        if ($estConnecte && $estAdmin) {
                        // si l'utilisateur est connecté et est admin, on affiche le lien pour selectionner des images
                            $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionImages', array());
                        }

                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_choix_titre', $userId)) {
                            if ($u->getIdProfil($userId)==4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // tout utilisateur autorisé (admin+moderateur de la ville)  peut changer le titre par defaut du groupe d'adresse en selectionnant l'evenement de son choix ( le titre est récupéré de cet evenement),si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionTitre', array());
                            }
                        }
                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_choix_image_principale', $userId)) {
                            if ($u->getIdProfil($userId)==4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // un utilisateur moderateur de la ville de l'adresse courant ou un admin peuvent selectionner ou changer l'image principale du groupe d'adresse,si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionImagePrincipale', array());
                            }
                        }


                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_positionnement_evenements', $userId)) {
                            if ($u->getIdProfil($userId)==4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // un utilisateur moderateur de la ville courante ou admin peuvent changer la position des evenements, independemment de la date de debut de l'evenement ,si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienPositionnementEvenements', array());
                            }
                        }
                    }


                    //popup pour la recherche d'adresse dans le cas d'un deplacement d'evenement
                    if ($estConnecte && $u->isAuthorized('evenement_deplacer', $userId)) {
                        $c = new calqueObject(array('idPopup'=>"divPopupDeplacerEvenementVersGA".$idEvenementGroupeAdresse));
                        $t->assign_vars(array('divDeplacerEvenementVersGA'=>$c->getDiv(array(
                                'lienSrcIFrame'=>$this->creerUrl('', 'recherche', array(
                                        'noHeaderNoFooter'=>1,
                                        'modeAffichage'=>'popupDeplacerEvenementVersGroupeAdresse')),'titrePopup'=>_("Recherche d'adresses"),'width'=>700))));

                        $params['calquePopupDeplacerEvenement'] = $c;
                    }
                    $images = new archiImage();
                    // **********************************************************************************************************************************************************
                    // recherche des images en rapport avec l'adresse courante

                    $resAdressesCourantes= $adresse->getAdressesFromEvenementGroupeAdresses($idEvenement);
                    $listeAdressesFromEvenement=array();
                    while ($fetchAdressesCourantes = mysql_fetch_assoc($resAdressesCourantes)) {
                        $listeAdressesFromEvenement[] = $fetchAdressesCourantes['idAdresse'];
                    }


                    if ($modeAffichage=="personne") {
                    } else {
                        $arrayCorrespondancesVuesSur = $this->getArrayCorrespondancesIdImageVuesSurAndEvenementByDateFromGA($idEvenementGroupeAdresse);
                        $arrayNoDiplayIdImageVueSur=array();
                        foreach ($arrayCorrespondancesVuesSur as $indice => $values) {
                            foreach ($values as $indice => $value) {
                                $arrayNoDiplayIdImageVueSur[] = $value['idImage'];
                            }
                        }
                    }
                    if (count($listeAdressesFromEvenement)>0) {
                        $arrayAutresVuesSur = $images->getAutresPhotosVuesSurAdresse($listeAdressesFromEvenement, 'moyen', array('noDiplayIdImage'=>$arrayNoDiplayIdImageVueSur,'idEvenementGroupeAdresse'=>$idEvenementGroupeAdresse,'idGroupeAdresseEvenementAffiche'=>$idEvenementGroupeAdresse,'setZoomOnImageZone'=>true));

                        $autresVuesSurHTML=$arrayAutresVuesSur['htmlVueSur'];
                        $codeARajouterALaFin=$arrayAutresVuesSur['htmlZonesDivMapJs'];
                        $autresPrisesDepuisHTML = $images->getAutresPhotosPrisesDepuisAdresse($listeAdressesFromEvenement, 'moyen', array('idEvenementGroupeAdresse'=>$idEvenementGroupeAdresse,'idGroupeAdresseEvenementAffiche'=>$idEvenementGroupeAdresse));


                        if ($autresVuesSurHTML!='') {
                            $t->assign_block_vars('noSimple.autresVuesSur', array('value'=>$autresVuesSurHTML));
                        }

                        if ($autresPrisesDepuisHTML!='') {
                            $t->assign_block_vars('noSimple.autresPrisesDepuis', array('value'=>$autresPrisesDepuisHTML));
                        }


                        $arrayLiens = array();
                        if ($modeAffichage!="personne") {
                            $arrayListeAdressesCourantes = array_unique($retourAdresse['arrayIdAdresses']);
                        }

                        //foreach($arrayListeAdressesCourantes as $indice => $idAdresseCourante)
                        //{
                        $arrayLiens[]="<a href='".$this->creerUrl('', '', array('archiAffichage'=>'adresseDetail','archiIdAdresse'=>$idAdresseCourante,'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))."'>".$adresse->getIntituleAdresseFrom($idEvenementGroupeAdresse, 'idEvenementGroupeAdresse', array("noQuartier"=>true,"noVille"=>true,"noSousQuartier"=>true,"ifTitreAfficheTitreSeulement"=>true))."</a>";
                        //}

                        $t->assign_vars(array('listeAdressesCourantes'=>implode(" / ", $arrayLiens)));
                    }
                    // **********************************************************************************************************************************************************
                    // **********************************************************************************************************************************************************
                    // **********************************************************************************************************************************************************
                    // affichage des evenements de l'evenement groupe d'adresses
                    // **********************************************************************************************************************************************************
                    $champsCacheTransmis=array();
                    //
                    $idEvenementWhereIsTitre = $this->getIdEvenementTitre(array("idEvenementGroupeAdresse"=>$idEvenementGroupeAdresse));
                    $idAdresse = $adresse->getIdAdresseFromIdEvenementGroupeAdresse($idEvenementGroupeAdresse);


                    // initialisation des variables pour la creation du tableau de configuration de la liste triable par glisser deposer des evenements dans l'onglet historique des evenements
                    if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements']=='1') {
                        $arrayConfigPositionnementEvenement = array();
                        $indicePositionnement=0;
                    }

                    $i=0;
                    // parcours des evenements
                    foreach ($tabIdEvenementsLies as $indice => $value) {
                        $params['isLieFromOtherAdresse'] = $value['isLieFromOtherAdresse'];
                        $params['imagesVuesSurLinkedByDate'] = array();
                        if (isset($tabIdEvenementsLies[$i+1]["idEvenementAssocie"])) {
                            $params["nextEvent"]=$tabIdEvenementsLies[$i+1]["idEvenementAssocie"];
                        } else {
                            $params["nextEvent"]=null;
                        }
                        if (isset($arrayCorrespondancesVuesSur[$value['idEvenementAssocie']])) {
                            $params['imagesVuesSurLinkedByDate'] = $arrayCorrespondancesVuesSur[$value['idEvenementAssocie']];
                        }
                        // le type de structure est le meme que l'evenement precedent , on ne l'affiche pas, c'est pour cela qu'on le transmet a la fonction d'affichage
                        $retourEvenement = $this->afficher($value['idEvenementAssocie'], 'simple', null, $champsCacheTransmis, $params);
                        $champsCacheTransmis=array('idTypeStructurePrecedent'=>$retourEvenement['idTypeStructure']);

                        $titreAncre = $retourEvenement['titreAncre'];

                        if ($titreAncre == 'Sans titre' && ($retourEvenement['isMH'] || $retourEvenement['isISMH'])) {
                            if ($retourEvenement['isMH']) {
                                $titreAncre = "<b>"._("Classement aux Monuments Historiques")."</b>";
                            }

                            if ($retourEvenement['isISMH']) {
                                $titreAncre = "<b>"._("Inscription à l'Inventaire Supplémentaire des Monuments Historiques")."</b>";
                            }
                        } elseif ($titreAncre != _("Sans titre") && ($retourEvenement['isMH'] || $retourEvenement['isISMH'])) {
                            if ($retourEvenement['isMH']) {
                                $titreAncre .= " <b>(MH)</b>";
                            }


                            if ($retourEvenement['isISMH']) {
                                $titreAncre .= " <b>(ISMH)</b>";
                            }
                        }

                        if ($retourEvenement['nomTypeEvenement']!='') {
                            $titreAncre.=" - ".$retourEvenement['nomTypeEvenement'];
                        }
                        if ($retourEvenement['date']!='') {
                            $titreAncre.=" - ".$retourEvenement['date'];
                        }

                        if ($retourEvenement['dateFin']!='') {
                            $titreAncre.=" ".$retourEvenement['dateFin'];
                        }

                        if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements']=='1') {
                        // si on est en mode de positionnement des evenements manuellement
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['idEvenement']   = array('value'=>$value['idEvenementAssocie'],'type'=>'identifiant');
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['illustration']  = array('value'=>"<img src='".$this->urlImages."doubleFlechesVerticales.jpg' border=0>",'type'=>'free');
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['titre']         = array('value'=>$titreAncre,'type'=>'free','styleColonneDonnees'=>'font-size:12px;');


                            $indicePositionnement++;
                            /*$t->assign_block_vars('noSimple.modePositionnementEvenements',array());

							$t->assign_block_vars('noSimple.modePositionnementEvenements.titresEvenements',array(
									'imagesIllustrationGlisserDeposer'=>$this->urlImages."",
									'titre' => $titreAncre

							));
							*/
                            //'url'=> $this->creerUrl('selectTitreAdresse','adresseDetail',array('archiIdAdresse'=>$idAdresse,'idEvenementTitreSelection'=>$value['idEvenementAssocie'],'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))
                        } elseif (isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre']=='1') {
                        // si on est en mode de selection d'un titre le titre courant s'affiche en rouge
                            if ($idEvenementWhereIsTitre == $value['idEvenementAssocie']) {
                                $titreAncre="<span style='color:red;'>".$titreAncre."</span>";
                            }
                            $t->assign_block_vars('noSimple.ancres', array(
                                    'titre' => $titreAncre,
                                    'url'=> $this->creerUrl('selectTitreAdresse', 'adresseDetail', array('archiIdAdresse'=>$idAdresse,'idEvenementTitreSelection'=>$value['idEvenementAssocie'],'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))
                            ));
                        } else {
                            $t->assign_block_vars('noSimple.ancres', array(
                                    'titre' => $titreAncre,
                                    'url'=> "#".$indice
                            ));
                        }

                        if ($this->variablesGet['selection'] == 'personne') {
                            $formulaireCommentaire = $this->getFormComment($value['idEvenementAssocie'], $this->getCommentairesFields('personne', $this->variablesGet['id']), 'personne');
                            $listeCommentaires = $this->getListCommentairesEvenements($value['idEvenementAssocie']);
                        } else {
                            $formulaireCommentaire = $this->getFormComment($value['idEvenementAssocie'], $this->getCommentairesFields('evenement'), 'evenement');
                            $listeCommentaires = $this->getListCommentairesEvenements($value['idEvenementAssocie']);
                        }

                        $t->assign_block_vars('evenementLie', array(
                                'evenement' => $retourEvenement['html'],
                                'numeroAncre'=>$indice,
                                'listeCommentaires' => $listeCommentaires,
                                'formulaireCommentaire'=>$formulaireCommentaire
                        ));
                        $i++;
                    }

                    // affichage de la liste triable a la place de l'historique des evenements, quand on est en mode positionnement d'evenements
                    if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements']=='1') {
                        $t->assign_block_vars('noSimple.modePositionnementEvenements', array()); // affiche le bloc
                        $t->assign_vars(array(
                                'sortableFormListe'=>$imageObject->createSortableFormListeFromArray($arrayConfigPositionnementEvenement, array('noEntetesTableau'=>true)).$imageObject->getJSInitAfterListDragAndDrop('slideshow0', array('onlyHiddenFormField'=>true)),
                                'onClickValidationPositionnementEvenement'=>$imageObject->getJSSubmitDragAndDrop()."document.getElementById('formPositionnementEvenements').submit();",
                                'formActionPositionnementEvenements'=>$this->creerUrl('enregistrerPositionnementEvenements', 'adresseDetail', array('archiIdAdresse'=>$idAdresseCourante,'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))
                        ));


                        // ajout du code d'initialisation au niveau de la fin de la page (footer)
                        $this->addToJsFooter($imageObject->getJSInitAfterListDragAndDrop('slideshow0', array('onlyJavascriptInitCode'=>true)));
                    }

                    // ajout de la possibilité de préciser que l'on ne veut pas de titre , l'adresse s'affichera donc pour l'evenement a la place d'un titre
                    if (isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre']=='1') {
                        $titreAncre="Pas de titre";
                        if ($idEvenementWhereIsTitre == -1) {
                            $titreAncre="<span style='color:red;'>Pas de titre</span>";
                        }
                        $t->assign_block_vars('noSimple.choixEvenementSansTitre', array(
                                'titre' => $titreAncre,
                                'url'=> $this->creerUrl('selectTitreAdresse', 'adresseDetail', array('archiIdAdresse'=>$idAdresse,'idEvenementTitreSelection'=>-1,'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))
                        ));
                    }

                    // affichage de la liste des historiques de nom de rue pour l'adresse si celle ci ne concerne qu'une rue , sans numero de rue.
                    $infosAdresseCourante = $adresse->getArrayAdresseFromIdAdresse($idAdresse);

                    if (($infosAdresseCourante['numero']=='0' || $infosAdresseCourante['numero']=='') && ($infosAdresseCourante['idRue']!='' || $infosAdresseCourante['idRue']!='0')) {
                        $d = new dateObject();
                        // dans ce cas on va chercher les infos de l'historique de la rue
                        $reqHistoriqueNomRue = "SELECT * FROM historiqueNomsRues WHERE idRue = '".$infosAdresseCourante['idRue']."' ORDER BY annee";
                        $resHistoriqueNomRue = $this->connexionBdd->requete($reqHistoriqueNomRue);
                        if (mysql_num_rows($resHistoriqueNomRue)>0) {
                            $t->assign_block_vars("noSimple.isHistoriqueNomsRue", array());
                            while ($fetchHistoriqueNomRue = mysql_fetch_assoc($resHistoriqueNomRue)) {
                                if ($fetchHistoriqueNomRue['prefixe']!='') {
                                    $nomRue = stripslashes($fetchHistoriqueNomRue['prefixe'])." ".stripslashes($fetchHistoriqueNomRue['nomRue']);
                                } else {
                                    $nomRue = stripslashes($fetchHistoriqueNomRue['nomRue']);
                                }

                                $t->assign_block_vars("noSimple.listeHistoriqueNomsRue", array(
                                        "annee"=>$d->toFrenchAffichage($fetchHistoriqueNomRue['annee']),
                                        "nomRue"=>$nomRue,
                                        "commentaire"=>stripslashes($fetchHistoriqueNomRue['commentaire'])));
                            }
                        }
                    }


                    $a = new archiAdresse();
                    $listeCommentaires=$a->getListeCommentaires($idEvenementGroupeAdresse);
                    $formulaireCommentaire = $this->getFormComment($idEvenementGroupeAdresse, $this->getCommentairesFields(), '');
                    if (!ArchiPersonne::isPerson($idEvenementGroupeAdresse)) {
                        $t->assign_block_vars('commentairesAdresse', array(
                                'formulaireCommentaire' => $formulaireCommentaire,
                                'listeCommentaires' => $listeCommentaires
                        ));
                    }


                    $t->assign_vars(array('nbEvenements'=>count($tabIdEvenementsLies)+1));
                } else {
                }
            }
            // *************************************************************************************************************************************
        } else {
            echo 'aucun résultat !';
        }


        ob_start();
        $t->pparse('ev');
        $html .= ob_get_contents();
        ob_end_clean();


        if (isset($codeARajouterALaFin)) {
            $html.=$codeARajouterALaFin; // a cause du JS executé a la fin sinon il ne trouve pas certains divs
        }

        // on ferme le formulaire s'il a ete ouvert
        if ($modeAffichage!='simple' && $modeAffichage!='consultationHistoriqueEvenement') {
            if ($estConnecte && ((isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage']=='1') || (isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre']=='1'))) {
                $html.="</form>";
            }
        }
        $s = new archiSource();
        $html.=$s->getPopupDescriptionSource();

        return array('html'=>$html,'idTypeStructure'=>$retourIdTypeStructure,'titreAncre'=>$retourTitreAncre,'nomTypeEvenement'=>$retourNomTypeEvenement,'date'=>$retourDate,'isMH'=>$isMH,'isISMH'=>$isISMH,'listeGroupeAdressesAffichees'=>$listeGroupeAdressesAffichees,'dateFin'=>$retourDateFin);
    }