Rev 1078 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Service recherche, et de suppression multiple d'images a partir de divers critères* Encodage en entrée : utf8* Encodage en sortie : utf8** @author Aurélien PERONNET <aurelien@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @version $Id$*/Class InventoryImageList extends DBAccessor {var $config;function InventoryImageList($config) {$this->config=$config;}// renvoie l'enregistrement correspond � une imagefunction getElement($uid){// uid[0] : utilisateur obligatoire// uid[1] : crit�res de filtrage de la forme crit�re1:valeur1;crit�re2:valeur2// Controle detournement utilisateurif(!isset($_SESSION)) {session_start();}$this->controleUtilisateur($uid[0]);$DB=$this->connectDB($this->config,'cel_db');$criteres = array() ;if(isset($uid[1])){$criteres = explode("&", $uid[1]) ;}$query='SELECT * FROM cel_images WHERE ci_ce_utilisateur = "'.$uid[0].'" AND ' ;$numero_page = 0 ;$limite = 50 ;foreach($criteres as $pair){$nom_valeur = explode("=",$pair) ;if(sizeof($nom_valeur) != 0){if($nom_valeur[0] == "ci_limite"){$limite = $DB->escapeSimple($nom_valeur[1]) ;}elseif($nom_valeur[0] == "ci_numero_page"){$numero_page = $DB->escapeSimple($nom_valeur[1]) ;}elseif($nom_valeur[0] == "ci_meta_mots_cles"){$mots_cles = rtrim($nom_valeur[1], ',') ;$mots_cles_liste = explode("," , $mots_cles) ;foreach($mots_cles_liste as $mot_cle){$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_cle).'%"' ;$query .= ' AND ' ;}}elseif($nom_valeur[0] == "ci_meta_comment"){$mots_comment_liste = explode(" " , $nom_valeur[1]) ;foreach($mots_comment_liste as $mot_comment){$mot_comment = trim($mot_comment) ;$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_comment).'%"' ;$query .= ' AND ' ;}}elseif($nom_valeur[0] == "annee" || $nom_valeur[0] == "mois" || $nom_valeur[0] == "jour"){$query .= $this->fabriquerSousRequeteRechercheDate($nom_valeur[0], $nom_valeur[1]) ;$query .= ' AND ' ;}elseif($nom_valeur[0] == "ci_id_tampon"){$ids_tampon = rtrim($nom_valeur[1], ',') ;$query .= 'ci_id_image IN ( '.$DB->escapeSimple($ids_tampon).')' ;}elseif($nom_valeur[0] == "ci_recherche_generale"){$query .= $this->fabriquerSousRequeteRechercheGenerale($uid[0], $nom_valeur[1]);$query .= ' AND ';}else{$query .= $nom_valeur[0].' = "'.$DB->escapeSimple($nom_valeur[1]) ;$query .= '" AND ' ;}}}$debut = $limite*$numero_page ;$query = rtrim($query,' AND ') ;$query .= ' ORDER BY ci_ordre LIMIT '.$debut.','.$limite ;$res =& $DB->query($query);if (PEAR::isError($res)) {die($res->getMessage());}$result = array() ;while($image = $res->fetchrow(DB_FETCHMODE_ASSOC)){$date = split("-",$image['ci_meta_date']) ;if(count($date) > 2){$image['ci_meta_date'] = $date[2].'/'.$date[1].'/'.$date[0] ;}$image['ci_ce_observation'] = '';$requete_table_liaison = 'SELECT coi_ce_observation FROM cel_obs_images WHERE coi_ce_image = '.$image['ci_id_image'].' AND coi_ce_utilisateur ="'.$uid[0].'"';$res_table_liaison =& $DB->query($requete_table_liaison);if (PEAR::isError($res_table_liaison)) {die($res_table_liaison->getMessage());}$ids_obs = '';while($liaison = $res_table_liaison->fetchrow(DB_FETCHMODE_ASSOC)){$ids_obs .= $liaison['coi_ce_observation'].",";}$ids_obs = rtrim($ids_obs,',');if(trim($ids_obs) != '') {$requete_obs_liees = 'SELECT * FROM cel_inventory WHERE ordre IN ('.$ids_obs.') AND identifiant ="'.$uid[0].'"';$res_obs_liees =& $DB->query($requete_obs_liees);if (PEAR::isError($res_obs_liees)) {die($res_obs_liees->getMessage());}while($obs_liee = $res_obs_liees->fetchrow(DB_FETCHMODE_ASSOC)){$image['ci_ce_observation'] .= $obs_liee['ordre'].'#'.$obs_liee['nom_sel'].'#'.$obs_liee['transmission'].';;' ;}}$result[] = $image ;}$res = json_encode($result) ;$res = str_replace('\u0000','',$res);header("content-type: application/json") ;print $res ;exit() ;}function updateElement($uid,$pairs){}function deleteElement($uid){// uid[0] : utilisateur obligatoire// uid[1] : identifiant(s) image(s) obligatoire(s)// Controle detournement utilisateurif(!isset($_SESSION)) {session_start();}$this->controleUtilisateur($uid[0]);$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_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());}$id_fichiers = explode(",",$id) ;foreach($id_fichiers as $en_cours){$manipulateur_image = new ImageRecreation($this->config);$manipulateur_image->detruireImageSurDisque($id);}echo "OK" ;exit() ;}}private function fabriquerSousRequeteRechercheGenerale($id_utilisateur, $chaine_recherche) {$requete_recherche_taxon = 'SELECT coi_ce_imageFROM cel_obs_imagesWHERE coi_ce_observation IN ' .'(SELECT ordre ' .'FROM cel_inventory '.'WHERE identifiant ="'.$id_utilisateur.'" '.'AND nom_sel LIKE "'.$chaine_recherche.'%" '.')';$requete_recherche_comm = ' ci_meta_comment LIKE "%'.$chaine_recherche.'%" ';$requete_recherche_nom_or = ' ci_nom_original LIKE "%'.$chaine_recherche.'%" ';$requete_recherche_generale = '(ci_id_image IN ( '.($requete_recherche_taxon).') OR ('.$requete_recherche_comm.') OR ('.$requete_recherche_nom_or.'))' ;return $requete_recherche_generale;}private function fabriquerSousRequeteRechercheDate($intervalle, $valeur) {$correspondance_champ = array('annee' => 'YEAR','mois' => 'MONTH','jour' => 'DAY');$requete_recherche_date = '';if(is_numeric($valeur) && $valeur != "00") {$requete_recherche_date = $correspondance_champ[$intervalle].'(ci_meta_date) = "'.$valeur.'" ';} else {$requete_recherche_date = '( ci_meta_date IS NULL OR ci_meta_date = "0000-00-00")';}return $requete_recherche_date;}}?>