Rev 759 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?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/** InventoryImageLink.php** Cas d'utilisation :* Service de liaisons d'images à des observations** 2: Le service lie une ou plusieurs images à une ou plusieurs observations* 3: Le service renvoie les observations liées à une image*/Class InventoryImageLink extends DBAccessor {var $config;function InventoryImageLink($config) {$this->config=$config;}function createElement($pairs){// Controle detournement utilisateursession_start();$this->controleUtilisateur($pairs['identifiant']);$DB=$this->connectDB($this->config,'cel_db');$ids_images = $pairs['coi_ce_image'] ;$ids_images = rtrim($ids_images,',') ;$ids_images_liste = explode(",",$ids_images) ;$utilisateur = $pairs['identifiant'] ;$ids_observations = $pairs['coi_ce_observation'] ;$ids_observations = rtrim($ids_observations,',') ;$ids_observations_liste = explode(",",$ids_observations) ;foreach($ids_images_liste as $image){foreach($ids_observations_liste as $observation){$query = 'INSERT INTO cel_obs_images (coi_ce_image, coi_ce_utilisateur, coi_ce_observation) VALUES ("'.$DB->escapeSimple($image).'","'.$DB->escapeSimple($utilisateur).'","'.$DB->escapeSimple($observation).'") ON DUPLICATE KEY UPDATE coi_ce_image = coi_ce_image' ;$res =& $DB->query($query);if (PEAR::isError($res)) {die($res->getMessage());}}}echo "OK" ;exit ;}// renvoie les numeros des images liées à une observation ou l'inverse, suivant le paramètrefunction getElement($uid){// uid[0] : utilisateur obligatoire// Controle detournement utilisateursession_start();$this->controleUtilisateur($uid[0]);$DB=$this->connectDB($this->config,'cel_db');if($uid) {$param = $uid[1] ;$param = ltrim($param,'&') ;$tab_param = split('=',$param) ;$field = $tab_param[0] ;$value = $tab_param[1] ;$query = "" ;if ($field == 'coi_ce_observation'){$column = 'coi_ce_image' ;$query = 'SELECT coi_ce_image, ci_meta_height , ci_meta_width '.'FROM cel_obs_images, cel_images '.'WHERE coi_ce_image = ci_id_image '.'AND coi_ce_observation = "'.$DB->escapeSimple($value).'" AND coi_ce_utilisateur ="'.$DB->escapeSimple($uid[0]).'"' ;}else{$column = 'coi_ce_observation' ;$query = 'SELECT nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, ordre, date_observation, lieudit,' .'station, milieu, commentaire, transmission, id_location from cel_inventory WHERE ordre IN (SELECT '.$column.' FROM cel_obs_images WHERE '.$field.' = "'.$DB->escapeSimple($value).'") AND identifiant = "'.$DB->escapeSimple($uid[0]).' "' ;}}$res =& $DB->query($query);if (PEAR::isError($res)) {die($res->getMessage());}while ($image_liee = $res->fetchrow(DB_FETCHMODE_ORDERED)) {$images_liees[] = $image_liee ;}$res = json_encode($images_liees) ;header("content-type: text/json") ;print $res ;exit() ;}// met à jour les associations entre images et observationsfunction updateElement($uid,$pairs){/* // Controle detournement utilisateursession_start();if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {print "Acces interdit";return;}$DB=$this->connectDB($this->config,'cel_db');$query = "SELECT * FROM cel_obs_images WHERE " ;$query .= ' WHERE '.$ci_id_image.' = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ;}function deleteElement($uid){// uid[0] : utilisateur obligatoire// uid[1] : identifiant(s) image(s) obligatoire(s)// Controle detournement utilisateursession_start();if (($_SESSION['user']!="") && $_SESSION['user']['name']!=$uid[0]) {print "Acces interdit";return;}$DB=$this->connectDB($this->config,'cel_db');$id = rtrim($uid[1],",") ;if (isset($id)) {$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($id) .")";//$query = "DELETE FROM cel_obs_images WHERE coi_fk__image in (".$DB->escapeSimple($uid[1]) .")";}$res =& $DB->query($query);if (PEAR::isError($res)) {die($res->getMessage());}else{echo "OK" ;exit() ;}$id_fichiers = explode(",",$id) ;foreach($id_fichiers as $en_cours){supprimer_fichier($en_cours) ;}*/}function deleteElement($uid){// uid[0] : utilisateur obligatoire// uid[1] : identifiant(s) image(s) obligatoire(s)// uid[2] : identifiant(s) observations// Controle detournement utilisateursession_start();$this->controleUtilisateur($uid[0]);$DB=$this->connectDB($this->config,'cel_db');$id_img = $DB->escapeSimple($uid[1]) ;$id_obs = $DB->escapeSimple($uid[2]) ;$id = $uid[0] ;if (isset($id)) {$query = "DELETE FROM cel_obs_images WHERE coi_ce_image = ".$id_img." AND coi_ce_observation IN (".$id_obs.") AND coi_ce_utilisateur = '".$id."'" ;}$res =& $DB->query($query);if (PEAR::isError($res)) {die($res->getMessage());}else{echo "OK" ;exit() ;}}}?>