ATTENTION : Il faut faire un echo pour l'affichage !
10255
public static function showGlyph($glyphName, $type = 'fas', $color = '', $params = '') {

		// Récupération du type par défaut
		if ($type == null) {	$type = 'fas';	}

		// Préparation de la variable à retourner
		$glyphMessage = "";

		if (empty($color)) {
			if (!empty($params)) {
				$glyphMessage = '<i class="'.$type.' fa-'.$glyphName.'" style=\''.$params.'\'></i>';
			} else {
				$glyphMessage = '<i class="'.$type.' fa-'.$glyphName.'"></i>';
			}
		} else {
			if (!empty($params)) {
				$glyphMessage = '<i class="'.$type.' fa-'.$glyphName.'" style=\'color:'.$color.';'.$params.'\'></i>';
			} else {
				$glyphMessage = '<i class="'.$type.' fa-'.$glyphName.'" style=\'color:'.$color.'\'></i>';
			}
		}

		return $glyphMessage;
	}
1044362
def cmd_echo(self, connection, sender, target, payload):
        
        connection.privmsg(target, payload or "Hello, {0}".format(sender))
1356909
public function ajouter()
    {
        $newIdPersonne=0;
        $formulaire = new formGenerator();
        if (isset($this->variablesPost['submit'])) {
            $modeAffichage='';
            if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage']!='') {
                $modeAffichage = $this->variablesGet['modeAffichage'];
            }


            switch ($modeAffichage) {
                case 'nouveauDossier':
                case "modifEvenement":
                    $tabForm = array(
                    'prenom'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'text'),
                    'nom'        => array('default'=> '',  'value' => '',  'required'=>true, 'error'=>'', 'type'=>'text'),
                    'description'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'text'),
                    'dateNaissance'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'date'),
                    'dateDeces'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'date'),
                    'metier'    => array('default'=> 'aucune' ,  'value' => '',  'required'=>false , 'error'=>'', 'type'=>'numeric',  'checkExist'=>
                                    array('table'=> 'metier',  'primaryKey'=> 'idMetier')));

                    break;

                default:
                    $tabForm = array(
                    'prenom'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'text'),
                    'nom'        => array('default'=> '',  'value' => '',  'required'=>true, 'error'=>'', 'type'=>'text'),
                    'description'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'text'),
                    'nouveauMetier'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'text'),
                    'dateNaissance'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'date'),
                    'dateDeces'    => array('default'=> '',  'value' => '',  'required'=>false, 'error'=>'', 'type'=>'date'),
                    'metier'    => array('default'=> 'aucune' ,  'value' => '',  'required'=>false , 'error'=>'', 'type'=>'numeric',  'checkExist'=>
                                    array('table'=> 'metier',  'primaryKey'=> 'idMetier')));

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

            if (count($erreur) === 0) {
                $prenom = mysql_escape_string($tabForm['prenom']['value']);
                $nom    = mysql_escape_string($tabForm['nom']['value']);
                $description   = isset($_POST['descriptionPerson'])?mysql_escape_string($_POST['descriptionPerson']):mysql_escape_string(htmlspecialchars($tabForm['description']['value']));
                $dateNaissance = $this->date->toBdd($this->date->convertYears($tabForm['dateNaissance']['value']));
                $dateDeces     = $this->date->toBdd($this->date->convertYears($tabForm['dateDeces']['value']));

                /*if (!empty($tabForm['nouveauMetier']['value']))
                {
                    // nouveau metier
                    $nomMetier = mysql_escape_string($tabForm['nouveauMetier']['value']);
                    $sql = "SELECT idMetier FROM metier WHERE nom='".$nomMetier."' LIMIT 1";
                    $rep = $this->connexionBdd->requete($sql);
                    if (mysql_num_rows($rep) === 1)
                    {
                        $res = mysql_fetch_object($rep);
                        $idMetier = $res->idMetier;
                        echo "métier existe";
                    }
                    else
                    {
                        $sql = "INSERT INTO metier (nom) VALUES ('".$nomMetier."')";
                        $this->connexionBdd->requete($sql);
                        $idMetier = mysql_insert_id();
                        echo 'métier existe pas';
                    }
                }
                else if (empty($tabForm['metier']['error']) AND !empty($tabForm['metier']['value']))
                {*/
                    // valeur du select
                    $idMetier      = $tabForm['metier']['value'];
                    //echo 'métier select';
                /*}
                else
                {
                    // choix par défaut
                    $idMetier = 1;
                    echo 'défaut';
                }*/
                $sql ="INSERT INTO personne (prenom,  nom,  dateNaissance,  dateDeces,  description,  idMetier ) VALUES
                    ('".$prenom."', '".$nom."', '".$dateNaissance."', '".$dateDeces."', '".$description."', ".$idMetier.")";


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

                $newIdPersonne = mysql_insert_id();
            } else {
                $this->erreurs->ajouter($tabForm);
            }
            $this->erreurs->ajouter($tabForm);
        }

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

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

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

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

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


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


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

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

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

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

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

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

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

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


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



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

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

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


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


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

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

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


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

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




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

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

                    $ajoutOk = true;
                }

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

        return $html;
    }
420296
public function afficherListeAlphabetique($affichage = '', $lettreCourante = 'a', $tableauLettres = array())
    {
        $html="";
        $t = new Template('modules/archi/templates/');
        $t->set_filenames((array('listeAlpha'=>'listeAlphabetique.tpl')));

        //$liste = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
        $liste = $tableauLettres;

        foreach ($liste as $indice => $value) {
            $t->assign_block_vars('lettres', array('url'=>$this->creerUrl('', '', array_merge($this->variablesGet, array('archiAction'=>'',  'alphaPersonne'=>$value, 'archiPagePersonne'=>'1', 'archiAffichage'=>$affichage))), 'lettre'=>$value));
        }

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

        return $html;
    }
