Rev 620 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phprequire_once('include/extract_metadonnee.php') ;require_once('include/stockage_fichier.php') ;/**Aurelien Peronnet aurelienperonnet@gmail.com 2008Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais etrespectant les principes de diffusion des logiciels libres. Vous pouvezutiliser, modifier et/ou redistribuer ce programme sous les conditionsde la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIAsur 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'estoffert aux utilisateurs qu'une garantie limit?e. Pour les m?mes raisons,seule une responsabilit? restreinte p?se sur l'auteur du programme, letitulaire des droits patrimoniaux et les conc?dants successifs.A cet ?gard l'attention de l'utilisateur est attir?e sur les risquesassoci?s au chargement, ? l'utilisation, ? la modification et/ou aud?veloppement et ? la reproduction du logiciel par l'utilisateur ?tantdonn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnelsavertis poss?dant des connaissances informatiques approfondies. Lesutilisateurs sont donc invit?s ? charger et tester l'ad?quation dulogiciel ? leurs besoins dans des conditions permettant d'assurer las?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 avezpris connaissance de la licence CeCILL, et que vous en avez accept? lestermes.*/// 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 imagefunction getElement($uid){// uid[0] : utilisateur obligatoire// uid[1] : identifiant image obligatoire// Controle detournement utilisateursession_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 imagefunction 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 carnetfunction createElement($pairs){// Controle detournement utilisateursession_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 JRESTheader('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 carnetfunction deleteElement($uid){// uid[0] : utilisateur obligatoire// uid[1] : identifiant(s) image(s) obligatoire(s)// Controle detournement utilisateursession_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() ;}}}?>