Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 969 → Rev 970

/trunk/jrest/lib/Spreadsheet/Excel/Writer/BIFFwriter.php
32,7 → 32,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
require_once('PEAR.php');
//require_once('PEAR.php');
 
/**
* Class for writing Excel BIFF records.
/trunk/jrest/lib/Spreadsheet/Excel/Writer/Format.php
32,7 → 32,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
require_once('PEAR.php');
//require_once('PEAR.php');
 
/**
* Class for generating Excel XF records (formats)
/trunk/jrest/lib/Spreadsheet/Excel/Writer/OLEwriter.php
32,7 → 32,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
require_once('PEAR.php');
//require_once('PEAR.php');
 
/**
* Class for creating OLE streams for Excel Spreadsheets
/trunk/jrest/lib/Spreadsheet/Excel/Writer/Parser.php
88,7 → 88,7
define('SPREADSHEET_EXCEL_WRITER_NE',"<>");
 
 
require_once('PEAR.php');
//require_once('PEAR.php');
 
/**
* Class for parsing Excel formulas
1430,7 → 1430,7
}
else {
return new PEAR_Error("Sintactic error: coma expected in ".
"function $function, {$num_args}º arg");
"function $function, {$num_args}� arg");
}
$result2 = $this->_condition();
if($this->isError($result2)) {
/trunk/jrest/lib/Spreadsheet/Excel/Writer.php
31,7 → 31,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
require_once('PEAR.php');
//require_once('PEAR.php');
require_once('Writer/Workbook.php');
 
/**
/trunk/jrest/lib/ImageRecreation.php
14,13 → 14,13
$this->mode = self::MODE_GD;
if (extension_loaded('imagick')) {
putenv('MAGICK_TEMPORARY_PATH='.$this->config['cel_db']['chemin_stockage_temp']);
putenv('MAGICK_TEMPORARY_PATH='.$this->config['cel']['chemin_stockage_temp']);
$this->mode = self::MODE_IMAGEMAGICK;
}
}
public function recreerMiniaturesRecursivement() {
$this->itererRecursivement($this->config['cel_db']['chemin_images']);
$this->itererRecursivement($this->config['cel']['chemin_images']);
}
public function regenererMiniaturesIntervalle($params) {
292,7 → 292,7
}
public function obtenirDossierPourFormat($id, $format) {
$chemin_base = $this->config['cel_db']['chemin_images'];
$chemin_base = $this->config['cel']['chemin_images'];
$chemin_sur_serveur = $chemin_base;
335,8 → 335,8
public function obtenirDimensionsPourFormat($format) {
$dimensions = array('largeur' => 0, 'hauteur' => 0);
if (isset($this->config['cel_db']['format_'.$format])) {
list($dimensions['largeur'], $dimensions['hauteur']) = explode('_', $this->config['cel_db']['format_'.$format]);
if (isset($this->config['cel']['format_'.$format])) {
list($dimensions['largeur'], $dimensions['hauteur']) = explode('_', $this->config['cel']['format_'.$format]);
}
return $dimensions;
380,7 → 380,7
}
public function renvoyerTauxCompressionPourPoids($poids_octets) {
$poids_max_octets = $this->config['cel_db']['taille_max'];
$poids_max_octets = $this->config['cel']['taille_max'];
$ratio_compression = 100 ;
495,7 → 495,7
$nom_temp = md5(time());
$chemin_temp =
$out = $this->config['cel_db']['chemin_stockage_temp'].'/'.$nom_temp;
$out = $this->config['cel']['chemin_stockage_temp'].'/'.$nom_temp;
$dimension_vignettes = $this->obtenirDimensionsPourFormat($format);
/trunk/jrest/lib/LiaisonMotsCles.php
31,10 → 31,12
public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image';
// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
$requete_liaison_mots_cles = 'INSERT IGNORE INTO cel_'.$this->mode.'_mots_cles '.
'(id_observation, id_mot_cle_utilisateur) '.
'('.$champ.', id_mot_cle_utilisateur) '.
'VALUES ';
foreach($ids_images_ou_obs as $id_image_ou_obs) {
45,7 → 47,8
}
$requete_liaison_mots_cles = rtrim($requete_liaison_mots_cles,',');
 
echo $requete_liaison_mots_cles;
$resultat_liaison_mots_cles = $this->executer($requete_liaison_mots_cles);
if(!$resultat_liaison_mots_cles) {
55,6 → 58,17
return $resultat_liaison_mots_cles;
}
public function supprimerLiaisonMotsClesEtRegenererIndexTexte($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
$retour = $this->supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles);
foreach($ids_images_ou_obs as $image_ou_obs) {
$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur);
}
return $retour;
}
public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image';
64,8 → 78,29
'AND id_mot_cle_utilisateur IN ('.implode(',',$mots_cles).')';
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
 
if ($requete_suppression_liaison_mot_cle !== false) {
$retour = true;
} else {
$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
$this->logger($message);
$retour = false;
}
if ($resultat_suppression_mot_cle) {
return $retour;
}
public function supprimerToutesLiaisonsPourIdImageOuObs($id_utilisateur, $ids_images_ou_obs) {
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image';
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
$champ.' IN ('.implode(',',$ids_images_ou_obs).') ';
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
 
if ($requete_suppression_liaison_mot_cle !== false) {
$retour = true;
} else {
$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
74,10 → 109,6
$retour = false;
}
foreach($ids_images_ou_obs as $image_ou_obs) {
$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur);
}
return $retour;
}
/trunk/jrest/lib/ExtracteurMetadonnees.php
14,470 → 14,191
 
public function extraireMetadonnees($chemin_fichier)
{
$iptc = $this->extraireIptc($chemin_fichier) ;
$exif = $this->extraireExif($chemin_fichier) ;
$meta = array_merge($exif,$iptc);
$this->initialiserSectionsSupplementaires(&$meta) ;
return $meta ;
$metadonnees = $this->decoderMetaDonnees($chemin_fichier);
return $metadonnees ;
}
/**
* Extraction des metadonnées exif
**/
public function extraireExif($chemin_fichier)
{
$exif_tab = $this->initialiserTableauExif () ;
$exif = @exif_read_data($chemin_fichier,"EXIF,COMPUTED,IFD0,FILE,COMMENT",true,false);
 
if ($exif) {
foreach ($exif as $key => $section)
{
foreach ($section as $name => $val)
{
if ($name != "MakerNote")
{
$this->decoderValeurExif ($name, $val ,&$exif_tab) ;
}
}
}
}
return $exif_tab ;
private function peutUtiliserExifTool() {
// TODO indiquer ceci dans un fichier de config
return file_exists('/usr/bin/exiftool') && is_executable('/usr/bin/exiftool');
}
/**
* Extraction des metadonnées iptc
**/
public function extraireIptc($chemin_fichier)
{
$iptc_tab = $this->initialiserTableauIptc() ;
private function decoderMetadonnees($chemin_image) {
// geimagesize renvoie le infos iptc dans le tableau info
$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 ,&$iptc_tab) ;
}
}
}
}
$metadonnees = array();
return $iptc_tab ;
}
/**
* Stocke une valeur de metadonnées exif 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 decoderValeurExif($nom, $val ,$data_tab)
{
switch ($nom)
{
case "Height" :
$data_tab['ci_meta_height'] = $val ;
break ;
if($this->peutUtiliserExifTool()) {
case "Width" :
$data_tab['ci_meta_width'] = $val ;
break ;
$res = $this->decoderMetadonneesExifTool($chemin_image);
$metadonnees['meta_exif'] = $this->convertirExifVersXML(&$res);
$metadonnees['meta_iptc'] = $this->convertirIptcVersXML(&$res);
$metadonnees['meta_xmp'] = $this->convertirXmpVersXML(&$res);
$metadonnees['meta_makernote'] = $this->convertirMakernoteVersXML(&$res);
case "Make" :
$data_tab['ci_meta_make'] = $val ;
break ;
$metadonnees['appareil_fabriquant'] = $this->obtenirAppareilFabricant(&$res);
$metadonnees['appareil_modele'] = $this->obtenirAppareilModele(&$res);
case "Model" :
$data_tab['ci_meta_model'] = $val ;
break ;
$metadonnees['hauteur'] = $this->obtenirHauteur(&$res);
$metadonnees['largeur'] = $this->obtenirLargeur(&$res);
case "XResolution" :
$data_tab['ci_meta_x_resolution'] = $val ;
break ;
$metadonnees['date_prise_de_vue'] = $this->obtenirDatePriseDeVue(&$res);
case "YResolution" :
$data_tab['ci_meta_y_resolution'] = $val ;
break ;
case "DateTimeOriginal" :
$data_tab['ci_meta_date_time'] = $val ;
break ;
} else {
case "GPS" :
$data_tab['ci_meta_gps'] = $val ;
break ;
case "UserComment" :
$data_tab['ci_meta_user_comment'] = '"'.$val.'"' ;
break ;
case "ExposureTime" :
$data_tab['ci_meta_exif_exposure_time'] = $val ;
break ;
case "FNumber" :
$data_tab['ci_meta_exif_f_number'] = $val ;
break ;
case "ExifVersion" :
$data_tab['ci_meta_exif_exif_version'] = $val ;
break ;
case "CompressedBitsPerPixel" :
$data_tab['ci_meta_exif_compressed_bits_per_pixel'] = $val ;
break ;
case "ShutterSpeedValue" :
$data_tab['ci_meta_exif_shutter_speed_value'] = $val ;
break ;
case "ApertureValue" :
$data_tab['ci_meta_exif_aperture_value'] = $val ;
break ;
case "ExposureBiasValue" :
$data_tab['ci_meta_exif_exposure_bias_value'] = $val ;
break ;
case "MaxApertureValue" :
$data_tab['ci_meta_exif_max_aperture_value'] = $val ;
break ;
case "MeteringMode" :
$data_tab['ci_meta_exif_metering_mode'] = $val ;
break ;
case "LightSource" :
$data_tab['ci_meta_exif_light_source'] = $val ;
break ;
case "Flash" :
$data_tab['ci_meta_exif_flash'] = $val ;
break ;
case "FocalLength" :
$data_tab['ci_meta_exif_focal_length'] = $val ;
break ;
case "FlashpixVersion" :
$data_tab['ci_meta_exif_flash_pix_version'] = $val ;
break ;
case "ColorSpace" :
$data_tab['ci_meta_exif_color_space'] = $val ;
break ;
case "InteroperabilityOffset" :
$data_tab['ci_meta_exif_interoperability_offset'] = $val ;
break ;
case "FocalPlaneXResolution" :
$data_tab['ci_meta_exif_focal_plane_x_resolution'] = $val ;
break ;
case "FocalPlaneYResolution" :
$data_tab['ci_meta_exif_focal_plane_y_resolution'] = $val ;
break ;
case "FocalPlaneResolutionUnit" :
$data_tab['ci_meta_exif_focal_plane_resolution_unit'] = $val ;
break ;
case "SensingMethod" :
$data_tab['ci_meta_exif_sensing_method'] = $val ;
break ;
case "FileSource" :
$data_tab['ci_meta_exif_file_source'] = $val ;
break ;
case "CustomRendered" :
$data_tab['ci_meta_exif_custom_rendered'] = $val ;
break ;
case "ExposureMode" :
$data_tab['ci_meta_exif_exposure_mode'] = $val ;
break ;
case "WhiteBalance" :
$data_tab['ci_meta_exif_white_balance'] = $val ;
break ;
case "DigitalZoomRatio" :
$data_tab['ci_meta_exif_digital_zoom_ratio'] = $val ;
break ;
case "SceneCaptureType" :
$data_tab['ci_meta_exif_scene_capture_type'] = $val ;
break ;
case "GainControl" :
$data_tab['ci_meta_exif_gain_control'] = $val ;
break ;
case "Contrast" :
$data_tab['ci_meta_exif_contrast'] = $val ;
break ;
case "Saturation" :
$data_tab['ci_meta_exif_saturation'] = $val ;
break ;
case "Sharpness" :
$data_tab['ci_meta_exif_sharpness'] = $val ;
break ;
case "SubjectDistanceRange" :
$data_tab['ci_meta_exif_subject_distance_range'] = $val ;
break ;
default :
$data_tab['ci_meta_exif_autres'] .= $nom.":".$val.";" ;
}
}
return $metadonnees;
}
/**
* 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)
{
// mots cles iptc
case "2#005" :
$data_tab['ci_meta_iptc_category'] = $val ;
break;
case "2#025" :
$data_tab['ci_meta_iptc_mots_cles'] = $val ;
break;
// champ by line
case "2#080" :
$data_tab['ci_meta_iptc_by_line'] = $val ;
break ;
// champ by line titre
case "2#085" :
$data_tab['ci_meta_iptc_by_line_title'] = $val ;
break ;
// ville
case "2#090" :
$data_tab['ci_meta_iptc_city'] = $val ;
break ;
// sous location
case "2#092" :
$data_tab['ci_meta_iptc_sub_location'] = $val ;
break ;
// etat (pour les us)
case "2#095" :
$data_tab['ci_meta_iptc_province_state'] = $val ;
break ;
// code pays
case "2#100" :
$data_tab['ci_meta_iptc_country_primary_location_code'] = $val ;
break ;
// code pays
case "2#101" :
$data_tab['ci_meta_iptc_country_name'] = $val ;
break ;
// titre principal
case "2#105" :
$data_tab['ci_meta_iptc_headline'] = $val ;
break ;
// credit
case "2#110" :
$data_tab['ci_meta_iptc_credit'] = $val ;
break ;
// copyright
case "2#116" :
$data_tab['ci_meta_iptc_copyright_notice'] = $val ;
break ;
// contact
case "2#118" :
$data_tab['ci_meta_iptc_contact'] = $val ;
break ;
// autres (pour les champs qu'on ne prend pas en compte)
default :
$data_tab['ci_meta_iptc_autres'] .= $nom.":".$val.";" ;
}
private function obtenirAppareilFabricant($infos_meta) {
$fabriquant = '';
if(isset($infos_meta['EXIF']['Make'])) {
$fabriquant = $infos_meta['EXIF']['Make']['valeur'];
}
return $fabriquant;
}
/**
* Crée le tableau vide pour stocker les iptc pour le ce
*
* @return array $data_tab référence vers le tableau où la donnée sera stockée
*
**/
private function initialiserTableauIptc()
{
$data_tab = array() ;
private function obtenirAppareilModele($infos_meta) {
$data_tab['ci_meta_iptc_category'] = NULL ;
$modele = '';
$data_tab['ci_meta_iptc_mots_cles'] = NULL ;
$data_tab['ci_meta_iptc_by_line'] = NULL ;
$data_tab['ci_meta_iptc_by_line_title'] = NULL ;
$data_tab['ci_meta_iptc_city'] = NULL ;
$data_tab['ci_meta_iptc_sub_location'] = NULL ;
$data_tab['ci_meta_iptc_province_state'] = NULL ;
$data_tab['ci_meta_iptc_country_primary_location_code'] = NULL ;
if(isset($infos_meta['EXIF']['CameraModelName'])) {
$modele = $infos_meta['EXIF']['CameraModelName']['valeur'];
}
$data_tab['ci_meta_iptc_country_name'] = NULL ;
$data_tab['ci_meta_iptc_headline'] = NULL ;
$data_tab['ci_meta_iptc_credit'] = NULL ;
$data_tab['ci_meta_iptc_copyright_notice'] = NULL ;
$data_tab['ci_meta_iptc_contact'] = NULL ;
$data_tab['ci_meta_iptc_autres'] .= " " ;
return $modele;
}
return $data_tab ;
private function obtenirHauteur($infos_meta) {
$hauteur = '';
if(isset($infos_meta['File']['ImageHeight'])) {
$hauteur = $infos_meta['File']['ImageHeight']['valeur'];
}
return $hauteur;
}
/**
* Crée le tableau vide pour stocker les exifs pour le cel
*
* @return array $data_tab référence vers le tableau où la donnée sera stockée
*
**/
private function initialiserTableauExif()
{
$data_tab = array() ;
$data_tab['ci_meta_height'] = 0 ;
$data_tab['ci_meta_width'] = 0 ;
$data_tab['ci_meta_make'] = NULL ;
private function obtenirLargeur($infos_meta) {
$largeur = '';
$data_tab['ci_meta_model'] = NULL ;
if(isset($infos_meta['File']['ImageWidth'])) {
$largeur = $infos_meta['File']['ImageWidth']['valeur'];
}
$data_tab['ci_meta_x_resolution'] = NULL ;
return $largeur;
}
private function obtenirDatePriseDeVue($infos_meta) {
$data_tab['ci_meta_y_resolution'] = NULL ;
$date = '';
$data_tab['ci_meta_date_time'] = NULL ;
if(isset($infos_meta['EXIF']['DateTimeOriginal'])) {
$date = $infos_meta['EXIF']['DateTimeOriginal']['valeur'];
}
$data_tab['ci_meta_gps'] = NULL ;
return $date;
}
$data_tab['ci_meta_user_comment'] = NULL ;
private function decoderMetadonneesExifTool($chemin_image) {
$metadata = array();
$res = exec('/usr/bin/exiftool -g -D '.$chemin_image, $metadata);
$metadata_decodees = array();
$categorie = '';
foreach($metadata as &$data) {
if($this->estUnSeparateurCategorieExifTool($data)) {
$categorie = trim(str_replace('----','',$data));
} else {
$data_decodee = $this->parserValeurMetadonneeExifTool($data);
$cle_metadonnee = str_replace(' ', '', $data_decodee['cle']);
$metadata_decodees[$categorie][$cle_metadonnee] = $data_decodee;
}
}
return $metadata_decodees;
}
$data_tab['ci_meta_exif_exposure_time'] = NULL ;
private function estUnSeparateurCategorieExifTool($data) {
return preg_match('^---- (.)* ----^',$data);
}
$data_tab['ci_meta_exif_f_number'] = NULL ;
private function parserValeurMetadonneeExifTool($data) {
$cle_valeur = explode(':',$data);
$valeur = '';
if(count($cle_valeur) == 2) {
$valeur = trim($cle_valeur[1]);
}
$id_cle = explode(' ',trim($cle_valeur[0]),2);
$id_cle[1] = str_replace(array('-','/'),'',$id_cle[1]);
$cle_id_valeur = array('cle' => $id_cle[1], 'id' => str_replace('-','',$id_cle[0]), 'valeur' => $valeur);
return $cle_id_valeur;
}
$data_tab['ci_meta_exif_exif_version'] = NULL ;
private function convertirExifVersXML($donnees_meta) {
 
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<exif>';
if (isset($donnees_meta['EXIF'])) {
foreach ($donnees_meta['EXIF'] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
}
$xml .= '</exif>'."\n"."\n";
return $xml;
}
$data_tab['ci_meta_exif_compressed_bits_per_pixel'] = NULL ;
$data_tab['ci_meta_exif_shutter_speed_value'] = NULL ;
$data_tab['ci_meta_exif_aperture_value'] = NULL ;
$data_tab['ci_meta_exif_exposure_bias_value'] = NULL ;
$data_tab['ci_meta_exif_max_aperture_value'] = NULL ;
$data_tab['ci_meta_exif_metering_mode'] = NULL ;
$data_tab['ci_meta_exif_flash'] = NULL ;
private function convertirIptcVersXML($donnees_meta) {
$data_tab['ci_meta_exif_light_source'] = NULL ;
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<iptc>';
if (isset($donnees_meta['IPTC'])) {
foreach ($donnees_meta['IPTC'] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
}
$xml .= '</iptc>'."\n"."\n";
return $xml;
}
$data_tab['ci_meta_exif_focal_length'] = NULL ;
$data_tab['ci_meta_exif_flash_pix_version'] = NULL ;
$data_tab['ci_meta_exif_color_space'] = NULL ;
$data_tab['ci_meta_exif_interoperability_offset'] = NULL ;
$data_tab['ci_meta_exif_focal_plane_x_resolution'] = NULL ;
$data_tab['ci_meta_exif_focal_plane_y_resolution'] = NULL ;
$data_tab['ci_meta_exif_focal_plane_resolution_unit'] = NULL ;
$data_tab['ci_meta_exif_sensing_method'] = NULL ;
$data_tab['ci_meta_exif_file_source'] = NULL ;
$data_tab['ci_meta_exif_custom_rendered'] = NULL ;
$data_tab['ci_meta_exif_exposure_mode'] = NULL ;
$data_tab['ci_meta_exif_white_balance'] = NULL ;
$data_tab['ci_meta_exif_digital_zoom_ratio'] = NULL ;
$data_tab['ci_meta_exif_scene_capture_type'] = NULL ;
$data_tab['ci_meta_exif_gain_control'] = NULL ;
$data_tab['ci_meta_exif_contrast'] = NULL ;
private function convertirXmpVersXML($donnees_meta) {
$data_tab['ci_meta_exif_saturation'] = NULL ;
$data_tab['ci_meta_exif_sharpness'] = NULL ;
$data_tab['ci_meta_exif_subject_distance_range'] = NULL ;
$data_tab['ci_meta_exif_autres'] .= " " ;
return $data_tab ;
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<xmp>';
if (isset($donnees_meta['XMP'])) {
foreach ($donnees_meta['XMP'] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
}
$xml .= '</xmp>';
return $xml;
}
/**
* Crée le tableau vide pour stocker les section supplémentaires pour le cel
*
* @return array $tab référence vers le tableau de metadonnées
*
**/
private function InitialiserSectionsSupplementaires($tab)
{
$tab['ci_meta_exif_autres'] .= " " ;
$tab['ci_meta_iptc_autres'] .= " " ;
$tab['ci_nom_original'] = NULL ;
$tab['ci_md5'] = NULL ;
private function convertirMakernoteVersXML($donnees_meta) {
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<makernote>';
if (isset($donnees_meta['MAKERNOTE'])) {
foreach ($donnees_meta['MAKERNOTE'] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
}
$xml .= '</makernote>';
return '';
}
}
?>
/trunk/jrest/lib/GestionImage.php
41,7 → 41,7
$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);
56,13 → 56,16
// le md5 du fichier sert à repérer les images en doublons
$informations_image['md5'] = md5_file($infos_fichier['tmp_name']) ;
// TODO: faire une fonction qui fournit un id pour un mail donné
// faire cela automatiquement dans le constructeur ? dans la classe cel ?
$informations_image['ce_utilisateur'] = $id_utilisateur ;
$informations_image['mail_utilisateur'] = $id_utilisateur ;
$infos_utilisateur = $this->getInfosComplementairesUtilisateur($id_utilisateur);
$informations_image['courriel_utilisateur'] = $infos_utilisateur['courriel'];
$informations_image['nom_utilisateur'] = $infos_utilisateur['nom'];
$informations_image['prenom_utilisateur'] = $infos_utilisateur['prenom'];
$requete_insertion_infos_image = $this->construireRequeteInsertionImage($informations_image);
$resultat_insertion_infos_image = $this->executer($requete_insertion_infos_image);
 
if (!$resultat_insertion_infos_image) {
94,8 → 97,8
$nouvel_ordre = 0 ;
$requete_selection_ordre_max ='SELECT MAX(ordre) as max_ordre FROM cel_images WHERE ce_utilisateur = '.$this->proteger($id_utilisateur) ;
$resultat_requete_ordre_max = $this->executerRequete($requete_selection_ordre_max);
$resultat_requete_ordre_max = $this->requeter($requete_selection_ordre_max);
if($resultat_requete_ordre_max) {
$nouvel_ordre = $resultat_requete_ordre_max[0]['max_ordre'];
$nouvel_ordre++;
108,8 → 111,8
$id_image = false;
$requete_id_image ='SELECT id_image FROM cel_images WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ci_ordre = '.$ordre ;
$resultat_id_image = $this->executerRequete($requete_id_image);
$requete_id_image ='SELECT id_image FROM cel_images WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ordre = '.$ordre ;
$resultat_id_image = $this->requeter($requete_id_image);
 
if (count($resultat_id_image) > 0)
{
139,13 → 142,9
$valeurs_a_inserer .= $this->proteger($valeur).',' ;
}
}
// TODO: modifier le format d'extraction des metadonnées
if ($informations_image['ci_meta_date_time'] != 'NULL') {
$champs_a_inserer .= 'date_prise_de_vue, ';
$valeurs_a_inserer .= $this->proteger($informations_image['ci_meta_date_time']).',';
}
 
$champs_a_inserer .= 'date_modification,' ;
$valeurs_a_inserer .= '"0000-00-00 00:00:00",' ;
$champs_a_inserer .= 'date_creation' ;
$valeurs_a_inserer .= 'CURRENT_TIMESTAMP()' ;