Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 604 → Rev 605

/trunk/jrest/services/InventoryImageListPublic.php
2,8 → 2,10
 
Class InventoryImageListPublic extends DBAccessor {
private $DB = null;
private $start = 0;
private $limit = 50;
private $limit = 100;
private $distinct = true;
private $criteres = array('mot_cles' => 'c.ci_meta_mots_cles',
22,37 → 24,109
}
 
function getElement($uid)
{
{
// uid[0] : utilisateur obligatoire
// uid[1] : critères de filtrage de la forme critère1:valeur1;critère2:valeur2
 
$DB=$this->connectDB($this->config,'cel_db');
$this->DB = $this->connectDB($this->config,'cel_db');
 
$criteres = array() ;
if($uid[0] != '*') {
if($uid[0] == '*') {
$criteres = array();
} else {
$criteres[$this->criteres['auteur']] = $uid[0];
if(!$this->estUneRechercheGenerale()) {
 
$criteres = $this->traiterCriteres($_GET);
if(empty($criteres)) {
header("content-type: text/html");
$images_json = json_encode(array());
print $images_json;
exit() ;
}
}
}
 
$criteres = $this->traiterCriteres($_GET) ;
// Construction de la requête
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' * '.
'FROM cel_obs_images a '.
if(isset($_GET['start'])) {
$this->start = $_GET['start'];
}
if(isset($_GET['limit'])) {
$this->limit = $_GET['limit'];
}
// Construction de la requête
$requete_debut = 'SELECT * ';
$requete_nb = 'SELECT COUNT(*) as nb_res ';
$jointure = 'FROM cel_obs_images a '.
'INNER JOIN cel_inventory b '.
'ON a.coi_ce_observation = b.ordre AND a.coi_ce_utilisateur = b.identifiant '.
'INNER JOIN cel_images c '.
'ON a.coi_ce_image = c.ci_id_image AND a.coi_ce_utilisateur = c.ci_ce_utilisateur '.
'WHERE b.transmission = 1 AND b.identifiant = c.ci_ce_utilisateur AND ';
$requete_debut .= $jointure;
$requete_nb .= $jointure;
if($this->estUneRechercheGenerale()) {
$chaine_requete = $_GET['recherche'];
$requete = $this->creerSousRequeteRechercheGenerale($chaine_requete) ;
} else {
$criteres = $this->traiterCriteres($_GET) ;
$requete = $this->creerSousRequeteRechercheParCriteres($criteres);
}
$requete_debut .= $requete;
$requete_nb .= $requete;
$requete_debut = rtrim($requete_debut,'AND ');
$requete_nb = rtrim($requete_nb,'AND ');
$requete_debut .= ' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'c.ci_meta_date_ajout DESC').' ';
$requete_debut .= "LIMIT $this->start,$this->limit ";
$res =& $this->DB->query($requete_debut);
if (PEAR::isError($res)) {
die($res->getMessage());
}
$res_nb =& $this->DB->query($requete_nb);
if (PEAR::isError($res)) {
die($res->getMessage());
}
$images = array();
$total = 0;
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
$images[]= $row;
$nb_res = $row['nb_res'];
}
while ($row =& $res_nb->fetchrow(DB_FETCHMODE_ASSOC)) {
$total= $row['nb_res'];
}
 
$numero_page = 0 ;
$limite = 50 ;
$resultat = array('total' => $total,'images' => $images, 'requete' => $requete_debut);
$images_json = json_encode($resultat) ;
 
header("content-type: text/html") ;
print $images_json ;
exit() ;
}
private function creerSousRequeteRechercheParCriteres($criteres) {
$requete = '';
foreach($criteres as $pair)
{
{
$nom_valeur = explode("=",$pair) ;
 
if(sizeof($nom_valeur) != 0)
59,11 → 133,11
{
if($nom_valeur[0] == "ci_limite")
{
$this->limite = $DB->escapeSimple($nom_valeur[1]) ;
$this->limite = $this->DB->escapeSimple($nom_valeur[1]) ;
}
elseif($nom_valeur[0] == "c.ci_numero_page")
{
$this->start = $this->limite*$DB->escapeSimple($nom_valeur[1]) ;
$this->start = $this->limite*$this->DB->escapeSimple($nom_valeur[1]) ;
}
elseif($nom_valeur[0] == "c.ci_meta_mots_cles")
{
72,7 → 146,7
 
foreach($mots_cles_liste as $mot_cle)
{
$requete .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_cle).'%"' ;
$requete .= $nom_valeur[0].' LIKE "%'.$this->DB->escapeSimple($mot_cle).'%"' ;
$requete .= ' AND ' ;
}
}
83,23 → 157,35
foreach($mots_comment_liste as $mot_comment)
{
$mot_comment = trim($mot_comment) ;
$requete .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_comment).'%"' ;
$requete .= $nom_valeur[0].' LIKE "%'.$this->DB->escapeSimple($mot_comment).'%"' ;
$requete .= ' AND ' ;
}
}
elseif($nom_valeur[0] == "c.ci_meta_date")
{
$requete .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$DB->escapeSimple($nom_valeur[1]).'"' ;
$requete .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$this->DB->escapeSimple($nom_valeur[1]).'"' ;
$requete .= ' AND ' ;
}
elseif($nom_valeur[0] == "c.ci_id_tampon")
{
$ids_tampon = rtrim($nom_valeur[1], ',') ;
$requete .= 'c.ci_id_image IN ( '.$DB->escapeSimple($ids_tampon).')' ;
$requete .= 'c.ci_id_image IN ( '.$this->DB->escapeSimple($ids_tampon).')' ;
}
else
elseif($nom_valeur[0] == "b.nom_ret")
{
$requete .= $nom_valeur[0].' = "'.$DB->escapeSimple($nom_valeur[1]) ;
if($nom_valeur[1] == "indetermine") {
$nom_valeur[1] = 'null';
}
$requete .= ' (';
$requete .= $nom_valeur[0].' LIKE "%'.$this->DB->escapeSimple($nom_valeur[1]).'%"' ;
$requete .= ' OR ' ;
$requete .= 'b.nom_sel LIKE "%'.$this->DB->escapeSimple($nom_valeur[1]).'%"' ;
$requete .= ') AND ' ;
} else
{
$requete .= $nom_valeur[0].' = "'.$this->DB->escapeSimple($nom_valeur[1]) ;
$requete .= '" AND ' ;
}
}
106,33 → 192,51
}
$requete = rtrim($requete,' AND ') ;
return $requete;
}
private function creerSousRequeteRechercheGenerale($chaine_requete) {
if(trim($chaine_requete) == '') {
return '';
}
$chaine_requete = strtolower($chaine_requete);
$chaine_requete = str_replace(' ','_',$chaine_requete);
$requete = ' (';
$requete .= 'b.nom_ret LIKE "'.$this->DB->escapeSimple($chaine_requete).'%"' ;
$requete .= ' OR ' ;
$requete .= 'b.nom_sel LIKE "'.$this->DB->escapeSimple($chaine_requete).'%"' ;
$requete .= ' OR ' ;
 
$requete .= ' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'c.ci_meta_date_ajout DESC').' ';
$requete .= "LIMIT $this->start,$this->limit ";
$requete .= 'b.location LIKE "'.$this->DB->escapeSimple($chaine_requete).'%" ' ;
$requete .= ' OR ' ;
$res =& $DB->query($requete);
if (PEAR::isError($res)) {
die($res->getMessage());
}
$images = array();
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
$images[]= $row;
}
 
