config=$config; } // renvoie lee nombre d'images correspondant aux criteres 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 $this->controleUtilisateur($uid[0]); $DB=$this->connectDB($this->config,'cel_db'); $criteres = array() ; if(isset($uid[1])) { $criteres = explode("&", $uid[1]) ; } $query='SELECT COUNT(*) FROM cel_images WHERE ci_ce_utilisateur = "'.$DB->escapeSimple($uid[0]).'" AND ' ; 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).')'. $query .= ' AND '; } 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 ' ; } } } $query = rtrim($query,' AND ') ; $res =& $DB->query($query); if (PEAR::isError($res)) { die($res->getMessage()); } $results = array() ; while($image = $res->fetchrow(DB_FETCHMODE_ORDERED)) { $result[] = $image[0] ; } $res = json_encode($result) ; header("content-type: text/json") ; print $res ; 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 = ''; if(is_numeric($valeur)) { $requete_recherche_date = $correspondance_champ[$intervalle].'(ci_meta_date) = "'.$valeur.'" '; } return $requete_recherche_date; } } ?>