* @license GPL v3 * @license CECILL v2 * @version $Id$ */ Class InventoryImageList extends DBAccessor { var $config; function InventoryImageList($config) { $this->config=$config; } // renvoie l'enregistrement correspond � une image function getElement($uid) { // uid[0] : utilisateur obligatoire // uid[1] : crit�res de filtrage de la forme crit�re1:valeur1;crit�re2:valeur2 // Controle detournement utilisateur 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: text/html") ; print $res ; exit() ; } function updateElement($uid,$pairs) { } 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 = 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_image FROM cel_obs_images WHERE 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_generale = '(ci_id_image IN ( '.($requete_recherche_taxon).') OR ('.$requete_recherche_comm.'))' ; return $requete_recherche_generale; } private function fabriquerSousRequeteRechercheDate($intervalle, $valeur) { $correspondance_champ = array('annee' => 'YEAR','mois' => 'MONTH','jour' => 'DAY'); $requete_recherche_date = ''; $requete_recherche_date = $correspondance_champ[$intervalle].'(ci_meta_date) = "'.$valeur.'" '; return $requete_recherche_date; } } ?>