$images_json = json_encode($images) ;
 
header("content-type: text/html") ;
print $images_json ;
exit() ;
$requete .= 'b.id_location LIKE "'.$this->DB->escapeSimple($chaine_requete).'%" ' ;
$requete .= ' OR ' ;
$requete .= 'c.ci_ce_utilisateur LIKE "'.$this->DB->escapeSimple($chaine_requete).'%" ' ;
$requete .= ') ';
return $requete;
}
private function estUneRechercheGenerale() {
return isset($_GET['recherche']);
}
private function traiterCriteres($tableau_criteres) {
$tableau_criteres_pour_bdd = array();
foreach($tableau_criteres as $nom_critere => $valeur_critere) {
foreach($tableau_criteres as $nom_critere => $valeur_critere) {
if(isset($this->criteres[$nom_critere])) {
$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
}
141,5 → 245,4
return $tableau_criteres_pour_bdd;
}
}
 
?>
/trunk/jrest/services/InventoryImageList.php
245,7 → 245,8
$id_fichiers = explode(",",$id) ;
foreach($id_fichiers as $en_cours)
{
supprimer_fichier($en_cours,$this->config['cel_db']['chemin_images']) ;
$manipulateur_image = new ImageRecreation($this->config);
$manipulateur_image->detruireImageSurDisque($id);
}
 
echo "OK" ;
/trunk/jrest/services/LicenceUtilisateur.php
New file
0,0 → 1,97
<?php
/**
 
David Delon david.delon@clapas.net 2007
 
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.
 
*/
 
/*
* User.php
*
* Cas d'utilisation :
* Service identification utilisateur
*
*
* 1: Aucun identifiant ni mot de passe transmis
* 1: L'application retourne l'identifiant de session en cours
* 2: Une identification est toujours active, cette identification est retournee
*
* 1: L'application recoit un identifiant et un mot de passe
* 1 : On tente login
* 2 : Si reussi etat connecte
* 3 : sinon pas connecte
*
* 1: L'application recoit un identifiant et pas de mot de passe :
* 1 : Deconnection
*
 
/* En resume :
* /User/ : retour id si jamais connecte, sinon retour login_utilisateur
* /User/login_utilisateur : logout
* /User/login_utilisateur/password : login
*
*/
 
 
 
Class LicenceUtilisateur extends User {
 
function LicenceUtilisateur($config) {
 
$this->config=$config;
 
}
 
function updateElement($uid,$pairs) {
if(!isset($uid[0])) {
return;
}
 
$this->SetPersistentCookie("cel_licence_".md5($uid[0]), true, true);
echo "cel_licence_".md5($uid[0]);
}
}
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.5 2008-01-30 08:57:28 ddelon
* fin mise en place mygwt
*
* Revision 1.4 2007-05-22 12:54:09 ddelon
* Securisation acces utilisateur
*
* Revision 1.3 2007-05-21 18:12:20 ddelon
* Gestion des importations locale de releves
*
*
*/
 
?>
/trunk/jrest/services/Inventory.php
109,7 → 109,14
 
 
// Pour apparaitre le premier dans les tris ...
if ($pairs['id_location']=="null") $pairs['id_location']="000null";
if ($pairs['id_location']=="null") {
$pairs['id_location']="000null";
} else {
// Pour empecher que des numéros de département de 1 à 9 soient saisis sans 0
if (strlen($pairs['id_location']) == 1) {
$pairs['id_location'] = '0'.$pairs['id_location'];
}
}
 
// Pour apparaitre le premier dans les tris ...
if ($pairs['station']=="null") $pairs['station']="000null";
224,9 → 231,15
 
 
// Pour apparaitre le premier dans les tris ...
if ($pairs['id_location']=="null") $pairs['id_location']="000null";
if ($pairs['id_location']=="null") {
$pairs['id_location']="000null";
} else {
// Pour empecher que des numéros de département de 1 à 9 soient saisis sans 0
if (strlen($pairs['id_location']) == 1) {
$pairs['id_location'] = '0'.$pairs['id_location'];
}
}
 
 
// Pour apparaitre le premier dans les tris ...
if ($pairs['station']=="null") $pairs['station']="000null";
 
/trunk/jrest/services/InventoryImageLink.php
220,13 → 220,13
 
$DB=$this->connectDB($this->config,'cel_db');
 
$id_img = $DB->escapeSimple($uid[1]) ;
$id_img = $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."'" ;
$query = "DELETE FROM cel_obs_images WHERE coi_ce_image IN (".$id_img.") AND coi_ce_observation IN (".$id_obs.") AND coi_ce_utilisateur = '".$id."'" ;
}
 
