| Line 1... |
Line 1... |
| 1 |
<?php
|
1 |
<?php
|
| 2 |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
|
- |
|
| 3 |
|
- |
|
| 4 |
/**
|
- |
|
| 5 |
* PHP Version 5
|
- |
|
| 6 |
*
|
- |
|
| 7 |
* @category CEL
|
- |
|
| 8 |
* @package jrest
|
- |
|
| 9 |
* @author Aurelien Peronnet <aurelien@tela-botanica.org>
|
- |
|
| 10 |
* @author Jean-Pascal Milcent <jpm@tela-botanica.org>
|
- |
|
| 11 |
* @copyright 2010 Tela-Botanica
|
- |
|
| 12 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
|
- |
|
| 13 |
* @version SVN: <svn_id>
|
2 |
// declare(encoding='UTF-8');
|
| 14 |
* @link /doc/jrest/
|
- |
|
| 15 |
*/
|
- |
|
| 16 |
|
- |
|
| 17 |
/**
|
3 |
/**
|
| 18 |
* Classe de gestion de l'ajout, modification et suppression des images
|
4 |
* Classe métier de gestion de l'ajout, modification et suppression des images.
|
| 19 |
*
|
5 |
*
|
| - |
|
6 |
* @internal Mininum PHP version : 5.2
|
| 20 |
* in=utf8
|
7 |
* @category CEL
|
| - |
|
8 |
* @package Services
|
| - |
|
9 |
* @subpackage Bibliothèques
|
| 21 |
* out=utf8
|
10 |
* @version 0.1
|
| 22 |
*
|
- |
|
| - |
|
11 |
* @author Mathias CHOUET <mathias@tela-botanica.org>
|
| - |
|
12 |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
|
| - |
|
13 |
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
|
| - |
|
14 |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
|
| - |
|
15 |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
| - |
|
16 |
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
|
| 23 |
*/
|
17 |
*/
|
| 24 |
class GestionImage extends Cel {
|
18 |
class GestionImage extends Cel {
|
| Line 25... |
Line 19... |
| 25 |
|
19 |
|
| 26 |
/**
|
20 |
/**
|
| 27 |
* Ajoute une image dans la base de données et stocke le fichier en fabriquant les miniatures,
|
21 |
* Ajoute une image dans la base de données et stocke le fichier en fabriquant les miniatures,
|
| Line 31... |
Line 25... |
| 31 |
* @param array $infos_fichier les infos sur le fichier à traiter, de la même forme que les
|
25 |
* @param array $infos_fichier les infos sur le fichier à traiter, de la même forme que les
|
| 32 |
* élements du tableau $_FILES de php
|
26 |
* élements du tableau $_FILES de php
|
| 33 |
*/
|
27 |
*/
|
| 34 |
public function ajouterImage($id_utilisateur, $infos_fichier) {
|
28 |
public function ajouterImage($id_utilisateur, $infos_fichier) {
|
| 35 |
$nouvel_ordre = $this->obtenirNouvelOrdrePourUtilisateur($id_utilisateur);
|
29 |
$nouvel_ordre = $this->obtenirNouvelOrdrePourUtilisateur($id_utilisateur);
|
| 36 |
if (!$nouvel_ordre) {
|
- |
|
| 37 |
$message = "Erreur lors du calcul du nouvel ordre de l'image";
|
- |
|
| 38 |
$this->logger($message);
|
- |
|
| 39 |
}
|
- |
|
| Line 40... |
Line 30... |
| 40 |
|
30 |
|
| 41 |
$extracteur_metadonnees = new ExtracteurMetadonnees();
|
31 |
$extracteur_metadonnees = new ExtracteurMetadonnees();
|
| 42 |
$informations_image = $extracteur_metadonnees->extraireMetadonnees($infos_fichier['tmp_name']) ;
|
- |
|
| 43 |
|
32 |
$informations_image = $extracteur_metadonnees->extraireMetadonnees($infos_fichier['tmp_name']) ;
|
| 44 |
if (!$informations_image) {
|
33 |
if (!$informations_image) {
|
| 45 |
$message = "Erreur lors de l'extraction des metadonnées";
|
34 |
$message = "Erreur lors de l'extraction des metadonnées";
|
| 46 |
$this->logger($message);
|
35 |
$this->logger($message);
|
| Line 47... |
Line 36... |
| 47 |
}
|
36 |
}
|
| 48 |
|
37 |
|
| 49 |
// ajout de quelques informations supplémentaire, en sus
|
38 |
// ajout de quelques informations supplémentaire, en sus
|
| 50 |
// des metadonnées dejà extraites
|
39 |
// des metadonnées dejà extraites
|
| 51 |
$informations_image['ordre'] = $nouvel_ordre ;
|
40 |
$informations_image['ordre'] = $nouvel_ordre ;
|
| Line 52... |
Line 41... |
| 52 |
$informations_image['publiable_eflore'] = 'false' ;
|
41 |
$informations_image['transmission'] = '0' ;
|
| 53 |
$informations_image['nom_original'] = $infos_fichier['name'] ;
|
42 |
$informations_image['nom_original'] = $infos_fichier['name'] ;
|
| Line 61... |
Line 50... |
| 61 |
|
50 |
|
| 62 |
$informations_image['courriel_utilisateur'] = $infos_utilisateur['courriel'];
|
51 |
$informations_image['courriel_utilisateur'] = $infos_utilisateur['courriel'];
|
| 63 |
$informations_image['nom_utilisateur'] = $infos_utilisateur['nom'];
|
52 |
$informations_image['nom_utilisateur'] = $infos_utilisateur['nom'];
|
| Line 64... |
Line 53... |
| 64 |
$informations_image['prenom_utilisateur'] = $infos_utilisateur['prenom'];
|
53 |
$informations_image['prenom_utilisateur'] = $infos_utilisateur['prenom'];
|
| 65 |
|
- |
|
| 66 |
$requete_insertion_infos_image = $this->construireRequeteInsertionImage($informations_image);
|
- |
|
| 67 |
|
- |
|
| 68 |
// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes)
|
- |
|
| 69 |
// ce qui est fréquent dans les métadonnées
|
54 |
|
| 70 |
// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple
|
- |
|
| 71 |
$resultat_insertion_infos_image = Cel::db()->executer($requete_insertion_infos_image);
|
55 |
$requete = $this->construireRequeteInsertionImage($informations_image);
|
| 72 |
|
56 |
$resultat_insertion_infos_image = Cel::db()->executer($requete);
|
| 73 |
if (!$resultat_insertion_infos_image) {
|
57 |
if (!$resultat_insertion_infos_image) {
|
| 74 |
$message = "Echec de l'insertion dans la base de donnees : " ;
|
58 |
$message = "Echec de l'insertion dans la base de donnees : " ;
|
| Line 75... |
Line 59... |
| 75 |
$this->logger($message);
|
59 |
$this->logger($message);
|
| 76 |
}
|
- |
|
| 77 |
|
60 |
}
|
| 78 |
$id_nouvelle_image = $this->obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $nouvel_ordre);
|
61 |
|
| 79 |
|
62 |
$id_nouvelle_image = $this->obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $nouvel_ordre);
|
| 80 |
if (!$id_nouvelle_image) {
|
63 |
if (!$id_nouvelle_image) {
|
| Line 81... |
Line 64... |
| 81 |
$message = "Impossible d'obtenir le nouvel identifiant de l'image";
|
64 |
$message = "Impossible d'obtenir le nouvel identifiant de l'image";
|
| 82 |
$this->logger($message);
|
65 |
$this->logger($message);
|
| 83 |
}
|
- |
|
| 84 |
|
66 |
}
|
| 85 |
$manipulateur_image = new ImageRecreation($this->config);
|
67 |
|
| 86 |
$fichier_stocke = $manipulateur_image->stockerFichierEtCreerMiniatures($infos_fichier, $id_nouvelle_image);
|
68 |
$manipulateur_image = new ImageRecreation($this->config);
|
| 87 |
|
69 |
$fichier_stocke = $manipulateur_image->stockerFichierEtCreerMiniatures($infos_fichier, $id_nouvelle_image);
|
| Line 103... |
Line 85... |
| 103 |
|
85 |
|
| 104 |
$nouvel_ordre = 0;
|
86 |
$nouvel_ordre = 0;
|
| 105 |
if ($resultat !== false) {
|
87 |
if ($resultat !== false) {
|
| 106 |
$nouvel_ordre = $resultat[0]['max_ordre'];
|
88 |
$nouvel_ordre = $resultat[0]['max_ordre'];
|
| - |
|
89 |
$nouvel_ordre++;
|
| - |
|
90 |
} else {
|
| - |
|
91 |
$message = "Erreur lors du calcul du nouvel ordre de l'image";
|
| 107 |
$nouvel_ordre++;
|
92 |
$this->logger($message);
|
| 108 |
}
|
93 |
}
|
| 109 |
return $nouvel_ordre;
|
94 |
return $nouvel_ordre;
|
| Line 110... |
Line 95... |
| 110 |
}
|
95 |
}
|
| Line 125... |
Line 110... |
| 125 |
}
|
110 |
}
|
| 126 |
return $id_image;
|
111 |
return $id_image;
|
| 127 |
}
|
112 |
}
|
| Line 128... |
Line 113... |
| 128 |
|
113 |
|
| 129 |
private function construireRequeteInsertionImage($informations_image) {
|
114 |
private function construireRequeteInsertionImage($informations_image) {
|
| 130 |
$requete_insertion_image = "INSERT INTO cel_images ";
|
115 |
$infos = array(
|
| 131 |
$champs_a_inserer = '' ;
|
116 |
'date_creation' => 'NOW()',
|
| 132 |
$valeurs_a_inserer = '' ;
|
117 |
'date_modification' => 'NULL');
|
| 133 |
foreach ($informations_image as $champ => $valeur) {
|
- |
|
| 134 |
$champs_a_inserer .= $champ.',' ;
|
- |
|
| 135 |
|
- |
|
| 136 |
if (is_null($valeur)) {
|
- |
|
| 137 |
$valeurs_a_inserer .= 'NULL,' ;
|
- |
|
| 138 |
} else {
|
118 |
foreach ($informations_image as $champ => $valeur) {
|
| 139 |
$valeurs_a_inserer .= Cel::db()->proteger($valeur).',' ;
|
- |
|
| 140 |
}
|
119 |
$infos[$champ] = is_null($valeur) ? 'NULL' : Cel::db()->proteger($valeur);
|
| - |
|
120 |
}
|
| - |
|
121 |
$champs = implode(', ', array_keys($infos));
|
| Line 141... |
Line 122... |
| 141 |
}
|
122 |
$valeurs = implode(', ', array_values($infos));
|
| 142 |
|
- |
|
| 143 |
$champs_a_inserer .= 'date_modification,' ;
|
123 |
|
| 144 |
$valeurs_a_inserer .= '"0000-00-00 00:00:00",' ;
|
- |
|
| 145 |
$champs_a_inserer .= 'date_creation' ;
|
- |
|
| 146 |
$valeurs_a_inserer .= 'CURRENT_TIMESTAMP()' ;
|
124 |
$requete = "INSERT INTO cel_images ($champs) ".
|
| 147 |
$requete_insertion_image .= "($champs_a_inserer) VALUES ($valeurs_a_inserer)" ;
|
- |
|
| 148 |
$requete_insertion_image .= ' -- '.__FILE__.' : '.__LINE__;
|
125 |
"VALUES ($valeurs) ".
|
| 149 |
|
126 |
' -- '.__FILE__.' : '.__LINE__;
|
| Line 150... |
Line 127... |
| 150 |
return $requete_insertion_image;
|
127 |
return $requete;
|
| 151 |
}
|
128 |
}
|
| 152 |
|
129 |
|
| 153 |
/**
|
130 |
/**
|
| 154 |
* Modifie les champs de metadonnées d'une image
|
131 |
* Modifie les champs de metadonnées d'une image
|
| 155 |
*
|
132 |
*
|
| 156 |
* @param array $utilisateur identifiant utilisateur
|
133 |
* @param array $id_utilisateur identifiant utilisateur
|
| 157 |
* @param array $id id de l'image
|
134 |
* @param array $id id de l'image
|
| 158 |
* @param array $parametres un taleau contenant des valeurs indexées par les noms de champs de la bdd
|
135 |
* @param array $parametres un taleau contenant des valeurs indexées par les noms de champs de la bdd
|
| 159 |
* @return boolean true ou false suivant le succès de l'opération
|
- |
|
| 160 |
*/
|
136 |
* @return boolean true ou false suivant le succès de l'opération
|
| - |
|
137 |
*/
|
| 161 |
public function modifierImage($utilisateur, $id_image, $parametres) {
|
138 |
public function modifierImage($id_utilisateur, $id_image, $parametres) {
|
| 162 |
$requete_mise_a_jour_image = 'UPDATE cel_images SET ' ;
|
139 |
$champs_a_mettre_a_jour = $this->construireRequeteMajMetaDonnees($parametres);
|
| 163 |
$champs_a_mettre_a_jour = $this->construireRequeteMajMetaDonnees($parametres);
|
140 |
|
| 164 |
$requete_mise_a_jour_image .= $champs_a_mettre_a_jour;
|
141 |
$requete = "UPDATE cel_images SET $champs_a_mettre_a_jour ".
|
| 165 |
$requete_mise_a_jour_image .= ' WHERE id_image = '.Cel::db()->proteger($id_image).
|
142 |
' WHERE id_image = '.Cel::db()->proteger($id_image).
|
| 166 |
' AND ce_utilisateur = '.Cel::db()->proteger($utilisateur).
|
143 |
' AND ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).
|
| 167 |
' -- '.__FILE__.' : '.__LINE__;
|
144 |
' -- '.__FILE__.' : '.__LINE__;
|
| Line 168... |
Line 145... |
| 168 |
$resultat_mise_a_jour = Cel::db()->executer($requete_mise_a_jour_image);
|
145 |
$resultat = Cel::db()->executer($requete);
|
| 169 |
return ($resultat_mise_a_jour !== false);
|
146 |
return ($resultat !== false);
|
| 170 |
}
|
147 |
}
|
| Line 178... |
Line 155... |
| 178 |
private function construireRequeteMajMetaDonnees($valeurs_metadonnees) {
|
155 |
private function construireRequeteMajMetaDonnees($valeurs_metadonnees) {
|
| 179 |
$requete_maj_champs = '';
|
156 |
$requete_maj_champs = '';
|
| 180 |
$champs_a_ignorer = array('id_image');
|
157 |
$champs_a_ignorer = array('id_image');
|
| 181 |
foreach ($valeurs_metadonnees as $champ => $valeur) {
|
158 |
foreach ($valeurs_metadonnees as $champ => $valeur) {
|
| 182 |
if (!in_array($champ,$champs_a_ignorer)) {
|
159 |
if (!in_array($champ,$champs_a_ignorer)) {
|
| 183 |
if ($champ == 'date_prise_de_vue' && trim($valeur != "")) {
|
160 |
if ($champ == 'date_prise_de_vue' && trim($valeur != '')) {
|
| 184 |
$date_tab = explode('/',$valeur) ;
|
161 |
$date_tab = explode('/', $valeur) ;
|
| 185 |
$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ;
|
162 |
$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ;
|
| 186 |
$requete_maj_champs .= $champ.' = '.Cel::db()->proteger($date).' , ' ;
|
163 |
$requete_maj_champs .= $champ.' = '.Cel::db()->proteger($date).' , ' ;
|
| 187 |
} else {
|
164 |
} else {
|
| 188 |
$requete_maj_champs .= $champ.' = '.Cel::db()->proteger($valeur).' , ' ;
|
165 |
$requete_maj_champs .= $champ.' = '.Cel::db()->proteger($valeur).' , ' ;
|
| 189 |
}
|
166 |
}
|
| Line 205... |
Line 182... |
| 205 |
$requete = 'SELECT id_image '.
|
182 |
$requete = 'SELECT id_image '.
|
| 206 |
'FROM cel_images '.
|
183 |
'FROM cel_images '.
|
| 207 |
"WHERE ce_utilisateur = $idUtilisateurP ".
|
184 |
"WHERE ce_utilisateur = $idUtilisateurP ".
|
| 208 |
"AND ordre IN ($idsImagesP) ".
|
185 |
"AND ordre IN ($idsImagesP) ".
|
| 209 |
' -- '.__FILE__.' : '.__LINE__;
|
186 |
' -- '.__FILE__.' : '.__LINE__;
|
| 210 |
|
- |
|
| 211 |
$resultats = Cel::db()->requeter($requete);
|
187 |
$resultats = Cel::db()->requeter($requete);
|
| Line 212... |
Line 188... |
| 212 |
|
188 |
|
| 213 |
$idsImages = array();
|
189 |
$idsImages = array();
|
| 214 |
foreach ($resultats as $id_image) {
|
190 |
foreach ($resultats as $id_image) {
|
| 215 |
$idsImages[] = $id_image['id_image'];
|
191 |
$idsImages[] = $id_image['id_image'];
|
| 216 |
}
|
- |
|
| 217 |
|
192 |
}
|
| 218 |
return $this->supprimerImage($idsImages);
|
193 |
return $this->supprimerImage($idsImages);
|
| Line 219... |
Line 194... |
| 219 |
}
|
194 |
}
|
| 220 |
|
195 |
|
| Line 271... |
Line 246... |
| 271 |
' -- '.__FILE__.' : '.__LINE__;
|
246 |
' -- '.__FILE__.' : '.__LINE__;
|
| Line 272... |
Line 247... |
| 272 |
|
247 |
|
| 273 |
$migration_releve = Cel::db()->executer($requete);
|
248 |
$migration_releve = Cel::db()->executer($requete);
|
| 274 |
return $migration_releve;
|
249 |
return $migration_releve;
|
| 275 |
}
|
- |
|
| 276 |
}
|
- |
|
| 277 |
?>
|
250 |
}
|
| - |
|
251 |
}
|
| 278 |
|
252 |
|