/trunk/jrest/bibliotheque/Bdd.php |
---|
File deleted |
\ No newline at end of file |
/trunk/jrest/bibliotheque/CartoGroupage.php |
---|
1,4 → 1,20 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe de groupage des obs par quadtree pour la carto. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @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> |
*/ |
class CartoGroupage { |
const MARQUEUR_GROUPE = 'GROUPE'; |
const MARQUEUR_COMMUNE = 'COMMUNE'; |
36,16 → 52,14 |
*/ |
public static function creerGroupesQuadtree(&$markers, $neLat, $neLng, $swLat, $swLng, $zoom = 3) { |
if (count($markers) > self::$seuilClusterisation) { |
self::calculerProfondeurMax($zoom); |
self::calculerPasCorrectionCentre($zoom); |
$noeudRacine = array('nbrePoints' => count($markers), 'points' => $markers); |
self::attribuerAuCadran($noeudRacine, $neLat, $neLng, $swLat, $swLng); |
} else { |
foreach($markers as &$marker) { |
if(!self::estUnPointAExclure($marker)) { |
foreach ($markers as &$marker) { |
if (!self::estUnPointAExclure($marker)) { |
$emplacement = self::formaterPointPourAjout($marker); |
self::mettreAJourBornes($marker); |
$points = array($marker); |
60,10 → 74,9 |
} |
private function calculerCoefficientReductionPas() { |
if(self::$coefficientReductionPas == null) { |
if (self::$coefficientReductionPas == null) { |
self::$coefficientReductionPas = (self::$pasZoomMaxClustering - self::$pasZoomDefaut)/(self::$zoomMaxClustering - self::$zoomDefaut); |
} |
return self::$coefficientReductionPas; |
} |
72,15 → 85,14 |
} |
private function calculerCoefficientProfondeurMax() { |
if(self::$coefficientProfondeurMax == null) { |
if (self::$coefficientProfondeurMax == null) { |
self::$coefficientProfondeurMax = (self::$profondeurMax - self::$profondeurMin)/(self::$zoomMaxClustering - self::$zoomDefaut); |
} |
return self::$coefficientProfondeurMax; |
} |
private function calculerProfondeurMax($zoom) { |
if($zoom > self::$zoomDefaut) { |
if ($zoom > self::$zoomDefaut) { |
self::$profondeurMax = round(($zoom - self::$zoomDefaut) * self::calculerCoefficientProfondeurMax() + self::$profondeurMin,0); |
} else { |
self::$profondeurMax = 1; |
158,11 → 170,11 |
private static function coordonneesSontNulles(&$point) { |
$coord_nulles = ($point['latitude'] == '000null' || |
$point['latitude'] == 0 || |
$point['latitude'] == '' || |
$point['longitude'] == '000null' || |
$point['longitude'] == 0 || |
$point['longitude'] == ''); |
$point['latitude'] == 0 || |
$point['latitude'] == '' || |
$point['longitude'] == '000null' || |
$point['longitude'] == 0 || |
$point['longitude'] == ''); |
return $coord_nulles; |
} |
173,7 → 185,7 |
private static function formaterNomStation(&$point, $type_emplacement) { |
$station = ''; |
if($type_emplacement == 'stations' && $point['station'] != '' && $point['station'] != '000null') { |
if ($type_emplacement == 'stations' && $point['station'] != '' && $point['station'] != '000null') { |
$station = $point['station']; |
} else { |
$id_zone_geo = $point['ce_zone_geo']; |
190,11 → 202,11 |
} |
private static function formaterPointPourAjout(&$point) { |
if(isset($point['type_emplacement'])) { |
if (isset($point['type_emplacement'])) { |
return $point['type_emplacement']; |
} |
if(self::coordonneesSontNulles($point) || self::estSensible($point)) { |
if (self::coordonneesSontNulles($point) || self::estSensible($point)) { |
$point_allege = array(); |
$point_allege['id'] = self::MARQUEUR_COMMUNE.':'.$point['wgs84_latitude'].'|'.$point['wgs84_longitude']; |
$point_allege['type_emplacement'] = 'communes'; |
215,7 → 227,6 |
$point = $point_allege; |
} |
return $point['type_emplacement']; |
} |
259,7 → 270,6 |
return $groupe; |
} |
private static function estUnParentFeuilles(&$noeud) { |
return self::estUneFeuille($noeud['A']) && |
self::estUneFeuille($noeud['B']) && |
274,5 → 284,4 |
(!isset($noeud['C']) || $noeud['C'] == null) && |
(!isset($noeud['D']) || $noeud['D'] == null); |
} |
} |
?> |
} |
/trunk/jrest/bibliotheque/Cel.php |
---|
1,16 → 1,21 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe mère abstraite contenant les méthodes génériques des services. |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @author Aurélien Peronnet <aurelien@tela-botanica.org> |
* @author Raphaël Droz <raphael@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 © 2006-2014 Tela Botanica |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @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> |
*/ |
// TODO : il faudrait déplacer les méthodes des sections de cette classe dans des classes séparées chargées via un Conteneur. |
require_once('Bdd2.php'); |
abstract class Cel { |
/trunk/jrest/bibliotheque/ExtracteurMetadonnees.php |
---|
1,16 → 1,19 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe d'extraction de metadonnées afin de les mettre dans |
* un tableau au format du cel |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* Classe d'extraction de metadonnées d'un fichier JPEG afin de les mettre dans un tableau au format du CEL. |
* |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@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> |
* @version $Id$ |
* @copyright © 2012, Tela Botanica |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @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> |
*/ |
class ExtracteurMetadonnees { |
496,10 → 499,10 |
} |
public function decoderMetadonneesBasique($chemin_fichier) { |
$exif = @exif_read_data($chemin_fichier, "EXIF,COMPUTED,IFD0,FILE,COMMENT", true, false); |
$exif = @exif_read_data($chemin_fichier, "EXIF,COMPUTED,IFD0,FILE,COMMENT", true, false); |
// tant pis pour les makernote et xmp, les décoder demande trop de librairies externes, autant installer exiftool alors |
$metadonnees = array(); |
// tant pis pour les makernote et xmp, les décoder demande trop de librairies externes, autant installer exiftool alors |
$metadonnees = array(); |
$metadonnees['XMP'] = array(); |
unset($metadonnees['EXIF']['MakerNote']); |
$metadonnees['MAKERNOTE'] = array(); |
511,142 → 514,140 |
$metadonnees_non_formatees = array_merge($metadonnees_non_formatees, $exif['IFD0']); |
} |
$metadonnees['EXIF'] = $this->formaterTableauExif($metadonnees_non_formatees); |
$metadonnees['IPTC'] = $this->extraireIptc($chemin_fichier); |
$metadonnees['File'] = array( |
'ImageWidth' => array('id' => '', 'valeur' => $exif['COMPUTED']['Width']), |
$metadonnees['IPTC'] = $this->extraireIptc($chemin_fichier); |
$metadonnees['File'] = array( |
'ImageWidth' => array('id' => '', 'valeur' => $exif['COMPUTED']['Width']), |
'ImageHeight' => array('id' => '', 'valeur' => $exif['COMPUTED']['Height'])); |
return $metadonnees ; |
} |
return $metadonnees ; |
} |
private function formaterTableauExif(&$tableau) { |
$tableau_exif_formate = array(); |
private function formaterTableauExif(&$tableau) { |
$tableau_exif_formate = array(); |
foreach ($tableau as $nom_tag => $valeur) { |
$id = ''; |
if (isset($this->tableau_ids_tags_exif[$nom_tag])) { |
$id = $this->tableau_ids_tags_exif[$nom_tag]; |
} |
$tableau_exif_formate[$nom_tag] = array('id' => $id, 'valeur' => $valeur); |
} |
foreach ($tableau as $nom_tag => $valeur) { |
$id = ''; |
if (isset($this->tableau_ids_tags_exif[$nom_tag])) { |
$id = $this->tableau_ids_tags_exif[$nom_tag]; |
} |
$tableau_exif_formate[$nom_tag] = array('id' => $id, 'valeur' => $valeur); |
} |
return $tableau_exif_formate; |
} |
return $tableau_exif_formate; |
} |
/** |
* Extraction des metadonnées iptc |
**/ |
public function extraireIptc($chemin_fichier) { |
$meta = array(); |
/** |
* Extraction des metadonnées iptc |
*/ |
public function extraireIptc($chemin_fichier) { |
$meta = array(); |
// getimagesize renvoie les infos iptc dans le tableau info |
$info = array(); |
$size = getimagesize($chemin_fichier, $info); |
// getimagesize renvoie les infos iptc dans le tableau info |
$info = array(); |
$size = getimagesize($chemin_fichier, $info); |
// s'il existe |
if (isset($info["APP13"])) { |
// on parse les donnees |
$iptc = iptcparse($info["APP13"]); |
if ($iptc) { |
// et on les analyse |
foreach ($iptc as $marker => $section) { |
foreach ($section as $nom => $val) { |
// pour remplir le tableau de donnees |
$this->decoderValeurIptc($marker, $val, $meta); |
} |
} |
} |
} |
// s'il existe |
if (isset($info['APP13'])) { |
// on parse les donnees |
$iptc = iptcparse($info['APP13']); |
if ($iptc) { |
// et on les analyse |
foreach ($iptc as $marker => $section) { |
foreach ($section as $nom => $val) { |
// pour remplir le tableau de donnees |
$this->decoderValeurIptc($marker, $val, $meta); |
} |
} |
} |
} |
return $meta; |
} |
return $meta; |
} |
/** |
* Stocke une valeur de metadonnées iptc dans le champ du tableau correspondant |
* @param String $nom nom de la valeur |
* @param String $val valeur |
* @param String $data référence vers le tableau où la donnée sera stockée |
**/ |
private function decoderValeurIptc($nom, $val, &$data_tab) { |
switch ($nom) { |
case "2#005" :// mots cles iptc |
$data_tab['Category'] = array('id' => '5', 'valeur' => $val); |
break; |
case "2#080" :// champ by line |
$data_tab['By-Line'] = array('id' => '80', 'valeur' => $val); |
break ; |
case "2#085" :// champ by line titre |
$data_tab['By-LineTitle'] = array('id' => '85', 'valeur' => $val); |
break ; |
case "2#090" :// ville |
$data_tab['City'] = array('id' => '90', 'valeur' => $val); |
break ; |
case "2#092" :// sous location |
$data_tab['SubLocation'] = array('id' => '92', 'valeur' => $val); |
break ; |
case "2#095" :// etat (pour les us) |
$data_tab['ProvinceState'] = array('id' => '95', 'valeur' => $val); |
break ; |
case "2#100" :// code pays |
$data_tab['CountryPrimaryLocationCode'] = array('id' => '100', 'valeur' => $val); |
break ; |
case "2#101" :// code pays |
$data_tab['CountryName'] = array('id' => '101', 'valeur' => $val); |
break ; |
case "2#105" :// titre principal |
$data_tab['Headline'] = array('id' => '105', 'valeur' => $val); |
break ; |
case "2#110" :// credit |
$data_tab['Credit'] = array('id' => '110', 'valeur' => $val); |
break ; |
case "2#116" :// copyright |
$data_tab['CopyrightNotice'] = array('id' => '116', 'valeur' => $val); |
break ; |
case "2#118" :// contact |
$data_tab['Contact'] = array('id' => '118', 'valeur' => $val); |
break ; |
default: |
unset($data_tab['nom']); |
} |
} |
/** |
* Stocke une valeur de metadonnées iptc dans le champ du tableau correspondant |
* @param String $nom nom de la valeur |
* @param String $val valeur |
* @param String $data référence vers le tableau où la donnée sera stockée |
**/ |
private function decoderValeurIptc($nom, $val, &$data_tab) { |
switch ($nom) { |
case "2#005" :// mots cles iptc |
$data_tab['Category'] = array('id' => '5', 'valeur' => $val); |
break; |
case "2#080" :// champ by line |
$data_tab['By-Line'] = array('id' => '80', 'valeur' => $val); |
break ; |
case "2#085" :// champ by line titre |
$data_tab['By-LineTitle'] = array('id' => '85', 'valeur' => $val); |
break ; |
case "2#090" :// ville |
$data_tab['City'] = array('id' => '90', 'valeur' => $val); |
break ; |
case "2#092" :// sous location |
$data_tab['SubLocation'] = array('id' => '92', 'valeur' => $val); |
break ; |
case "2#095" :// etat (pour les us) |
$data_tab['ProvinceState'] = array('id' => '95', 'valeur' => $val); |
break ; |
case "2#100" :// code pays |
$data_tab['CountryPrimaryLocationCode'] = array('id' => '100', 'valeur' => $val); |
break ; |
case "2#101" :// code pays |
$data_tab['CountryName'] = array('id' => '101', 'valeur' => $val); |
break ; |
case "2#105" :// titre principal |
$data_tab['Headline'] = array('id' => '105', 'valeur' => $val); |
break ; |
case "2#110" :// credit |
$data_tab['Credit'] = array('id' => '110', 'valeur' => $val); |
break ; |
case "2#116" :// copyright |
$data_tab['CopyrightNotice'] = array('id' => '116', 'valeur' => $val); |
break ; |
case "2#118" :// contact |
$data_tab['Contact'] = array('id' => '118', 'valeur' => $val); |
break ; |
default: |
unset($data_tab['nom']); |
} |
} |
private function obtenirHauteur() { |
$hauteur = isset($this->meta['File']['ImageHeight']) ? $this->meta['File']['ImageHeight']['valeur'] : ''; |
return $hauteur; |
} |
private function obtenirHauteur() { |
$hauteur = isset($this->meta['File']['ImageHeight']) ? $this->meta['File']['ImageHeight']['valeur'] : ''; |
return $hauteur; |
} |
private function obtenirLargeur() { |
$largeur = isset($this->meta['File']['ImageWidth']) ? $this->meta['File']['ImageWidth']['valeur'] : ''; |
return $largeur; |
} |
private function obtenirLargeur() { |
$largeur = isset($this->meta['File']['ImageWidth']) ? $this->meta['File']['ImageWidth']['valeur'] : ''; |
return $largeur; |
} |
private function obtenirDatePriseDeVue() { |
$date = isset($this->meta['EXIF']['DateTimeOriginal']) ? $this->meta['EXIF']['DateTimeOriginal']['valeur'] : ''; |
return $date; |
} |
private function obtenirDatePriseDeVue() { |
$date = isset($this->meta['EXIF']['DateTimeOriginal']) ? $this->meta['EXIF']['DateTimeOriginal']['valeur'] : ''; |
return $date; |
} |
private function obtenirAppareilFabricant() { |
$fabriquant = isset($this->meta['EXIF']['Make']) ? $this->meta['EXIF']['Make']['valeur'] : ''; |
return $fabriquant; |
} |
private function obtenirAppareilFabricant() { |
$fabriquant = isset($this->meta['EXIF']['Make']) ? $this->meta['EXIF']['Make']['valeur'] : ''; |
return $fabriquant; |
} |
private function obtenirAppareilModele() { |
$modele = isset($this->meta['EXIF']['CameraModelName']) ? $this->meta['EXIF']['CameraModelName']['valeur'] : ''; |
return $modele; |
} |
private function obtenirAppareilModele() { |
$modele = isset($this->meta['EXIF']['CameraModelName']) ? $this->meta['EXIF']['CameraModelName']['valeur'] : ''; |
return $modele; |
} |
private function convertirMetaVersXML($type) { |
$xml = null; |
if (isset($this->meta[$type])) { |
$racine = strtolower($type); |
private function convertirMetaVersXML($type) { |
$xml = null; |
if (isset($this->meta[$type])) { |
$racine = strtolower($type); |
$xml = '<?xml version="1.0" encoding="UTF-8" ?>'."\n"; |
$xml .= "<$racine>"."\n"; |
foreach ($this->meta[$type] as $prop => &$valeur) { |
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n"; |
} |
$xml .= "</$racine>"; |
} |
return $xml; |
} |
} |
?> |
$xml = '<?xml version="1.0" encoding="UTF-8" ?>'."\n"; |
$xml .= "<$racine>"."\n"; |
foreach ($this->meta[$type] as $prop => &$valeur) { |
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n"; |
} |
$xml .= "</$racine>"; |
} |
return $xml; |
} |
} |
/trunk/jrest/bibliotheque/Bdd2.php |
---|
1,13 → 1,20 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* La classe de gestion de la base de données. |
* Classe de gestion de la base de données. |
* |
* @category php 5.2 |
* @package cel |
* @author Raphaël Droz <raphael@tela-botanica.org> |
* @copyright Copyright (c) 2013, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Bibliothèques |
* @version 0.1 |
* @author Mathias CHOUET <mathias@tela-botanica.org> |
* @author Raphaël Droz <raphael@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> |
*/ |
class Bdd2 extends PDO { |
132,5 → 139,4 |
public function obtenirDernierId() { |
return $this->lastInsertId(); |
} |
} |
/trunk/jrest/bibliotheque/GestionImage.php |
---|
1,26 → 1,20 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @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/ |
*/ |
/** |
* Classe de gestion de l'ajout, modification et suppression des images |
* |
* in=utf8 |
* out=utf8 |
* |
*/ |
* Classe métier de gestion de l'ajout, modification et suppression des images. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @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> |
*/ |
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,8 → 157,8 |
$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 != "")) { |
$date_tab = explode('/',$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).' , ' ; |
} else { |
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; |
} |
} |
?> |
} |
/trunk/jrest/bibliotheque/GestionObservation.php |
---|
247,7 → 247,6 |
"SET transmission = $etat_transmission , date_modification = NOW() ". |
"WHERE id_observation IN ($chaine_ids_obs) ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$resultat = Cel::db()->executer($requete); |
return $resultat; |
} |
273,12 → 272,12 |
"WHERE ce_utilisateur = $idUtilisateurP ". |
"AND ordre IN ($ordre) ". |
' -- '.__FILE__.':'.__LINE__; |
$resultat_ids_observations = Cel::db()->requeter($requete); |
$resultats = Cel::db()->requeter($requete); |
$ids_obs = array(); |
$ids_obs_non_protegees = array(); |
if (is_array($resultat_ids_observations) && count($resultat_ids_observations) > 0) { |
foreach ($resultat_ids_observations as $id_observation) { |
if (is_array($resultats) && count($resultats) > 0) { |
foreach ($resultats as $id_observation) { |
$ids_obs[] = Cel::db()->proteger($id_observation['id_obs']); |
$ids_obs_non_protegees[] = $id_observation['id_obs']; |
} |
288,17 → 287,15 |
"ce_utilisateur = $idUtilisateurP ". |
"AND id_observation IN ($chaine_ids_obs) ". |
' -- '.__FILE__.':'.__LINE__; |
$resultat = Cel::db()->executer($requete); |
$resultat_suppression_observations = Cel::db()->executer($requete); |
// TODO: Faire la suppression des mots clés |
// et des liaisons obs images dans une ou des fonctions à part |
if ($resultat_suppression_observations === false) { |
$msg = "Erreur de suppression d'une liste d'observations : $resultat_suppression_observations"; |
if ($resultat === false) { |
$msg = "Erreur de suppression d'une liste d'observations : $resultat"; |
$this->logger('CEL_bugs', $msg); |
} else { |
// TODO [jpm] : pourquoi on supprime pas les images si on supprime les obs ? |
$gestion_mots_cles = new GestionMotsClesChemin($this->config, 'obs'); |
$resultat_suppression_mots_cles = $gestion_mots_cles->supprimerToutesLiaisonsPourIdsElementsLies($ids_obs_non_protegees); |
439,10 → 436,7 |
$parametres['famille'] = $complement->famille; |
} |
} |
} |
// référentiel "autre": on vide ! |
else { |
} else { // référentiel "autre": on vide ! |
$parametres['nom_sel_nn'] = $parametres['nom_ret'] = $parametres['nom_ret_nn'] = $parametres['nt'] = $parametres['famille'] = NULL; |
} |
504,24 → 498,19 |
* @return string une sous requete utilisable pour l'ajout d'une observation |
*/ |
private function traiterParametresObservationEtConstruireSousRequeteAjout($parametres) { |
$sous_requete = ''; |
$champs = ''; |
$valeurs = ''; |
// Nullifiage ... |
// TODO: code dupliqué, en faire une fonction à mettre à la place appropriée |
foreach($parametres as $cle => $valeur) { |
foreach ($parametres as $cle => $valeur) { |
$valeur = self::renvoyerValeurDenullifiee($valeur); |
$champs .= $cle.', '; |
$valeurs .= $valeur.', '; |
} |
$champs = '('.$champs.'mots_cles_texte, transmission, date_creation, date_modification, date_transmission)'; |
$valeurs = '('.$valeurs.'"", 0, now(), now(), "0000-00-00 00:00:00")'; |
$sous_requete .= $champs.' VALUES '.$valeurs; |
$sous_requete = $champs.' VALUES '.$valeurs; |
return $sous_requete; |
} |
535,13 → 524,12 |
* selon la syntaxe UPDATE table SET colonne1 = valeur1, colonne2 = valeur2 WHERE condition |
*/ |
static function traiterParametresObservationEtConstruireSousRequeteMaj($parametres) { |
$champs = array(); |
// Nullifiage ... |
// TODO: code dupliqué, en faire une fonction à mettre à la place appropriée |
$champs = array(); |
foreach ($parametres as $cle => $valeur) { |
$valeur = self::renvoyerValeurDenullifiee($valeur); |
$champs[] = $cle." = ".$valeur; |
$champs[] = $cle.' = '.$valeur; |
} |
return $champs; |
} |