Pour une variable, fonction qui calcule la moyenne pondérée au sein de chaque groupe.
10576
def collapse(dataframe, groupe, var):
    '''
    
    '''
    grouped = dataframe.groupby([groupe])
    var_weighted_grouped = grouped.apply(lambda x: wavg(groupe = x, var = var))
    return var_weighted_grouped
126686
public function enregistreSelectionTitreGroupeAdresse($params = array())
    {
        if (isset($this->variablesGet['idEvenementTitreSelection']) && $this->variablesGet['idEvenementTitreSelection']!='' && isset($this->variablesGet['archiIdEvenementGroupeAdresse']) && $this->variablesGet['archiIdEvenementGroupeAdresse']!='') {
            $idEvenementGroupeAdresse = $this->variablesGet['archiIdEvenementGroupeAdresse'];
            $idAdresse = $this->getIdAdresseFromIdEvenementGroupeAdresse($idEvenementGroupeAdresse);
            //debug("Modifier la requete et les param de la fonction : utiliser _adresseEvenement et l'idAdresse pour trouver touts les evenements liés");
            //Modifier la requete et les param de la fonction : utiliser _adresseEvenement et l'idAdresse pour trouver touts les evenements liés
            $req = "update evenements set idEvenementRecuperationTitre=".$this->variablesGet['idEvenementTitreSelection']." WHERE idEvenement=$idEvenementGroupeAdresse";
            $res = $this->connexionBdd->requete($req);
            header("Location: ".$this->creerUrl('', '', array('archiAffichage'=>'adresseDetail', 'archiIdAdresse'=>$idAdresse, 'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse), false, false));
        }
    }
1066175
public function getIdEvenementTitre($params = array())
    {
        //debug("getIdEvenementTitre : retourner l'idEvenementRecuperationTitre de l'evenement dans la table evenements");
        //En pratique, ce n'est pas très intelligent, mais comme les données relatives à une adresses ont été stockées à la base dans les evenements ( ¯\_(ツ)_/¯)

        $retour = 0;
        $trouve=false;

        if (isset($params['idEvenementGroupeAdresse']) && $params['idEvenementGroupeAdresse']!='0') {
            $req = "SELECT idEvenementRecuperationTitre
					FROM evenements e
					LEFT JOIN _evenementEvenement ee on ee.idEvenementAssocie =e.idEvenement
					WHERE e.idEvenement=".$params['idEvenementGroupeAdresse'];
            $res = $this->connexionBdd->requete($req);
            $fetch = mysql_fetch_assoc($res);

            // on verifie que l'evenement existe, on ne sait jamais
            if ($fetch['idEvenementRecuperationTitre']=='-1') { // dans ce cas on affiche pas de titre mais l'adresse a la place
                $retour='-1';
                $trouve=true;
            } elseif (isset($fetch['idEvenementRecuperationTitre']) && $fetch['idEvenementRecuperationTitre']!='0') {
                $reqVerifEvenementTitre = "SELECT idEvenement from evenements WHERE idEvenement=".$fetch['idEvenementRecuperationTitre'];
                $resVerifEvenementTitre = $this->connexionBdd->requete($reqVerifEvenementTitre);
                if (mysql_num_rows($resVerifEvenementTitre)>0) {
                    $retour = $fetch['idEvenementRecuperationTitre'];
                    $trouve=true;
                }
            }
            if (!$trouve) {
            // on renvoi l'id du premier evenement qui a un titre
                // s'il n'y en a pas on renvoi 0
                $reqIdEvenementTitre="
						SELECT distinct he1.idEvenement as idEvenementTitre
						FROM evenements he2, evenements he1
						LEFT JOIN _evenementEvenement ee ON ee.idEvenement = ".$params['idEvenementGroupeAdresse']."
								WHERE he1.titre!=''
								AND he1.idTypeEvenement<>6
								AND he2.idEvenement = he1.idEvenement
								AND he1.idEvenement = ee.idEvenementAssocie
								GROUP BY he1.idEvenement
								ORDER BY he1.dateDebut
								LIMIT 1
								";

                $resIdEvenementTitre = $this->connexionBdd->requete($reqIdEvenementTitre);
                if (mysql_num_rows($resIdEvenementTitre)>0) {
                    $fetchIdEvenementTitre = mysql_fetch_assoc($resIdEvenementTitre);
                    $retour = $fetchIdEvenementTitre['idEvenementTitre'];
                }
            }
        }

        return $retour;
    }
416533
public function saveInterest(){
		$t = new Template($this->getCheminPhysique().$this->cheminTemplates."interest/");
		$t->set_filenames(array('confirm'=>'confirm.tpl'));
		
		$urlBack = $this->creerUrl('', 'mesInterets', array());
		$txtLink = "Revenir à la liste de mes intérêts";
		
		if(isset($this->variablesPost) && !empty($this->variablesPost)){
			$interets = $this->variablesPost;
		}
		elseif (isset($this->variablesGet) && !empty($this->variablesGet)){
			$interets = $this->variablesGet;
		}
		
		
		
		/*
		 * Initially, it was adding related nesting element in the interests of the user
		 * Client asked to add only the smallest element in interest (if neighborhood selected, don't add the city and the country)
		 * Little array handling to satified the client need, to revert, delete the two following loops 
		 */
		foreach ($interets as $key => $int){
			if($int== 0){
				unset($interets[$key]);
			}
		}
		while(count($interets)>1){
			array_shift($interets);
		}
		
		
		$requestParameters = array();
		if($interets['rue']!=0){
			$requestParameters[]=array('table'=>'_interetRue','fieldName1'=>'idUtilisateur','fieldName2'=>'idRue','idInteret'=>$interets['rue'],'userId'=>$this->userId);
		}
		if($interets['sousQuartier']!=0){
			$requestParameters[]=array('table'=>'_interetSousQuartier','fieldName1'=>'idUtilisateur','fieldName2'=>'idSousQuartier','idInteret'=>$interets['sousQuartier'],'userId'=>$this->userId);
		}
		if($interets['quartier']!=0){
			$requestParameters[]=array('table'=>'_interetQuartier','fieldName1'=>'idUtilisateur','fieldName2'=>'idQuartier','idInteret'=>$interets['quartier'],'userId'=>$this->userId);
		}
		if($interets['ville']!=0){
			$requestParameters[]=array('table'=>'_interetVille','fieldName1'=>'idUtilisateur','fieldName2'=>'idVille','idInteret'=>$interets['ville'],'userId'=>$this->userId);
		}
		if($interets['pays']!=0){
			$requestParameters[]=array('table'=>'_interetPays','fieldName1'=>'idUtilisateur','fieldName2'=>'idPays','idInteret'=>$interets['pays'],'userId'=>$this->userId);
		}
		if($interets['adresse']!=0){
			$idHistoriqueAdresse = $interets['adresse'];
			$requestParameters[]=array('table'=>'_interetAdresse','fieldName1'=>'idUtilisateur','fieldName2'=>'idHistoriqueAdresse','idInteret'=>$interets['adresse'],'userId'=>$this->userId);
			
			$requete = "
					SELECT ae.idEvenement as idEvenementGroupeAdresse, ae.idAdresse as idAdresse 
					FROM _adresseEvenement ae
					LEFT JOIN historiqueAdresse ha on ha.idAdresse = ae.idAdresse 
					WHERE ha.idHistoriqueAdresse  = ".$idHistoriqueAdresse."
					";			
			$result = $this->connexionBdd->requete($requete);
			$fetch = mysql_fetch_array($result);
			$idAdresse = $fetch['idAdresse'];
			$idEvenementGroupeAdresse = $fetch['idEvenementGroupeAdresse'];
			
			$evenement = new archiEvenement();
			$titreAdresse = $evenement->getIntituleAdresseFrom($idAdresse,'idAdresse');
			
			$urlBack = $this->creerUrl('','',array('archiAffichage'=>'adresseDetail','archiIdAdresse'=>$idAdresse,'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse));
			$txtLink="Aller à l'adresse " . $titreAdresse;
		}
		if($interets['personne']){
			$requestParameters[]=array('table'=>'_interetPersonne','fieldName1'=>'idUtilisateur','fieldName2'=>'idPersonne','idInteret'=>$interets['personne'],'userId'=>$this->userId);
			$urlBack = $this->creerUrl('', 'evenementListe', array('selection' => 'personne', 'id' => $interets['personne']));
			$txtLink = "Retour à la fiche de la personne";
		}

		$nbEltInserted=0;
		foreach ($requestParameters as $rp){
			//Insert if not exists
			$requete= "
					INSERT INTO ".$rp['table']." (".$rp['fieldName1'].",".$rp['fieldName2'].",created)
					SELECT '".$this->userId."', '".$rp['idInteret']."' , now()
					FROM DUAL
					WHERE NOT EXISTS (SELECT * FROM `".$rp['table']."`
					WHERE ".$rp['fieldName1']."='".$this->userId."' AND ".$rp['fieldName2']."='".$rp['idInteret']."')
					LIMIT 1
					";
			$res = $this->connexionBdd->requete($requete,false);
		}
		$this->messages->addConfirmation('Intérêt(s) sauvegardé(s) avec succès !');
		$t->assign_vars(array(
				'message' =>  $this->messages->display(),
				'textLink' => $txtLink,
				'urlBack'=> $urlBack
		)); 
		ob_start();
		$t->pparse('confirm');
		$html .= ob_get_contents();
		ob_end_clean();
		return $html;
	}
1153839
def getWithDateFormat(self, name, default="", parent_search=False, multikeys_search=False):
		
		# récupération de la valeur
		value = self.get(name, default, parent_search, multikeys_search)

		# récupération d'un delta dans le nom
		#  {dd-10} donne 10 jours avant le jour d'aujourd'hui
		#  {H+12} donne 12 heures après l'heure courante
		# delta_d = int(re.findall(r"[+|-]\d+", value)[0]) if value.startswith("{dd") else 0

		# objet de date interne
		d = FastDate()

		# récupation des dates
		now = d.convert()

		tomorrow = d.tomorrow()
		yesterday = d.yesterday()

		weekday_tomorrow = d.weekday_tomorrow()
		weekday_yesterday = d.weekday_yesterday()

		weekend_tomorrow = d.weekend_tomorrow()
		weekend_yesterday = d.weekend_yesterday()

		working_tomorrow = d.working_tomorrow()
		working_yesterday = d.working_yesterday()

		# formatage de la valeur
		return value.format(
			yyyy=now.year,
			mm=now.strftime("%m"),
			dd=now.strftime("%d"),
			H=now.strftime("%H"),
			M=now.strftime("%M"),
			S=now.strftime("%S"),
			mm_human=now.strftime("%B"),

			tomorrow_yyyy=tomorrow.year,
			tomorrow_mm=tomorrow.strftime("%m"),
			tomorrow_dd=tomorrow.strftime("%d"),
			tomorrow_H=tomorrow.strftime("%H"),
			tomorrow_M=tomorrow.strftime("%M"),
			tomorrow_S=tomorrow.strftime("%S"),
			tomorrow_mm_human=tomorrow.strftime("%B"),

			yesterday_yyyy=yesterday.year,
			yesterday_mm=yesterday.strftime("%m"),
			yesterday_dd=yesterday.strftime("%d"),
			yesterday_H=yesterday.strftime("%H"),
			yesterday_M=yesterday.strftime("%M"),
			yesterday_S=yesterday.strftime("%S"),
			yesterday_mm_human=yesterday.strftime("%B"),

			weekday_yesterday_yyyy=weekday_yesterday.year,
			weekday_yesterday_mm=weekday_yesterday.strftime("%m"),
			weekday_yesterday_dd=weekday_yesterday.strftime("%d"),
			weekday_yesterday_H=weekday_yesterday.strftime("%H"),
			weekday_yesterday_M=weekday_yesterday.strftime("%M"),
			weekday_yesterday_S=weekday_yesterday.strftime("%S"),
			weekday_yesterday_mm_human=weekday_yesterday.strftime("%B"),

			weekday_tomorrow_yyyy=weekday_tomorrow.year,
			weekday_tomorrow_mm=weekday_tomorrow.strftime("%m"),
			weekday_tomorrow_dd=weekday_tomorrow.strftime("%d"),
			weekday_tomorrow_H=weekday_tomorrow.strftime("%H"),
			weekday_tomorrow_M=weekday_tomorrow.strftime("%M"),
			weekday_tomorrow_S=weekday_tomorrow.strftime("%S"),
			weekday_tomorrow_mm_human=weekday_tomorrow.strftime("%B"),

			weekend_yesterday_yyyy=weekend_yesterday.year,
			weekend_yesterday_mm=weekend_yesterday.strftime("%m"),
			weekend_yesterday_dd=weekend_yesterday.strftime("%d"),
			weekend_yesterday_H=weekend_yesterday.strftime("%H"),
			weekend_yesterday_M=weekend_yesterday.strftime("%M"),
			weekend_yesterday_S=weekend_yesterday.strftime("%S"),
			weekend_yesterday_mm_human=weekend_yesterday.strftime("%B"),

			weekend_tomorrow_yyyy=weekend_tomorrow.year,
			weekend_tomorrow_mm=weekend_tomorrow.strftime("%m"),
			weekend_tomorrow_dd=weekend_tomorrow.strftime("%d"),
			weekend_tomorrow_H=weekend_tomorrow.strftime("%H"),
			weekend_tomorrow_M=weekend_tomorrow.strftime("%M"),
			weekend_tomorrow_S=weekend_tomorrow.strftime("%S"),
			weekend_tomorrow_mm_human=weekend_tomorrow.strftime("%B"),

			working_tomorrow_yyyy=working_tomorrow.year,
			working_tomorrow_mm=working_tomorrow.strftime("%m"),
			working_tomorrow_dd=working_tomorrow.strftime("%d"),
			working_tomorrow_H=working_tomorrow.strftime("%H"),
			working_tomorrow_M=working_tomorrow.strftime("%M"),
			working_tomorrow_S=working_tomorrow.strftime("%S"),
			working_tomorrow_mm_human=working_tomorrow.strftime("%B"),

			working_yesterday_yyyy=working_yesterday.year,
			working_yesterday_mm=working_yesterday.strftime("%m"),
			working_yesterday_dd=working_yesterday.strftime("%d"),
			working_yesterday_H=working_yesterday.strftime("%H"),
			working_yesterday_M=working_yesterday.strftime("%M"),
			working_yesterday_S=working_yesterday.strftime("%S"),
			working_yesterday_mm_human=working_yesterday.strftime("%B"),
		)
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;
    }
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;
	}
1038249
public function ajoutNouvelleAdresse()
    {
        $newIdPourMail = 0;
        if (isset($this->variablesPost['typeNouvelElement']) && $this->variablesPost['nouvelElement']!='') {
            switch ($this->variablesPost['typeNouvelElement']) {
                case 'newRue':
                    // est ce que ce nom de rue existe deja ?
                    /*                  if(isset($this->variablesPost['sousQuartier']) && $this->variablesPost['sousQuartier']!='0')
					{

					$sql="
					SELECT idRue
					FROM rue
					WHERE idSousQuartier = '".$this->variablesPost['sousQuartier']."'
					AND LOWER(nom) = LOWER(\"".$this->variablesPost['nouvelElement']."\")
					AND LOWER(prefixe) = LOWER(\"".$this->variablesPost['complement']."\")
					";
					$res=$this->connexionBdd->requete($sql);

					if(mysql_num_rows($res)>0)
					{
					$this->erreurs->ajouter("Erreur : il y a déjà un enregistrement de rue du même nom");
					}
					else
					{
					// ajout
					$this->connexionBdd->requete("
					INSERT INTO rue (idSousQuartier,nom,prefixe)
					VALUES ('".$this->variablesPost['sousQuartier']."',\"".$this->variablesPost['nouvelElement']."\",\"".$this->variablesPost['complement']."\")
					");
					}
					}
					else
					{
					$this->erreurs->ajouter("Erreur : Vous n'avez pas précisé le sous-quartier");
					}
					*/

                    $sousQuartier=0;
                    $quartier=0;
                    $ville=0;
                    $pays=0;

                    if (isset($this->variablesPost['sousQuartier']) && $this->variablesPost['sousQuartier']!='0') {
                        $sousQuartier = $this->variablesPost['sousQuartier'];
                        $typeDernier = 'sousQuartier';
                    } elseif (isset($this->variablesPost['quartier']) && $this->variablesPost['quartier']!='0') {
                        $quartier = $this->variablesPost['quartier'];
                        $typeDernier = 'quartier';
                    } elseif (isset($this->variablesPost['ville']) && $this->variablesPost['ville']!='0') {
                        $ville = $this->variablesPost['ville'];
                        $typeDernier = 'ville';
                    } elseif (isset($this->variablesPost['pays']) && $this->variablesPost['pays']!='0') {
                        $pays = $this->variablesPost['pays'];
                        $typeDernier = 'pays';
                    }

                    if (($sousQuartier + $quartier + $ville + $pays)==0) {
                        $this->erreurs->ajouter("Erreur : Il faut au moins préciser un élément auquel appartient la rue.");
                    } else {
                        // recherche du dernier element renseigné
                        switch ($typeDernier) {
                            //************************************************************************************************************************************************************
                            case 'sousQuartier':
                                // ajout d'une rue , il faut preciser un sous quartier
                                // ajoutRue va verifier si la rue n'existe pas deja et renverra un message d'erreur si c'est le cas
                                $newIdPourMail = $this->ajoutRue($this->variablesPost['sousQuartier'], $this->variablesPost['nouvelElement'], $this->variablesPost['complement']);
                                break;
                            //************************************************************************************************************************************************************
                            case 'quartier':
                                // ajout d'une rue , il faut preciser un sous quartier
                                // on doit donc d'abord trouver le sousQuartier 'autre' correspondant au quartier renseigné, s'il n'existe pas , on le cree
                                $reqAutreSousQuartier = "
										SELECT idSousQuartier FROM sousQuartier WHERE nom='autre' AND idQuartier = '".$quartier."'
												";
                                $resAutreSousQuartier = $this->connexionBdd->requete($reqAutreSousQuartier);

                                if (mysql_num_rows($resAutreSousQuartier)==0) {
                                    // pas de valeur 'autre' pour le sous quartier , il faut le creer
                                    $reqAjoutSousQuartierAutre = "insert into sousQuartier (idQuartier,nom) values ('".$quartier."','autre')";
                                    $this->connexionBdd->requete($reqAjoutSousQuartierAutre);
                                    $newId = mysql_insert_id();
                                    $newIdPourMail = $this->ajoutRue($newId, $this->variablesPost['nouvelElement'], $this->variablesPost['complement']);
                                } else {
                                    // sous quartier autre trouve pour le quartier
                                    $fetchAutreSousQuartier = mysql_fetch_assoc($resAutreSousQuartier);

                                    $newIdPourMail = $this->ajoutRue($fetchAutreSousQuartier['idSousQuartier'], $this->variablesPost['nouvelElement'], $this->variablesPost['complement']);
                                }

                                break;
                            //************************************************************************************************************************************************************
                            case 'ville':
                                // ajout d'une rue , il faut preciser un sous quartier
                                // recuperation du quartier 'autre' de la ville puis du sousQuartier 'autre' de ce quartier
                                $reqAutreQuartier = "SELECT idQuartier FROM quartier WHERE nom='autre' and idVille='".$ville."'";
                                $resAutreQuartier = $this->connexionBdd->requete($reqAutreQuartier);

                                if (mysql_num_rows($resAutreQuartier)==0) {
                                    // creation du quartier 'autre' de la ville concernee
                                    $reqAjoutQuartierAutre = "insert into quartier (idVille,nom) values ('".$ville."','autre')";
                                    $resAjoutQuartierAutre= $this->connexionBdd->requete($reqAjoutQuartierAutre);
                                    $idQuartierAutreNew = mysql_insert_id();

                                    // creation du sousQuartier 'autre' de ce nouveau quartier autre
                                    $reqAjoutSousQuartierAutre = "insert into sousQuartier (idQuartier,nom) value ('".$idQuartierAutreNew."','autre')";
                                    $resAjoutSousQuartierAutre = $this->connexionBdd->requete($reqAjoutSousQuartierAutre);
                                    $idSousQuartierAutreNew = mysql_insert_id();

                                    // ajout de la rue
                                    $newIdPourMail = $this->ajoutRue($idSousQuartierAutreNew, $this->variablesPost['nouvelElement'], $this->variablesPost['complement']);
                                } else {
                                    // le quartier autre existe
                                    // recherche du sousQuartier qui lui appartient
                                    $fetchIdQuartier = mysql_fetch_assoc($resAutreQuartier);
                                    $quartier = $fetchIdQuartier['idQuartier'];
                                    $reqAutreSousQuartier = "
											SELECT idSousQuartier FROM sousQuartier WHERE nom='autre' AND idQuartier = '".$quartier."'
													";
                                    $resAutreSousQuartier = $this->connexionBdd->requete($reqAutreSousQuartier);

                                    if (mysql_num_rows($resAutreSousQuartier)==0) {
                                        // pas de valeur 'autre' pour le sous quartier , il faut le creer
                                        $reqAjoutSousQuartierAutre = "insert into sousQuartier (idQuartier,nom) values ('".$quartier."','autre')";
                                        $this->connexionBdd->requete($reqAjoutSousQuartierAutre);
                                        $newId = mysql_insert_id();
                                        $newIdPourMail = $this->ajoutRue($newId, $this->variablesPost['nouvelElement'], $this->variablesPost['complement']);
                                    } else {
                                        // sous quartier autre trouve pour le quartier
                                        $fetchAutreSousQuartier = mysql_fetch_assoc($resAutreSousQuartier);

                                        $newIdPourMail = $this->ajoutRue($fetchAutreSousQuartier['idSousQuartier'], $this->variablesPost['nouvelElement'], $this->variablesPost['complement']);
                                    }
                                }

                                break;
                            //************************************************************************************************************************************************************
                            case 'pays':
                                // ajout d'une rue , il faut preciser un sous quartier
                                echo "ajout d'une rue dans un pays verrouillee. Contactez l'administrateur ou selectionnez d'abord une ville. Si celle ci n'existe pas, contactez nous pour que nous l'ajoutions.";
                                break;
                        }
                    }



                    break;
                case 'newSousQuartier':
                    if (isset($this->variablesPost['quartier']) && $this->variablesPost['quartier']!='0') {
                    // est ce que l'enregistrement existe deja ?
                        $sql="
								SELECT idSousQuartier
								FROM sousQuartier
								WHERE idQuartier = '".$this->variablesPost['quartier']."'
										AND LOWER(nom) = LOWER(\"".$this->variablesPost['nouvelElement']."\")
												";
                        $res=$this->connexionBdd->requete($sql);

                        if (mysql_num_rows($res)>0) {
                            $this->erreurs->ajouter("Erreur : il y a déjà un enregistrement de sous-quartier du même nom");
                        } else {
                            // ajout
                            $this->connexionBdd->requete("
									INSERT INTO sousQuartier (idQuartier,nom)
									VALUES ('".$this->variablesPost['quartier']."',\"".$this->variablesPost['nouvelElement']."\")
									");

                            $newIdPourMail = mysql_insert_id();
                        }
                    } else {
                        $this->erreurs->ajouter("Erreur : Vous n'avez pas précisé le quartier");
                    }
                    break;
                case 'newQuartier':
                    if (isset($this->variablesPost['ville']) && $this->variablesPost['ville']!='0') {
                    // est ce que l'enregistrement existe deja ?
                        $sql="
								SELECT idQuartier
								FROM quartier
								WHERE idVille = '".$this->variablesPost['ville']."'
										AND LOWER(nom) = LOWER(\"".$this->variablesPost['nouvelElement']."\")
												";

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

                        if (mysql_num_rows($res)>0) {
                            $this->erreurs->ajouter("Erreur : il y a déjà un enregistrement de quartier du même nom");
                        } else {
                            // ajout
                            $this->connexionBdd->requete("
									INSERT INTO quartier (idVille,nom)
									VALUES ('".$this->variablesPost['ville']."',\"".$this->variablesPost['nouvelElement']."\")
									");

                            $newIdPourMail = mysql_insert_id();
                        }
                    } else {
                        $this->erreurs->ajouter("Erreur : Vous n'avez pas précisé la ville");
                    }
                    break;
                case 'newVille':
                    if (isset($this->variablesPost['pays']) && $this->variablesPost['pays']!='0') {
                    // est ce que l'enregistrement existe deja ?
                        $sql="
								SELECT idVille
								FROM ville
								WHERE idPays = '".$this->variablesPost['pays']."'
										AND LOWER(nom) = LOWER(\"".$this->variablesPost['nouvelElement']."\")
												";
                        $res=$this->connexionBdd->requete($sql);
                        if (mysql_num_rows($res)>0) {
                            $this->erreurs->ajouter("Erreur : il y a déjà un enregistrement de ville du même nom");
                        } else {
                            // ajout
                            $this->connexionBdd->requete("
									INSERT INTO ville (idPays,nom,codepostal,longitude,latitude)
									VALUES ('".$this->variablesPost['pays']."',\"".$this->variablesPost['nouvelElement']."\",'".$this->variablesPost['codepostal']."','".$this->variablesPost['longitude']."','".$this->variablesPost['latitude']."')
									");

                            $newIdPourMail = mysql_insert_id();
                        }
                    } else {
                        $this->erreurs->ajouter("Erreur : Vous n'avez pas précisé le pays");
                    }
                    break;
                case 'newPays':
                    // est ce que l'enregistrement existe deja ?
                    $sql = "
							SELECT idPays
							FROM pays
							WHERE LOWER(nom)=LOWER(\"".$this->variablesPost['nouvelElement']."\")
									";

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

                    if (mysql_num_rows($res)>0) {
                        $this->erreurs->ajouter("Erreur : il y a déjà un enregistrement de pays du même nom");
                    } else {
                        // ajout
                        $this->connexionBdd->requete("
								INSERT INTO pays (nom) VALUES (\"".$this->variablesPost['nouvelElement']."\")
								");

                        $newIdPourMail = mysql_insert_id();
                    }
                    break;
            }

            // envoi d'un mail aux admins
            if ($newIdPourMail!='0' && $newIdPourMail!='') {
                $tableName="";
                $identifiantName = "";
                // correspondance entre les noms de tables
                switch ($this->variablesPost['typeNouvelElement']) {
                    case "newRue":
                        $tableName = "rue";
                        $identifiantName = "idRue";
                        break;
                    case "newSousQuartier":
                        $tableName = "sousQuartier";
                        $identifiantName = "idSousQuartier";
                        break;
                    case "newQuartier":
                        $tableName = "quartier";
                        $identifiantName = "idQuartier";
                        break;
                    case "newVille":
                        $tableName = "ville";
                        $identifiantName = "idVille";
                        break;
                    case "newPays":
                        $tableName= "pays";
                        $identifiantName = "idPays";
                        break;
                }



                $mail = new mailObject();

                $a = new archiAuthentification();
                $u = new archiUtilisateur();
                $arrayInfosUtilisateur = $u->getArrayInfosFromUtilisateur($a->getIdUtilisateur());
                $message = "Un élément d'adresse a été ajouté par : ".$arrayInfosUtilisateur['nom']." ".$arrayInfosUtilisateur['prenom']."<br>";
                $message .= "type d'élément : ".$tableName."<br><br>";
                $message.="<a href='".$this->creerUrl('', 'adminAdresseDetail', array('tableName'=>$tableName,'idModification'=>$newIdPourMail))."'>".$this->creerUrl('', 'adminAdresseDetail', array('tableName'=>$tableName,'idModification'=>$newIdPourMail))."</a>";

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

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

                $u = new archiUtilisateur();
                $u->ajouteMailEnvoiRegroupesAdministrateurs(array('contenu'=>$message,'idTypeMailRegroupement'=>2,'criteres'=>" and alerteMail='1' "));

                /*
				 if(in_array($tableName,array('rue','sousQuartier','quartier')))
				 {
				$idVille = $this->getIdVilleFrom($newIdPourMail,$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 ajouté un élément d'adresse",$messageModerateur,true);
				}
				}
				}
				}*/
            }
        } else {
            $this->erreurs->ajouter("Erreur: le champ 'intitule' est vide");
        }
    }
641648
def build_homogeneisation_caracteristiques_sociales(temporary_store = None, year = None):
     """

    assert temporary_store is not None
    assert year is not None
    # Load data
    bdf_survey_collection = SurveyCollection.load(
        collection = 'budget_des_familles', config_files_directory = config_files_directory)
    survey = bdf_survey_collection.get_survey('budget_des_familles_{}'.format(year))
    # ******************************************************************************************************************
    # * Etape n° 0-3 : HOMOGENEISATION DES CARACTERISTIQUES SOCIALES DES MENAGES
    # ******************************************************************************************************************
    # ******************************************************************************************************************

    if year == 1995:
        kept_variables = ['exdep', 'exrev', 'mena', 'v', 'ponderrd', 'nbpers', 'nbenf', 'typmen1', 'cohabpr', 'sexepr',
            'agepr', 'agecj', 'matripr', 'occuppr', 'occupcj', 'nbact', 'sitlog', 'stalog', 'mena', 'nm14a', 'typmen1']
        menage = survey.get_values(
            table = "socioscm",
            variables = kept_variables,
            )
        # cette étape permet de ne garder que les données dont on est sûr de la qualité et de la véracité
        # exdep = 1 si les données sont bien remplies pour les dépenses du ménage
        # exrev = 1 si les données sont bien remplies pour les revenus du ménage
        menage = menage[(menage.exdep == 1) & (menage.exrev == 1)]
        menage.rename(
            columns = {
                'v': 'vag',
                'mena': 'ident_men',
                'ponderrd': 'pondmen',
                'nbpers': 'npers',
                'nm14a': 'nenfants',
                'nbenf': 'nenfhors',
                'nbact': 'nactifs',
                'cohabpr': 'couplepr',
                'matripr': 'etamatri',
                'typmen1': 'typmen'
                },
            inplace = True,
            )
        # la variable vag est utilisée dans les modèles QAIDS et AIDS comme variable temporelle afin d'attibuer
        # le bon prix mensuel
        menage.agecj = menage.agecj.fillna(0)
        menage.nenfhors = menage.nenfhors.fillna(0)
        menage.vag = menage.vag.astype('int')

        menage['nadultes'] = menage['npers'] - menage['nenfants']
        menage['ocde10'] = 1 + 0.5 * numpy.maximum(0, menage['nadultes'] - 1) + 0.3 * menage['nenfants']

        # harmonisation des types de ménage sur la nomenclature 2010
        menage['typmen_'] = menage['typmen']
        menage.typmen[menage.typmen_ == 1] = 1
        menage.typmen[menage.typmen_ == 2] = 3
        menage.typmen[menage.typmen_ == 3] = 4
        menage.typmen[menage.typmen_ == 4] = 4
        menage.typmen[menage.typmen_ == 5] = 4
        menage.typmen[menage.typmen_ == 6] = 2
        menage.typmen[menage.typmen_ == 7] = 5
        del menage['typmen_']

        var_to_ints = ['couplepr', 'etamatri']
        for var_to_int in var_to_ints:
            menage[var_to_int] = menage[var_to_int].astype(int)

        #  Methode :
        #  1. on nettoite les variables (i.e. changement de nom de format)
        #  2. Reformatage des variables (réattribution des catégories pour quelles soient identiques
        #     pour les différentes années)

        menage["situacj"] = 0
        menage.situacj[menage.occupcj == 1] = 1
        menage.situacj[menage.occupcj == 3] = 3
        menage.situacj[menage.occupcj == 2] = 4
        menage.situacj[menage.occupcj == 5] = 5
        menage.situacj[menage.occupcj == 6] = 5
        menage.situacj[menage.occupcj == 7] = 6
        menage.situacj[menage.occupcj == 8] = 7
        menage.situacj[menage.occupcj == 4] = 8

        menage["situapr"] = 0
        menage.situapr[menage.occuppr == 1] = 1
        menage.situapr[menage.occuppr == 3] = 3
        menage.situapr[menage.occuppr == 2] = 4
        menage.situapr[menage.occuppr == 5] = 5
        menage.situapr[menage.occuppr == 6] = 5
        menage.situapr[menage.occuppr == 7] = 6
        menage.situapr[menage.occuppr == 8] = 7
        menage.situapr[menage.occuppr == 4] = 8

        menage["typlog"] = 0
        menage.typlog[menage.sitlog == 1] = 1
        menage.typlog[menage.sitlog != 1] = 2

        menage['stalog'] = menage['stalog'].astype(int)

        individus = survey.get_values(
            table = "individu",
            )
        variables = ['mena', 'v']
        individus.rename(
            columns = {'mena': 'identmen'},
            inplace = True,
            )
        menage.set_index('ident_men', inplace = True)

    if year == 2000:
        menage = survey.get_values(
            table = "menage",
            variables = [
                'ident', 'pondmen', 'nbact', 'nbenf1', 'nbpers', 'ocde10', 'sitlog', 'stalog', 'strate',
                'typmen1', 'zeat', 'stalog', 'vag', 'sexepr', 'sexecj', 'agecj', 'napr', 'nacj', 'cs2pr',
                'cs2cj', 'diegpr', 'dieppr', 'diespr', 'diegcj', 'diepcj', 'diescj', 'hod_nb', 'cohabpr',
                'occupapr', 'occupacj', 'occupbpr', 'occupbcj', 'occupcpr', 'occupccj', 'typmen1'
                ]
            )
        menage.rename(
            columns = {
                'cohabpr': 'couplepr',
                'hod_nb': 'nenfhors',
                'ident': 'ident_men',
                'nbact': 'nactifs',
                'nbenf1': 'nenfants',
                'nbpers': 'npers',
                'rev81': 'poste_coicop_421',
                'typmen1': 'typmen'
                },
            inplace = True,
            )
        menage.ocde10 = menage.ocde10 / 10
        # on met un numéro à chaque vague pour pouvoir faire un meilleur suivi des évolutions temporelles
        # pour le modèle de demande
        menage.agecj = menage.agecj.fillna(0)

        assert menage.notnull().all().all(), 'The following variables contains NaN values: {}'.format(
            list(menage.isnull().any()[menage.isnull().any()].index))

        menage['vag_'] = menage['vag']
        menage.vag.loc[menage.vag_ == 1] = 9
        menage.vag.loc[menage.vag_ == 2] = 10
        menage.vag.loc[menage.vag_ == 3] = 11
        menage.vag.loc[menage.vag_ == 4] = 12
        menage.vag.loc[menage.vag_ == 5] = 13
        menage.vag.loc[menage.vag_ == 6] = 14
        menage.vag.loc[menage.vag_ == 7] = 15
        menage.vag.loc[menage.vag_ == 8] = 16
        del menage['vag_']
        # harmonisation des types de ménage sur la nomenclature 2010
        menage['typmen_'] = menage['typmen']
        menage.typmen.loc[menage.typmen_ == 1] = 1
        menage.typmen.loc[menage.typmen_ == 2] = 3
        menage.typmen.loc[menage.typmen_ == 3] = 4
        menage.typmen.loc[menage.typmen_ == 4] = 4
        menage.typmen.loc[menage.typmen_ == 5] = 4
        menage.typmen.loc[menage.typmen_ == 6] = 2
        menage.typmen.loc[menage.typmen_ == 7] = 5
        del menage['typmen_']

        menage.couplepr = menage.couplepr.astype('int')
        menage["nadultes"] = menage['npers'] - menage['nenfants']

        menage.typmen = menage.typmen.astype('int')

        # occupa : 1 si la personne travaille, 2 sinon. occupb : 1 si elle travaille effectivement, 2 si congé de
        # longue durée (négligé ici). occupc : de 2 à 8 selon le statut si ne travaille pas (étudiant, retraité, etc.)
        menage["situacj"] = 0
        menage.situacj.loc[menage.occupacj == 1] = 1
        menage.situacj.loc[menage.occupccj == 3] = 3
        menage.situacj.loc[menage.occupccj == 2] = 4
        menage.situacj.loc[menage.occupccj == 5] = 5
        menage.situacj.loc[menage.occupccj == 6] = 5
        menage.situacj.loc[menage.occupccj == 7] = 6
        menage.situacj.loc[menage.occupccj == 8] = 7
        menage.situacj.loc[menage.occupccj == 4] = 8

        menage["situapr"] = 0
        menage.situapr.loc[menage.occupapr == 1] = 1
        menage.situapr.loc[menage.occupcpr == 3] = 3
        menage.situapr.loc[menage.occupcpr == 2] = 4
        menage.situapr.loc[menage.occupcpr == 5] = 5
        menage.situapr.loc[menage.occupcpr == 6] = 5
        menage.situapr.loc[menage.occupcpr == 7] = 6
        menage.situapr.loc[menage.occupcpr == 8] = 7
        menage.situapr.loc[menage.occupcpr == 4] = 8

        menage["natiocj"] = 0
        menage["natiopr"] = 0
        menage.natiocj.loc[menage.nacj == 1] = 1
        menage.natiocj.loc[menage.nacj == 2] = 1
        menage.natiocj.loc[menage.nacj == 3] = 2
        menage.natiopr.loc[menage.napr == 1] = 1
        menage.natiopr.loc[menage.napr == 2] = 1
        menage.natiopr.loc[menage.napr == 3] = 2

        menage["typlog"] = 0
        menage.typlog.loc[menage.sitlog == 1] = 1
        menage.typlog.loc[menage.sitlog != 1] = 2

        # Homogénéisation des diplômes, choix d'équivalence entre les diplômes
        menage["dip14pr"] = 999999
        menage.dip14pr.loc[menage.diegpr == 0] = 71
        menage.dip14pr.loc[menage.diegpr == 2] = 70
        menage.dip14pr.loc[menage.diegpr == 15] = 60
        menage.dip14pr.loc[menage.diegpr == 18] = 60
        menage.dip14pr.loc[menage.diegpr == 16] = 41
        menage.dip14pr.loc[menage.diegpr == 17] = 41
        menage.dip14pr.loc[menage.diegpr == 19] = 41

        menage.dip14pr.loc[menage.dieppr == 23] = 50
        menage.dip14pr.loc[menage.dieppr == 25] = 50
        menage.dip14pr.loc[menage.dieppr == 27] = 50
        menage.dip14pr.loc[menage.dieppr == 29] = 50
        menage.dip14pr.loc[menage.dieppr == 34] = 43
        menage.dip14pr.loc[menage.dieppr == 32] = 42
        menage.dip14pr.loc[menage.dieppr == 36] = 42

        menage.dip14pr.loc[menage.diespr == 41] = 30
        menage.dip14pr.loc[menage.diespr == 42] = 31
        menage.dip14pr.loc[menage.diespr == 43] = 31
        menage.dip14pr.loc[menage.diespr == 44] = 33
        menage.dip14pr.loc[menage.diespr == 46] = 20
        menage.dip14pr.loc[menage.diespr == 48] = 12
        menage.dip14pr.loc[menage.diespr == 47] = 10

        menage.set_index('ident_men', inplace = True)

        # Recodage des catégories zeat
        menage.zeat.loc[menage.zeat == 7] = 6
        menage.zeat.loc[menage.zeat == 8] = 7
        menage.zeat.loc[menage.zeat == 9] = 8

        assert menage.zeat.isin(range(1, 9)).all()

        individus = survey.get_values(
            table = "individus",
            variables = ['ident', 'matri', 'lien', 'anais']
            )

        individus = individus.loc[individus.lien == 1].copy()
        individus.rename(
            columns = {'ident': 'ident_men', 'matri': 'etamatri'},
            inplace = True,
            )
        variables_to_destring = ['anais']
        for variable_to_destring in variables_to_destring:
            individus[variable_to_destring] = individus[variable_to_destring].astype('int').copy()
        individus['agepr'] = year - individus.anais
        individus.set_index('ident_men', inplace = True)

        assert menage.notnull().all().all(), 'The following variables contains NaN values: {}'.format(
            list(menage.isnull().any()[menage.isnull().any()].index))

        menage = menage.merge(individus, left_index = True, right_index = True)

    if year == 2005:
        menage = survey.get_values(table = "menage")
        # données socio-démographiques
        socio_demo_variables = ['agpr', 'agcj', 'couplepr', 'decuc', 'ident_men', 'nactifs', 'nenfants', 'nenfhors',
            'npers', 'ocde10', 'pondmen', 'sexecj', 'sexepr', 'typmen5', 'vag', 'zeat', 'cs24pr']
        socio_demo_variables += [column for column in menage.columns if column.startswith('dip14')]
        socio_demo_variables += [column for column in menage.columns if column.startswith('natio7')]
        # activité professionnelle
        activite_prof_variables = ['situacj', 'situapr']
        activite_prof_variables += [column for column in menage.columns if column.startswith('cs42')]
        # logement
        logement_variables = ['htl', 'strate']
        menage = menage[socio_demo_variables + activite_prof_variables + logement_variables]
        menage.rename(
            columns = {
                # "agpr": "agepr",
                "agcj": "agecj",
                "typmen5": "typmen",
                "cs24pr": "cs_pr"
                },
            inplace = True,
            )
        del menage['agpr']
        menage['nadultes'] = menage.npers - menage.nenfants
        for person in ['pr', 'cj']:
            menage['natio' + person] = (menage['natio7' + person] > 2)  # TODO: changer de convention ?
            del menage['natio7' + person]

        menage.agecj = menage.agecj.fillna(0)
        menage.nenfhors = menage.nenfhors.fillna(0)
        var_to_ints = ['ocde10', 'decuc', 'nactifs', 'nenfants', 'npers', 'pondmen', 'nadultes']
        assert menage.notnull().all().all(), 'The following variables contains NaN values: {}'.format(
            list(menage.isnull().any()[menage.isnull().any()].index))

        menage.couplepr = menage.couplepr > 2  # TODO: changer de convention ?
        menage.ocde10 = menage.ocde10 / 10
        menage.set_index('ident_men', inplace = True)
        # on met un numéro à chaque vague pour pouvoir faire un meilleur suivi des évolutions temporelles
        # pour le modèle de demande
        menage['vag_'] = menage['vag']
        menage.vag.loc[menage.vag_ == 1] = 17
        menage.vag.loc[menage.vag_ == 2] = 18
        menage.vag.loc[menage.vag_ == 3] = 19
        menage.vag.loc[menage.vag_ == 4] = 20
        menage.vag.loc[menage.vag_ == 5] = 21
        menage.vag.loc[menage.vag_ == 6] = 22
        del menage['vag_']

        # Recodage des catégories zeat
        menage.zeat.loc[menage.zeat == 7] = 6
        menage.zeat.loc[menage.zeat == 8] = 7
        menage.zeat.loc[menage.zeat == 9] = 8

        assert menage.zeat.isin(range(1, 9)).all()

        stalog = survey.get_values(table = "depmen", variables = ['ident_men', 'stalog'])
        stalog['stalog'] = stalog.stalog.astype('int').copy()
        stalog['new_stalog'] = 0
        stalog.loc[stalog.stalog == 2, 'new_stalog'] = 1
        stalog.loc[stalog.stalog == 1, 'new_stalog'] = 2
        stalog.loc[stalog.stalog == 4, 'new_stalog'] = 3
        stalog.loc[stalog.stalog == 5, 'new_stalog'] = 4
        stalog.loc[stalog.stalog.isin([3, 6]), 'new_stalog'] = 5
        stalog.stalog = stalog.new_stalog.copy()
        del stalog['new_stalog']

        assert stalog.stalog.isin(range(1, 6)).all()
        stalog.set_index('ident_men', inplace = True)
        menage = menage.merge(stalog, left_index = True, right_index = True)
        menage['typlog'] = 2
        menage.loc[menage.htl.isin(['1', '5']), 'typlog'] = 1
        assert menage.typlog.isin([1, 2]).all()
        del menage['htl']

        individus = survey.get_values(table = 'individu')
        # Il y a un problème sur l'année de naissance,
        # donc on le recalcule avec l'année de naissance et la vague d'enquête
        individus['agepr'] = year - individus.anais
        individus.loc[individus.vag == 6, ['agepr']] = year + 1 - individus.anais
        individus = individus[individus.lienpref == 00].copy()
        kept_variables = ['ident_men', 'etamatri', 'agepr']
        individus = individus[kept_variables].copy()
        individus.etamatri.loc[individus.etamatri == 0] = 1
        individus['etamatri'] = individus['etamatri'].astype('int')  # MBJ TODO: define as a catagory ?
        individus.set_index('ident_men', inplace = True)
        menage = menage.merge(individus, left_index = True, right_index = True)

        individus = survey.get_values(
            table = 'individu',
            variables = ['ident_men', 'ident_ind', 'age', 'anais', 'vag', 'lienpref'],
            )
        # Il y a un problème sur l'année de naissance,
        # donc on le recalcule avec l'année de naissance et la vague d'enquête
        individus['age'] = year - individus.anais
        individus.loc[individus.vag == 6, ['age']] = year + 1 - individus.anais
        # Garder toutes les personnes du ménage qui ne sont pas la personne de référence et le conjoint
        individus = individus[(individus.lienpref != 00) & (individus.lienpref != 01)].copy()
        individus.sort_values(by = ['ident_men', 'ident_ind'], inplace = True)

        # Inspired by http://stackoverflow.com/questions/17228215/enumerate-each-row-for-each-group-in-a-dataframe
        def add_col_numero(data_frame):
            data_frame['numero'] = numpy.arange(len(data_frame)) + 3
            return data_frame

        individus = individus.groupby(by = 'ident_men').apply(add_col_numero)
        pivoted = individus.pivot(index = 'ident_men', columns = "numero", values = 'age')
        pivoted.columns = ["age{}".format(column) for column in pivoted.columns]
        menage = menage.merge(pivoted, left_index = True, right_index = True, how = 'outer')

        individus = survey.get_values(
            table = 'individu',
            variables = ['ident_men', 'ident_ind', 'agfinetu', 'lienpref'],
            )
        individus.set_index('ident_men', inplace = True)
        pr = individus.loc[individus.lienpref == 00, 'agfinetu'].copy()
        conjoint = individus.loc[individus.lienpref == 01, 'agfinetu'].copy()
        conjoint.name = 'agfinetu_cj'
        agfinetu_merged = pandas.concat([pr, conjoint], axis = 1)
        menage = menage.merge(agfinetu_merged, left_index = True, right_index = True)
        temporary_store['donnes_socio_demog_{}'.format(year)] = menage

        # label var agepr "Age de la personne de référence au 31/12/${yearrawdata}"
        # label var agecj "Age du conjoint de la PR au 31/12/${yearrawdata}"
        # label var sexepr "Sexe de la personne de référence"
        # label var sexecj "Sexe du conjoint de la PR"
        # label var cs42pr "Catégorie socio-professionnelle de la PR"
        # label var cs42cj "Catégorie socio-professionnelle du conjoint de la PR"
        # label var ocde10 "Nombre d'unités de consommation (échelle OCDE)"
        # label var ident_men "Identifiant du ménage"
        # label var pondmen "Ponderation du ménage"
        # label var npers "Nombre total de personnes dans le ménage"
        # label var nadultes "Nombre d'adultes dans le ménage"
        # label var nenfants "Nombre d'enfants dans le ménage"
        # label var nenfhors "Nombre d'enfants vivant hors domicile"
        # label var nactifs  "Nombre d'actifs dans le ménage"
        # label var couplepr "Vie en couple de la personne de référence"
        # label define typmen5 1 "Personne seule" 2 "Famille monoparentale" 3 "Couple sans enfant"
        #                      4 "Couple avec enfants" 5 "Autre type de ménage (complexe)"
        # label values typmen5 typmen5
        # label var typmen5 "Type de ménage (5 modalités)"
        # label var etamatri "Situation matrimoniale de la personne de référence"
        # label define matripr 1 "Célibataire" 2 "Marié(e)" 3 "Veuf(ve)" 4 "Divorcé(e)"
        # label values etamatri matripr
        # label define occupation 1 "Occupe un emploi" ///
        # 2 "Apprenti" ///
        # 3 "Etudiant, élève, en formation"  ///
        # 4 "Chômeur (inscrit ou non à l'ANPE)" ///
        # 5 "Retraité, préretraité ou retiré des affaires" ///
        # 6 "Au foyer"  ///
        # 7 "Autre situation (handicapé)"  ///
        # 8 "Militaire du contingent"
        # label values situapr occupation
        # label values situacj occupation
        # label var situapr "Situation d'activité de la personne de référence"
        # label var situacj "Situation d'activité du conjoint de la PR"
        # label define diplome 10 "Diplôme de 3ème cycle universitaire, doctorat" ///
        # 12 "Diplôme d'ingénieur, grande école" ///
        # 20 "Diplôme de 2nd cycle universitaire" ///
        # 30 "Diplôme de 1er cycle universitaire" ///
        # 31 "BTS, DUT ou équivalent" ///
        # 33 "Diplôme des professions sociales et de la santé niveau Bac +2" ///
        # 41 "Baccalauréat général, brevet supérieur, capacité en droit" ///
        # 42 "Baccalauréat technologique" ///
        # 43 "Baccalauréat professionnel" ///
        # 44 "Brevet professionnel ou de technicien" ///
        # 50 "CAP, BEP ou diplôme de même niveau" ///
        # 60 "Brevet des collèges, BEPC" ///
        # 70 "Certificat d'études primaires" ///
        # 71 "Aucun diplôme"
        # label values dip14pr diplome
        # label values dip14cj diplome
        # label var dip14pr "Diplôme le plus élevé de la PR"
        # label var dip14cj "Diplôme le plus élevé du conjoint de la PR"
        # label define nationalite 1 "Français, par naissance ou naturalisation" 2 "Etranger"
        # label values natiopr nationalite
        # label values natiocj nationalite
        # label var natiopr "Nationalité de la personne de référence"
        # label var natiocj "Nationalité du conjoint de la PR"
        # label define logement 1 "Maison" 2 "Appartement"
        # label values typlog logement
        # label var typlog "Type de logement"
        # label define statutlogement 1 "Propriétaire ou copropriétaire" ///
        # 2 "Accédant à la propriété (rembourse un prêt)" ///
        # 3 "Locataire" ///
        # 4 "Sous-locataire" ///
        # 5 "Logé gratuitement"
        # label values stalog statutlogement
        # label var stalog "Statut d'occupation du logement"
        # label define viecouple 1 "Vit en couple" 2 "Ne vit pas en couple"
        # label values couplepr viecouple
        #
        # /* Recodage des CSP en 12 et 8 postes à partir de classification de l'INSEE (2003, PCS niveaux 1 et 2) */
        # gen cs24pr=00
        # replace cs24pr=10 if cs42pr=="11"
        # replace cs24pr=10 if cs42pr=="12"
        # replace cs24pr=10 if cs42pr=="13"
        # replace cs24pr=21 if cs42pr=="21"
        # replace cs24pr=22 if cs42pr=="22"
        # replace cs24pr=23 if cs42pr=="23"
        # replace cs24pr=31 if cs42pr=="31"
        # replace cs24pr=32 if cs42pr=="33"
        # replace cs24pr=32 if cs42pr=="34"
        # replace cs24pr=32 if cs42pr=="35"
        # replace cs24pr=36 if cs42pr=="37"
        # replace cs24pr=36 if cs42pr=="38"
        # replace cs24pr=41 if cs42pr=="42"
        # replace cs24pr=41 if cs42pr=="43"
        # replace cs24pr=41 if cs42pr=="44"
        # replace cs24pr=41 if cs42pr=="45"
        # replace cs24pr=46 if cs42pr=="46"
        # replace cs24pr=47 if cs42pr=="47"
        # replace cs24pr=48 if cs42pr=="48"
        # replace cs24pr=51 if cs42pr=="52"
        # replace cs24pr=51 if cs42pr=="53"
        # replace cs24pr=54 if cs42pr=="54"
        # replace cs24pr=55 if cs42pr=="55"
        # replace cs24pr=56 if cs42pr=="56"
        # replace cs24pr=61 if cs42pr=="62"
        # replace cs24pr=61 if cs42pr=="63"
        # replace cs24pr=61 if cs42pr=="64"
        # replace cs24pr=61 if cs42pr=="65"
        # replace cs24pr=66 if cs42pr=="67"
        # replace cs24pr=66 if cs42pr=="68"
        # replace cs24pr=69 if cs42pr=="69"
        # replace cs24pr=71 if cs42pr=="71"
        # replace cs24pr=72 if cs42pr=="72"
        # replace cs24pr=73 if cs42pr=="74"
        # replace cs24pr=73 if cs42pr=="75"
        # replace cs24pr=76 if cs42pr=="77"
        # replace cs24pr=76 if cs42pr=="78"
        # replace cs24pr=81 if cs42pr=="81"
        # replace cs24pr=82 if cs42pr=="83"
        # replace cs24pr=82 if cs42pr=="84"
        # replace cs24pr=82 if cs42pr=="85"
        # replace cs24pr=82 if cs42pr=="86"
        # replace cs24pr=82 if cs42pr=="**"
        # replace cs24pr=82 if cs42pr=="00"
        #

        menage['cs24pr'] = 0
        csp42s_by_csp24 = {
            10: ["11", "12", "13"],
            21: ["21"],
            22: ["22"],
            23: ["23"],
            31: ["31"],
            32: ["32", "33", "34", "35"],
            36: ["37", "38"],
            41: ["42", "43", "44", "45"],
            46: ["46"],
            47: ["47"],
            48: ["48"],
            51: ["52", "53"],
            54: ["54"],
            55: ["55"],
            56: ["56"],
            61: ["62", "63", "64", "65"],
            66: ["67", "68"],
            69: ["69"],
            71: ["71"],
            72: ["72"],
            73: ["74", "75"],
            76: ["77", "78"],
            81: ["81"],
            82: ["83", "84", "85", "86", "**", "00"],
            }
        for csp24, csp42s in csp42s_by_csp24.items():
            menage.loc[menage.cs42pr.isin(csp42s), 'cs24pr'] = csp24
        assert menage.cs24pr.isin(csp42s_by_csp24.keys()).all()

        menage['cs8pr'] = numpy.floor(menage.cs24pr / 10)
        assert menage.cs8pr.isin(range(1, 9)).all()

        variables = [
            'pondmen', 'npers', 'nenfants', 'nenfhors', 'nadultes', 'nactifs', 'ocde10', 'typmen',
            'sexepr', 'agepr', 'etamatri', 'couplepr', 'situapr', 'dip14pr', 'cs42pr', 'cs24pr', 'cs8pr', 'natiopr',
            'sexecj', 'agecj', 'situacj', 'dip14cj', 'cs42cj', 'natiocj', 'typlog', 'stalog'
            ] + ["age{}".format(age) for age in range(3, 14)]

        for variable in variables:
            assert variable in menage.columns, "{} is not a column of menage data frame".format(variable)

    if year == 2011:
        variables = [
            'agecj',
            'agepr',
            'coeffuc',
            'decuc1',
            'ident_me',
            'pondmen',
            'npers',
            'nenfants',
            'nactifs',
            'sexepr',
            'sexecj',
            'dip14cj',
            'dip14pr',
            'typmen5',
            'cataeu',
            'situapr',
            'situacj',
            'zeat',
            ]

        try:
            menage = survey.get_values(table = "MENAGE", variables = variables)
        except:
            menage = survey.get_values(table = "menage", variables = variables)

        menage.rename(
            columns = {
                'ident_me': 'ident_men',
                'coeffuc': 'ocde10',
                'typmen5': 'typmen',
                'decuc1': 'decuc',
                'cataeu': 'strate'
                },
            inplace = True,
            )
        del variables
        menage.agecj = menage.agecj.fillna(0)
        # Ajout de la variable vag
        try:
            depmen = survey.get_values(table = "DEPMEN")
        except:
            depmen = survey.get_values(table = "depmen")
        depmen.rename(columns = {'ident_me': 'ident_men'}, inplace = True)
        vague = depmen[['vag', 'ident_men']].copy()
        stalog = depmen[['stalog', 'ident_men']].copy()
        del depmen

        menage.set_index('ident_men', inplace = True)
        vague.set_index('ident_men', inplace = True)
        menage = menage.merge(vague, left_index = True, right_index = True)
        # On met un numéro à chaque vague pour pouvoir faire un meilleur suivi des évolutions temporelles pour
        # le modèle de demande
        menage['vag_'] = menage['vag'].copy()
        menage.vag.loc[menage.vag_ == 1] = 23
        menage.vag.loc[menage.vag_ == 2] = 24
        menage.vag.loc[menage.vag_ == 3] = 25
        menage.vag.loc[menage.vag_ == 4] = 26
        menage.vag.loc[menage.vag_ == 5] = 27
        menage.vag.loc[menage.vag_ == 6] = 28
        del menage['vag_']

        # Homogénéisation de la variable statut du logement qui prend des valeurs différentes pour 2011
        stalog['stalog'] = stalog.stalog.astype('int').copy()
        stalog['new_stalog'] = 0
        stalog.loc[stalog.stalog == 2, 'new_stalog'] = 1
        stalog.loc[stalog.stalog == 1, 'new_stalog'] = 2
        stalog.loc[stalog.stalog == 4, 'new_stalog'] = 3
        stalog.loc[stalog.stalog == 5, 'new_stalog'] = 4
        stalog.loc[stalog.stalog.isin([3, 6]), 'new_stalog'] = 5
        stalog.stalog = stalog.new_stalog.copy()
        del stalog['new_stalog']
        assert stalog.stalog.isin(range(1, 6)).all()
        stalog.set_index('ident_men', inplace = True)
        menage = menage.merge(stalog, left_index = True, right_index = True)

        # Recodage des catégories zeat
        menage.loc[menage.zeat == 7, 'zeat'] = 6
        menage.zeat.loc[menage.zeat == 8] = 7
        menage.zeat.loc[menage.zeat == 9] = 8
        assert menage.zeat.isin(range(0, 9)).all()
        menage.index.name = 'ident_men'

    #
    assert menage.index.name == 'ident_men'
    menage['role_menage'] = 0
    temporary_store['donnes_socio_demog_{}'.format(year)] = menage
102511
function groupOn(f, xs) {
    return groupBy((a, b) => f(a) === f(b), xs);
}
619141
public function afficheFormulaire($tabTravail = array(), $modif = '', $idParent = 0, $typeParentId = '')
    {
        $html = '';
        $t = new Template('modules/archi/templates/');
        //$t->set_filenames((array('evl'=>'evenementFormulaire.tpl')));
        $t->set_filenames((array('evl'=>'nouveauDossier.tpl')));
        $isEvenementGroupeAdresse = false;

        $formulaire = new formGenerator();

        $groupeTypeEvenement=2; // par defaut on selectionne les evenement de type 'travaux'
        if (isset($this->variablesPost['typeGroupeEvenement']) && $this->variablesPost['typeGroupeEvenement']!='') {
            $groupeTypeEvenement = $this->variablesPost['typeGroupeEvenement'];
        }


        $t->assign_vars(array('typeBoutonValidation'=>"button")); // quand test javascript sur les champs de l'adresse , type = button

        // cas d'ajout d'un sous evenement ou d'un evenement appartenant a une adresse
        // on n'affiche pas les listes d'evenements et d'adresses
        if ($idParent<>0) {
        // est ce que l'on veut lier l'evenement a un evenement que l'on a précisé en parametre ou a une adresse ?
            switch ($typeParentId) {
                case 'evenement':
                    // CAS OU L'ON VA AJOUTER UN SOUS EVENEMENT A L'EVENEMENT GROUPE d'ADRESSE
                    $t->assign_block_vars('isNotAjoutNouvelleAdresse', array());

                    if ($idPerson=archiPersonne::isPerson($idParent)) {
                        $person= new archiPersonne();

                        $infos=$person->getInfosPersonne($idPerson);
                        $t->assign_vars(array('recapitulatifAdresse'=>"<h2 class='h1'><a href='".$this->creerUrl('', '', array('archiAffichage'=>'evenementListe', 'selection'=>"personne", 'id'=>$idPerson))."'>".$infos["prenom"]." ".$infos["nom"]."</a></h2>"));
                    } else {
                        $adresse = new archiAdresse();
                        $t->assign_vars(array('recapitulatifAdresse'=>$adresse->afficherRecapitulatifAdresses($idParent)));
                    }
                        $t->assign_block_vars('afficheAjoutEvenement', array());
                        //$t->assign_block_vars('isNotAffichageGroupeAdresse',array());
                        $t->assign_vars(array('evenementGroupeAdresse'=>$idParent));
                        $t->assign_vars(array('nomBoutonValidation'=>'ajoutSousEvenement'));
                        $t->assign_vars(array('typeBoutonValidation'=>"submit"));
                    break;
                case 'adresse':
                    $tabTravail['adresses']['value']=array($idParent);
                    $t->assign_block_vars('ajouterAdresses', array());
                    break;
            }
        } else {
            // l'evenement est il un groupe d'adresse , si oui , on n'affichera que le champ des adresses
            if ($modif != '') {
            // c'est une modification d'evenement

                // on affiche le recapitulatif de l'adresse en haut de page
                $t->assign_block_vars('isNotAjoutNouvelleAdresse', array());


                $idEvenementGroupeAdresse = $this->getParent($modif);


                $adresse = new archiAdresse();

                if ($idPerson=archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    $person= new archiPersonne();
                    $infos=$person->getInfosPersonne($idPerson);
                    $t->assign_vars(array('recapitulatifAdresse'=>"<h2 class='h1'><a href='".$this->creerUrl('', '', array('archiAffichage'=>'evenementListe', 'selection'=>"personne", 'id'=>$idPerson))."'>".$infos["prenom"]." ".$infos["nom"]."</a></h2>"));
                } else {
                    $t->assign_vars(array('recapitulatifAdresse'=>$adresse->afficherRecapitulatifAdresses($idEvenementGroupeAdresse)));
                }

                $t->assign_vars(array('recaptitulatifAncres'=>$this->afficherRecapitulatifAncres($idEvenementGroupeAdresse, $modif)));

                $t->assign_vars(array("liensModifEvenements"=>$this->afficherLiensModificationEvenement($modif)));


                $isEvenementGroupeAdresse = $this->isEvenementGroupeAdresse($modif);
                if ($isEvenementGroupeAdresse) {
                // l'evenement courant est de type groupe d'adresse
                    // on affiche rien a par l'adresse

                    // on renseigne le champs cache du formulaire pour recuperer rapidement l'identifiant lors de la validation de la modification
                    $t->assign_vars(array('evenementGroupeAdresse'=>$modif));

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

                    //on recupere les adresses liées a cet evenement
                    $reqAdressesGroupeAdresses = "
							SELECT ha.idAdresse as idAdresse
							from historiqueAdresse ha2, historiqueAdresse ha
							right join _adresseEvenement ae on ae.idAdresse = ha.idAdresse
							where ae.idEvenement = '".$modif."'
									and ha2.idAdresse = ha.idAdresse
									group by ha.idAdresse,ha.idHistoriqueAdresse
									having ha.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
									";
                    $resAdressesGroupeAdresses = $this->connexionBdd->requete($reqAdressesGroupeAdresses);
                    while ($fetchAdressesGroupeAdresses = mysql_fetch_assoc($resAdressesGroupeAdresses)) {
                        $tabTravail["adresses"]['value'][] = $fetchAdressesGroupeAdresses['idAdresse'];
                    }
                } else {
                    // MODIFICATION d'UN EVENEMENT (juste l'evenement, pas d'adresse , pas de groupe d'adresse)
                    // initialisation des champs du template que l'on va afficher
                    $t->assign_block_vars('afficheAjoutEvenement', array());
                    $t->assign_vars(array('nomBoutonValidation'=>'evenementSimple'));
                    $t->assign_vars(array('typeBoutonValidation'=>"submit"));
                }
            } else {
                // ce n'est pas une modification d'evenement
                $t->assign_block_vars('afficheAjoutEvenement', array());
            }
        }


        //***********************************************************************************************
        // TYPE STRUCTURE
        // dans le cas d'un ajout de sous evenement
        // par defaut on recupere le type de structure du premier evenement enregistré 'qui n'est pas un groupe d'adresses'
        //***********************************************************************************************
        $heriteIdTypeStructure='';
        if ($idParent<>'0' && $typeParentId=='evenement') {
            $sqlTypeStructureHerite = "
					SELECT he.idTypeStructure as idTypeStructure
					FROM evenements he2, evenements he
					WHERE he.idEvenement =(select min(ee.idEvenementAssocie) from _evenementEvenement ee where ee.idEvenement = '".$idParent."')
							AND he2.idEvenement = he.idEvenement
							GROUP BY he.idEvenement
							";

            $resTypeStructureHerite = $this->connexionBdd->requete($sqlTypeStructureHerite);

            if (mysql_num_rows($resTypeStructureHerite)==1) {
                $fetchTypeStructureHerite = mysql_fetch_assoc($resTypeStructureHerite);
                $heriteIdTypeStructure = $fetchTypeStructureHerite['idTypeStructure'];
            }
            //echo "heriteIdTypeStructure=".$heriteIdTypeStructure;
        }
        if (!isset($idEvenementGroupeAdresse)) {
            $idEvenementGroupeAdresse=$_GET["archiIdEvenement"];
        }

        if (!archiPersonne::isPerson($idEvenementGroupeAdresse)) {
            $t->assign_block_vars("afficheAjoutEvenement.isAddress", array());
            $sqlTypeStructure = 'SELECT idTypeStructure, nom FROM typeStructure order by nom';
            if ($result = $this->connexionBdd->requete($sqlTypeStructure)) {
                while ($fetchTypeStructure = mysql_fetch_object($result)) {
                    if ($fetchTypeStructure->idTypeStructure !=0) {
                        //$tabTypeStructure[$rep->idTypeStructure] = $rep->nom;
                        if ((isset($tabTravail['typeStructure']) && $tabTravail['typeStructure']['value'] == $fetchTypeStructure->idTypeStructure) || ( $heriteIdTypeStructure!='' && $fetchTypeStructure->idTypeStructure == $heriteIdTypeStructure )) {
                            $selected = 'selected="selected"';
                        } else {
                            $selected = '';
                        }
                        $t->assign_block_vars(
                            'afficheAjoutEvenement.isAddress.typesStructure',
                            array(
                                        'id'=> $fetchTypeStructure->idTypeStructure,
                                        'nom'=> $fetchTypeStructure->nom,
                                        'selected'=> $selected
                                )
                        );
                    }
                }
            }
        }

        // ***********************************************************************************
        // si la personne n'est pas admin elle verra une version simplifiée du formulaire
        $authentification = new archiAuthentification();
        if ($authentification->estConnecte() && $authentification->estAdmin()) {
            $t->assign_block_vars('afficheAjoutEvenement.isAdmin', array());
        } else {
            $t->assign_block_vars('afficheAjoutEvenement.isNotAdmin', array());
        }
        // ******
        // ***********************************************************************************
        // autre cas pour l'affichage du champ numeroArchive , il faut que l'utilisateur soit autorisé à l'afficher => table utilisateur
        $utilisateur = new archiUtilisateur();
        if ($utilisateur->canChangeNumeroArchiveField(array('idUtilisateur'=>$authentification->getIdUtilisateur()))) {
            $t->assign_block_vars('afficheAjoutEvenement.canChangeNumeroArchive', array());
        } else {
            $t->assign_block_vars('afficheAjoutEvenement.noChangeNumeroArchive', array());
        }

        if ($utilisateur->canChangeDateFinField(array('idUtilisateur'=>$authentification->getIdUtilisateur()))) {
            $t->assign_block_vars('afficheAjoutEvenement.canChangeDateFin', array());
        } else {
            $t->assign_block_vars('afficheAjoutEvenement.noChangeDateFin', array());
        }

        if ($utilisateur->isAuthorized('affiche_selection_source', $authentification->getIdUtilisateur())) {
            $t->assign_block_vars('afficheAjoutEvenement.isDisplaySource', array());
        } else {
            $t->assign_block_vars('afficheAjoutEvenement.isNotDisplaySource', array());
        }



        // ******
        // ***********************************************************************************
        // le type de groupe d'evenement
        // 1 - culturel
        // 2 - travaux

        $t->assign_vars(array('onClickTypeEvenement1'=>"appelAjax('".$this->creerUrl('', 'afficheSelectTypeEvenement', array('noHeaderNoFooter'=>1,'archiTypeGroupeEvenement'=>'1'))."','typeEvenement');document.getElementById('afficheChampsSupplementairesCulturel').style.display='block';document.getElementById('afficheChampsSupplementairesTravaux').style.display='none';"));
        $t->assign_vars(array('onClickTypeEvenement2'=>"appelAjax('".$this->creerUrl('', 'afficheSelectTypeEvenement', array('noHeaderNoFooter'=>1,'archiTypeGroupeEvenement'=>'2'))."','typeEvenement');document.getElementById('afficheChampsSupplementairesTravaux').style.display='block';document.getElementById('afficheChampsSupplementairesCulturel').style.display='none';"));

        // si c'est une modification de l'evenement il faut chercher l'id de type de groupe d'evenement afin d'afficher les bons div , et donc on reassigne la variable groupeTypeEvenement
        if ($modif!='') {
            if (isset($tabTravail['typeEvenement']['value'])) {
                $reqGroupeTypeEvenement = "select groupe from typeEvenement where idTypeEvenement='".$tabTravail['typeEvenement']['value']."'";
                $resGroupeTypeEvenement = $this->connexionBdd->requete($reqGroupeTypeEvenement);
                $fetchGroupeTypeEvenement = mysql_fetch_assoc($resGroupeTypeEvenement);
                $groupeTypeEvenement = $fetchGroupeTypeEvenement['groupe'];
            }
        }

        // on affiche le bon div
        if ($groupeTypeEvenement==1) { // 1: culturel
            $t->assign_vars(array('checkedTypeEvenement1'=>" checked"));
            $t->assign_vars(array('styleChampsSupplementaireTravaux'=>"display:none;"));
            $t->assign_vars(array('styleChampsSupplementaireCulturel'=>"display:block;"));

            if (isset($tabTravail['ISMH']) && $tabTravail['ISMH']['value']=='1') {
                $t->assign_vars(array('ISMHchecked'=>" checked"));
            }

            if (isset($tabTravail['MH']) && $tabTravail['MH']['value']=='1') {
                $t->assign_vars(array('MHchecked'=>" checked"));
            }
        } elseif ($groupeTypeEvenement==2) { // 2: travaux
            $t->assign_vars(array('nbEtages'=>$tabTravail['nbEtages']['value']));
            $t->assign_vars(array('checkedTypeEvenement2'=>" checked"));
            $t->assign_vars(array('styleChampsSupplementaireTravaux'=>"display:block;"));
            $t->assign_vars(array('styleChampsSupplementaireCulturel'=>"display:none;"));
        }



        if (isset($tabTravail['isDateDebutEnviron']) && $tabTravail['isDateDebutEnviron']['value']=='1') {
            $t->assign_vars(array('isDateDebutEnviron'=>" checked"));
        }

        if (!archiPersonne::isPerson($idEvenementGroupeAdresse)) {
            // les type d'evenements
            // par defaut on selectionne le typeEvenement=2 (travaux)
            $resTypeEvenement = $this->connexionBdd->requete("SELECT idTypeEvenement,nom FROM typeEvenement where groupe = '".$groupeTypeEvenement."'");
            while ($fetchTypeEvenement = mysql_fetch_assoc($resTypeEvenement)) {
                $selected="";
                if (isset($tabTravail['typeEvenement']) && $tabTravail['typeEvenement']['value'] == $fetchTypeEvenement["idTypeEvenement"]) {
                    $selected = "selected";
                }

                $t->assign_block_vars('afficheAjoutEvenement.isAddress.typesEvenement', array(
                        'id'=>$fetchTypeEvenement['idTypeEvenement'],
                        'nom'=>$fetchTypeEvenement['nom'],
                        'selected'=>$selected
                ));
            }
        }

        // ***********************************************************************************
        //** Courant Architecturaux - récupération
        //*
        $sqlCourantArchitectural = 'SELECT idCourantArchitectural, nom FROM courantArchitectural order by nom';
        //$tabCourantArchitectural = array();
        $tableauCourants = new tableau();
        if ($result = $this->connexionBdd->requete($sqlCourantArchitectural)) {
            while ($fetchCourant = mysql_fetch_object($result)) {
                //$tabCourantArchitectural[$rep->idCourantArchitectural] = $rep->nom;
                if (isset($tabTravail['courant']) && is_array($tabTravail['courant']['value']) && in_array($fetchCourant->idCourantArchitectural, $tabTravail['courant']['value']) && $groupeTypeEvenement==2) {
                    $selected = 'checked';
                } else {
                    $selected = '';
                }

                $tableauCourants->addValue("<input type='checkbox' name='courant[]' value='".$fetchCourant->idCourantArchitectural."' ".$selected.">&nbsp;".$fetchCourant->nom);

                //$t->assign_block_vars('isNotAffichageGroupeAdresse.courant', array('id'=> $fetchCourant->idCourantArchitectural, 'nom'=> $fetchCourant->nom, 'selected'=> $selected));
            }

            $t->assign_vars(array('listeCourantsArchitecturaux'=>$tableauCourants->createHtmlTableFromArray(3, "white-space:nowrap;font-size:12px; font-color:#000000;", 'listeCourantsArchitecturaux')));
        }

        // ***********************************************************************************
        // assignation du bouton de validation : ajout ou modif
        if ($formulaire->estChiffre($modif)) {
            $t->assign_vars(array(
                    'typeTitre' => 'Modification',
                    'estmodif'  => '<input type="hidden" name="idEvenement" value="'.$modif.'" />',
                    'boutonValidation' => 'Modifier',
                    'formAction' => $this->creerUrl('modifierEvenement', '', array('archiIdEvenement'=>$modif))
            ));
        } else {
            $t->assign_vars(array(
                    'typeTitre' => 'Ajout',
                    'estmodif'  => '',
                    'boutonValidation'=>'Ajouter',
                    'formAction' => $this->creerUrl('ajoutEvenement')
            ));
        }

        // ***********************************************************************************
        //**  Affichage des Erreurs
        //**

        foreach ($tabTravail as $name => $value) {
            if (!is_array($value["value"])) {
                if ($value['type']=='date') {
                    $val = $this->date->toFrench($this->date->toBdd($value['value']));
                } else {
                    $val = htmlspecialchars(stripslashes($value["value"])); // nécessaire pour la description
                }
            } else {
                $val = $value["value"];
            }

            if ($value['type']!='checkbox') {
                $t->assign_vars(array( $name => $val));
            }

            if (isset($value['error']) && $value["error"]!='') {
                $t->assign_vars(array($name."-error" => $value["error"]));
            }
        }



        // ***********************************************************************************
        //**  Affichage des listes d'options
        //**

        // recherche des intitules de la source de l'evenement courant
        if (!empty($tabTravail['source']['value'])) {
            $sql = "
					SELECT s.idSource as idSource, s.nom as nom , ts.nom as nomTypeSource
					FROM source s
					LEFT JOIN typeSource ts ON ts.idTypeSource = s.idTypeSource
					WHERE s.idSource ='".$tabTravail['source']['value']."'";

            $rep = $this->connexionBdd->requete($sql);
            $fetchSource = mysql_fetch_assoc($rep);

            $t->assign_vars(array('source'=> $tabTravail['source']['value'], 'sourcetxt'=>stripslashes($fetchSource['nom']).' '.$fetchSource['nomTypeSource']));
        }



        // les personnes
        $d = new droitsObject();

        if ($d->isAuthorized('personne_sur_evenement_modifier', $authentification->getIdProfil())) {
            $t->assign_vars(array("affichePersonnesBlock"=>"table-row"));

            if (!empty($tabTravail['personnes']['value'])) {
                foreach ($tabTravail['personnes']['value'] as $id => $val) {
                    $tabTravail['personnes']['value'][$id] = mysql_escape_string($val);
                }
                $sqlIdPersonne = implode("','", $tabTravail['personnes']['value']);

                $sql = "SELECT idPersonne, nom, prenom FROM personne WHERE idPersonne IN ('".$sqlIdPersonne."')";

                $rep = $this->connexionBdd->requete($sql);
                $tabPersonne=array();
                while ($res = mysql_fetch_object($rep)) {
                    $tabPersonne[$res->idPersonne] = $res->nom.' '.$res->prenom;
                }

                foreach ($tabPersonne as $id => $val) {
                    $t->assign_block_vars('afficheAjoutEvenement.personnes', array('id'=> $id, 'nom'=>$val,'selected'=>'selected'));
                }
            }
        } else {
            $t->assign_vars(array("affichePersonnesBlock"=>"none"));
        }
        // les adresses
        /*if (!empty($tabTravail['adresses']['value']))
		{
		foreach( $tabTravail['adresses']['value'] AS $id => $val)
		{
		$tabTravail['adresses']['value'][$id] = mysql_escape_string($val);
		}
		$sqlIdAdresse = implode("','", $tabTravail['adresses']['value']);
		// recuperation des noms des adresses
		$sql = "
		SELECT ha.idAdresse as idAdresse, ha.nom as nom
		FROM historiqueAdresse ha2, historiqueAdresse ha
		WHERE ha.idAdresse IN ('".$sqlIdAdresse."')
		AND ha.idAdresse = ha2.idAdresse
		GROUP BY ha.idAdresse, ha.idHistoriqueAdresse
		HAVING ha.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
		";
		$rep = $this->connexionBdd->requete($sql);
		while ($res = mysql_fetch_object($rep))
		{
		$tabAdresse[$res->idAdresse] = $res->nom;
		}

		$adresse = new archiAdresse();
		foreach($tabTravail['adresses']['value'] AS $id)
		{
		// recherche du libelle a afficher pour l'adresse
		$nom = $adresse->getAdresseToDisplay($adresse->getArrayAdresseFromIdAdresse($id));//$adresse->getAdresseToDisplay($id);
		$t->assign_block_vars('ajouterAdresses.adresses', array('val'=> $id, 'nom'=> $nom));
		}
		}

		// les evenements lies ( pas utilisé pour le moment)
		if (!empty($tabTravail['evenements']['value']))
		{
		// modif laurent pour ajout d'un sous evenement à l'evenement groupe d'adresse
		if(count($tabTravail['evenements']['value'])==1)
		{
		foreach($tabTravail['evenements']['value'] as $indice => $value)
		{
		// recherche de l'evenement parent :
		$resGroupeAdresse   = $this->connexionBdd->requete("select distinct idEvenement from _evenementEvenement where idEvenementAssocie='".$value."'");
		$fetchGroupeAdresse = mysql_fetch_assoc($resGroupeAdresse);
		$t->assign_vars(array('evenementGroupeAdresse'=>$fetchGroupeAdresse['idEvenement']));
		}
		}
		else
		{
		$this->mail->sendMail('archiV2',$this->mail->getAdmin(),'ArchiV2-archiEvenements::il y a plusieurs evenements lies','il y a plusieurs evenements lies idEvenement='.$fetchGroupeAdresse['idEvenement']);
		}


		}
		*/



        // ***********************************************************************************
        // gestion des appels des popups de dates
        $t->assign_vars(array(      'onClickDateDebut'              =>"document.getElementById('paramChampAppelantDate').value='dateDebut';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDate').style.display='block';",

        'onClickDateFin'                =>"document.getElementById('paramChampAppelantDate').value='dateFin';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDate').style.display='block';"
                ));



        // bouton popup source
        $t->assign_vars(array(
                'onClickBoutonChoisirSource'=>"document.getElementById('paramChampsAppelantSource').value='source';document.getElementById('calqueSource').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueSource').style.display='block';",
                'onClickChoixPersonne'=>"document.getElementById('paramChampsAppelantPersonne').value='personne';document.getElementById('calquePersonne').style.top=(getScrollHeight()+150)+'px';document.getElementById('calquePersonne').style.display='block';"
        ));


        $recherche = new archiRecherche();
        //  liaison avec les adresses
        $t->assign_vars(array(
                'popupPersonnes'  => $recherche->getPopupChoixPersonne('modifEvenement'),
                'popupSources'     => $recherche->getPopupChoixSource('modifEvenement'),
                'popupCalendrier'      => $this->getPopupCalendrier()
        ));


        // ******************************************************************************************************************************
        // on recupere les messages d'aide contextuelle et on les affiche :
        $helpMessages = $this->getHelpMessages("helpEvenement");

        foreach ($helpMessages as $fieldName => $helpMessage) {
            $t->assign_vars(array($fieldName=>$helpMessage));
        }
        // ******************************************************************************************************************************

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

        return $html;
    }
844882
public function afficheFormulaireNouveauDossier($parametres=array(),  $type="adresse")
    {
        $html="";
        // initialisation de l'objet googlemap pour la recuperation des coordonnees
        $paramsGoogleMap = array('googleMapKey'=>$this->googleMapKey);

        $googleMap = new googleMap($paramsGoogleMap);

        $html.= $googleMap->getJsFunctions();
        $html.= $googleMap->getJSInitGeoCoder();

        
        $t=new Template('modules/archi/templates/');
        $t->set_filenames((array('nouveauDossier'=>'nouveauDossier.tpl')));
        
        
        if ($type=="personne") {
            $formAction="ajoutNouvelPersonne";
            $t->assign_block_vars("ajoutPersonne",  array());
            $resJobs=$this->connexionBdd->requete("SELECT * FROM `metier`");
            $jobList="";
            while ($job = mysql_fetch_assoc($resJobs)) {
                if (!empty($job["nom"])) {
                    $jobList.="<option value='".$job["idMetier"]."'";
                    if (isset($_POST["metier"]) && $job["idMetier"]==$_POST["metier"]) {
                        $jobList.=" selected='selected' ";
                    }
                    $jobList.=">".$job["nom"]."</option>";
                }
            }
            $t->assign_vars(
                array(
                    'titrePage'=>_("Ajout d'une nouvelle personne (physique ou morale)"), 
                    "jobList"=>$jobList,
                    "typeBoutonValidation"=>"submit"
                )
            );   
            
            if (!empty($_POST) && !isset($_POST["archiLogin"])) {   
                $t->assign_vars(
                    array(
                        "firstname"=>$_POST["prenom"],
                        "name"=>$_POST["nom"],
                        "birth"=>$_POST["dateNaissance"],
                        "death"=>$_POST["dateDeces"],
                        "desc"=>$_POST["descriptionPerson"]
                    )
                );
            }
        } else {
            $formAction="ajoutNouveauDossier";
            if (!isset($arrayJsCoordonneesFromGoogleMap['jsFunctionCall'])) {
                $arrayJsCoordonneesFromGoogleMap['jsFunctionCall']=0;
            }
            // assignation du titre de la page
            $t->assign_vars(
                array(
                    'titrePage'=>_("Ajout d'une nouvelle adresse"), 
                    'typeBoutonValidation'=>"submit"
                )
            );
            // ********
            // on affiche la partie ajout d'une adresse 
            $t->assign_block_vars('isNotAjoutSousEvenement',  array());
            // ********
        }
        
        // ********
        // on affiche la partie "ajout d'un evenement"    
        $t->assign_block_vars('afficheAjoutEvenement',  array());
        // *******
        
        // ******
        // si la personne n'est pas admin elle verra une version simplifiée du formulaire
        $authentification = new archiAuthentification();
        $u = new archiUtilisateur();
        if ($authentification->estConnecte() && ($authentification->estAdmin() || $u->canAddWithoutStreet(array('idUtilisateur'=>$authentification->getIdUtilisateur())))) {
            $t->assign_block_vars('afficheAjoutEvenement.isAdmin', array());
            $t->assign_vars(array("displayQuartiers"=>'table-row'));
            $t->assign_vars(array("displaySousQuartiers"=>'table-row'));            
        } else {
            $t->assign_block_vars('afficheAjoutEvenement.isNotAdmin', array());
            $t->assign_vars(array("displayQuartiers"=>'none'));
            $t->assign_vars(array("displaySousQuartiers"=>'none'));
        }
        // ******
        
        $typeStructure=0;
        if (isset($this->variablesPost['typeStructure']) && $this->variablesPost['typeStructure']!='')
            $typeStructure = $this->variablesPost['typeStructure'];
        
        
        $groupeTypeEvenement=2; // par defaut on selectionne les evenement de type 'travaux'
        if (isset($this->variablesPost['typeGroupeEvenement']) && $this->variablesPost['typeGroupeEvenement']!='')
            $groupeTypeEvenement = $this->variablesPost['typeGroupeEvenement'];
        
        
        
        $typeEvenement=0;
        if (isset($this->variablesPost['typeEvenement']) && $this->variablesPost['typeEvenement']!='')
            $typeEvenement = $this->variablesPost['typeEvenement'];


        if (!(isset($this->variablesPost['typeEvenement']) && $this->variablesPost['typeEvenement']!='') && isset($this->variablesGet['archiOptionAjoutDossier']) && $this->variablesGet["archiOptionAjoutDossier"]=="nouvelleDemolition") {
            $groupeTypeEvenement=2; // travaux
            $typeEvenement = 6;
        }

        if (!(isset($this->variablesPost['typeEvenement']) && $this->variablesPost['typeEvenement']!='') && isset($this->variablesGet['archiOptionAjoutDossier']) && $this->variablesGet["archiOptionAjoutDossier"]=="nouvelEvenementCulturel") {
            $groupeTypeEvenement=1; // travaux
            $typeEvenement = 0;
        }

            
        $ISMH=false;
        if (isset($this->variablesPost['ISMH']))
            $ISMH=true;
    
        $MH=false;
        if (isset($this->variablesPost['MH']))
            $MH=true;
        
        $isDateDebutEnviron = false;
        if (isset($this->variablesPost['isDateDebutEnviron']))
            $isDateDebutEnviron = true;

        $personnes = array();
        if (isset($this->variablesPost['personnes']) && count($this->variablesPost['personnes'])>0)    
            $personnes = $this->variablesPost['personnes'];
        
        $ville = 0;
        if (isset($this->variablesPost['ville']) && $this->variablesPost['ville']!='0' && $this->variablesPost['ville']!='')
            $ville = $this->variablesPost['ville'];
        
        // ***********************************************************************************
        // recuperation des valeurs des champs textes du formulaire validé,  les autres champs sont mis en place individuellement
        $listeChamps = array('titre', 'source', 'sourcetxt', 'dateDebut', 'dateFin', 'nbEtages', 'description', 'ville', 'villetxt');
        
        foreach ($listeChamps as $indice => $fieldName) {
            if (isset($this->variablesPost[$fieldName]) && $this->variablesPost[$fieldName]!='') {
                $t->assign_vars(array($fieldName=>$this->variablesPost[$fieldName]));
            }
        }
                
        // gestion du favori de la ville ou si on a une ville generale courante
        if ($ville=='0' && !isset($this->variablesGet['archiIdVilleGeneral'])) {
            $reqVilleTxt = "select nom from ville where idVille = '".$this->session->getFromSession('idVilleFavoris')."'";
            $resVilleTxt = $this->connexionBdd->requete($reqVilleTxt);
            $fetchVilleTxt = mysql_fetch_assoc($resVilleTxt);
            $t->assign_vars(array('ville'=>$this->session->getFromSession('idVilleFavoris'), 'villetxt'=>$fetchVilleTxt['nom']));
            $ville = $this->session->getFromSession('idVilleFavoris');
        } elseif (isset($this->variablesGet['archiIdVilleGeneral'])) {
            $reqVilleTxt = "select nom from ville where idVille = '".$this->variablesGet['archiIdVilleGeneral']."'";
            $resVilleTxt = $this->connexionBdd->requete($reqVilleTxt);
            $fetchVilleTxt = mysql_fetch_assoc($resVilleTxt);
            $t->assign_vars(array('ville'=>$this->variablesGet['archiIdVilleGeneral'], 'villetxt'=>$fetchVilleTxt['nom']));
            $ville = $this->variablesGet['archiIdVilleGeneral'];
        }

        // ***********************************************************************************
        // si un idVille existe sur le formulaire ,  on affiche les quartiers correspondants
        if ($ville!=0) {
            $resQuartiers = $this->connexionBdd->requete("select idQuartier,  nom from quartier where idVille = '".$ville."' order by nom");
            while ($fetchQuartiers = mysql_fetch_assoc($resQuartiers)) {
                $selected = "";

                if (isset($this->variablesPost['quartiers']) && $this->variablesPost['quartiers']!='0' && $fetchQuartiers['idQuartier']==$this->variablesPost['quartiers']) {    
                    $selected=" selected";
                }
                
                if ($fetchQuartiers['nom']!='autre') {
                    if ($type=="personne") {

                    } else {
                        $t->assign_block_vars(
                            "isNotAjoutSousEvenement.quartiers",
                            array(
                                'id'        =>    $fetchQuartiers['idQuartier'], 
                                'nom'        =>    $fetchQuartiers['nom'], 
                                'selected'    =>    $selected
                            )
                        );
                    }
                }
            }
        }
        
        // ***********************************************************************************
        // si on a des personnes selectionnees ,  on les ajoute
        
        $d = new droitsObject();
        $u = new archiUtilisateur();
        
        if ($d->isAuthorized('personne_sur_evenement_ajouter', $u->getIdProfilFromUtilisateur($authentification->getIdUtilisateur()))) {
            $t->assign_vars(array("affichePersonnesBlock"=>"table-row"));
        } else {
            $t->assign_vars(array("affichePersonnesBlock"=>"none"));
        }
        
        if ($d->isAuthorized('affiche_selection_source', $u->getIdProfilFromUtilisateur($authentification->getIdUtilisateur()))) {
            $t->assign_block_vars('afficheAjoutEvenement.isDisplaySource', array());
        } else {
            $t->assign_block_vars('afficheAjoutEvenement.isNotDisplaySource', array());
        }
        
        
                
        if (count($personnes)>0) {
            $listePersonnes = implode("', '", $personnes);
            
            $reqPersonnes = "select idPersonne,  nom,  prenom from personne where idPersonne in ('".$listePersonnes."')";
            $resPersonnes = $this->connexionBdd->requete($reqPersonnes);
            while ($fetchPersonnes = mysql_fetch_assoc($resPersonnes)) {
                $t->assign_block_vars('personnes', array('id'=>$fetchPersonnes['idPersonne'], 'nom'=>$fetchPersonnes['nom'].' '.$fetchPersonnes['prenom'], 'selected'=>" selected"));
            }
        }
        
        // ***********************************************************************************
        // si un idQuartier existe sur le formulaire on affiche les sous quartier correspondants
        if (isset($this->variablesPost['quartiers']) && $this->variablesPost['quartiers']!='') {
            $resSousQuartiers = $this->connexionBdd->requete("select idSousQuartier,  nom from sousQuartier where idQuartier = '".$this->variablesPost['quartiers']."' order by nom");
        
            while ($fetchSousQuartiers = mysql_fetch_assoc($resSousQuartiers)) {
                $selected = "";

                if (isset($this->variablesPost['sousQuartiers']) && $this->variablesPost['sousQuartiers']!='0' && $fetchSousQuartiers['idSousQuartier']==$this->variablesPost['sousQuartiers']) {    
                    $selected=" selected";
                }
                
                if ($fetchSousQuartiers['nom']!='autre') {
                    if ($type=="personne") {

                    } else {
                        $t->assign_block_vars(
                            "isNotAjoutSousEvenement.sousQuartiers",
                            array(
                                'id'        =>    $fetchSousQuartiers['idSousQuartier'], 
                                'nom'        =>    $fetchSousQuartiers['nom'], 
                                'selected'    =>    $selected
                            )
                        );
                    }
                }
            }
        }

        
        $numLigne=0;
        if (isset($this->variablesPost['idUnique'])) {
            foreach ($this->variablesPost['idUnique'] as $indice =>$valueIdUnique) {
                if ((isset($this->variablesGet['supprAdresse']) && $this->variablesGet['supprAdresse']==$valueIdUnique)) {
                    //
                } else {
                    $arrayAdresse[$numLigne]['idAdresse']    =0;
                    $arrayAdresse[$numLigne]['txt']         = $this->variablesPost['ruetxt'][$valueIdUnique];
                    $arrayAdresse[$numLigne]['id']          = $this->variablesPost['rue'][$valueIdUnique];
                    $arrayAdresse[$numLigne]['numero']      = $this->variablesPost['numero'][$valueIdUnique];
                    $arrayAdresse[$numLigne]['indicatif']   = $this->variablesPost['indicatif'][$valueIdUnique];
                    $numLigne++;
                }
            }
            
            if (isset($this->variablesPost['ajouterAdresse'])) {
                $arrayAdresse[$numLigne]['idAdresse']    =0;
                $arrayAdresse[$numLigne]['txt']         = "";
                $arrayAdresse[$numLigne]['id']          = "";
                $arrayAdresse[$numLigne]['numero']      = "";
                $arrayAdresse[$numLigne]['indicatif']     = "";
                $numLigne++;
            }
            
            if (count($this->variablesPost['idUnique'])==1 && isset($this->variablesPost['enleverAdresse'])) {
                $arrayAdresse[$numLigne]['idAdresse']    =0;
                $arrayAdresse[$numLigne]['txt']         = "";
                $arrayAdresse[$numLigne]['id']          = "";
                $arrayAdresse[$numLigne]['numero']      = "";
                $arrayAdresse[$numLigne]['indicatif']     = "";
                $numLigne++;
            }
        } else {
                $arrayAdresse[$numLigne]['idAdresse']    =0;
                $arrayAdresse[$numLigne]['txt']         = "";
                $arrayAdresse[$numLigne]['id']          = "";
                $arrayAdresse[$numLigne]['numero']      = "";
                $arrayAdresse[$numLigne]['indicatif']     = "";
                $numLigne++;
        }
        
        
        
        $configArrayRetrieveCoordonneesGoogleMap = array();
        
        for ($i=0; $i<$numLigne; $i++) {
            
            // affichage des indicatifs pour chaque adresse
            if ($type=="personne") {

            } else {
                $t->assign_block_vars(
                    "isNotAjoutSousEvenement.adresses",
                    array(
                        'idUnique'                    => $i, 
                        
                        'onClickBoutonChoixRue'     => "document.getElementById('paramChampAppelantRue').value= 'rue".$i."';document.getElementById('iFrameRue').src='".$this->creerUrl('', 'afficheChoixRue', array('noHeaderNoFooter'=>1))."&archiIdVille='+document.getElementById('ville').value+'&archiIdQuartier='+document.getElementById('quartiers').value+'&archiIdSousQuartier='+document.getElementById('sousQuartiers').value;document.getElementById('calqueRue').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueRue').style.display='block';", 
                        
                        "nomRue"                => $arrayAdresse[$i]["txt"], 
                        "rue"                    => $arrayAdresse[$i]["id"], 
                        "numero"                => $arrayAdresse[$i]["numero"], 
                        "onClickBoutonSupprAdresse"    => "document.getElementById('formAjoutDossier').action='".$this->creerUrl('', 'ajoutNouveauDossier', array('supprAdresse'=>$i))."'"
                    )
                );
            }
            
            // gestion des indicatifs de chaque adresse
            $reqIndicatif = "select idIndicatif,  nom from indicatif";
            $resIndicatif = $this->connexionBdd->requete($reqIndicatif);
            while ($fetchIndicatif = mysql_fetch_assoc($resIndicatif)) {
                $selected="";
                if (isset($this->variablesPost['indicatif'.$i]) && $this->variablesPost['indicatif'.$i]!='' && $this->variablesPost['indicatif'.$i]==$fetchIndicatif['idIndicatif'])
                    $selected = " selected";
                if ($type=="personne") {

                } else {
                    $t->assign_block_vars(
                        "isNotAjoutSousEvenement.adresses.indicatifs",
                        array(
                            "id"        =>    $fetchIndicatif['idIndicatif'], 
                            "nom"        =>    $fetchIndicatif['nom'], 
                            "selected"    =>    $selected
                        )
                    );
                }
            
            }
            
            $configArrayRetrieveCoordonneesGoogleMap[$i] = array(
                                'nomChampLatitudeRetour'=>'latitude_'.$i, 
                                'nomChampLongitudeRetour'=>'longitude_'.$i, 
                                'getAdresseFromElementById'=>true, 
                                'jsAdresseValue'=>"document.getElementById('numero".$i."').value+' '+document.getElementById('rue".$i."txt').value+' '+document.getElementById('villetxt').value", 
                                'jsToExecuteIfNoAddressFound'=>"document.getElementById('latitude_".$i."').value='';document.getElementById('longitude_".$i."').value='';"
            );
        
        }
        
        

        
        
        $jsToExecute="document.getElementById('formAjoutDossier').action='".$this->creerUrl('ajoutNouveauDossier', '')."';testAdresseValideAndSubmit('formAjoutDossier');";
        $arrayJsCoordonneesFromGoogleMap = $googleMap->getJSMultipleRetriveCoordonnees(array('jsToExecuteIfOK'=>$jsToExecute), $configArrayRetrieveCoordonneesGoogleMap);
        $html.= $arrayJsCoordonneesFromGoogleMap['jsFunctionToExecute'];
        
        
        // **************************************************************************************
        // ***********************************************************************************
        // liste des courants architecturaux
        $resCourants =$this->connexionBdd->requete("select idCourantArchitectural, nom from courantArchitectural order by nom");
        $tableauHtml = new tableau();
        
        while ($fetchCourants = mysql_fetch_assoc($resCourants)) {
            $checked ="";
            if (isset($this->variablesPost["courantArchitectural"]) && in_array($fetchCourants["idCourantArchitectural"], $this->variablesPost["courantArchitectural"])) {
                $checked = " checked";
            }
            
            $tableauHtml->addValue("<input type='checkbox' name='courantArchitectural[]' value='".$fetchCourants["idCourantArchitectural"] ."' ".$checked.">&nbsp;".$fetchCourants['nom']); 
        }
        
        $t->assign_vars(array('listeCourantsArchitecturaux'=>$tableauHtml->createHtmlTableFromArray(3, 'white-space:nowrap;border:1px solid #000000;', 'listeCourantsArchitecturaux')));
        if ($type=="adresse") {
            $t->assign_block_vars("afficheAjoutEvenement.isAddress", array());
            // ***********************************************************************************
            // les des types de structures
            $resTypeStructure=$this->connexionBdd->requete("SELECT idTypeStructure,  nom FROM typeStructure order by nom");
            while ($fetchTypeStructure = mysql_fetch_assoc($resTypeStructure)) {
                $selected="";
                if ($typeStructure!='' && $typeStructure==$fetchTypeStructure["idTypeStructure"] || ($typeStructure=="" && $fetchTypeStructure["idTypeStructure"]==$this->getIdTypeStructureImmeuble())) {
                    $selected=" selected";
                }
                if ($fetchTypeStructure["idTypeStructure"]>0) {
                    $t->assign_block_vars(
                        'afficheAjoutEvenement.isAddress.typesStructure',
                        array(
                            'id'=>$fetchTypeStructure["idTypeStructure"], 
                            'nom'=>$fetchTypeStructure["nom"], 
                            'selected'=>$selected
                        )
                    );
                }
            }
        }
        
        
        // ***********************************************************************************
        // le type de groupe d'evenement
        // 1 - culturel
        // 2 - travaux
        if ($groupeTypeEvenement=='2') {
             $t->assign_vars(array('checkedTypeEvenement2'=>" checked"));
             $t->assign_vars(array('styleChampsSupplementaireCulturel'=>"display:none;", 'styleChampsSupplementaireTravaux'=>"display:block;"));
             
        } elseif ($groupeTypeEvenement=='1') {
             $t->assign_vars(array('checkedTypeEvenement1'=>" checked"));
             $t->assign_vars(array('styleChampsSupplementaireCulturel'=>"display:table-row;", 'styleChampsSupplementaireTravaux'=>"display:none;"));
        }
        
        $t->assign_vars(array('onClickTypeEvenement1'=>"appelAjax('".$this->creerUrl('', 'afficheSelectTypeEvenement', array('noHeaderNoFooter'=>1, 'archiTypeGroupeEvenement'=>'1'))."', 'typeEvenement');document.getElementById('afficheChampsSupplementairesCulturel').style.display='block';document.getElementById('afficheChampsSupplementairesTravaux').style.display='none';"));
        $t->assign_vars(array('onClickTypeEvenement2'=>"appelAjax('".$this->creerUrl('', 'afficheSelectTypeEvenement', array('noHeaderNoFooter'=>1, 'archiTypeGroupeEvenement'=>'2'))."', 'typeEvenement');document.getElementById('afficheChampsSupplementairesTravaux').style.display='block';document.getElementById('afficheChampsSupplementairesCulturel').style.display='none';"));
            
        if ($type=="adresse") {
            // ***********************************************************************************
            // les type d'evenements
            // par defaut on selectionne le typeEvenement=2 (travaux)
            $resTypeEvenement = $this->connexionBdd->requete("SELECT idTypeEvenement, nom FROM typeEvenement where groupe = '".$groupeTypeEvenement."'");
            
            while ($fetchTypeEvenement = mysql_fetch_assoc($resTypeEvenement)) {
                $selected="";
                if ($typeEvenement!="" && $typeEvenement==$fetchTypeEvenement["idTypeEvenement"]) {
                    $selected = "selected";
                }

                $t->assign_block_vars(
                    'afficheAjoutEvenement.isAddress.typesEvenement',
                    array(
                        'id'=>$fetchTypeEvenement['idTypeEvenement'], 
                        'nom'=>$fetchTypeEvenement['nom'], 
                        'selected'=>$selected
                    )
                );
            }
        }
        
        // ***********************************************************************************
        // ISMH   (inscrit au s des monuments historiques)
        // MH (monument historique)
        if ($ISMH)
            $t->assign_vars(array('ISMHchecked'=>' checked'));
        
        if ($MH)
            $t->assign_vars(array('MHchecked'=>' checked'));
        
        // ***********************************************************************************
        
        
        // ***********************************************************************************
        // autre cas pour l'affichage du champ numeroArchive ,  il faut que l'utilisateur soit autorisé à l'afficher => table utilisateur
        $utilisateur = new archiUtilisateur();
        if ($utilisateur->canChangeNumeroArchiveField(array('idUtilisateur'=>$authentification->getIdUtilisateur()))) {
            $t->assign_block_vars('afficheAjoutEvenement.canChangeNumeroArchive', array());
        } else {
            $t->assign_block_vars('afficheAjoutEvenement.noChangeNumeroArchive', array());
        }
        // ***********************************************************************************
        // idem champ dateFin
        
        if ($utilisateur->canChangeDateFinField(array('idUtilisateur'=>$authentification->getIdUtilisateur()))) {
            $t->assign_block_vars('afficheAjoutEvenement.canChangeDateFin', array());
        } else {
            $t->assign_block_vars('afficheAjoutEvenement.noChangeDateFin', array());
        }
        
        
        
        
        
        
        $recherche = new archiRecherche();
        $source = new archiSource();
        
        $onClickBoutonValider=$type=="adresse"?"affichePopupAttente();".$arrayJsCoordonneesFromGoogleMap['jsFunctionCall']:"";
        $typeBoutonValidation=$type=="adresse"?"button":"submit";
        
        $t->assign_vars(
            array(
                'formAction'                    => $this->creerUrl($formAction), 
                
                'popupCalendrier'                => $this->getPopupCalendrier(), 
                
                'popupVilles'                    => $this->getPopupChoixVille('nouveauDossier'), 
                
                'popupRues'                        => $this->getPopupChoixRue('nouveauDossier'), 
                
                'popupSources'                    => $recherche->getPopupChoixSource('nouveauDossier'), 
                
                'popupPersonnes'                => $recherche->getPopupChoixPersonne('nouveauDossier'), 
                
                'onClickBoutonAjouterAdresse'            => "document.getElementById('formAjoutDossier').action='".$this->creerUrl('', 'ajoutNouveauDossier')."'",                                     
                'onClickBoutonEnleverAdresse'            => "document.getElementById('formAjoutDossier').action='".$this->creerUrl('', 'ajoutNouveauDossier')."'", 
                
                'onClickBoutonValider'                  => $onClickBoutonValider,
                'typeBoutonValidation'=>$typeBoutonValidation,
                'onClickBoutonChoixVille'        =>"document.getElementById('paramChampAppelantVille').value='ville';document.getElementById('calqueVille').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueVille').style.display='block';", 
                'onChangeListeQuartier'            =>"appelAjax('".$this->creerUrl('', 'afficheSelectSousQuartier', array('noHeaderNoFooter'=>1))."&archiIdQuartier='+document.getElementById('quartiers').value, 'listeSousQuartier')", 
                
                'onClickBoutonChoisirSource'     =>"document.getElementById('paramChampsAppelantSource').value='source';document.getElementById('calqueSource').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueSource').style.display='block';", 
                
                'onClickChoixPersonne'            =>"document.getElementById('paramChampsAppelantPersonne').value='personnes';document.getElementById('calquePersonne').style.top=(getScrollHeight()+150)+'px';document.getElementById('calquePersonne').style.display='block';", 
                
                'onClickDateDebut'                =>"document.getElementById('paramChampAppelantDate').value='dateDebut';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDate').style.display='block';", 
                
                'onClickDateFin'                =>"document.getElementById('paramChampAppelantDate').value='dateDebut';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('paramChampAppelantDate').value='dateFin';document.getElementById('calqueDate').style.display='block';", 
                

                'popupAttente'=>$this->getPopupAttente()
            )
        );//document.getElementById('formAjoutDossier').action='".$this->creerUrl('ajoutNouveauDossier', '')."';testAdresseValideAndSubmit('formAjoutDossier');
        
        // ******************************************************************************************************************************
        // on recupere les messages d'aide contextuelle et on les affiche : 
        $helpMessages = $this->getHelpMessages("helpEvenement");
        
        foreach ($helpMessages as $fieldName => $helpMessage) {
            $t->assign_vars(array($fieldName=>$helpMessage));
        }
        
        // ******************************************************************************************************************************
        
        ob_start();
        $t->pparse('nouveauDossier');
        $html.=ob_get_contents();
        ob_end_clean();

        return $html;
    }
395619
public static function getInstance()
    {
        // Il y a visiblement un soucis sur php7, lorsqu'on accede à
        // static::$instance, la variable est globale alors qu'elle devrait dépendre du context d'où elle est appelée
        $name = get_called_class();
        if (!array_key_exists($name, self::$instance)) {
            self::$instance[$name] = new static();
        }
        return self::$instance[$name];
    }
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;
    }
1231360
public function enregistreEntreeSondage()
	{
		if (isset($this->variablesPost['choixSondage']) && is_array($this->variablesPost['choixSondage'])) {
			if (count($this->variablesPost['choixSondage'])>0) {
				// on verifie que la personne n'a pas encore fait de proposition aujourd'hui
				$ip = $_SERVER['REMOTE_ADDR'];
				if ($ip!='') {
					$reqVerif = "SELECT idResultat FROM sondagesResultats WHERE ip like '$ip' AND date=CURDATE()";
					$resVerif = $this->connexionBdd->requete($reqVerif);
					if (mysql_num_rows($resVerif)>0) {
						echo "<br><span style='color:red;'>"._("Votre participation a déjà été enregistrée.")."</span><br>";
					} else {
						// enregistrement
						foreach ($this->variablesPost['choixSondage'] as $indice => $idProposition) {
							$reqInsert = "INSERT INTO sondagesResultats (idSondage, date, ip, idProposition) VALUES ('1', now(), '".$ip."', '".$idProposition."')";
							$resInsert = $this->connexionBdd->requete($reqInsert);
						}
					}
				} else {
					echo "<br><span style='color:red;'>"._("Votre vote n'a pas pu être enregistré.")."</span><br>";
				}
			} else {
				echo "<br><span style='color:red;'>"._("Vous n'avez selectionné aucune proposition.")."</span><br>";
			}
		}
	}
896373
protected function doExecute() {

        $container = $this->getContainer();

        // On affecte le logger si besoin.
        if ($container->has('logger')) {
            $this->setLogger($container->get('logger'));
        }

        // Config
        $container->get('config')->merge($this->config);
        $this->setConfiguration($container->get('config'));

        // On récupère la session.
        $session = $container->get('session');
        $this->setSession($session);

        // On nettoie les veilles sessions
        $this->sessionCleanUp();

        // On démarre la session.
        $session->start();

        // Si c'est une requête pour garder en vie la session, on peut quitter ici.
        if ($this->input->get('stayAlive', false, 'bool') === true) {
            echo "1";
            $this->close();
        }

        // On initialise l'état utilisateur.
        if ($session->isNew() || $session->get('state') === null) {
            $session->set('state', new Registry);
        }

        // On tente d'auto-connecter l'utilisateur.
        $this->loginWithCookie();

        // On personnalise l'environnement suivant l'utilisateur dans la session.
        $user = $session->get('user');
        if ($user) {

            $language = $user->params->get('language');
            $helper   = new LanguageHelper;

            // On s'assure que la langue de l'utilisateur existe.
            if ($language && $helper->exists($language, JPATH_ROOT)) {
                $this->set('language', $language);
            }

            $timezone = $user->params->get('timezone');
            if ($timezone) {
                $this->set('timezone', $timezone);
            }

        }

        // On définit le fuseau horaire.
        @date_default_timezone_set($this->get('timezone', 'Europe/Paris'));

        // On récupère le controller.
        $controller = $this->route();

        // On contrôle si l'utilisateur doit changer son mot de passe.
        $this->checkUserRequireReset($controller);

        // On redirige en HTTPS si besoin.
        /*if ($this->get('force_ssl') && !$this->isSSLConnection() && $controller->isSSLEnabled()) {
            $uri = new Uri($this->get('uri.request'));
            $uri->setScheme('https');
            $this->redirect((string)$uri);
        }*/

        // On sauvegarde le controller actif.
        $this->_activeController = strtolower($controller->getName());

        try {

            $profiler = $this->container->has('profiler') ? $this->container->get('profiler') : false;

            if ($profiler) {
                $profiler->mark('beforeControllerExecute');
            }

            // On exécute la logique du controller et on récupère le résultat.
            $result = $controller->execute();

            if ($profiler) {
                $profiler->mark('afterControllerExecute');
            }

            // On effectue le rendu de la page avec le résultat.
            $this->render($result);

        } catch (\Exception $e) {
            $this->raiseError($e->getMessage(), $e->getCode(), $e);
        }

    }
828237
public function gestionSondage($params = array())
	{
		$t = new Template($this->getCheminPhysique().$this->cheminTemplates);

		if (isset($params['modeAffichage']) && $params['modeAffichage']=='resultatAccueil') {
			$t->set_filenames(array('sondage'=>'sondageRESULTAT.tpl'));
		} else {
			$t->set_filenames(array('sondage'=>'sondageTEMPORAIRE.tpl'));


			$c = new calqueObject();
			$t->assign_vars(
					array('jsScroll'=>$c->getJsScrollDivWithPage(
							array(
									'conditionsToScrollBegin'=>"if ((document.getElementById('texteSuite').style.display=='block' && y_<4650) || (document.getElementById('texteSuite').style.display=='none' && y_<100))",
									'identifiantDivToScroll'=>"divScroll"
							)
					))
			);

			// verification : est ce que la personne a deja participé aujourd'hui
			$ip = $_SERVER['REMOTE_ADDR'];
			if (trim($ip)=='') {
				// on assigne une ip temporaire,  soit un nombre aleatoire pour pouvoir comptabiliser le vote quand meme ,  on pourra toujours les supprimer si quelqu'un exagere
				$ip = rand(0, 1000000);
			}

			$reqVerif = "SELECT idResultat FROM sondagesResultats WHERE ip like '$ip' AND date=CURDATE()";
			$resVerif = $this->connexionBdd->requete($reqVerif);
			if ( isset($params['modeAffichage']) && $params['modeAffichage']=='noFormulaire' || mysql_num_rows($resVerif)>0) {
				$t->assign_block_vars('resultatsSondage', array('resultats'=>$this->afficheResumeSondage(array('idSondage'=>1))));
			} else {
				// nouvelle participation
				// recuperation des propositions
				$reqPropositions = "SELECT idProposition, libelleProposition FROM sondagesPropositions WHERE idSondage='1'";
				$resPropositions = $this->connexionBdd->requete($reqPropositions);
				$t->assign_block_vars('afficheFormSondage', array());
				while ($fetchPropositions = mysql_fetch_assoc($resPropositions)) {
					$t->assign_block_vars('afficheFormSondage.propositions', array('idProposition'=>$fetchPropositions['idProposition'], 'libelleProposition'=>$fetchPropositions['libelleProposition']));
				}


				$t->assign_vars(array('formAction'=>$this->creerUrl('enregistrerEntreeSondage', 'afficheAccueil')));

			}
		}

		if (isset($params['afficheToutLeTexte']) && $params['afficheToutLeTexte']==true) {
			$displaySuite = "block";
			$styleAccueil = "";
			$lienSuite = "";
		} else {
			$displaySuite = "none";
			$styleAccueil = "border:3px solid #000000;padding:5px;";
			if (isset($params['modeAffichage']) && $params['modeAffichage']=='resultatAccueil') {
				$lienSuite = "<a href='".$this->creerUrl('', 'afficheSondageResultatGrand')."'>"._("Lire la suite")."</a>";
			} else {
				$lienSuite = "<a href='".$this->creerUrl('', 'afficheSondageGrand')."'>"._("Lire la suite")."</a>";
			}
		}

		if (isset($params['modeAffichage']) && $params['modeAffichage']=='resultatAccueil') {

			$t->assign_vars(
					array(
							'pictoSrc'=>'',
							'displaySuite'=>$displaySuite,
							'lienSuite'=>$lienSuite,
							'styleAccueil'=>$styleAccueil,
							'urlIconePdf'=>$this->urlImages.'logo_pdf.jpg',
							'urlDocumentPdf'=>$this->urlImages.'publicite/avenirFinancementArchiStrasbourg.pdf',
							'resultats'=>$this->afficheResumeSondage(array('idSondage'=>1)),
							'urlArticlePresentation'=>$this->creerUrl('', 'afficheSondageGrand')
					)
			);
		} else {
			$t->assign_vars(
					array(
							'pictoSrc'=>$this->urlImages.'pictoSondage.jpg',
							'displaySuite'=>$displaySuite,
							'lienSuite'=>$lienSuite,
							'styleAccueil'=>$styleAccueil,
							'urlIconePdf'=>$this->urlImages.'logo_pdf.jpg',
							'urlDocumentPdf'=>$this->urlImages.'publicite/avenirFinancementArchiStrasbourg.pdf'
					)
			);
		}

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


		return $html;
	}