$res =& $DB->query($query);
/trunk/jrest/services/User.php
77,7 → 77,6
 
function getRessource(){
 
 
$expireTime = 60*60*24*100; // 100 jours
session_set_cookie_params($expireTime);
 
102,8 → 101,9
}
 
$admin = $this->isAdmin($retour) ;
$licence_acceptee = $this->isLicenceAccepted($retour);
 
$output = json_encode(array($retour,$connected,$admin));
$output = json_encode(array($retour,$connected,$admin,$licence_acceptee));
print($output);
 
}
138,8 → 138,10
}
 
$admin = $this->isAdmin($retour) ;
$licence_acceptee = $this->isLicenceAccepted($retour) ;
 
$output = json_encode(array($retour,$connected,$admin));
$output = json_encode(array($retour,$connected,$admin,$licence_acceptee));
 
print($output);
 
163,8 → 165,9
}
 
$admin = $this->isAdmin($name) ;
$licence_acceptee = $this->isLicenceAccepted($name) ;
 
$retour= array("name"=>$name,"password"=>$password,"admin"=>$admin);
$retour= array("name"=>$name,"password"=>$password,"admin"=>$admin,"licence_acceptee"=>$licence_acceptee);
 
return $retour;
 
239,6 → 242,21
}
}
}
function isLicenceAccepted($utilisateur) {
//print_r($_COOKIE);
if($_COOKIE['cel_licence_'.md5($utilisateur)] == 1) {
return true;
}
if($_COOKIE['cel_licence_'.md5($utilisateur)] == true) {
return true;
}
return false;
}
}
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
/trunk/jrest/services/ImageRecreation.php
1,7 → 1,7
<?php
Class ImageRecreation extends DBAccessor {
private $droits = 0777;
private $droits = 0755;
private $formats = array('CRX2S','CXS','CS','S','M','L','XL','X2L','X3L');
 
public function ImageRecreation($config) {
10,20 → 10,18
}
public function getRessource() {
return $this->getElement(array());
}
public function getElement($param) {
ini_set ('max_execution_time',0);
$this->itererRecursivement($this->config['cel_db']['chemin_images']);
}
public function itererRecursivement($dossier, $formats = null) {
public function recreerMiniaturesRecursivement() {
$this->itererRecursivement($this->config['cel_db']['chemin_images']);
}
if($formats == null) {
$formats = $this->getFormats();
}
public function itererRecursivement($dossier) {
// on ne parse que le dossier des images originales
$dossiers_a_exclure = $this->getFormats();
48,10 → 46,10
$nom_fichier = $fichier_ou_dossier->getFilename();
$infos_image_originale = $this->obtenirImageEtInfosPourChemin($fichier_ou_dossier->getPathname());
$id = $this->convertirBaseNomFichierVersIdBdd($nom_fichier, $formats);
$id = $this->convertirBaseNomFichierVersIdBdd($nom_fichier, $this->formats);
// creation de miniatures pour chacuns des formats définis
foreach($formats as $format) {
foreach($this->formats as $format) {
$this->creerEtStockerMiniatureFichierImageSelonFormat($id, $infos_image_originale, $format);
}
385,7 → 383,7
public function recompresserImageSurDisqueEnPreservantMeta($chemin_fichier, $compression = 100) {
 
$blob = file_get_contents($chemin_fichier);
/*$blob = file_get_contents($chemin_fichier);
$image_a_compresser = new Imagick();
$image_a_compresser->readImageBlob($blob, $chemin_fichier);
395,7 → 393,7
$image_a_compresser->writeImage($chemin_fichier);
$image_a_compresser->destroy();
chmod($chemin_sur_serveur_final.'/'.$nom_fichier,$this->droits);
chmod($chemin_sur_serveur_final.'/'.$nom_fichier,$this->droits);*/
}
public function renvoyerEtCreerImageCarreeBlancheSelonFormat($cote) {
/trunk/jrest/services/InventoryObservationList.php
198,7 → 198,14
 
 
// Pour apparaitre le premier dans les tris ...
if ($pairs['id_location']=="null") $pairs['id_location']="000null";
if ($pairs['id_location']=="null") {
$pairs['id_location']="000null";
} else {
// Pour empecher que des numéros de département de 1 à 9 soient saisis sans 0
if (strlen($pairs['id_location']) == 1) {
$pairs['id_location'] = '0'.$pairs['id_location'];
}
}
 
// Pour apparaitre le premier dans les tris ...
if ($pairs['station']=="null") $pairs['station']="000null";