Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 415 → Rev 416

/trunk/jrest/services/InventoryImageList.php
New file
0,0 → 1,257
<?php
 
require_once('include/extract_metadonnee.php') ;
require_once('include/stockage_fichier.php') ;
 
/**
 
Aurelien Peronnet aurelienperonnet@gmail.com 2008
 
Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
sur 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'est
offert aux utilisateurs qu'une garantie limit?e. Pour les m?mes raisons,
seule une responsabilit? restreinte p?se sur l'auteur du programme, le
titulaire des droits patrimoniaux et les conc?dants successifs.
 
A cet ?gard l'attention de l'utilisateur est attir?e sur les risques
associ?s au chargement, ? l'utilisation, ? la modification et/ou au
d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
avertis poss?dant des connaissances informatiques approfondies. Les
utilisateurs sont donc invit?s ? charger et tester l'ad?quation du
logiciel ? leurs besoins dans des conditions permettant d'assurer la
s?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 avez
pris connaissance de la licence CeCILL, et que vous en avez accept? les
termes.
 
*/
 
 
// in : utf8
// out : utf8
/*
* InventoryImageList.php
*
* Cas d'utilisation :
* Service recherche d'images a partir de divers crit�res
*
* 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 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] == "ci_meta_date")
{
$query .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$DB->escapeSimple($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).')' ;
}
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) ;
 
header("content-type: text/json") ;
print $res ;
exit() ;
}
 
// met � jour les m�tadonn�es d'une image
function updateElement($uid,$pairs)
{
// Controle detournement utilisateur
session_start();
$this->controleUtilisateur($uid[0]);
 
$DB=$this->connectDB($this->config,'cel_db');
$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 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)
{
supprimer_fichier($en_cours,$this->config['cel_db']['chemin_images']) ;
}
 
echo "OK" ;
exit() ;
}
}
 
}
?>