292714
public function getHTML()
    {

            $html="<div id='".$this->googleMapNameId."' style='width: ".$this->googleMapWidth."px; height: ".$this->googleMapHeight."px; ".$this->divStyle."'>Veuilliez patienter pendant le chargement de la carte...</div>";

        //$html.="<script  >";
        /*
        if (count($this->coordonnees)>0) {
            foreach ($this->coordonnees as $indice => $value) {
                if (isset($value['link'])) {
                    $html.="tabAdresses[".$indice."]=\"".$value['link']."\";\n";
                }
            }
        }

        $html.="</script>";
        $html.="<div id='".$this->googleMapNameId."' style='width: ".$this->googleMapWidth."px; height: ".$this->googleMapHeight."px;'>Veuilliez patienter pendant le chargement de la carte...</div>";

        if ($this->debugMode)
            $displayDebug='block';
        else
            $displayDebug='none';

        $html.="<div style='width:500px; height:300px;overflow:scroll;display:".$displayDebug.";' id='debugGoogleMap'></div>";
        $html.="<script  >load();</script>";

        // fonction appelant les affichages de coordonnées ,  appels regroupées dans une fonction qui groupe les coordonnées par paquet ,  afin de ne pas trop en envoyer a la fois
        if (count($this->coordonnees)>0) {
            $html.="<script  >";
            $html.="var numPaquet=0;\n";
            $html.="var timer;\n";
            $html.="startTimerPaquets();\n";
            $html.="function startTimerPaquets()\n";
            $html.="{";
            $html.="afficheCoordonneesParPaquets();\n";
            $html.="timer = setInterval(\"afficheCoordonneesParPaquets()\", ".$this->setTimeOutPaquets.");\n";
            $html.="}\n";

            $html.="function afficheCoordonneesParPaquets(){\n";
            $i=0;
            $numPaquet = 0;
            foreach ($this->coordonnees as $indice => $value) {
                $image = ", \"http://www.google.com/mapfiles/marker.png\"";//
                if (isset($value['imageFlag']) && $value['imageFlag']!='') {
                    $image = ", \"".$value['imageFlag']."\"";
                }

                if ($i%10==0) {
                    $html.="if (numPaquet==".$numPaquet.")\n";
                    $html.="{\n";
                    $iDebut = $i;
                }

                $html.=" getCoordonnees(\"".$value['adresse']."\", ".$indice." ".$image.");\n";

                if ($i==$iDebut+9 || $i==count($this->coordonnees)-1 ) {
                    $html.="}\n";
                    $numPaquet++;
                }
                $i++;
            }


            $html.="if (numPaquet>".$numPaquet.")\n";
            $html.="{\n";
            $html.="clearInterval(timer);\n";
            $html.="}\n";
            $html.="numPaquet++;\n";
            $html.="}\n";
            $html.="</script>";
        }
        */

        /*
        if ($this->debugMode)
            $displayDebug='block';
        else
            $displayDebug='none';
            */
        //$html.="<div style='width:500px; height:300px;overflow:scroll;display:".$displayDebug.";' id='debugGoogleMap'></div>";
        $html.="<script  >load();</script>";
        $html.="<script  >";
        if (isset($params['urlImageIcon']) && isset($params['pathImageIcon'])) {
            $urlImage = $params['urlImageIcon'];

            list($imageSizeX,  $imageSizeY,  $typeImage,  $attrImage) = getimagesize($params['pathImageIcon']);

            $html.="
                var icon = new GIcon();
                //icon.image = image;


                icon.image = \"$urlImage\";
                //icon.shadow = \"https://labs.google.com/ridefinder/images/mm_20_shadow.png\";
                icon.iconSize = new GSize($imageSizeX,  $imageSizeY);
                icon.shadowSize = new GSize(22,  20);
                icon.iconAnchor = new GPoint(2,  24);
                icon.infoWindowAnchor = new GPoint(5,  1);
                var iconMarker = new GIcon(icon);
            ";
        } else {
            $html.="
                var icon = new GIcon();
                //icon.image = image;
                var iconMarker = new GIcon(icon);

                icon.image = \"https://labs.google.com/ridefinder/images/mm_20_red.png\";
                //icon.shadow = \"https://labs.google.com/ridefinder/images/mm_20_shadow.png\";
                icon.iconSize = new GSize(30,  24);
                icon.shadowSize = new GSize(22,  20);
                icon.iconAnchor = new GPoint(2,  24);
                icon.infoWindowAnchor = new GPoint(5,  1);
            ";
        }
        $html.="</script>";

        if (isset($params['listeCoordonnees'])) {
            $html.="<script  >";
            foreach ($params['listeCoordonnees'] as $indice => $values) {
                $html.="

                    point$indice = new GLatLng(".$values['latitude'].", ".$values['longitude'].");
                    marker$indice = new GMarker(point$indice, iconMarker);
                    overlay$indice = map.addOverlay(marker$indice);
                    //marker$indice.openInfoWindowHtml(\"".$values['libelle']."\");

                    ";

                if (isset($values['jsCodeOnClickMarker'])) {
                    $html.="
                            function onClickFunction$indice(overlay,  point){".$values['jsCodeOnClickMarker']."}";

                    $html.="GEvent.addListener(marker$indice,  'click',  onClickFunction$indice);";
                }

                if (isset($values['jsCodeOnMouseOverMarker'])) {
                    $html.="function onMouseOverFunction$indice(overlay, point){".$values['jsOnMouseOverMarker']."}";
                    $html.="GEvent.addListener(marker$indice, 'mouseover', onMouseOverFunction$indice);";

                }

                if (isset($values['jsCodeOnMouseOutMarker'])) {
                    $html.="function onMouseOutFunction$indice(overlay, point){".$values['jsCodeOnMouseOutMarker']."}";
                    $html.="GEvent.addListener(marker$indice, 'mouseout', onMouseOutFunction$indice);";

                }

            }
            $html.="</script>";
        }



        return $html;
    }
823382
public function handle()
    {
        $tables = $this->option('table');
        $preview = $this->option('preview');

        // Construit les instances des modèles
        $models = $this->builder->getModels();

        if ($preview) {
            $this->error('Preview mode: files are not touched');
        }

        // Lance la création/modification des fichiers
        foreach ($models as $model) {
            if ($model->isIgnored()
                || $tables && !in_array($model->getTable(), $tables)) {

                continue;
            }

            $this->generateModel($model, $preview);
            $this->generateModelRelations($model->getRelations(), $preview);
        }
    }
