public function majPositionsEvenements($params = array())
 {
     $retour = true;
     $tabTravail = array();
     if (isset($params['idEvenementGroupeAdresse']) && $params['idEvenementGroupeAdresse'] != '' && !isset($params['idNouvelEvenement']) && isset($params['refreshAfterDelete']) && $params['refreshAfterDelete'] == true) {
         // on met a jour les positions apres la suppression d'un evenement sur le groupe d'adresse par exemple
         // donc en fait on ne fait qu'un rafraichissement des positions
         // si l'evenement supprimé etait le dernier du groupe d'adresse , le passage par cette fonction va permettre la suppression des liaisons dans la table positionEvenement , en theorie du dernier evenement qui restait , voir d'autres s'il y a eu un probleme (en principe cela n'arrive pas)
         $tabIdEvenementsLies = $this->getEvenementsLies($params['idEvenementGroupeAdresse'], true);
         // on a recuperer le tableau des positions enregistrées, on peut donc supprimer les positions precedentes,
         $reqDelete = "DELETE FROM positionsEvenements WHERE idEvenementGroupeAdresse = '" . $params['idEvenementGroupeAdresse'] . "'";
         $resDelete = $this->connexionBdd->requete($reqDelete);
         // et inserer les nouvelles positions
         $position = 1;
         foreach ($tabIdEvenementsLies as $indice => $value) {
             $reqPositions = "INSERT INTO positionsEvenements (idEvenementGroupeAdresse, idEvenement, position) VALUES ('" . $params['idEvenementGroupeAdresse'] . "','" . $value['idEvenementAssocie'] . "','" . $position . "') ";
             $resPositions = $this->connexionBdd->requete($reqPositions);
             $position++;
         }
     } elseif (isset($params['idEvenementGroupeAdresse']) && $params['idEvenementGroupeAdresse'] != '' && (isset($params['idNouvelEvenement']) && $params['idNouvelEvenement'] != '' || isset($params['idEvenementModifie']) && $params['idEvenementModifie'] != '')) {
         $effectueMaj = false;
         // dans le cas d'un evenement modifie , on ne fait de mise a jour que si la date de l'evenement a ete changée par rapport a son dernier historique
         //
         if (isset($params['idNouvelEvenement']) && $params['idNouvelEvenement'] != '') {
             $idEvenementConcerne = $params['idNouvelEvenement'];
             $effectueMaj = true;
         } elseif (isset($params['idEvenementModifie']) && $params['idEvenementModifie'] != '') {
             // verification du dernier historique
             $idEvenementConcerne = $params['idEvenementModifie'];
             $reqDernierHistoriqueEvenementModifie = "\n\n\t\t\t\t\t\tSELECT he1.idEvenement as idHistoriqueEvenement, he1.dateDebut as dateDebutDernierHistorique\n\t\t\t\t\t\tFROM evenements he2, evenements he1\n\t\t\t\t\t\tWHERE he1.idEvenement = he2.idEvenement\n\t\t\t\t\t\tAND he1.idEvenement = '" . $idEvenementConcerne . "'\n\t\t\t\t\t\t\t\tGROUP BY he1.idEvenement\n\t\t\t\t\t\t\t\t";
             $resDernierHistoriqueEvenementModifie = $this->connexionBdd->requete($reqDernierHistoriqueEvenementModifie);
             if (mysql_num_rows($resDernierHistoriqueEvenementModifie) == 1) {
                 $fetchDernierHistoriqueEvenementModifie = mysql_fetch_assoc($resDernierHistoriqueEvenementModifie);
                 if (isset($fetchDernierHistoriqueEvenementModifie['idHistoriqueEvenement']) && $fetchDernierHistoriqueEvenementModifie['idHistoriqueEvenement'] != '') {
                     $reqVerifChangementDate = "\n\n\t\t\t\t\t\t\t\tSELECT he1.dateDebut as dateDebutAvantDernier\n\t\t\t\t\t\t\t\tFROM evenements he2, evenements he1\n\t\t\t\t\t\t\t\tWHERE he1.idEvenement = he2.idEvenement\n\t\t\t\t\t\t\t\tAND he1.idEvenement='" . $idEvenementConcerne . "'\n\t\t\t\t\t\t\t\tAND he1.idEvenement<>'" . $fetchDernierHistoriqueEvenementModifie['idHistoriqueEvenement'] . "'\n\t\t\t\t\t\t\t\tAND he2.idEvenement<>'" . $fetchDernierHistoriqueEvenementModifie['idHistoriqueEvenement'] . "'\n\t\t\t\t\t\t\t\tGROUP BY he1.idEvenement\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
                     $resVerifChangementDate = $this->connexionBdd->requete($reqVerifChangementDate);
                     if (mysql_num_rows($resVerifChangementDate) > 0) {
                         $fetchVerifChangementDate = mysql_fetch_assoc($resVerifChangementDate);
                         if ($fetchVerifChangementDate['dateDebutAvantDernier'] != $fetchDernierHistoriqueEvenementModifie['dateDebutDernierHistorique']) {
                             // si dernier historique , date différente
                             $effectueMaj = true;
                             // la date a ete changé, on met a jour les positions
                         } else {
                             // si dernier historique date identique
                             $effectueMaj = false;
                             // pas la peine de mettre a jour les positions
                         }
                     }
                 }
             }
         }
         if ($effectueMaj) {
             // mise a jour apres ajout d'un nouvel evenement sur le groupe d'adresses
             $d = new dateObject();
             $tabIdEvenementsLies = $this->getEvenementsLies($params['idEvenementGroupeAdresse'], true);
             $position = 1;
             $dateNouvelEvenement = "0000-00-00";
             foreach ($tabIdEvenementsLies as $indice => $value) {
                 if ($value['idEvenementAssocie'] != $idEvenementConcerne) {
                     $tabTravail[$position]['idEvenement'] = $value['idEvenementAssocie'];
                     // recuperation des dates des evenements
                     $reqDates = "\n\t\t\t\t\t\t\t\tSELECT h1.idEvenement as idEvenement, h1.dateDebut as dateDebut\n\t\t\t\t\t\t\t\tFROM evenements h2, evenements h1\n\n\t\t\t\t\t\t\t\tWHERE h2.idEvenement = h1.idEvenement\n\t\t\t\t\t\t\t\tAND h1.idEvenement = '" . $value['idEvenementAssocie'] . "'\n\t\t\t\t\t\t\t\t\t\tGROUP BY h1.idEvenement\n\t\t\t\t\t\t\t\t\t\t";
                     $resDates = $this->connexionBdd->requete($reqDates);
                     $tabTravail[$position]['dateDebut'] = "0000-00-00";
                     if (mysql_num_rows($resDates) > 0) {
                         $fetchDates = mysql_fetch_assoc($resDates);
                         $tabTravail[$position]['dateDebut'] = $fetchDates['dateDebut'];
                     }
                     $position++;
                 } else {
                     $fetchDates = "";
                     $reqDates = "\n\t\t\t\t\t\t\t\tSELECT h1.idEvenement as idEvenement, h1.dateDebut as dateDebut\n\t\t\t\t\t\t\t\tFROM evenements h2, evenements h1\n\n\t\t\t\t\t\t\t\tWHERE h2.idEvenement = h1.idEvenement\n\t\t\t\t\t\t\t\tAND h1.idEvenement = '" . $value['idEvenementAssocie'] . "'\n\t\t\t\t\t\t\t\t\t\tGROUP BY h1.idEvenement\n\t\t\t\t\t\t\t\t\t\t";
                     $resDates = $this->connexionBdd->requete($reqDates);
                     $fetchDates = mysql_fetch_assoc($resDates);
                     $dateNouvelEvenement = $fetchDates['dateDebut'];
                     if (pia_substr($dateNouvelEvenement, 4, 6) == '-00-00') {
                         $dateNouvelEvenement = pia_substr($dateNouvelEvenement, 0, 4) . "-01-01";
                     }
                 }
             }
             // parcours des dates pour voir ou on va inserer l'evenement
             //echo "dateNouvelEvenement = ".$dateNouvelEvenement."<br>";
             $positionNouvelEvenement = 1;
             if ($dateNouvelEvenement != '0000-00-00') {
                 foreach ($tabTravail as $position => $valueEvenement) {
                     // on transforme la date en date valide et analysable par la fonction de comparaison de dates
                     if (pia_substr($tabTravail[$position]['dateDebut'], 4, 6) == '-00-00') {
                         $tabTravail[$position]['dateDebut'] = pia_substr($tabTravail[$position]['dateDebut'], 0, 4) . "-01-01";
                     }
                     //echo "dateDebut = ".pia_substr($tabTravail[$position]['dateDebut'],4,6)."    ".pia_substr($tabTravail[$position]['dateDebut'],0,4)."      ".$tabTravail[$position]['dateDebut']."<br>";
                     if ($tabTravail[$position]['dateDebut'] != '0000-00-00' && $d->isGreaterThan($dateNouvelEvenement, $tabTravail[$position]['dateDebut'])) {
                         $positionNouvelEvenement = $position + 1;
                     } elseif ($tabTravail[$position]['dateDebut'] == '0000-00-00') {
                         $positionNouvelEvenement = $position + 1;
                     }
                 }
             } else {
                 $positionNouvelEvenement = 1;
             }
             //echo "positionNouvelEvenement = ".$positionNouvelEvenement."<br>";
             // insertion dans un tableau trié
             $nouveauTableau = array();
             $nouvellesPositions = 1;
             $decalageApresInsertion = 0;
             foreach ($tabTravail as $position => $valueEvenement) {
                 if ($position == $positionNouvelEvenement) {
                     $decalageApresInsertion = 1;
                     $nouveauTableau[$position]['idEvenement'] = $idEvenementConcerne;
                 }
                 $nouveauTableau[$position + $decalageApresInsertion]['idEvenement'] = $valueEvenement['idEvenement'];
             }
             if ($positionNouvelEvenement > count($tabTravail)) {
                 // si le nouvel evenement se place en derniere position (le nouvel element n'est donc pas encore dans tabTravail , on le rajoute a la fin du tableau
                 $nouveauTableau[$positionNouvelEvenement]['idEvenement'] = $idEvenementConcerne;
             }
             // mise a jour de la table positionEvenements
             // suppr des valeurs du groupe d'adresse precedentes
             $reqDelete = "DELETE FROM positionsEvenements WHERE idEvenementGroupeAdresse = '" . $params['idEvenementGroupeAdresse'] . "'";
             $resDelete = $this->connexionBdd->requete($reqDelete);
             foreach ($nouveauTableau as $positionFinale => $value) {
                 $reqPositions = "INSERT INTO positionsEvenements (idEvenementGroupeAdresse, idEvenement, position) VALUES ('" . $params['idEvenementGroupeAdresse'] . "','" . $value['idEvenement'] . "','" . $positionFinale . "') ";
                 $resPositions = $this->connexionBdd->requete($reqPositions);
             }
         }
     }
     return $retour;
 }