1,26 → 1,20 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
|
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* Classe métier de gestion de l'ajout, modification et suppression des images. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package jrest |
* @author Aurelien Peronnet <aurelien@tela-botanica.org> |
* @author Jean-Pascal Milcent <jpm@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
* @package Services |
* @subpackage Bibliothèques |
* @version 0.1 |
* @author Mathias CHOUET <mathias@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @author Aurelien PERONNET <aurelien@tela-botanica.org> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org> |
*/ |
|
/** |
* Classe de gestion de l'ajout, modification et suppression des images |
* |
* in=utf8 |
* out=utf8 |
* |
*/ |
class GestionImage extends Cel { |
|
/** |
33,14 → 27,9 |
*/ |
public function ajouterImage($id_utilisateur, $infos_fichier) { |
$nouvel_ordre = $this->obtenirNouvelOrdrePourUtilisateur($id_utilisateur); |
if (!$nouvel_ordre) { |
$message = "Erreur lors du calcul du nouvel ordre de l'image"; |
$this->logger($message); |
} |
|
$extracteur_metadonnees = new ExtracteurMetadonnees(); |
$informations_image = $extracteur_metadonnees->extraireMetadonnees($infos_fichier['tmp_name']) ; |
|
if (!$informations_image) { |
$message = "Erreur lors de l'extraction des metadonnées"; |
$this->logger($message); |
49,7 → 38,7 |
// ajout de quelques informations supplémentaire, en sus |
// des metadonnées dejà extraites |
$informations_image['ordre'] = $nouvel_ordre ; |
$informations_image['publiable_eflore'] = 'false' ; |
$informations_image['transmission'] = '0' ; |
$informations_image['nom_original'] = $infos_fichier['name'] ; |
|
// le md5 du fichier sert à repérer les images en doublons |
63,13 → 52,8 |
$informations_image['nom_utilisateur'] = $infos_utilisateur['nom']; |
$informations_image['prenom_utilisateur'] = $infos_utilisateur['prenom']; |
|
$requete_insertion_infos_image = $this->construireRequeteInsertionImage($informations_image); |
|
// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes) |
// ce qui est fréquent dans les métadonnées |
// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple |
$resultat_insertion_infos_image = Cel::db()->executer($requete_insertion_infos_image); |
|
$requete = $this->construireRequeteInsertionImage($informations_image); |
$resultat_insertion_infos_image = Cel::db()->executer($requete); |
if (!$resultat_insertion_infos_image) { |
$message = "Echec de l'insertion dans la base de donnees : " ; |
$this->logger($message); |
76,7 → 60,6 |
} |
|
$id_nouvelle_image = $this->obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $nouvel_ordre); |
|
if (!$id_nouvelle_image) { |
$message = "Impossible d'obtenir le nouvel identifiant de l'image"; |
$this->logger($message); |
84,7 → 67,6 |
|
$manipulateur_image = new ImageRecreation($this->config); |
$fichier_stocke = $manipulateur_image->stockerFichierEtCreerMiniatures($infos_fichier, $id_nouvelle_image); |
|
if (!$fichier_stocke) { |
$message = "Erreur lors du stockage du fichier"; |
$this->logger($message); |
105,6 → 87,9 |
if ($resultat !== false) { |
$nouvel_ordre = $resultat[0]['max_ordre']; |
$nouvel_ordre++; |
} else { |
$message = "Erreur lors du calcul du nouvel ordre de l'image"; |
$this->logger($message); |
} |
return $nouvel_ordre; |
} |
127,46 → 112,38 |
} |
|
private function construireRequeteInsertionImage($informations_image) { |
$requete_insertion_image = "INSERT INTO cel_images "; |
$champs_a_inserer = '' ; |
$valeurs_a_inserer = '' ; |
$infos = array( |
'date_creation' => 'NOW()', |
'date_modification' => 'NULL'); |
foreach ($informations_image as $champ => $valeur) { |
$champs_a_inserer .= $champ.',' ; |
|
if (is_null($valeur)) { |
$valeurs_a_inserer .= 'NULL,' ; |
} else { |
$valeurs_a_inserer .= Cel::db()->proteger($valeur).',' ; |
$infos[$champ] = is_null($valeur) ? 'NULL' : Cel::db()->proteger($valeur); |
} |
} |
$champs = implode(', ', array_keys($infos)); |
$valeurs = implode(', ', array_values($infos)); |
|
$champs_a_inserer .= 'date_modification,' ; |
$valeurs_a_inserer .= '"0000-00-00 00:00:00",' ; |
$champs_a_inserer .= 'date_creation' ; |
$valeurs_a_inserer .= 'CURRENT_TIMESTAMP()' ; |
$requete_insertion_image .= "($champs_a_inserer) VALUES ($valeurs_a_inserer)" ; |
$requete_insertion_image .= ' -- '.__FILE__.' : '.__LINE__; |
|
return $requete_insertion_image; |
$requete = "INSERT INTO cel_images ($champs) ". |
"VALUES ($valeurs) ". |
' -- '.__FILE__.' : '.__LINE__; |
return $requete; |
} |
|
/** |
* Modifie les champs de metadonnées d'une image |
* |
* @param array $utilisateur identifiant utilisateur |
* @param array $id_utilisateur identifiant utilisateur |
* @param array $id id de l'image |
* @param array $parametres un taleau contenant des valeurs indexées par les noms de champs de la bdd |
* @return boolean true ou false suivant le succès de l'opération |
*/ |
public function modifierImage($utilisateur, $id_image, $parametres) { |
$requete_mise_a_jour_image = 'UPDATE cel_images SET ' ; |
public function modifierImage($id_utilisateur, $id_image, $parametres) { |
$champs_a_mettre_a_jour = $this->construireRequeteMajMetaDonnees($parametres); |
$requete_mise_a_jour_image .= $champs_a_mettre_a_jour; |
$requete_mise_a_jour_image .= ' WHERE id_image = '.Cel::db()->proteger($id_image). |
' AND ce_utilisateur = '.Cel::db()->proteger($utilisateur). |
|
$requete = "UPDATE cel_images SET $champs_a_mettre_a_jour ". |
' WHERE id_image = '.Cel::db()->proteger($id_image). |
' AND ce_utilisateur = '.Cel::db()->proteger($id_utilisateur). |
' -- '.__FILE__.' : '.__LINE__; |
$resultat_mise_a_jour = Cel::db()->executer($requete_mise_a_jour_image); |
return ($resultat_mise_a_jour !== false); |
$resultat = Cel::db()->executer($requete); |
return ($resultat !== false); |
} |
|
/** |
180,7 → 157,7 |
$champs_a_ignorer = array('id_image'); |
foreach ($valeurs_metadonnees as $champ => $valeur) { |
if (!in_array($champ,$champs_a_ignorer)) { |
if ($champ == 'date_prise_de_vue' && trim($valeur != "")) { |
if ($champ == 'date_prise_de_vue' && trim($valeur != '')) { |
$date_tab = explode('/',$valeur) ; |
$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ; |
$requete_maj_champs .= $champ.' = '.Cel::db()->proteger($date).' , ' ; |
207,7 → 184,6 |
"WHERE ce_utilisateur = $idUtilisateurP ". |
"AND ordre IN ($idsImagesP) ". |
' -- '.__FILE__.' : '.__LINE__; |
|
$resultats = Cel::db()->requeter($requete); |
|
$idsImages = array(); |
214,7 → 190,6 |
foreach ($resultats as $id_image) { |
$idsImages[] = $id_image['id_image']; |
} |
|
return $this->supprimerImage($idsImages); |
} |
|
273,5 → 248,4 |
$migration_releve = Cel::db()->executer($requete); |
return $migration_releve; |
} |
} |
?> |
} |