100869
public function afficherListe($criteres = array(), $modeAffichage = '')
    {
        $html="";




        $html.="<script  >

            function insertOptionInSelect(idSelect, OptionValue, libelleValue)
            {
                nbElems = idSelect.options.length;
                idSelect.options[nbElems] = new Option(libelleValue, OptionValue);
                idSelect.options[nbElems].selected=true;
            }
            </script>
        ";

        $isResultatRecherche = false;
        $sqlMotCle = "";
        if (isset($this->variablesGet['motCle']) && $this->variablesGet['motCle']!='') {
            $sqlMotCle = " AND CONCAT(p.prenom, ' ', p.nom, ' ', p.description) LIKE \"%".mysql_real_escape_string($this->variablesGet['motCle'])."%\"";


            $isResultatRecherche = true;
        }






        $t = new Template('modules/archi/templates/');
        $t->set_filenames((array('personnesListe'=>'listePersonnes.tpl')));


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


        //newIdPersonneAdded
        switch ($modeAffichage) {
            case "nouveauDossier":
            case "modifEvenement":
                // si c'est un affichage apres un ajout ,  on renvoi le nouvel element au formulaire
                if (isset($criteres['newIdPersonneAdded']) && $criteres['newIdPersonneAdded']!='0') {
                    /*$t->assign_vars(array('codeJavascriptReturnNewElementAjoute'=>"
                    parent.document.getElementById(parent.document.getElementById('paramChampsAppelantPersonne').value).innerHTML+='<option value=".$criteres['newIdPersonneAdded']." selected>".$this->getPersonneLibelle($criteres['newIdPersonneAdded'])."</option>';
                    "));
                    */

                    $t->assign_vars(array('codeJavascriptReturnNewElementAjoute'=>"insertOptionInSelect(parent.document.getElementById(parent.document.getElementById('paramChampsAppelantPersonne').value), '".$criteres['newIdPersonneAdded']."', '".str_replace("'", "\'", $this->getPersonneLibelle($criteres['newIdPersonneAdded']))."')"));
                }
                break;

            default:
                break;
        }







        // analyse des criteres
        $sqlLettreCourante = '';

        // récupération du nombre de résultats par lettres
        $tabLettres = array();
        $sqlComptageResultat = 'SELECT LOWER(SUBSTRING(p.nom,  1, 1)) AS lettre FROM personne p
            WHERE 1 GROUP BY LOWER(SUBSTRING(p.nom,  1, 1))';
        $rep = $this->connexionBdd->requete($sqlComptageResultat);
        while ($res = mysql_fetch_object($rep)) {
            $tabLettres[] = $res->lettre;
        }

        // si aucune lettre n'est précisée,  on indique la première lettre ayant des résultats
        // si le tableau de lettres est défini
        // et que la première lettre n'existe pas ou que la première lettre n'existe pas dans le tableau
        if (count($tabLettres) > 0 and  (!isset($criteres['alphaPersonne']) or (!in_array($criteres['alphaPersonne'], $tabLettres)))) {
            $criteres['alphaPersonne'] = $tabLettres[0];
        }

        if (isset($criteres['alphaPersonne']) && !$isResultatRecherche) {
            $sqlLettreCourante = " AND LOWER(SUBSTRING(p.nom, 1, 1)) = '".$criteres['alphaPersonne']."' ";
        }

        $nbEnregistrementsParPage='5';
        if (isset($criteres['nbEnregistrements'])) {
            $nbEnregistrementsParPage=$criteres['nbEnregistrements'];
        }

        $debutEnregistrement = '0';
        if (isset($criteres['archiPagePersonne'])) {
            $debutEnregistrement = ($criteres['archiPagePersonne']-1)*$nbEnregistrementsParPage;
        }



        if (!$isResultatRecherche) {
            $t->assign_vars(array('listeAlphabetique' => $this->afficherListeAlphabetique('personneListe', '', $tabLettres))); // 'personneListe' correspond au cas d'affichage de index.php
        }

        $t->assign_vars(
            array(
                'urlAjout'=> $this->creerUrl('', 'afficherAjouterPersonne', array('noHeaderNoFooter'=>1, 'modeAffichage'=>$modeAffichage)),
                'urlRecherchePersonne' => $this->creerUrl('', 'personneListe'),
                'modeAffichage'=>$modeAffichage,
                'archiAffichage'=>'personneListe'
            )
        ); // pour urlRecherchePersonne,  noHeaderNoFooter et modeAffichage sont dans le formulaire en hidden vu que les variables du formulaire sont transmises en GET



        $reqNbPersonnes = "
                            SELECT 0
                            FROM personne p
                            WHERE 1=1
                            ".$sqlLettreCourante."
                            ".$sqlMotCle."
                                    ";

        $resNbPersonnes = $this->connexionBdd->requete($reqNbPersonnes);

        $nbEnregistrementTotaux = mysql_num_rows($resNbPersonnes);

        // nombre d'images affichées sur une page
        $nbEnregistrementsParPage = 5;
        $arrayPagination=$this->pagination(
            array(
                'nomParamPageCourante'=>'archiPageCourantePersonne',
                'nbEnregistrementsParPage'=>$nbEnregistrementsParPage,
                'nbEnregistrementsTotaux'=>$nbEnregistrementTotaux,
                'typeLiens'=>'noformulaire'
            )
        );


        $t->assign_vars(array('pagination'=>$arrayPagination['html']));

        // recuperation du nombre de personne de la lettre courante ,  pour les numeros de pages
        $reqPersonnes = "
            SELECT p.idPersonne as idPersonne,  m.nom as metier,  p.nom as nom,  p.prenom as prenom,  p.dateNaissance as dateNaissance,  p.dateDeces as dateDeces,  p.description as description
            FROM personne p
            LEFT JOIN metier m ON m.idMetier = p.idMetier
            WHERE 1=1
            ".$sqlLettreCourante."
            ".$sqlMotCle."
            ORDER BY p.nom
            LIMIT ".$arrayPagination['limitSqlDebut'].", ".$nbEnregistrementsParPage;



        $resPersonnes=$this->connexionBdd->requete($reqPersonnes);
        $nbEnregistrements = mysql_num_rows($resPersonnes);

        // recuperation du nombre de pages a afficher

        if ($nbEnregistrements > $nbEnregistrementsParPage) {
            if ($nbEnregistrements%$nbEnregistrementsParPage!=0) {
                // on prend la partie entiere de la division + 1

                $nbPages = intval($nbEnregistrements/$nbEnregistrementsParPage)+1;
            } else {
                $nbPages = $nbEnregistrements/$nbEnregistrementsParPage;
            }

            for ($i=1; $i<=$nbPages; $i++) {
                switch ($modeAffichage) {
                    case "nouveauDossier":
                    case "modifEvenement":
                        $t->assign_block_vars(
                            'pages',
                            array(
                            'page'=>$i,
                            'url'=>$this->creerUrl('', '', array_merge($this->variablesGet, array('archiPagePersonne'=>$i, 'archiAffichage'=>'afficheRecherchePersonnePopup'))),
                            'onclick'=>""
                            )
                        );
                        break;
                    default:
                        $t->assign_block_vars(
                            'pages',
                            array(
                            'page'=>$i,
                            'url'=>$this->creerUrl('', '', array_merge($this->variablesGet, array('archiPagePersonne'=>$i, 'archiAffichage'=>'personneListe'))),
                            'onclick'=>""
                            )
                        );
                        break;
                }
            }
        } else {
            $nbPages=1;
        }


        if ($nbEnregistrements>0) {
            mysql_data_seek($resPersonnes, $debutEnregistrement);
            $i=0;
            while ($i<$nbEnregistrementsParPage) {
                $fetchPersonne=mysql_fetch_assoc($resPersonnes);


                switch ($modeAffichage) {
                    case "nouveauDossier":
                    case "modifEvenement":
                        $t->assign_block_vars(
                            'personne',
                            array(
                            'nom'=>stripslashes($fetchPersonne['nom']),
                            'prenom'=>stripslashes($fetchPersonne['prenom']),
                            'metier'=>stripslashes($fetchPersonne['metier']),
                            'url'=>'#',
                            'onclick'=>"insertOptionInSelect(parent.document.getElementById('personnes'), '".str_replace("'", "\'", $fetchPersonne['idPersonne'])."', '".str_replace("'", "\'", $fetchPersonne['nom'])." ".str_replace("'", "\'", $fetchPersonne['prenom'])."')"
                            )
                        );
                        break;
                    default:
                        $t->assign_block_vars(
                            'personne',
                            array(
                            'url'=>$this->creerUrl('', 'personne', array('idPersonne'=>$fetchPersonne['idPersonne'])),
                            'nom'=>stripslashes($fetchPersonne['nom']),
                            'prenom'=>stripslashes($fetchPersonne['prenom']),
                            'metier'=>stripslashes($fetchPersonne['metier'])
                            )
                        );
                        break;
                }

                $i++;
            }
        } else {
            $t->assign_block_vars('noPersonne', array());
        }

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

        return $html;
    }
