Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3531 → Rev 3534

/trunk/jrest/services/CelWidgetSaisie.php
96,7 → 96,7
$obsAAjouter['user_sci_name_id'] = isset($obs['num_nom_sel']) ? $obs['num_nom_sel'] : null;
$obsAAjouter['accepted_sci_name'] = isset($obs['accepted_sci_name']) ? $obs['accepted_sci_name'] : null;
$obsAAjouter['accepted_sci_name_id'] = isset($obs['num_nom_ret']) ? $obs['num_nom_ret'] : null;
$obsAAjouter['family'] = isset($obs['family']) ? $obs['family'] : null;
$obsAAjouter['family'] = isset($obs['famille']) ? $obs['famille'] : null;
$obsAAjouter['taxo_repo'] = isset($obs['referentiel']) ? ($obs['referentiel'] == 'bdtfxr') ? 'bdtfx' : $obs['referentiel'] : null;
 
$obsAAjouter['date_observed'] = $this->transormerDateFrVersMysql($obs['date']);
142,7 → 142,7
break;
}
}
 
$obsAAjouter['input_source'] = 'widget';
if ($this->isFromPlantNet) {
$obsAAjouter['input_source'] = 'PlantNet';
$obsAAjouter['plantnet_id'] = $obs['obs_id'];
322,7 → 322,7
// sans référentiel, on ne peut rien faire
if (! empty($obs['taxo_repo'])) {
// copies locales pour ne pas abimer les données d'entrée
$nn = $obs['nom_sel_nn'];
$nn = $obs['user_sci_name_id'];
$ref = $obs['taxo_repo'];
$ns = $obs['user_sci_name'];
$nr = $obs['accepted_sci_name'];
731,6 → 731,10
$infosImage['user_id'] = $this->userId;
$infosImage['user_email'] = $this->userEmail;
$infosImage['user_pseudo'] = $this->userIntitule;
$infosImage['content_url'] = $cheminImage;
$infosImage['mime_type'] = mime_content_type($cheminImage);
$infosImage['url'] = "concat('https://api.tela-botanica.org/img:',
lpad(`id`, 9, '0'), 'O')";
// $infosImage['md5'] = md5_file($cheminImage);
$infosImage['date_created'] = 'NOW()';
$infosImage['date_updated'] = 'NOW()';
/trunk/jrest/bibliotheque/ExtracteurMetadonnees.php
443,15 → 443,8
}
 
$metadonnees = array();
$metadonnees['hauteur'] = $this->obtenirHauteur();
$metadonnees['largeur'] = $this->obtenirLargeur();
$metadonnees['date_prise_de_vue'] = $this->obtenirDatePriseDeVue();
$metadonnees['appareil_fabriquant'] = $this->obtenirAppareilFabricant();
$metadonnees['appareil_modele'] = $this->obtenirAppareilModele();
$metadonnees['meta_exif'] = $this->convertirMetaVersXML('EXIF');
$metadonnees['meta_iptc'] = $this->convertirMetaVersXML('IPTC');
$metadonnees['meta_xmp'] = $this->convertirMetaVersXML('XMP');
$metadonnees['meta_makernote'] = $this->convertirMetaVersXML('MAKERNOTE');
$metadonnees['date_shot'] = $this->obtenirDatePriseDeVue();
$metadonnees['size'] = getimagesize($cheminImage);
return $metadonnees;
}
 
521,133 → 514,12
return $metadonnees ;
}
 
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);
}
 
return $tableau_exif_formate;
}
 
/**
* 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);
 
// 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;
}
 
/**
* 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 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 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 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;
}
}