New file |
0,0 → 1,288 |
<?php |
|
require_once('include/extract_metadonnee.php') ; |
require_once('include/stockage_fichier.php') ; |
/** |
|
Aurelien Peronnet aurelienperonnet@gmail.com 2008 |
|
Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et |
respectant les principes de diffusion des logiciels libres. Vous pouvez |
utiliser, modifier et/ou redistribuer ce programme sous les conditions |
de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA |
sur le site "http://www.cecill.info". |
En contrepartie de l'accessibilit? au code source et des droits de copie, |
de modification et de redistribution accord?s par cette licence, il n'est |
offert aux utilisateurs qu'une garantie limit?e. Pour les m?mes raisons, |
seule une responsabilit? restreinte p?se sur l'auteur du programme, le |
titulaire des droits patrimoniaux et les conc?dants successifs. |
|
A cet ?gard l'attention de l'utilisateur est attir?e sur les risques |
associ?s au chargement, ? l'utilisation, ? la modification et/ou au |
d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant |
donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ? |
manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels |
avertis poss?dant des connaissances informatiques approfondies. Les |
utilisateurs sont donc invit?s ? charger et tester l'ad?quation du |
logiciel ? leurs besoins dans des conditions permettant d'assurer la |
s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement, |
? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?. |
|
Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez |
pris connaissance de la licence CeCILL, et que vous en avez accept? les |
termes. |
|
*/ |
|
|
// in : utf8 |
// out : utf8 |
/* |
* InventoryImage.php |
* |
* Cas d'utilisation : |
* Service recherche et ajout d'image a partir de divers crit�res |
* |
* 1: Le service recoit une image � ajouter � la base de donn�e |
* 2: Le service recherche l'image correspondant au crit�res demand� |
* 3: Le service renvoie l'adresse de base de l'image qui permet de la localiser sous ses diff�rents formats (X, M ou L) |
*/ |
|
Class InventoryImage extends DBAccessor { |
|
var $config; |
|
function InventoryImage($config) { |
|
$this->config=$config; |
} |
|
|
// renvoie l'enregistrement correspond � une image |
function getElement($uid) |
{ |
// uid[0] : utilisateur obligatoire |
// uid[1] : identifiant image obligatoire |
|
// Controle detournement utilisateur |
session_start(); |
$this->controleUtilisateur($uid[0]); |
|
$DB=$this->connectDB($this->config,'cel_db'); |
|
if (isset($uid[0])) |
{ |
$query="SELECT * FROM cel_images WHERE ci_id_image ='".$DB->escapeSimple($uid[1])."'"; |
} |
|
$res =& $DB->query($query); |
if (PEAR::isError($res)) { |
|
die($res->getMessage()); |
} |
|
$image = $res->fetchrow(DB_FETCHMODE_ASSOC) ; |
|
$res = json_encode($image) ; |
|
header("content-type: text/json") ; |
print $res ; |
exit() ; |
} |
|
// met � jour les m�tadonn�es d'une image |
function updateElement($uid,$pairs) |
{ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
|
/*$fp = fopen('dump.txt','w+') ; |
fwrite($fp,print_r($pairs,true)) ; |
fclose($fp) ;*/ |
|
$DB=$this->connectDB($this->config,'cel_db'); |
|
$query = 'UPDATE cel_images SET ' ; |
|
foreach($pairs as $champ => $valeur) |
{ |
if($champ == 'ci_meta_date') { |
|
$date_tab = split('/',$valeur) ; |
$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ; |
|
$query .= $champ.' = "'.$date.'" , ' ; |
|
} |
else { |
$query .= $champ.' = "'.$DB->escapeSimple($valeur).'" , ' ; |
} |
} |
|
$query = rtrim($query," , ") ; |
|
$query .= ' WHERE ci_id_image = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ; |
|
$res =& $DB->query($query); |
|
if (PEAR::isError($res)) |
{ |
return false ; |
} |
else |
{ |
echo "OK" ; |
exit() ; |
} |
} |
|
|
// ajoute une image ainsi que ses metadonn�es � la base du carnet |
function createElement($pairs) |
{ |
// Controle detournement utilisateur |
session_start(); |
$this->controleUtilisateur($pairs['identifiant']); |
|
foreach($_FILES as $file) { |
|
$infos_fichier = $file ; |
} |
|
$DB=$this->connectDB($this->config,'cel_db'); |
|
$nouvel_ordre = 0 ; |
$query_ordre ='SELECT MAX(ci_ordre) FROM cel_images WHERE ci_ce_utilisateur = "'.$DB->escapeSimple($pairs['identifiant']).'"' ; |
$res =& $DB->query($query_ordre); |
if (PEAR::isError($res)) |
{ |
$erreur = 'ERROR : probleme durant le calcul de l\'ordre de l\'image \n' ; |
die($res->getMessage()); |
} |
else |
{ |
$row = $res->fetchrow() ; |
$nouvel_ordre = $row[0] + 1; |
} |
|
|
if($nouvel_ordre) |
{ |
$fichier_meta = extraire_metadonnees($infos_fichier['tmp_name']) ; |
} |
else |
{ |
$erreur = 'ERROR : probleme durant l\'upload de l\'image \n' ; |
} |
|
$fichier_meta['ci_ordre'] = $nouvel_ordre ; |
$fichier_meta['ci_publiable_eflore'] = 'false' ; |
$fichier_meta['ci_nom_original'] = $infos_fichier['name'] ; |
$fichier_meta['ci_md5'] = md5_file($infos_fichier['tmp_name']) ; |
$fichier_meta['ci_ce_utilisateur'] = $pairs['identifiant'] ; |
|
|
$query_champs = '' ; |
$query_valeurs = '' ; |
|
foreach($fichier_meta as $field => $value) |
{ |
$query_champs .= $field.',' ; |
|
if(is_null($value)) |
{ |
$query_valeurs .= 'NULL,' ; |
} |
else |
{ |
$query_valeurs .= '"'.$DB->escapeSimple($value).'",' ; |
} |
} |
|
$query_champs .= 'ci_meta_date_ajout' ; |
$query_valeurs .= 'CURRENT_TIMESTAMP()' ; |
|
//$query_champs = rtrim($query_champs,',') ; |
//$query_valeurs = rtrim($query_valeurs,',') ; |
|
$query ="INSERT INTO cel_images (".$query_champs.") VALUES (".$query_valeurs.")" ; |
|
$res =& $DB->query($query); |
if (PEAR::isError($res)) { |
|
//die($res->getMessage()); |
$erreur = "ERROR : echec de l'insertion dans la base de donnees : ".$query ; |
} |
|
$query_id ='SELECT ci_id_image FROM cel_images WHERE ci_ce_utilisateur = "'.$DB->escapeSimple($pairs['identifiant']).'" AND ci_ordre = "'.$nouvel_ordre.'"' ; |
$res =& $DB->query($query_id); |
|
if (PEAR::isError($res)) |
{ |
$erreur = 'ERROR : probleme durant le calcul de l\'id de l\'image \n' ; |
//die($res->getMessage()); |
} |
else |
{ |
$row = $res->fetchrow() ; |
$id = $row[0] ; |
} |
|
if(isset($id)) |
{ |
$fichier = array('name' => $infos_fichier['name'] , 'type' => $infos_fichier['type'] , 'size' => $infos_fichier['size'] , 'tmp_name' => $infos_fichier['tmp_name'] ) ; |
$fichier_stocke = stocker_fichier($fichier,$id,$this->config['cel_db']['chemin_images'],$this->config['cel_db']['taille_max']) ; |
// l'upload demande de court-circuiter le fonctionnement normal de JREST |
header('HTTP/1.0 200 Created'); |
echo "OK" ; |
exit() ; |
} |
else |
{ |
$erreur = 'ERROR : probleme durant l\'ajout des metadonnees \n' ; |
exit ; |
} |
|
} |
|
// supprime une image et ses metadonn�es associ�es de la base du carnet |
function deleteElement($uid){ |
|
// uid[0] : utilisateur obligatoire |
// uid[1] : identifiant(s) image(s) obligatoire(s) |
|
// Controle detournement utilisateur |
session_start(); |
$this->controleUtilisateur($uid[0]); |
|
$DB=$this->connectDB($this->config,'cel_db'); |
|
$id = $uid[1] ; |
|
if (isset($uid[1])) { |
$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($uid[1]) .")"; |
$query_sup_lien = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$DB->escapeSimple($id) .")"; |
} |
|
$res =& $DB->query($query); |
|
if (PEAR::isError($res)) { |
die($res->getMessage()); |
} |
else |
{ |
$res =& $DB->query($query_sup_lien); |
if(PEAR::isError($res)) |
{ |
die($res->getMessage()); |
} |
|
supprimer_fichier($id,$this->config['cel_db']['chemin_images']); |
|
echo "OK" ; |
exit() ; |
} |
} |
|
} |
?> |