515141
public function setOnClickEvent($params = array())
    {
        // ajoute un evenement
        $html="<script langage='javascript'>";

        if (isset($params['jsCode'])) {
            //$html.="function onClickFunction(overlay,  point)";
            $html.="GEvent.addListener(map,  'click',  function(overlay,  point){if (point){".$params['jsCode']."}});";
        } else {
            // fonctions permettant de renvoyer l'adresse a partir du point cliqué sur la carte,  on enleve le numero de l'adresse par javascript pour n'avoir que la rue
            $html.="
                function IsNumeric(input) {
                   return (input - 0) == input && input.length > 0;
                }

                function convertToUrlAdressSeach(str) {
                    var stop = false;
                    var posIni=0;
                    i=0;
                    if (IsNumeric(str.charAt(0)))
                    {
                        for(i=0; i<str.length && !stop ; i++)
                        {
                            if ( str.charAt(i)==' ')
                            {
                                stop=true;
                                posIni = i;

                            }
                        }
                    }

                    return str.substring(i, str.length);
                }


                function showAddress(response) {
                  map.clearOverlays();
                  if (!response || response.Status.code != 200) {
                    alert('Status Code:' + response.Status.code);
                  } else {
                    place = response.Placemark[0];
                    point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
                    marker = new GMarker(point);
                    map.addOverlay(marker);
                    marker.openInfoWindowHtml(
                        '<b>orig latlng:</b>' + response.name + '<br/>' +
                        '<b>latlng:</b>' + place.Point.coordinates[1] + ', ' + place.Point.coordinates[0] + '<br>' +
                        '<b>Status Code:</b>' + response.Status.code + '<br>' +
                        '<b>Status Request:</b>' + response.Status.request + '<br>' +
                        '<b>Address:</b>' + place.address + '<br>' +
                        '<b>Accuracy:</b>' + place.AddressDetails.Accuracy + '<br>' +
                        '<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);

                        ".$params['jsAction']."
                        //ex : location.href = '?archiAffichage=recherche&submit=Rechercher&motcle='+convertToUrlAdressSeach(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName);


                        // place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName === 'Alsace'
                        // place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName === 'Bas Rhin'
                        // place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName === 'Strasbourg'
                        // place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName === '3 boulevard du president wilson'

                  }
                }


                map.disableDoubleClickZoom();
                GEvent.addListener(map,  'click',  function(overlay,  point){\n
                map.clearOverlays();\n
                if (point) {\n
                map.addOverlay(new GMarker(point));\n
                map.panTo(point);\n
                document.getElementById('debug').value = point.lat() + ' ' + point.lng();\n
                geocoder.getLocations(point,  showAddress);



            }});";
        }


        $html.="</script>";
        return $html;
    }
738473
public function getIntituleAdresseAccueil($fetch = array(), $params = array())
    {
        $titre="";
        $sqlGA="";
        $classCSS="";
        if (isset($fetch['idEvenementGroupeAdresse']) && $fetch['idEvenementGroupeAdresse']!='' && $fetch['idEvenementGroupeAdresse']!='0') {
            $sqlGA="AND ae.idEvenement = ".$fetch['idEvenementGroupeAdresse'];
        }

        if (isset($params['displayFirstTitreAdresse']) && $params['displayFirstTitreAdresse']==true || (isset($params['ifTitreAfficheTitreSeulement']) && $params['ifTitreAfficheTitreSeulement']==true)) {
            $classCSS='';
            if (isset($params['classCSSTitreAdresse'])) {
                $classCSS="class='".$params['classCSSTitreAdresse']."'";
            }

            // avec ce parametre , on va aller chercher le premier titre rencontré sur la liste des evenements du groupe d'adresse de l'adresse
            $idAdresse = $fetch['idAdresse'];


            $trouve = false;

            // on regarde d'abord s'il existe un titre pour le groupe d'adresse
            // vu qu'un evenement groupe d'adresse est unique , on ne va pas grouper dans la requete
            $reqVerif = "
			SELECT idEvenementRecuperationTitre
			FROM evenements he
			LEFT JOIN _adresseEvenement ae ON ae.idAdresse = $idAdresse
			WHERE he.idEvenement = ae.idEvenement
			$sqlGA
			";


            $resVerif = $this->connexionBdd->requete($reqVerif);
            if (mysql_num_rows($resVerif)>0) {
                $fetchVerif = mysql_fetch_assoc($resVerif);
                if ($fetchVerif['idEvenementRecuperationTitre']=='0') {
                    $trouve=false;
                } elseif ($fetchVerif['idEvenementRecuperationTitre']=='-1') {
                    $params['ifTitreAfficheTitreSeulement']=true;
                    $titre='';
                    $trouve=true;
                } elseif ($fetchVerif['idEvenementRecuperationTitre']!='0' && $fetchVerif['idEvenementRecuperationTitre']!='-1') {
                    $reqTitre = "
							SELECT he1.titre as titre
							FROM evenements he2, evenements he1
							WHERE he2.idEvenement = he1.idEvenement
							AND he1.idEvenement = '".$fetchVerif['idEvenementRecuperationTitre']."'
									GROUP BY he1.idEvenement
									";
                    $resTitre = $this->connexionBdd->requete($reqTitre);

                    $fetchTitre = mysql_fetch_assoc($resTitre);
                    $titre = "<span $classCSS>".stripslashes($fetchTitre['titre'])."</span> ";
                    $trouve=true;
                }
            }

            if (!$trouve) {
                $reqTitre = "
						SELECT he1.titre as titre
						FROM _adresseEvenement ae
						LEFT JOIN _evenementEvenement ee ON ee.idEvenement = ae.idEvenement
						LEFT JOIN evenements he1 ON he1.idEvenement = ee.idEvenementAssocie
						LEFT JOIN evenements he2 ON he2.idEvenement = he1.idEvenement
						WHERE he1.titre!=''
						AND he1.idTypeEvenement <>'6'
						AND ae.idAdresse = '".$idAdresse."'
						$sqlGA
						GROUP BY he1.idEvenement
						ORDER BY he1.dateDebut,he1.idEvenement
						LIMIT 1

						";
                $resTitre = $this->connexionBdd->requete($reqTitre);
                if (mysql_num_rows($resTitre)==1) {
                    $fetchTitre = mysql_fetch_assoc($resTitre);
                    $titre = "<span $classCSS>".stripslashes($fetchTitre['titre'])."</span> ";
                }
            }
        }



        $nomAdresse = "";
        if (isset($fetch['numero']) && $fetch['numero']!='' && $fetch['numero']!='0') {
            $nomAdresse .= $fetch['numero'];
        }


        // recherche de l'indicatif
        if (isset($fetch['idIndicatif']) && $fetch['idIndicatif']!='0') {
            $reqIndicatif = "SELECT nom FROM indicatif WHERE idIndicatif='".$fetch['idIndicatif']."'";
            $resIndicatif = $this->connexionBdd->requete($reqIndicatif);
            $fetchIndicatif = mysql_fetch_assoc($resIndicatif);

            $nomAdresse .=$fetchIndicatif['nom'];
        }

        if (isset($fetch['prefixeRue'])) {
            if (pia_substr($fetch['prefixeRue'], 0, pia_strlen($fetch['prefixeRue']))=="'") {
                $nomAdresse.=' '.$fetch['prefixeRue'].ucfirst($fetch['nomRue']);
            } else {
                $nomAdresse.=' '.$fetch['prefixeRue'].' '.ucfirst($fetch['nomRue']);
            }
        }

        if ((!isset($params['noQuartier']) || $params['noQuartier']==false) && $fetch['nomRue']=='') {
            if (isset($fetch['nomQuartier']) && $fetch['nomQuartier']!='autre') {
                if (isset($params['noQuartierCentreVille']) && $params['noQuartierCentreVille']==true && pia_strtolower($fetch['nomQuartier'])=="centre ville") {
                    //$nomAdresse .= ' '.ucfirst($fetch['nomQuartier']);
                } else {
                    $nomAdresse .= ' '.ucfirst($fetch['nomQuartier']);
                }
            }
        }

        if ((!isset($params['noSousQuartier']) || $params['noSousQuartier']==false) && $fetch['nomRue']=='') {
            if (isset($fetch['nomSousQuartier']) && $fetch['nomSousQuartier']!='autre') {
                $nomAdresse .= ' '.ucfirst($fetch['nomSousQuartier']);
            }
        }

        if (isset($fetch['nomVille']) && $fetch['nomRue']=='') { //  && $fetch['nomVille']!='Strasbourg'
            $nomAdresse.= ' '.ucfirst($fetch['nomVille']);
        }

        $nomAdresse = trim($nomAdresse);

        $retour="";
        if (isset($params['ifTitreAfficheTitreSeulement']) && $params['ifTitreAfficheTitreSeulement']==true && $titre!='' && $titre!="<span $classCSS></span> ") {
            $retour = $titre;
        } else {
            if ($titre=="<span $classCSS></span> ") {
                $titre = "";
            }
            $retour = $titre.$nomAdresse;
        }


        return $retour;
    }
6424
public function addTel($name, $label = '', $is_mandatory = true)
    {
        $e = new \FrenchFrogs\Form\Element\Tel($name, $label);
        $this->addElement($e);
        $e->addRule('laravel','laravel', ['regex:/^[+]{0,1}[0-9]{9,13}$/'],['regex' => 'Le champ doit être un numero valide . Il peut commencer par un + et ne doit contenir que des chiffres (Au moins 10)']);

        if ($is_mandatory) {
            $e->addRule('required');
        } else {
            $e->addFilter('nullable');
        }

        return $e;
    }
1122163
protected function getInput() {

        @set_time_limit(120);
        @ini_set('max_execution_time', 120);

        // Initialisation.
        $html = array();
        $text = $this->getText();

        // JS
        (new RequireJSUtility())
            ->addDomReadyJS("$('[data-toggle=\"tooltip\"], .hasTooltip').tooltip({container:'body',html:true});", false, "bootstrap");

        if (!empty($this->value)) {
            $value = new Registry($this->value);
        }

        $class = $this->element['class'] ? ' ' . (string)$this->element['class'] : '';

        // On récupère l'instance de gestion ACL.
        $acl    = Acl::getInstance($this->form->getDb());
	    $simple = $acl->getSimpleAcl();

        // On récupère les sections et les actions.
        $actions = $this->getActions();

        // On charge les groupes utilisateurs.
        $groups = $this->getUserGroups();

	    // On charge les rôles.
	    $roles = $acl->getRoles();

        // Building tab nav
        $html[] = '<div role="tabpanel" class="nav-tabs-left">';

        $html[] = '<ul class="nav nav-tabs" role="tablist">';

        foreach ($groups as $i => $group) {
            $tab_class = $i == 0 ? ' class="active"' : '';
            $html[] = '<li role="presentation"' . $tab_class . '><a href="#group-' . $group->id . '" aria-controls="group-' . $group->id . '" role="tab" data-toggle="tab">';
            $html[] = str_repeat('<span class="level">&ndash;</span> ', $curLevel = $group->level) . $group->title;
            $html[] = '</a></li>';
        }

        $html[] = '</ul>';
        $html[] = '<div class="tab-content">';

        foreach ($groups as $i => $group) {

            $tab_class = $i == 0 ? ' active' : '';

            $html[] = '<div role="tabpanel" class="tab-pane' . $tab_class .'" id="group-' . $group->id . '">';

            $html[] = '<table class="rights table table-condensed' . $class . '">';

            $html[] = '<thead>';
            $html[] = '<tr>';
            $html[] = '<th>' . $text->translate('APP_GLOBAL_RIGHTS_HEADING_SECTION') . '</th>';
            $html[] = '<th>' . $text->translate('APP_GLOBAL_RIGHTS_HEADING_ACTION') . '</th>';
            $html[] = '<th>' . $text->translate('APP_GLOBAL_RIGHTS_HEADING_RIGHT') . '</th>';

            if ($group->parent_id) {
                $html[] = '<th id="aclactionth' . $group->id . '">';
                $html[] = '<span class="acl-action">' . $text->translate('APP_GLOBAL_RIGHTS_HEADING_CALCULATED_SETTING') . '</span>';
                $html[] = '</th>';
            }

            $html[] = '</tr>';
            $html[] = '</thead>';

            $html[] = '<tbody>';

            // On parcourt les sections.
            foreach ($actions as $section) {

                $rowspan = count($section->actions);

                foreach ($section->actions as $i => $action) {

                    $html[] = '<tr>';

                    if ($i == 0) {
                        $html[] = '<td class="section" rowspan="' . $rowspan . '"><span class="hasTooltip" title="' . $text->translate($section->description) . '">' . $text->translate($section->title) . '</td>';
                    }

                    $html[] = '<td class="action"><span class="hasTooltip" title="' . $text->translate($action->description) . '">' . $text->translate($action->title) . '</td>';
                    $html[] = '<td class="right">';

                    $html[] = '<select class="form-control input-sm"'
                        . ' name="' . $this->name . '[' . $section->name . '][' . $action->name . '][' . $group->id . ']"'
                        . ' id="' . $this->id . '_' . $section->name . '_' . $action->name	. '_' . $group->id . '"'
                        . ' title="' . $text->sprintf('APP_GLOBAL_RIGHTS_SELECT_ALLOW_DENY_GROUP', $text->translate($action->title), trim($group->title)) . '">';

                    // On récupère les droits pour l'action hérités pour le groupe.
                    $inheritedRule = $acl->checkGroup($group->id, $section->name, $action->name);

                    // On récupère les droits pour l'action NON HÉRITÉS pour le groupe.
                    $assetRule = null;

	                $groups = new RoleAggregate();
	                $groups->addRole($roles[$group->id]);
                    $res = $simple->isAllowedReturnResult($groups, $section->name, $action->name)->collection;

                    if ($res->count() > 0) {
                        $res->top();
                        while($res->valid()) {
                            $priority = $res->current()->getPriority();

                            // La règle est appliqué à ce groupe en particulier si la priorité est à zero.
                            if ($priority == 0) {
                                $assetRule = $res->current()->getAction();
                            }

                            $res->next();
                        }
                    }

                    // Build the dropdowns for the permissions sliders

                    // The parent group has "Not Set", all children can rightly "Inherit" from that.
                    $html[] = '<option value=""' . ($assetRule === null ? ' selected="selected"' : '') . '>'
                        . $text->translate(empty($group->parent_id) ? 'APP_GLOBAL_RIGHTS_NOT_SET' : 'APP_GLOBAL_RIGHTS_INHERITED') . '</option>';
                    $html[] = '<option value="1"' . ($assetRule === true ? ' selected="selected"' : '') . '>' . $text->translate('APP_GLOBAL_RIGHTS_ALLOWED')
                        . '</option>';
                    $html[] = '<option value="0"' . ($assetRule === false ? ' selected="selected"' : '') . '>' . $text->translate('APP_GLOBAL_RIGHTS_DENIED')
                        . '</option>';

                    $html[] = '</select>&#160; ';

                    // If this asset's rule is allowed, but the inherited rule is deny, we have a conflict.
                    if (($assetRule === true) && ($inheritedRule === false)) {
                        $html[] = $text->translate('APP_GLOBAL_RIGHTS_CONFLICT');
                    }

                    $html[] = '</td>';

                    // Build the Calculated Settings column.
                    // The inherited settings column is not displayed for the root group in global configuration.
                    if ($group->parent_id) {

                        $html[] = '<td headers="aclactionth' . $group->id . '">';

                        // This is where we show the current effective settings considering currrent group, path and cascade.
                        // Check whether this is a component or global. Change the text slightly.

                        if ($acl->checkGroup($group->id, "app", "admin") !== true) {

                            if ($inheritedRule === true) {
                                $html[] = '<span class="label label-success">' . $text->translate('APP_GLOBAL_RIGHTS_ALLOWED') . '</span>';
                            } elseif ($inheritedRule === false) {
                                $html[] = '<span class="label label-danger">' . $text->translate('APP_GLOBAL_RIGHTS_NOT_ALLOWED') . '</span>';
                            }

                        } elseif ($section->name != 'app') {
                                $html[] = '<span class="label label-success"><i class="fa fa-lock"></i> ' . $text->translate('APP_GLOBAL_RIGHTS_ALLOWED_ADMIN')
                                    . '</span>';
                        } else {

                            // Special handling for  groups that have global admin because they can't  be denied.
                            // The admin rights can be changed.

                            if ($section->name === 'app' && $action->name === 'admin') {
                                $html[] = '<span class="label label-success">' . $text->translate('APP_GLOBAL_RIGHTS_ALLOWED') . '</span>';
                            } elseif ($inheritedRule === false) {
                                // Other actions cannot be changed.
                                $html[] = '<span class="label label-danger"><i class="fa fa-lock"></i> '
                                    . $text->translate('APP_GLOBAL_RIGHTS_NOT_ALLOWED_ADMIN_CONFLICT') . '</span>';
                            } else {
                                $html[] = '<span class="label label-success"><i class="fa fa-lock"></i> ' . $text->translate('APP_GLOBAL_RIGHTS_ALLOWED_ADMIN')
                                    . '</span>';
                            }
                        }

                        $html[] = '</td>';
                    }

                    $html[] = '</tr>';

                }

            }


            $html[] = '';
            $html[] = '';
            $html[] = '';
            $html[] = '</tbody>';

            $html[] = '</table>';

            $html[] = '</div>';

        }

        $html[] = '</div>';
        $html[] = '</div>';

        return implode($html);

    }
677435
function getHTML()
    {
        $html="";
        if ($this->getCountOnglets()>0) {
            /*
             * assignation des styles en dur : a changer à terme,
             * les styles sont les memes que pour le site en ligne
             * => a ajouter dans la feuille de style
             * */
            if (isset($this->stylesOnglets) && $this->stylesOnglets!='') {
                $html=$this->stylesOnglets;
            }

            if (!isset($this->hauteurEtiquettes)) {
                $this->hauteurEtiquettes=25;
            }
            
            if (!isset($this->styleTable)) {
                $this->styleTable="";
            }
            
            if (!isset($this->styleTableEtiquettes)) {
                $this->styleTableEtiquettes ="";
            }
            
            if (!isset($this->styleBorderHautContenu)) {
                $this->styleBorderHautContenu
                    ="style='border-bottom:1px solid #000000;'";
            }
                
            $html.="<a name='onglet'></a>";
            $html.="<table width='".$this->largeurTotale.
            "' cellspacing=0 cellpadding=0 border=0><tr><td height=".
            $this->hauteurEtiquettes." ".$this->styleTable.">";            
            $html.="<table cellspacing=0 cellpadding=0 border=0 ".
            $this->styleTableEtiquettes."><tr class='onglets'>";
            // construction du tableau contenant les intitules
            $i=0;
            $largeurGauche = 0;
            if (isset($this->largeurGauche)) {
                    $largeurGauche = $this->largeurGauche;
                    $html.="<td height=".$this->hauteurEtiquettes." ".
                    $this->styleBorderHautContenu." width='".
                    $this->largeurGauche."'>&nbsp;</td>";
            }
            
            foreach ($this->ongletsArray as $fieldName => $fieldValue) {
                $className='OngletOff';
                if ($i==$this->numOngletSelected) {
                    $className='OngletOn';
                }
                
                $link = "";
                if ($this->isAncreOnglet==true) {
                    $link = "href='#onglet'";
                }
                
                $link="";
                switch($this->typeOngletsArray[$fieldName]) {
                case 'link':
                    $link = "href='".$this->optionsOngletParType[$fieldName]."'";
                    break;
                default:
                    $link = "onclick=\"".$this->createJSDivCalls($i);
                    /* lien le champs hiddenCourant est un champs cache
                    du formulaire permettant de stocker l'onglet actif courant
                    * */
                    if (isset($this->champHiddenCourant)
                        && $this->champHiddenCourant<>""
                    ) {
                        $link.="document.getElementById('".
                        $this->champHiddenCourant."').value='".$i."';";
                    }
                    $link.="\"";
                    break;
                }
                
                $spaces="";
                if ($this->isSpaceInLibelle == true) {
                    $spaces = "&nbsp;&nbsp;&nbsp;";
                }
                
                $html.="<td height='".$this->hauteurEtiquettes."' width='".
                $this->largeurEtiquette."' id='".
                $this->convertIntituleOnglet($fieldName.$i).$this->idOngletBuilder.
                "_onglet' class='".$className."' >".$spaces.
                "<a style='cursor:pointer;' ".$link;
                $html.=">".$fieldName."</a>".$spaces.
                "</td><td width='4' height='".$this->hauteurEtiquettes.
                "' ".">&nbsp</td>";
                $i++;
                
            }
            // dernier td => pour affichage du border //
            
            
            $html.="<td height='".$this->hauteurEtiquettes."' width='".
            ( $this->largeurTotale - ($i * ($this->largeurEtiquette+4))
            -$largeurGauche).
            "' >&nbsp;</td>";
            
            $styleContours = "";
            if ($this->isContours==true) {
                if (isset($this->styleContoursContenu)) {
                    $styleContours = $this->styleContoursContenu;
                } else {
                    $styleContours = "style='border-left:1px solid #000000;".
                    "border-right:1px solid #000000;".
                    "border-bottom:1px solid #000000;'";
                }
            }
            
            $html.="</tr></table></td></tr><tr><td class='event ".$styleContours.">";
            
            
            // construction des contenus
            $i=0;
            foreach ($this->ongletsArray as $fieldName => $fieldValue) {
                if ($i==$this->numOngletSelected) {
                    $styleDisplay='block';
                    
                } else {
                    $styleDisplay='none';    
                }
                $testedFieldValue=="<table cellspacing='0' cellpadding='0' ".
                "border='0'></table>";
                // cas ou il n'y a pas de photo dans la liste
                if ($fieldValue==$testedFieldValue) {
                    $fieldValue="<table cellspacing='0' width='100%' ".
                    "cellpadding='0'".
                    " border='1'><tr><td><br><center>Pas de document</center>".
                    "</br></td></tr></table>";
                }
                
                $html.="<div id='".$this->convertIntituleOnglet($fieldName.$i).
                $this->idOngletBuilder."' style='display:".$styleDisplay.
                ";'>".$fieldValue."</div>";
                $i++;
            }
            
            
            $html.="</td></tr></table>";
        }
        return $html;
        
    }
573665
function(className) {
        var cls = _classes[className];
        if (!cls) {
            var k, name,
            def = window["TFW::" + className];
            if (!def) {
                throw new Error(
                    "[TFW3] This class has not been defined: \"" + className + "\"!\n"
                        + "Did you forget to include it?"
                );
            }
            // Création de la classe à partir de sa définition.
            cls = function () {};
            var superclass = TFW3Object;
            if (def.superclass) {
                superclass = loadClass(def.superclass);
            }
            // Héritage
            cls.prototype = new superclass();
            // Eviter que le constructeur de cette classe soit celui de la super classe.
            cls.prototype.constructor = cls;
            // Définition de l'attribut $parent pour accéder aux méthodes parentes.
            cls.prototype.$parent = superclass.prototype;
            // Multilangues.
            if (typeof def.lang === "object") {
                cls.prototype.$lang = def.lang;
                for (k in def.lang) {
                    cls.prototype.$defLang = k;
                    break;
                }
            } else {
                cls.prototype.$lang = superclass.prototype.$lang || {};
                cls.prototype.$defLang = superclass.prototype.$defLang || "en";
            }
            // Conserver le nom de la super classe.
            cls.prototype.$superclass = superclass.prototype.$classname;
            // Conserver le nom de la classe.
            cls.prototype.$classname = className;
            // Les noms des signals.
            cls.prototype.$signals = def.signals;
            // Est-ce un singleton ?
            cls.prototype.$singleton = def.singleton;
            // Espace réservé aux membres statiques de la classe.
            var staticVars = {className: className};
            _statics[className] = staticVars;
            cls.prototype.$static = staticVars;
            // Valeurs par défaut des attributs.
            if (def.attributes) {
                for (k in def.attributes) {
                    cls.prototype["_" + k] = def.attributes[k];
                }
            }
            // Déclaration du constructeur.
            cls.prototype.$init = def.init;
            // Définition des méthodes liées aux signaux.
            if (def.signals) {
                for (i in def.signals) {
                    declareSignal(
                        cls,
                        def.signals[i]
                    );
                }
            }
            // Assigner toutes les méthodes.
            for (name in def.functions) {
                if (def.superclass && cls.prototype[name]) {
                    // This is an ovveride.
                    cls.prototype[def.superclass + "$" + name] = cls.prototype[name];
                }
                cls.prototype[name] = def.functions[name];
            }

            // Mise en cache de la classe.
            _classes[className] = cls;
            // Appel d'un éventuel constructeur de classe.
            if (typeof def.classInit === "function") {
                def.classInit(staticVars);
            }
        }
        return cls;
    }
605053
function Menu(arg,opt) {
        
        if ($.isPlainObject(arg) || Array.isArray(arg)) { opt = arg; arg = null; }
        
        /**
         * Conteneur du menu contextuel
         */
        if (!arg) arg = document.createElement('ul');
        
        if (arg) this.container = $(arg)[0];
        /**
         * Tableau d'objets MenuItem définissant la liste des éléments du menu
         */
        this.list = [];
        /**
         * Liste des séparateurs d'éléments
         */
        this.dividers = [];
        
        this.keyboardCtrls = new KeyboardCtrls(this);
        
        if (opt) this.set(opt); 
    }
1313653
public function hPrintFooter() {
	    $wt_tree = Globals::getTree();
	    $html = '';
	    if($this->getSetting('MAJ_DISPLAY_CNIL', 0) == 1){
	        $html .= '<br/>';
	        $html .= '<div class="center">';
	        $cnil_ref = $this->getSetting('MAJ_CNIL_REFERENCE', '');
	        if($cnil_ref != ''){
	            $html .= I18N::translate('This site has been notified to the French National Commission for Data protection (CNIL) and registered under number %s. ', $cnil_ref);
	        }
	        $html .= I18N::translate('In accordance with the French Data protection Act (<em>Loi Informatique et Libertés</em>) of January 6th, 1978, you have the right to access, modify, rectify and delete personal information that pertains to you. To exercice this right, please contact %s, and provide your name, address and a proof of your identity.',
	            Theme::theme()->contactLink(User::find($wt_tree->getPreference('WEBMASTER_USER_ID'))));
	        $html .= '</div>';
	    }
	    
	    if($this->getSetting('MAJ_ADD_HTML_FOOTER', 0) == 1){
	        if(Auth::accessLevel($wt_tree) >= $this->getSetting('MAJ_SHOW_HTML_FOOTER', Auth::PRIV_HIDE)  && !Filter::getBool('nofooter')){
	            $html .= $this->getSetting('MAJ_HTML_FOOTER', '');
	        }
	    }
	    return $html;
	}
208531
public function init()
    {
        if ( $this->lat0 == 0 ) {
            $this->lat0 = 90; //$this->lat0 ca
        }

        /* Place parameters in static storage for common use
          ------------------------------------------------- */
        $this->temp = $this->b / $this->a;
        $this->es = 1.0 - pow( $this->temp, 2 ); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles 
        $this->e = sqrt( $this->es );
        $this->e0 = Common::e0fn( $this->es );
        $this->e1 = Common::e1fn( $this->es );
        $this->e2 = Common::e2fn( $this->es );
        $this->e3 = Common::e3fn( $this->es );
        $this->ml0 = Common::mlfn( $this->e0, $this->e1, $this->e2, $this->e3, $this->lat0 ); //si que des zeros le calcul ne se fait pas
        //if (!$this->ml0) {$this->ml0=0;}
    }