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 modifier()
 {
     $authentification = new archiAuthentification();
     $majOK = false;
     $formulaire = new formGenerator();
     $mail = new mailObject();
     $avatarFile = new fileObject();
     $image = new imageObject();
     // suppression de l'avatar si la checkbox est cochée
     if (isset($this->variablesPost['supprFichierAvatar']) && $this->variablesPost['supprFichierAvatar'] == '1') {
         if (file_exists($this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/avatar.jpg")) {
             unlink($this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/avatar.jpg");
         }
         if (file_exists($this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/original.jpg")) {
             unlink($this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/original.jpg");
         }
     }
     // gestion de l'image de l'avatar
     if (isset($this->variablesPost['idUtilisateurModif']) && $this->variablesPost['idUtilisateurModif'] != '' && isset($_FILES['fichierAvatar']['name']) && $_FILES['fichierAvatar']['name'] != '') {
         if (pia_strtolower($avatarFile->getExtensionFromFile($_FILES['fichierAvatar']['name'])) == 'jpg') {
             if (!file_exists($this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/")) {
                 if (!$avatarFile->creerRepertoire($this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/")) {
                     echo "archiUtilisateur::modifier => erreur de création du répertoire pour l'image avatar<br>";
                 }
             }
             $avatarFile->handleUploadedFileSimpleMoveTo(array('inputFileName' => 'fichierAvatar', 'renameFileTo' => 'original.jpg', 'repertoireDestination' => $this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/"));
             // ensuite on redimensionne l'image
             $image->redimension($this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/original.jpg", 'jpg', $this->getCheminPhysique() . "images/avatar/" . $this->variablesPost['idUtilisateurModif'] . "/avatar.jpg", 120);
         } else {
             echo "Le fichier de l'avatar doit être au format jpg.";
         }
     }
     // gestion infos du compte
     if ($authentification->estConnecte()) {
         if ($authentification->estAdmin()) {
             // cas d'un utilisateur connecté et admin et dans l'admin
             if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage'] == 'utilisateurDetail') {
                 $tabForm = $this->getUtilisateurFieldsForAdmin();
             } elseif (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage'] == 'profil') {
                 $tabForm = $this->getUtilisateurFieldsForAdminProfil();
             }
             $errors = $formulaire->getArrayFromPost($tabForm);
             if (count($errors) == 0) {
                 $sqlChampDisplayNumeroArchiveField = "";
                 $sqlChampDisplayDateFinField = "";
                 if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage'] == 'utilisateurDetail') {
                     $sqlChampDisplayNumeroArchiveField = ", displayNumeroArchiveFieldInSaisieEvenement=\"" . $tabForm['displayNumeroArchiveField']['value'] . "\"";
                     $sqlChampDisplayDateFinField = ", displayDateFinFieldInSaisieEvenement=\"" . $tabForm['displayDateFinField']['value'] . "\"";
                 }
                 // test sur le mot de passe
                 if ($tabForm['mdp1']['value'] != '') {
                     // un mot de passe a ete entré ,  donc si pas d'erreur ,  on peut faire l'ajout a la base
                     $reqUpdate = 'update utilisateur 
                             set nom="' . $tabForm['nom']['value'] . '", 
                                 prenom="' . $tabForm['prenom']['value'] . '", 
                                 mail="' . $tabForm['mail']['value'] . '", 
                                 motDePasse="' . md5($tabForm['mdp1']['value']) . '", 
                                 urlSiteWeb="' . $tabForm['urlSiteWeb']['value'] . '", 
                                 idProfil="' . $tabForm['idProfil']['value'] . '", 
                                 alerteMail="' . $tabForm['alerteMail']['value'] . '", 
                                 idVilleFavoris="' . $tabForm['ville']['value'] . '", 
                                 canCopyright="' . $tabForm['canCopyright']['value'] . '", 
                                 canModifyTags="' . $tabForm['canModifyTags']['value'] . '", 
                                 canAddWithoutStreet="' . $tabForm['canAddWithoutStreet']['value'] . '", 
                                 alerteCommentaires="' . $tabForm['alerteCommentaires']['value'] . '", 
                                 idPeriodeEnvoiMailsRegroupes="' . $tabForm['idPeriodeEnvoiMailsRegroupes']['value'] . '", 
                                 alerteAdresses="' . $tabForm['alerteAdresses']['value'] . '", 
                                 displayProfilContactForm="' . $tabForm['afficheFormulaireContactPersoProfilPublic']['value'] . '"
                                 ' . $sqlChampDisplayNumeroArchiveField . '
                                 ' . $sqlChampDisplayDateFinField . '
                             where idUtilisateur="' . $this->variablesPost['idUtilisateurModif'] . '"
                         ';
                     if ($resUpdate = $this->connexionBdd->requete($reqUpdate)) {
                         $majOK = true;
                     }
                 } else {
                     //aucun mot de passe entré ,  on ne le met pas a jour
                     $reqUpdate = 'update utilisateur 
                             set nom="' . $tabForm['nom']['value'] . '", 
                                 prenom="' . $tabForm['prenom']['value'] . '", 
                                 mail="' . $tabForm['mail']['value'] . '", 
                                 urlSiteWeb="' . $tabForm['urlSiteWeb']['value'] . '", 
                                 idProfil="' . $tabForm['idProfil']['value'] . '", 
                                 alerteMail="' . $tabForm['alerteMail']['value'] . '", 
                                 idVilleFavoris="' . $tabForm['ville']['value'] . '", 
                                 canCopyright="' . $tabForm['canCopyright']['value'] . '", 
                                 canModifyTags="' . $tabForm['canModifyTags']['value'] . '", 
                                 canAddWithoutStreet="' . $tabForm['canAddWithoutStreet']['value'] . '", 
                                 idPeriodeEnvoiMailsRegroupes="' . $tabForm['idPeriodeEnvoiMailsRegroupes']['value'] . '", 
                                 alerteCommentaires="' . $tabForm['alerteCommentaires']['value'] . '", 
                                 alerteAdresses="' . $tabForm['alerteAdresses']['value'] . '", 
                                 displayProfilContactForm="' . $tabForm['afficheFormulaireContactPersoProfilPublic']['value'] . '"
                                 ' . $sqlChampDisplayNumeroArchiveField . '
                                 ' . $sqlChampDisplayDateFinField . '
                             where idUtilisateur="' . $this->variablesPost['idUtilisateurModif'] . '"
                         ';
                     if ($resUpdate = $this->connexionBdd->requete($reqUpdate)) {
                         $majOK = true;
                     }
                 }
                 if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage'] == 'utilisateurDetail') {
                     // Si un utilisateur est banni,  on inactive son compte et on met le champs compteBanni à 1
                     $this->majBannissementUtilisateur(array('idUtilisateur' => $this->variablesPost['idUtilisateurModif'], 'champsBanissementApresValidationFormulaire' => $tabForm['bannirUtilisateur']['value']));
                 }
             }
         } elseif ($this->getIdProfilFromUtilisateur($authentification->getIdUtilisateur()) == '3') {
             // cas d'un utilisateur connecté moderateurs
             $tabForm = $this->getUtilisateurFieldsForModerators();
             $errors = $formulaire->getArrayFromPost($tabForm);
             if (count($errors) == 0) {
                 // test sur le mot de passe
                 if ($tabForm['mdp1']['value'] != '') {
                     // un mot de passe a ete entré ,  donc si pas d'erreur ,  on peut faire l'ajout a la base
                     $reqUpdate = 'update utilisateur 
                             set nom="' . $tabForm['nom']['value'] . '", 
                                 prenom="' . $tabForm['prenom']['value'] . '", 
                                 mail="' . $tabForm['mail']['value'] . '", 
                                 motDePasse="' . md5($tabForm['mdp1']['value']) . '", 
                                 urlSiteWeb="' . $tabForm['urlSiteWeb']['value'] . '", 
                                 idVilleFavoris="' . $tabForm['ville']['value'] . '", 
                                 idPeriodeEnvoiMailsRegroupes="' . $tabForm['idPeriodeEnvoiMailsRegroupes']['value'] . '", 
                                 alerteCommentaires="' . $tabForm['alerteCommentaires']['value'] . '", 
                                 alerteAdresses="' . $tabForm['alerteAdresses']['value'] . '", 
                                 alerteMail="' . $tabForm['alerteMail']['value'] . '", 
                                 displayProfilContactForm="' . $tabForm['afficheFormulaireContactPersoProfilPublic']['value'] . '"
                             where idUtilisateur="' . $this->variablesPost['idUtilisateurModif'] . '"
                         ';
                     if ($resUpdate = $this->connexionBdd->requete($reqUpdate)) {
                         $majOK = true;
                     }
                 } else {
                     //aucun mot de passe entré ,  on ne le met pas a jour
                     $reqUpdate = 'update utilisateur 
                             set nom="' . $tabForm['nom']['value'] . '", 
                                 prenom="' . $tabForm['prenom']['value'] . '", 
                                 mail="' . $tabForm['mail']['value'] . '", 
                                 idVilleFavoris="' . $tabForm['ville']['value'] . '", 
                                 urlSiteWeb="' . $tabForm['urlSiteWeb']['value'] . '", 
                                 alerteCommentaires="' . $tabForm['alerteCommentaires']['value'] . '", 
                                 alerteAdresses="' . $tabForm['alerteAdresses']['value'] . '", 
                                 idPeriodeEnvoiMailsRegroupes="' . $tabForm['idPeriodeEnvoiMailsRegroupes']['value'] . '", 
                                 alerteMail="' . $tabForm['alerteMail']['value'] . '", 
                                 displayProfilContactForm="' . $tabForm['afficheFormulaireContactPersoProfilPublic']['value'] . '"
                             where idUtilisateur="' . $this->variablesPost['idUtilisateurModif'] . '"
                         ';
                     if ($resUpdate = $this->connexionBdd->requete($reqUpdate)) {
                         $majOK = true;
                     }
                 }
             }
         } else {
             // cas d'un utilisateur connecté non admin
             $tabForm = $this->getUtilisateurFieldsNotAdmin();
             $errors = $formulaire->getArrayFromPost($tabForm);
             if (count($errors) == 0) {
                 // test sur le mot de passe
                 if ($tabForm['mdp1']['value'] != '') {
                     // un mot de passe a ete entré ,  donc si pas d'erreur ,  on peut faire l'ajout a la base
                     $reqUpdate = 'update utilisateur 
                             set nom="' . $tabForm['nom']['value'] . '", 
                                 prenom="' . $tabForm['prenom']['value'] . '", 
                                 mail="' . $tabForm['mail']['value'] . '", 
                                 urlSiteWeb="' . $tabForm['urlSiteWeb']['value'] . '", 
                                 motDePasse="' . md5($tabForm['mdp1']['value']) . '", 
                                 idVilleFavoris="' . $tabForm['ville']['value'] . '", 
                                 alerteCommentaires="' . $tabForm['alerteCommentaires']['value'] . '", 
                                 alerteAdresses="' . $tabForm['alerteAdresses']['value'] . '", 
                                 alerteMail="' . $tabForm['alerteMail']['value'] . '", 
                                 displayProfilContactForm="' . $tabForm['afficheFormulaireContactPersoProfilPublic']['value'] . '"
                             where idUtilisateur="' . $this->variablesPost['idUtilisateurModif'] . '"
                         ';
                     if ($resUpdate = $this->connexionBdd->requete($reqUpdate)) {
                         $majOK = true;
                     }
                 } else {
                     //aucun mot de passe entré ,  on ne le met pas a jour
                     $reqUpdate = 'update utilisateur 
                             set nom="' . $tabForm['nom']['value'] . '", 
                                 prenom="' . $tabForm['prenom']['value'] . '", 
                                 mail="' . $tabForm['mail']['value'] . '", 
                                 urlSiteWeb="' . $tabForm['urlSiteWeb']['value'] . '", 
                                 idVilleFavoris="' . $tabForm['ville']['value'] . '", 
                                 alerteCommentaires="' . $tabForm['alerteCommentaires']['value'] . '", 
                                 alerteAdresses="' . $tabForm['alerteAdresses']['value'] . '", 
                                 alerteMail="' . $tabForm['alerteMail']['value'] . '", 
                                 displayProfilContactForm="' . $tabForm['afficheFormulaireContactPersoProfilPublic']['value'] . '"
                             where idUtilisateur="' . $this->variablesPost['idUtilisateurModif'] . '"
                         ';
                     if ($resUpdate = $this->connexionBdd->requete($reqUpdate)) {
                         $majOK = true;
                     }
                 }
             }
         }
     } else {
         echo "Vous n'êtes pas connecté.<br>";
     }
     if ($majOK && !$authentification->estAdmin()) {
         echo "La mise à jour a été effectuée";
         // envoi d'un mail a l'admin
         $message = "";
         $message .= "Un utilisateur a modifié son compte ,  pour vérifier : <a href='" . $this->creerUrl('', 'utilisateurDetail', array('idUtilisateur' => $this->variablesPost['idUtilisateurModif'])) . "'>Cliquez ici</a>";
         $mail->sendMailToAdministrators($mail->getSiteMail(), "Un utilisateur a modifié son compte", $message, '', true);
         $this->ajouteMailEnvoiRegroupesAdministrateurs(array('contenu' => $message, 'idTypeMailRegroupement' => 7, 'criteres' => ""));
         // on met a jour la session contenant la ville favorite ,  si on est soi meme l'utilisateur courant
         if ($this->variablesPost['idUtilisateurModif'] == $authentification->getIdUtilisateur()) {
             $this->session->addToSession("idVilleFavoris", $tabForm['ville']['value']);
         }
     } elseif ($authentification->estAdmin()) {
         echo "La mise à jour a été effectuée";
         if ($this->variablesPost['idUtilisateurModif'] == $authentification->getIdUtilisateur()) {
             $this->session->addToSession("idVilleFavoris", $tabForm['ville']['value']);
         }
     } else {
         echo "La mise à jour n'a pas pu être effectuée.";
     }
     //echo $this->afficher($tabForm, $this->variablesPost['idUtilisateurModif']);
 }
 public function handleUploadedFileSimpleMoveTo($params = array())
 {
     if (isset($params['inputFileName']) && $params['inputFileName'] != '') {
         if (isset($_FILES[$params['inputFileName']]) && count($_FILES[$params['inputFileName']]) > 0) {
             if ($_FILES[$params['inputFileName']]['error']) {
                 switch ($_FILES[$params['inputFileName']]['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 , on deplace le fichier temporaire vers la destination voulue
                 if (isset($params['redimensionneImageConfig']) && is_array($params['redimensionneImageConfig']) && count($params['redimensionneImageConfig']) > 0) {
                     $i = new imageObject();
                     foreach ($params['redimensionneImageConfig'] as $tailleMax => $configRedim) {
                         $i->redimension($_FILES[$params['inputFileName']]['tmp_name'], $this->getExtensionFromFile($_FILES[$params['inputFileName']]['name']), $configRedim['destination'], $tailleMax);
                     }
                 } elseif (isset($params['repertoireDestination']) && $params['repertoireDestination'] != '') {
                     $fileNameDestination = $_FILES[$params['inputFileName']]['name'];
                     if (isset($params['renameFileTo']) && $params['renameFileTo'] != '') {
                         $fileNameDestination = $params['renameFileTo'];
                     }
                     move_uploaded_file($_FILES[$params['inputFileName']]['tmp_name'], $params['repertoireDestination'] . "/" . $fileNameDestination);
                 } else {
                     echo "parametre manquant => framework/fileObject::handleUploadedFileSimpleMoveTo<br>";
                 }
             }
         }
     }
 }