public function ajouter($parametres = array(), $liaisonsExternes = array())
 {
     $html = "";
     $this->fields = array();
     $reqFieldsListe = "SHOW COLUMNS FROM " . $parametres['tableName'] . ";";
     $resFieldsListe = $this->connexionBdd->requete($reqFieldsListe);
     // fabrication de la chaine requete d'ajout
     $arrayFields = array();
     $primaryKeyField = "";
     while ($fetchFields = mysql_fetch_assoc($resFieldsListe)) {
         if ($fetchFields['Key'] != 'PRI') {
             //$requeteModification.=$fetchFields['Field']."='".$this->variablesPost[$fetchFields['Field']]."'";
             $arrayFields[] = $fetchFields['Field'];
             if (preg_match("/date/i", $fetchFields['Type'])) {
                 $d = new dateObject();
                 if ((pia_ereg("/", $this->variablesPost[$fetchFields['Field']]) || pia_strlen($this->variablesPost[$fetchFields['Field']]) > 3) && !pia_ereg("-", $this->variablesPost[$fetchFields['Field']])) {
                     $arrayValues[] = $d->toBdd($d->convertYears($this->variablesPost[$fetchFields['Field']]));
                 } else {
                     $arrayValues[] = $this->variablesPost[$fetchFields['Field']];
                 }
             } else {
                 $arrayValues[] = $this->variablesPost[$fetchFields['Field']];
             }
         } else {
             $primaryKeyField = $fetchFields['Field'];
         }
     }
     $listeFields = implode(', ', $arrayFields);
     $listeValues = implode('", "', $arrayValues);
     $requeteAjout = "insert into " . $parametres['tableName'] . " (" . $listeFields . ") VALUES (\"" . $listeValues . "\")";
     $this->connexionBdd->requete($requeteAjout);
     $idNouvelElement = mysql_insert_id();
     // gestion des champs supplementaires du formulaire qui ne sont pas des champs de la base de donnée
     if (isset($parametres['fieldsNotInBdd']) && is_array($parametres['fieldsNotInBdd']) && count($parametres['fieldsNotInBdd']) > 0) {
         foreach ($parametres['fieldsNotInBdd'] as $indice => $valuesFields) {
             // traitement specifiques aux champs qui ne sont pas liés a la base de donnée
             switch ($valuesFields['type']) {
                 case 'uploadImageLiee':
                     // ce cas d'upload n'ajoute pas de nom de fichier dans la base ,  on va en principe se referer a l'identifiant de la table courante
                     // exemple ,  on ajoute une image sur un personne,  l'image aura donc pour nom de fichier "idPersonne".jpg par exemple en fonction du parametrage
                     if (isset($_FILES[$valuesFields['name']]) && $_FILES[$valuesFields['name']]['error']) {
                         switch ($_FILES[$valuesFields['name']]['error']) {
                             case 1:
                                 // UPLOAD_ERR_INI_SIZE
                                 echo "Le fichier dépasse la limite autorisée par le serveur !";
                                 break;
                             case 2:
                                 // UPLOAD_ERR_FORM_SIZE
                                 echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
                                 break;
                             case 3:
                                 // UPLOAD_ERR_PARTIAL
                                 echo "L'envoi du fichier a été interrompu pendant le transfert !";
                                 break;
                             case 4:
                                 // UPLOAD_ERR_NO_FILE
                                 echo "Le fichier que vous avez envoyé a une taille nulle !";
                                 break;
                         }
                     } else {
                         // pas d'erreur d'upload
                         $i = new imageObject();
                         // classe image du framework
                         $f = new fileObject();
                         if (isset($valuesFields['redimFilesAndSizesConfig']) && is_array($valuesFields['redimFilesAndSizesConfig']) && count($valuesFields['redimFilesAndSizesConfig']) > 0) {
                             foreach ($valuesFields['redimFilesAndSizesConfig'] as $indiceConfigRedims => $valueConfigRedims) {
                                 $fichierParametre = "";
                                 // on remplace le parametre par une valeur s'il y en a un
                                 $valueReplacementBdd = "";
                                 // valeur que va prendre la parametre a remplacer
                                 $matches = array();
                                 preg_match("/\\#\\#\\#bddField\\[(.+)\\]\\#\\#\\#/", $valueConfigRedims['nomFichierDestinationParametre'], $matches);
                                 // on detecte si il y a un parametre a remplacer par une valeur de la base de donnée ou pas
                                 if (count($matches) > 0) {
                                     $req = "SELECT " . $matches[1] . " FROM " . $parametres['tableName'] . " WHERE " . $primaryKeyField . "='" . $idNouvelElement . "'";
                                     $res = $this->connexionBdd->requete($req);
                                     $fetchValeurCouranteBdd = mysql_fetch_assoc($res);
                                     $valueReplacementBdd = $fetchValeurCouranteBdd[$matches[1]];
                                     $fichierParametre = str_replace($matches[0], $valueReplacementBdd, $valueConfigRedims['nomFichierDestinationParametre']);
                                 }
                                 $imageType = strtolower($f->getExtensionFromFile($_FILES[$valuesFields['name']]['name']));
                                 if (file_exists($valueConfigRedims['repertoireDestination'] . $fichierParametre)) {
                                     // si un fichier du meme nom existe ,  on l'efface
                                     unlink($valueConfigRedims['repertoireDestination'] . $fichierParametre);
                                 }
                                 if ($fichierParametre != '') {
                                     if (isset($valueConfigRedims['taille'])) {
                                         $i->redimension($_FILES[$valuesFields['name']]['tmp_name'], $imageType, $valueConfigRedims['repertoireDestination'] . $fichierParametre, $valueConfigRedims['taille'], array('redimOnlyIfFileSizesSuperiorToRedimValue' => true));
                                     }
                                 } else {
                                     echo "Le fichier n'a pu être redimensionné. Erreur de parametrage dans la fonction du framework formGenerator::modifier()<br>";
                                 }
                             }
                             unlink($_FILES[$valuesFields['name']]['tmp_name']);
                         }
                     }
                     break;
             }
         }
     }
     return $html;
 }
 public function enregistreHistoriqueNomsRues($params = array())
 {
     //array(8) { ["idHistoriqueNomRue_0"]=>  string(0) "" ["annee_0"]=>  string(4) "1955" ["nomRue_0"]=>  string(5) "plop1" ["commentaire_0"]=>  string(5) "plop2" ["idHistoriqueNomRue_1"]=>  string(0) "" ["annee_1"]=>  string(4) "1956" ["nomRue_1"]=>  string(5) "plop3" ["commentaire_1"]=>  string(5) "plop4" }
     $d = new dateObject();
     $tabAnnees = array();
     $tabNomsRues = array();
     $tabCommentaires = array();
     $tabPrefixes = array();
     foreach ($this->variablesPost as $intule => $value) {
         $tabIntitule = explode("_", $intule);
         $indice = $tabIntitule[1];
         switch ($tabIntitule[0]) {
             case 'annee':
                 $tabAnnees[$indice] = $value;
                 break;
             case 'nomRue':
                 $tabNomsRues[$indice] = $value;
                 break;
             case 'commentaire':
                 $tabCommentaires[$indice] = $value;
                 break;
             case 'prefixe':
                 $tabPrefixes[$indice] = $value;
                 break;
         }
     }
     // on efface d'abord les valeurs précédentes
     $reqDelete = "DELETE FROM historiqueNomsRues WHERE idRue=" . $this->variablesGet['idModification'];
     $resDelete = $this->connexionBdd->requete($reqDelete);
     // ensuite on enregistre les nouvelles valeurs
     if (count($tabAnnees) > 0) {
         foreach ($tabAnnees as $indice => $value) {
             $reqInsert = "\n                    INSERT INTO historiqueNomsRues\n                        (idRue,annee,nomRue,commentaire,prefixe)\n                    VALUES\n                        ('" . $this->variablesGet['idModification'] . "',\"" . $d->toBdd($d->convertYears($tabAnnees[$indice])) . "\",\"" . mysql_real_escape_string($tabNomsRues[$indice]) . "\",\"" . mysql_real_escape_string($tabCommentaires[$indice]) . "\",\"" . mysql_real_escape_string($tabPrefixes[$indice]) . "\")\n                ";
             $resInsert = $this->connexionBdd->requete($reqInsert);
         }
     }
 }
 /**
  * Modifier une actualité
  * 
  * @param array $params Paramètres
  * 
  * @return void
  * */
 public function modifierActualite($params = array())
 {
     if (isset($this->variablesPost['idActualite']) && $this->variablesPost['idActualite'] != '') {
         $authentification = new archiAuthentification();
         $idActualite = $this->variablesPost['idActualite'];
         $d = new dateObject();
         $desactive = 0;
         if (isset($this->variablesPost['desactive']) && $this->variablesPost['desactive'] == '1') {
             $desactive = 1;
         }
         $envoi = 0;
         if (isset($this->variablesPost['envoiMailHebdomadaire']) && $this->variablesPost['envoiMailHebdomadaire'] == '1') {
             $envoi = 1;
         }
         $req = "UPDATE actualites SET \n                titre = \"" . mysql_real_escape_string($this->variablesPost['titre']) . "\",\n                sousTitre = \"" . mysql_real_escape_string($this->variablesPost['sousTitre']) . "\",\n                `date` = \"" . $d->toBdd(mysql_real_escape_string($this->variablesPost['date'])) . "\",\n                texte = \"" . mysql_real_escape_string($this->variablesPost['texte']) . "\",\n                urlFichier = \"" . mysql_real_escape_string($this->variablesPost['urlFichier']) . "\",\n                fichierPdf = \"" . mysql_real_escape_string($this->variablesPost['fichierPdf']) . "\",\n                desactive = '" . $desactive . "',\n                texteMailHebdomadaire = \"" . mysql_real_escape_string($this->variablesPost['texteMailHebdomadaire']) . "\",\n                envoiMailHebdomadaire = '" . $envoi . "'\n                WHERE idActualite = '" . $idActualite . "'\n            ";
         $res = $this->connexionBdd->requete($req);
         //photoIllustration = \"".mysql_real_escape_string($this->variablesPost['photoIllustration'])."\",
         $f = new fileObject();
         if (!file_exists($this->getCheminPhysique() . "images/actualites/" . $idActualite . "/")) {
             mkdir($this->getCheminPhysique() . "images/actualites/" . $idActualite . "/");
         }
         // gestion de l'upload
         if (isset($_FILES['photoIllustration']) && !$_FILES['photoIllustration']['error']) {
             if (file_exists($this->getCheminPhysique() . "images/actualites/" . $idActualite . "/illustration200.jpg")) {
                 unlink($this->getCheminPhysique() . "images/actualites/" . $idActualite . "/illustration200.jpg");
             }
             $f->handleUploadedFileSimpleMoveTo(array('inputFileName' => 'photoIllustration', 'redimensionneImageConfig' => array(200 => array('destination' => $this->getCheminPhysique() . "images/actualites/" . $idActualite . "/illustration200.jpg"))));
             // on met a jour la bdd , meme si dans les prochaines actu cela ne sert a rien de garder le champs , vu le fonctionnement, on le garde pour les anciennes actus
             $reqIllustration = "UPDATE actualites SET photoIllustration='illustration200.jpg' WHERE idActualite='" . $idActualite . "' ";
             $resIllustration = $this->connexionBdd->requete($reqIllustration);
         }
         // on verifie dans le repertoire d'uploadMultiple pour voir s'il y a des images a transferer
         if (file_exists($this->getCheminPhysique() . "images/uploadMultipleActualites/")) {
             $f->convertDirectoryFilesNamesToUTF8(array('repertoire' => $this->getCheminPhysique() . "images/uploadMultipleActualites/"));
             $arrayFiles = $f->getListeFichiersArrayFrom($this->getCheminPhysique() . "images/uploadMultipleActualites/");
             foreach ($arrayFiles as $indice => $fichier) {
                 // on deplace tous les fichiers dans le repertoire de l'actu , ceux qui auront le meme nom seront ecrasés.
                 if ($fichier != '.' && $fichier != '..') {
                     rename($this->getCheminPhysique() . "images/uploadMultipleActualites/" . $fichier, $this->getCheminPhysique() . "images/actualites/" . $idActualite . "/" . $f->removeSpecialCharFromFileName($fichier));
                 }
             }
             $f->convertDirectoryFilesNamesToUTF8(array('repertoire' => $this->getCheminPhysique() . "images/actualites/{$idActualite}/"));
         }
         if ($this->variablesPost['urlFichier'] == '') {
             // evite de creer un fichier pdf pour rien, si urlFichier est renseigné, c'est que c'est une redirection vers une page , pas du texte saisi dans la news
             // creation automatique du fichier pdf
             $pdfObject = new pdfObject();
             $titre = "<div align=center><h2>" . stripslashes($this->variablesPost['titre']) . "</h2></div><br>";
             $sousTitre = "<div align=center><h3>" . stripslashes($this->variablesPost['sousTitre']) . "</h3></div><br>";
             $texte = stripslashes($this->variablesPost['texte']);
             $pdfObject->setContent(stripslashes($titre . $sousTitre . $texte));
             $pdfObject->writeToFile($this->getCheminPhysique() . "images/actualites/{$idActualite}/versionPdf.pdf");
             if (file_exists($this->getCheminPhysique() . "images/actualites/{$idActualite}/versionPdf.pdf")) {
                 $reqUpdatePdf = "UPDATE actualites SET fichierPdf='versionPdf.pdf' WHERE idActualite = '{$idActualite}'";
                 $resUpdatePdf = $this->connexionBdd->requete($reqUpdatePdf);
             }
         }
         if (isset($this->variablesGet['previsualisationMail']) && $this->variablesGet['previsualisationMail'] == '1') {
             $preview = isset($_GET["preview"]) ? "&preview=1" : "";
             $testMail = isset($_GET["testMail"]) ? "&testMail=1" : "";
             echo "<script>location.href='" . $this->getUrlRacine() . "/script/cronMailsNouvellesAdresses.php?modePrevisualisationAdmin=1&idActualite={$idActualite}&idUtilisateur=" . $authentification->getIdUtilisateur() . $preview . $testMail . "';</script>";
             //$this->creerUrl('','', array("modePrevisualisationAdmin"=>1,"idActualite"=>$idActualite,"idUtilisateur"=>$authentification->getIdUtilisateur()))
         }
     }
 }