Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 970 → Rev 967

/trunk/jrest/services/InventoryKeyWordImageLink.php
File deleted
\ No newline at end of file
/trunk/jrest/services/TestCreationDossier.php
New file
0,0 → 1,20
<?php
class TestCreationDossier {
 
 
var $config;
public function __construct($config) {
$this->config = $config;
}
 
public function getRessource() {
$id_nouvelle_image = 95001;
$format = 'XL';
$manipulateurImage = new ImageRecreation($this->config);
$fichier_stocke = $manipulateurImage->creerSiNecessaireEtRenvoyerCheminStockageFichierPourIdEtFormat($id_nouvelle_image, $format);
echo $fichier_stocke;
}
}
?>
/trunk/jrest/services/InventoryImage.php
97,7 → 97,7
$gestionnaire_image = new GestionImage($this->config);
$id_utilisateur = $pairs['ce_utilisateur'];
if ($gestionnaire_image->ajouterImage($id_utilisateur, $infos_fichier)) {
if ($this->ajouterImage($id_utilisateur, $infos_fichier)) {
// l'upload demande de court-circuiter le fonctionnement normal de JREST
// en quittant directement après l'envoi
/trunk/jrest/services/Cel.php
614,38 → 614,6
return preg_match('/^INSEE-C:[0-9]{5}/',$code_a_tester);
}
protected function convertirCodeZoneGeoVersCodeInsee($code_zone_geo) {
$code_departement = '';
if($this->estUnCodeInseeDepartement($code_zone_geo)) {
$code_departement = ltrim($code_zone_geo,'INSEE-C:');
}
return $code_departement;
}
protected function convertirCodeInseeVersCodeZoneGeo($code_insee) {
return 'INSEE-C:'.$code_insee;
}
protected function obtenirCodeInseeCommunePourNomEtDepartement($nom_commune, $dpt) {
$code_insee = $dpt;
$requete = 'SELECT id_zone_geo FROM cel_zones_geo '.
'WHERE nom LIKE '.$this->proteger($nom_commune).' '.
'AND id_zone_geo LIKE "INSEE-C:'.$dpt.'%"';
$resultat = $this->requeter($requete);
if(is_array($resultat) && count($resultat) > 0) {
$code_insee = $resultat[0]['id_zone_geo'];
}
return $code_insee;
}
protected function encoderMotCle($mot_cle) {
return md5(mb_strtolower(trim($mot_cle)));
}
/trunk/jrest/services/CelStatistiqueTxt.php
79,7 → 79,6
$limitSql = 'LIMIT 0,150 ';
$zero_images = false;
if (count($this->parametres) != 0) {
extract($this->parametres);
/trunk/jrest/services/CelWidgetMap.php
60,7 → 60,6
* Les stations de la carte par défaut
*/
public function getStations($params) {
$json = null;
$requete = 'SELECT sector, x_utm, y_utm, wgs84_latitude AS commune_latitude, wgs84_longitude AS commune_longitude, '.
' coord_x AS point_latitude, coord_y AS point_longitude '.
/trunk/jrest/services/PlantNetRssParEspece.php
New file
0,0 → 1,173
<?php
/**
* PHP Version 5
*
* @category PHP
* @package jrest
* @author aurelien <aurelien@tela-botanica.org>
* @copyright 2009 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version SVN: <svn_id>
* @link /doc/jrest/
*/
 
class PlantNetRssParEspece extends DBAccessor {
 
var $config;
 
function PlantNetRss($config) {
 
$this->config=$config;
}
 
function getElement($uid){
 
$rss = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n";
$rss .= "<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n";
$rss .='
<channel>
<title>Carnet en ligne</title>
<link>http://www.tela-botanica.org/cel/jrest/PlantnetRss</link>
<description>Derniers scans de feuilles</description>
<language>fr</language>';
 
$motcle = 'plantnet' ;
 
$DB=$this->connectDB($this->config,'cel_db');
 
$query_id_id_img = 'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles WHERE cmc_id_mot_cle_general = md5("'.$motcle.'")' ;
 
$res =& $DB->query($query_id_id_img);
 
if (DB::isError($res)) {
 
echo $res->getMessage();
}
 
$query='SELECT * FROM cel_images';
 
$premier_item = true ;
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
 
if($premier_item) {
$query .= ' WHERE ';
$premier_item = false ;
}
else{
$query .= ' OR ';
}
 
$query .= '(ci_meta_mots_cles LIKE "%'.$row['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur ="'.$row['cmc_id_proprietaire'].'")' ;
}
 
$query .= ' ORDER BY ci_meta_date_ajout DESC LIMIT 0,100' ;
 
$res =& $DB->query($query);
 
 
if (DB::isError($res)) {
print("req partie 2");
die($res->getMessage());
}
 
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
$row['ci_nom_original'] = htmlspecialchars($row['ci_nom_original']);
$row['ci_id_image'] = htmlspecialchars($row['ci_id_image']);
$row['ci_meta_date_ajout'] = htmlspecialchars($row['ci_meta_date_ajout']);
$row['ci_ce_utilisateur'] = htmlspecialchars($row['ci_ce_utilisateur']);
$row['ci_meta_user_comment'] = htmlspecialchars($row['ci_meta_user_comment']);
$row['ci_note_image'] = htmlspecialchars($row['ci_note_image']);
$tailleXY = $this->calculerDimensions(array($row['ci_meta_width'], $row['ci_meta_height']));
 
$id = $row['ci_id_image'];
$chemin_sur_serveur = $this->config['cel_db']['url_images'];
 
$id = sprintf('%09s', $id) ;
$id = wordwrap($id, 3 , '_', true) ;
 
$id_fichier = $id.".jpg" ;
 
$niveauDossier = split("_", $id) ;
 
$dossierNiveau1 = $niveauDossier[0] ;
$dossierNiveau2 = $niveauDossier[1] ;
 
$chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ;
 
$chemin_fichier = $chemin_sur_serveur_final.'/L/'.$id."_L.jpg" ;
$chemin_fichier_m = $chemin_sur_serveur_final.'/M/'.$id."_M.jpg" ;
 
$rss.= ' <item>
<title>'.$row['ci_nom_original']." (".$row['ci_id_image'].") ". ' par ' . $row['ci_ce_utilisateur'].'</title>
<author>'.$row['ci_ce_utilisateur'].'</author>
<link>'.$chemin_fichier.'</link>
<description>'.
' <![CDATA[<img src="'.$chemin_fichier_m.'" alt="'.$row['ci_nom_original'].'" height="'.$tailleXY[1].'px" width="'.$tailleXY[0].'px"></img><br/>]]>'.
$row['ci_nom_original']. ' ajouté le ' .$row['ci_meta_date_ajout'] . ' par ' . $row['ci_ce_utilisateur'].'
</description>
<dc:format>text/html</dc:format>
</item>';
}
 
$rss.= '</channel> </rss>';
 
 
header("Content-Type: text/xml; charset=UTF-8");
print $rss;
exit;
}
 
 
function getRessource(){
 
$uid[] = array() ;
$this->getElement($uid);
}
 
function calculerDimensions($tailleXY) {
 
$tailleOr = 300 ;
 
if($tailleXY[1] == 0) {
$tailleXY[1] = $tailleOr;
}
 
if($tailleXY[0] == 0) {
$tailleXY[0] = $tailleOr;
}
 
$maxTaille = max($tailleXY[1],$tailleXY[0]) ;
 
if($maxTaille == $tailleXY[1]) {
 
$rapport = $tailleXY[1]/$tailleXY[0] ;
$tailleXY[1] = 300 ;
$tailleXY[0] = round($tailleXY[1]/$rapport,0) ;
 
}else {
$rapport = $tailleXY[0]/$tailleXY[1] ;
$tailleXY[0] = 300 ;
$tailleXY[1] = round($tailleXY[0]/$rapport,0) ;
}
 
return $tailleXY ;
}
}
 
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.5 2008-11-13 11:29:12 ddelon
* Reecriture gwt-ext
*
* Revision 1.4 2007-06-06 13:31:16 ddelon
* v0.09
*
* Revision 1.3 2007-05-22 12:54:09 ddelon
* Securisation acces utilisateur
*
*
*
*/
 
?>
/trunk/jrest/services/InventoryItemList.php
New file
0,0 → 1,199
<?php
 
 
// In : utf8
// Out : utf8
 
Class InventoryItemList extends DBAccessor {
 
 
var $config;
function InventoryItemList($config) {
 
$this->config=$config;
}
 
function getElement($uid){
// Controle detournement utilisateur
session_start();
$this->controleUtilisateur($uid[0]);
// uid[0] : utilisateur obligatoire
// uid[1] : si absent : valeur 'all' (departement)
// uid[2] : si absent : valeur 'all' (commune)
// uid[3] : si absent : valeur 'all' (annee)
// uid[4] : si absent : valeur 'all' (mois)
// uid[5] : si absent : valeur 'all' (jour)
// uid[6] : si absent : valeur 'all' (recherche libre)
// uid[7] : si absent : valeur 'all' (lieudit)
// uid[8] et uid[9] : selection intervalle
$DB=$this->connectDB($this->config,'database_cel');
 
 
if (!isset($uid[1]) || $uid[1]=="" || $uid[1]=="all" ) {
$uid[1]="all";
$query_id_location="";
}
else {
$query_id_location=" AND id_location='".$DB->escapeSimple($uid[1])."' ";
}
 
if (!isset($uid[2]) || $uid[2]=="" || $uid[2]=="all" ) {
$uid[2]="all";
$query_location="";
}
else {
$query_location=" AND location='".$DB->escapeSimple($uid[2])."' ";
}
if (!isset($uid[3]) || $uid[3]=="" || $uid[3]=="all") {
$uid[3]="all";
$query_year="";
}
else {
$query_year=" AND year(date_observation)='".$DB->escapeSimple($uid[3])."' ";
}
 
if (!isset($uid[4]) || $uid[4]=="" || $uid[4]=="all") {
$uid[4]="all";
$query_month="";
}
else {
$query_month=" AND month(date_observation)='".$DB->escapeSimple($uid[4])."' ";
}
 
if (!isset($uid[5]) || $uid[5]=="" || $uid[5]=="all") {
$uid[5]="all";
$query_day="";
}
else {
$query_day=" AND day(date_observation)='".$DB->escapeSimple($uid[5])."' ";
}
if (!isset($uid[6]) || $uid[6]=="" || $uid[6]=="all") {
$uid[6]="all";
$query_libre="";
}
else {
$query_libre=" AND (nom_sel like '%".$DB->escapeSimple($uid[6])."%' OR nom_ret like '%".$DB->escapeSimple($uid[6])."%' OR station like '%".$DB->escapeSimple($uid[6])."%' OR milieu like '%".$DB->escapeSimple($uid[6])."%' OR commentaire like '%".$DB->escapeSimple($uid[6])."%') ";
}
 
if (!isset($uid[7]) || $uid[7]=="" || $uid[7]=="all") {
$uid[7]="all";
$query_lieudit="";
}
else {
$query_lieudit=" AND lieudit='".$DB->escapeSimple($uid[7])."' ";
}
 
$value=array();
if (isset($uid[8]) && isset($uid[9])) {
$query="SELECT identifiant, ordre, nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, date_observation," .
" lieudit, station, milieu, commentaire, transmission FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' " .
$query_id_location.
$query_location.
$query_year.
$query_month.
$query_day.
$query_libre.
$query_lieudit.
" ORDER BY ordre LIMIT ".$uid[8].",".$uid[9];
}
else {
if (isset($uid[8])) {
// les n derniers
$query="SELECT identifiant, ordre, nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, date_observation," .
" lieudit, station, milieu, commentaire, transmission FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' " .
$query_id_location.
$query_location.
$query_year.
$query_month.
$query_day.
$query_libre.
$query_lieudit.
" ORDER BY ordre LIMIT ".$uid[8].",18446744073709551615";
}
else {
$query="SELECT count(*) as count FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."'" .
$query_id_location.
$query_location.
$query_year.
$query_month.
$query_day.
$query_libre.
$query_lieudit;
 
$res =& $DB->query($query);
if (DB::isError($res)) {
die($res->getMessage());
}
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
$value=$row['count'];
}
$output = json_encode((integer)$value);
print($output);
return true;
}
}
 
$res =& $DB->query($query);
if (DB::isError($res)) {
die($res->getMessage());
}
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
if ($row['date_observation']!="0000-00-00 00:00:00") {
list($year,$month,$day)= split ('-',$row['date_observation']);
list($day)= split (' ',$day);
$row['date_observation']=$day."/".$month."/".$year;
}
$value[]=array($row['nom_sel'], $row['num_nom_sel'],$row['nom_ret'],$row['num_nom_ret'],$row['num_taxon'],$row['famille'], $row['location'], $row['ordre'], $row['date_observation'], $row['lieudit'], $row['station'], $row['milieu'], $row['commentaire'], $row['transmission']);
}
$output = json_encode($value);
print($output);
return true;
 
 
}
 
 
}
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.7 2008-11-13 11:29:12 ddelon
* Reecriture gwt-ext
*
* Revision 1.6 2008-01-30 08:57:28 ddelon
* fin mise en place mygwt
*
* Revision 1.5 2007-05-22 12:54:08 ddelon
* Securisation acces utilisateur
*
*
*
*/
 
?>
/trunk/jrest/services/PlantNetRss.php
New file
0,0 → 1,225
<?php
/**
* PHP Version 5
*
* @category PHP
* @package jrest
* @author aurelien <aurelien@tela-botanica.org>
* @copyright 2009 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version SVN: <svn_id>
* @link /doc/jrest/
*/
 
class PlantNetRss extends DBAccessor {
 
var $config;
 
function PlantNetRss($config) {
 
$this->config=$config;
}
 
function getElement($uid){
 
$rss = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n";
$rss .= "<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n";
$rss .='
<channel>
<title>Carnet en ligne</title>
<link>http://www.tela-botanica.org/cel/jrest/ImageRss</link>
<description>Carnet en ligne</description>
<language>fr</language>';
 
$DB=$this->connectDB($this->config,'cel_db');
$motcle = 'plantnet';
$query_id_id_img = 'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE cmc_id_mot_cle_general = md5("'.$motcle.'")' ;
 
$res =& $DB->query($query_id_id_img);
 
if (DB::isError($res)) {
 
die($res->getMessage());
}
 
$query='SELECT * FROM cel_images';
 
$premier_item = true ;
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
 
if($premier_item) {
$query .= ' WHERE ';
$premier_item = false ;
}
else{
$query .= ' OR ';
}
 
$query .= '(ci_meta_mots_cles LIKE "%'.$row['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur ="'.$row['cmc_id_proprietaire'].'")' ;
}
 
$query .= ' ORDER BY ci_meta_date_ajout DESC LIMIT 0,100' ;
 
$res =& $DB->query($query);
 
if (DB::isError($res)) {
die($res->getMessage());
}
 
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
$row['ci_nom_original'] = htmlspecialchars($row['ci_nom_original']);
$row['ci_id_image'] = htmlspecialchars($row['ci_id_image']);
$row['ci_meta_date_ajout'] = htmlspecialchars($row['ci_meta_date_ajout']);
$row['ci_ce_utilisateur'] = htmlspecialchars($row['ci_ce_utilisateur']);
$row['ci_meta_user_comment'] = htmlspecialchars($row['ci_meta_user_comment']);
$row['ci_note_image'] = htmlspecialchars($row['ci_note_image']);
$tailleXY = $this->calculerDimensions(array($row['ci_meta_width'], $row['ci_meta_height']));
 
$id = $row['ci_id_image'];
$chemin_sur_serveur = $this->config['cel_db']['url_images'];
 
$req_liaison = 'SELECT * FROM cel_inventory WHERE ordre IN (SELECT coi_ce_observation FROM cel_obs_images WHERE coi_ce_image = "'.$row['ci_id_image'].'") AND identifiant = "'.$row['ci_ce_utilisateur'].'"' ;
$res_liaison =& $DB->query($req_liaison);
 
if (DB::isError($res_liaison)) {
die($res_liaison->getMessage());
}
 
if (DB::isError($res_liaison)) {
die($res_liaison->getMessage());
}
 
$id = sprintf('%09s', $id) ;
$id = wordwrap($id, 3 , '_', true) ;
 
$id_fichier = $id.".jpg" ;
 
$niveauDossier = split("_", $id) ;
 
$dossierNiveau1 = $niveauDossier[0] ;
$dossierNiveau2 = $niveauDossier[1] ;
 
$chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ;
 
$chemin_fichier = $chemin_sur_serveur_final.'/L/'.$id."_L.jpg" ;
$chemin_fichier_m = $chemin_sur_serveur_final.'/M/'.$id."_M.jpg" ;
 
$rss.= ' <item>
<title>'.$row['ci_nom_original']." (".$row['ci_id_image'].") ". ' par ' . $row['ci_ce_utilisateur'].'</title>
<author>'.$row['ci_ce_utilisateur'].'</author>
<link>'.$chemin_fichier.'</link>
<guid>'.$chemin_fichier.'</guid>
<description>'.
' <![CDATA[<img src="'.$chemin_fichier_m.'" alt="'.$row['ci_nom_original'].'" height="'.$tailleXY[1].'px" width="'.$tailleXY[0].'px"></img><br/>'.
$row['ci_nom_original']. ' modifiée le ' .$row['ci_meta_date_ajout'] . ' par ' . $row['ci_ce_utilisateur'].'<br/>' ;
 
if(trim($row['ci_meta_mots_cles']) != '') {
$row['ci_meta_mots_cles'] = rtrim($row['ci_meta_mots_cles'],',');
 
$mots_cles_chaine = '' ;
$mots_cles_tab = split(',',$row['ci_meta_mots_cles']);
foreach($mots_cles_tab as $item) {
$mots_cles_chaine .= '\''.$item.'\',';
}
$mots_cles_chaine = rtrim($mots_cles_chaine,',');
 
$req_mots_cles = 'SELECT cmc_mot_cle FROM cel_mots_cles_images WHERE cmc_id_mot_cle_utilisateur IN ('.$mots_cles_chaine.') AND cmc_id_proprietaire = "'.$row['ci_ce_utilisateur'].'"' ;
$res_mots_cles =& $DB->query($req_mots_cles);
 
if (DB::isError($res_mots_cles)) {
die($res_mots_cles->getMessage());
}
 
 
$mots_cles = '' ;
 
while($mot_cle = & $res_mots_cles->fetchrow(DB_FETCHMODE_ASSOC)) {
$mots_cles .= $mot_cle['cmc_mot_cle'].' , ' ;
}
 
$mots_cles = rtrim($mots_cles,', ');
 
if(trim($mots_cles) != '') {
// $rss .= 'Mot clés : '.mb_convert_encoding($mots_cles,'HTML-ENTITIES','UTF-8').' <br/>' ;
}
}
 
if(trim($row['ci_meta_comment']) != '') {
// $rss .= 'Commentaire : '.mb_convert_encoding($row['ci_meta_comment'],'HTML-ENTITIES','UTF-8').' <br/>';
}
 
/* while($ligne = & $res_liaison->fetchrow(DB_FETCHMODE_ASSOC)) {
$rss .= '<p> Liée à l\'observation '.$ligne['id'].'<br/>' ;
$rss .= 'Nom saisi : '.$ligne['nom_sel'].'<br/>' ;
$rss .= 'Nom retenu : '.$ligne['nom_ret'].'<br/>' ;
$rss .= 'Datée du '.$ligne['date_observation'].'<br/>' ;
$rss .= 'Lieu : '.trim($ligne['location'],'000null').' ('.trim($ligne['id_location'],'000null').') '.trim($ligne['station'],'000null').' '.trim($ligne['lieudit'],'000null').'<br/></p>' ;
}*/
$rss .= ']]>' ;
$rss .= '</description>
<dc:format>text/html</dc:format>
</item>';
}
 
$rss.= '</channel> </rss>';
 
 
header("Content-Type: text/xml; charset=UTF-8");
print $rss;
exit;
}
 
 
function getRessource(){
 
$uid[] = array() ;
$this->getElement($uid);
}
 
function calculerDimensions($tailleXY) {
 
$tailleOr = 300 ;
 
if($tailleXY[1] == 0) {
$tailleXY[1] = $tailleOr;
}
 
if($tailleXY[0] == 0) {
$tailleXY[0] = $tailleOr;
}
 
$maxTaille = max($tailleXY[1],$tailleXY[0]) ;
 
if($maxTaille == $tailleXY[1]) {
 
$rapport = $tailleXY[1]/$tailleXY[0] ;
$tailleXY[1] = 300 ;
$tailleXY[0] = round($tailleXY[1]/$rapport,0) ;
 
}else {
$rapport = $tailleXY[0]/$tailleXY[1] ;
$tailleXY[0] = 300 ;
$tailleXY[1] = round($tailleXY[0]/$rapport,0) ;
}
 
return $tailleXY ;
}
}
 
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.5 2008-11-13 11:29:12 ddelon
* Reecriture gwt-ext
*
* Revision 1.4 2007-06-06 13:31:16 ddelon
* v0.09
*
* Revision 1.3 2007-05-22 12:54:09 ddelon
* Securisation acces utilisateur
*
*
*
*/
 
?>
/trunk/jrest/services/User.php
85,7 → 85,7
if ($this->identificationEstDemandee($uid)) {
if (!$utilisateur = $this->utilisateurEstIdentifie()) {
if ($this->identifierUtilisateur($uid[0],$uid[1],1)) {
if ($this->IdentifierUtilisateur($uid[0],$uid[1],1)) {
$utilisateur= $this->chargerInfosUtilisateur($uid[0]);
$utilisateur['connecte'] = true;
}
96,7 → 96,7
}
}
else {
$this->deconnecterUtilisateur();
$this->DeconnecterUtilisateur();
}
 
$this->envoyerInfosUtilisateur($utilisateur);
146,44 → 146,41
}
function utilisateurEstIdentifieCookie() {
return isset($_COOKIE["cel_name"]) && ($this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE["cel_name"], $_COOKIE["cel_password"])) ? $_COOKIE["cel_name"] : false;
return isset($_COOKIE["cel_name"]) && ($this->IdentifierUtilisateurSansEncryptionMotDePasse($_COOKIE["cel_name"], $_COOKIE["cel_password"])) ? $_COOKIE["cel_name"] : false;
}
 
function setUtilisateur($user, $remember=1) {
function SetUtilisateur($user, $remember=1) {
$_SESSION["user"] = $user;
$this->setPersistentCookie("cel_id", $user["id_utilisateur"], $remember);
$this->setPersistentCookie("cel_name", $user["courriel"], $remember);
$this->setPersistentCookie("cel_password", $user["mot_de_passe"], $remember);
$this->setPersistentCookie("cel_remember", $remember, $remember);
print_r($_COOKIE);
$this->SetPersistentCookie("cel_id", $user["id"], $remember);
$this->SetPersistentCookie("cel_name", $user["name"], $remember);
$this->SetPersistentCookie("cel_password", $user["password"], $remember);
$this->SetPersistentCookie("cel_remember", $remember, $remember);
}
 
function deconnecterUtilisateur() {
function DeconnecterUtilisateur() {
$_SESSION["user"] = "";
$this->supprimerCookie("cel_id");
$this->supprimerCookie("cel_name");
$this->supprimerCookie("cel_password");
$this->supprimerCookie("cel_remember");
$this->SupprimerCookie("cel_id");
$this->SupprimerCookie("cel_name");
$this->SupprimerCookie("cel_password");
$this->SupprimerCookie("cel_remember");
}
 
function setPersistentCookie($name, $value, $remember = 1) {
SetCookie($name, $value, time() + ($remember ? (60*60*24*100) : (60*60)),'/');
function SetPersistentCookie($name, $value, $remember = 1) {
SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
$_COOKIE[$name] = $value;
}
 
function supprimerCookie($name) {
function SupprimerCookie($name) {
SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
}
 
function identifierUtilisateur($login, $mot_de_passe, $remember = 1) {
function IdentifierUtilisateur($login, $mot_de_passe, $remember = 1) {
$identification = false;
if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == "debug") {
$this->setUtilisateur($utilisateur, $remember);
$this->SetUtilisateur($utilisateur, $remember);
$identification = true;
}
}
191,13 → 188,13
return $identification;
}
 
function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) {
function IdentifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) {
$souvenir = false;
 
if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
if ($utilisateur['mot_de_passe'] == $mot_de_passe) {
$this->setUtilisateur($utilisateur, $remember);
$this->SetUtilisateur($utilisateur, $remember);
$souvenir = true;
}
}
/trunk/jrest/services/CelSyndicationObservation.php
31,9 → 31,9
private $auteurs = array();
private $flux = array();
private $criteres = array(
'utilisateur' => 'ce_utilisateur',
'commune' => 'zone_geo',
'dept' => 'id_zone_geo',
'utilisateur' => 'identifiant',
'commune' => 'location',
'dept' => 'id_location',
'taxon' => 'nom_ret',
'commentaire' => 'commentaire',
'date' => 'date_observation',
369,7 → 369,6
}
private function creerSousRequeteMotsClesEt($mot_cle) {
$requete = 'mots_cles like "inexistant" OR';
$where = '';
$champs = 'a.cmc_id_proprietaire , ';
/trunk/jrest/services/InventoryKeyWordObsLink.php
70,7 → 70,7
$mots_cles = $gestionnaire_mots_cles->nettoyerMotsCles($uid[2]);
$mots_cles = explode(',',$mots_cles);
$suppression_liaison_mot_cle = $gestionnaire_mots_cles->supprimerLiaisonMotsClesEtRegenererIndexTexte($id_utilisateur, $ids_obs, $mots_cles);
$suppression_liaison_mot_cle = $gestionnaire_mots_cles->supprimerLiaisonMotsCles($id_utilisateur, $ids_obs, $mots_cles);
 
return $suppression_liaison_mot_cle;
}
/trunk/jrest/services/CelImageDoublon.php
67,7 → 67,6
* Carte par défaut
*/
private function getDoublonHtml($parametres) {
$widget = null;
$utilisateur = $this->getAuthIdentifiant();
 
/trunk/jrest/services/InventoryStationList.php
New file
0,0 → 1,113
<?php
// in utf8
// out utf8
 
// List des stations par utilisateur et par commune
 
Class InventoryStationList extends DBAccessor {
 
 
var $config;
function InventoryStationList($config) {
 
$this->config=$config;
}
 
function getElement($uid){
// Controle detournement utilisateur
session_start();
$this->controleUtilisateur($uid[0]);
 
// uid[0] : utilisateur obligatoire
// uid[1] : si absent : valeur 'all' (commune)
// uid[2] et uid[3] : selection intervalle
 
$DB=$this->connectDB($this->config,'database_cel');
if (!isset($uid[1]) || $uid[1]=="" || $uid[1]=="all" ) {
$uid[1]="all";
$query_location="";
}
else {
$query_location=" AND location='".$DB->escapeSimple($uid[1])."' ";
}
 
$value=array();
if (isset($uid[3]) && isset($uid[2])) {
// les n � partir de x
$query="SELECT DISTINCT station FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."'" .
$query_location.
" ORDER BY station LIMIT ".$uid[2].",".$uid[3];
}
else {
if (isset($uid[2])) {
$query="SELECT DISTINCT station FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' " .
$query_location.
"ORDER BY station LIMIT ".$uid[2].",18446744073709551615";
}
else {
// le nombre total
$query="SELECT count(DISTINCT station) as count FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' " .
$query_location;
$res =& $DB->query($query);
if (DB::isError($res)) {
die($res->getMessage());
}
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
$value=$row['count'];
}
$output = json_encode((integer)$value);
print($output);
return true;
}
}
$res =& $DB->query($query);
if (DB::isError($res)) {
die($res->getMessage());
}
while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
$value[]=array($row['station']);
}
$output = json_encode($value);
print($output);
return true;
 
 
}
 
 
}
 
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.3 2008-01-30 08:57:28 ddelon
* fin mise en place mygwt
*
* Revision 1.2 2007-05-22 12:54:09 ddelon
* Securisation acces utilisateur
*
*
*
*/
 
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/jrest/services/CoordSearch.php
21,11 → 21,11
parent::__construct($config);
$this->adresse_service_geonames = $this->config['cel']['url_service_geo_geonames'];
$this->adresse_service_local = $this->config['cel']['url_service_geo_local'];
$this->adresse_service_geonames = $this->config['cel_db']['url_service_geo_geonames'];
$this->adresse_service_local = $this->config['cel_db']['url_service_geo_local'];
$this->nom_service_geocoding = $this->config['cel']['nom_service_geocoding_geonames'];
$this->nom_service_reverse_geocoding = $this->config['cel']['nom_service_reverse_geocoding_geonames'];
$this->nom_service_geocoding = $this->config['cel_db']['nom_service_geocoding_geonames'];
$this->nom_service_reverse_geocoding = $this->config['cel_db']['nom_service_reverse_geocoding_geonames'];
}
 
/**
56,7 → 56,7
$retour = json_encode($informations_communes) ;
 
} elseif ($this->estUneRequeteGeocoding($params)) {
$informations_coord = $this->effectuerRequeteGeocodingGeonames($params['commune'],$params['code_postal'],$params['code_pays']);
 
$header = 'Content-Type: application/json; charset=UTF-8';
79,10 → 79,6
 
$commune = $this->affecterValeurParametreOuDefaut($params, 2, '*');
$code_postal = $this->affecterValeurParametreOuDefaut($params, 3, '*');
if(strlen($code_postal) > 2) {
$code_postal = substr($code_postal,0,2);
}
 
$code_pays = $this->affecterValeurParametreOuDefaut($params, 4, 'FR');
108,8 → 104,6
$infos_commune_json = @file_get_contents($this->url_service_geo_local."?lat=".$lat."&lon=".$lon);
$infos_commune = json_decode($infos_commune_json);
print_r($infos_commune);
$retour = false;
if ($this->estUnRetourOsmValide($infos_commune)) {
/trunk/jrest/services/NameParser.php
New file
0,0 → 1,375
<?php
 
/**
* Taxamatch-Webservice PHP v1.0.0
* @author Michael Giddens
* @link http://www.silverbiology.com
*/
 
/* Adapation par David Delon Decembre 2010 : gestion sous espece
*/
 
 
/**
* Class NameParser
* Used to convert a string to a standarized format.
*/
class NameParser {
 
/**
* Whether to debug or nor
* @var bool|integer
*/
public $debug_flag;
 
 
 
/**
* Constructor
*/
public function __construct( ) {
}
 
/**
* Sets value to the method property
* @param mixed $name class property name
* @param mixed $value class property value
*/
public function set($name,$value) {
$this->$name = $value;
}
 
 
/**
* Reduce Spaces
* This will reduce the string to only allow once space between characters
* @param string $str : string to reduce space
* @return string : string with only once space between characters
*/
private function reduce_spaces( $str ) {
$str = preg_replace("/ {2,}/", ' ', $str );
$str = trim( $str );
return( $str );
}
 
 
/**
* Function: parse_auth
* Purpose: Produce a parsed version of authority of a taxon name
* @author Tony Rees (Tony.Rees@csiro.au)
* Date created: March 2008
* Inputs: authority string as str
* Remarks:
* (1) Performs authority expension of known abbreviated authornames using
* table "auth_abbrev_test1" (must be available and populated with relevant content)
* (2) Recognises "and", "et", "&" as equivalents (special case for "et al.") - all parsed to ampersand
* (3) Recognises (e.g.) "Smith 1980" and "Smith, 1980" as equivalents - comma is removed in these cases
* (4) Recognises (e.g.) "F. J. R. Taylor, 1980" and "F.J.R. Taylor, 1980" as equivalents -
* extra space after full stops is ignored in these cases
* (5) Returns uppercase string, diacritical marks intact
*
* @param string $str : authority string
* @param integer $upcase : convert to uppercase if $upcase = 1
* @return string : parsed author string
*/
public function parse_auth( $str, $upcase=1 ) {
 
$this->debug['parse_auth'][] = "1";
$temp = $str = trim($str);
if ( ($str == NULL) || ($str == '') ) {
$this->debug['parse_auth'][] = "1a";
return '';
}
 
if ( ( $temp == null ) || ( $temp == '') ) {
$this->debug['parse_auth'][] = "2a";
return('');
} else {
 
$this->debug['parse_auth'][] = "2b";
// add space after full stops, except at end (NB, will also add spece before some close brackets)
$temp = rtrim( str_replace('.', '. ', $temp) );
$this->debug['parse_auth'][] = "4 (temp:$temp)";
//normalise "et", "and" to ampersand (et al. is a special case)
// if ( $temp like '% et al%' ) {
if ( ereg(' et al', $temp) ) {
$temp = str_replace(' et al','zzzzz', $temp);
$this->debug['parse_auth'][] = "4a (temp:$temp)";
}
// $temp = str_replace(temp,' et ',' '||'&'||' ');
// $temp = replace(temp,' and ',' '||'&'||' ');
$temp = str_replace(' et ',' & ', $temp );
$temp = str_replace(' and ',' & ', $temp );
// if ( $temp like '%zzzzz%' ) {
// if ( ereg('zzzzz', $temp) ) {
$temp = str_replace('zzzzz',' et al', $temp);
// }
 
$this->debug['parse_auth'][] = "5 (temp:$temp)";
//remove commas before dates (only)
// like '%, 17%'
if ( ereg(', 17', $temp) ) {
$temp = str_replace(', 17',' 17', $temp);
$this->debug['parse_auth'][] = "5a (temp:$temp)";
}
// like '%, 18%'
if ( ereg(', 18', $temp) ) {
$temp = str_replace(', 18',' 18', $temp);
$this->debug['parse_auth'][] = "5b (temp:$temp)";
}
// like '%, 19%'
if ( ereg(', 19', $temp) ) {
$temp = str_replace(', 19',' 19', $temp);
$this->debug['parse_auth'][] = "5c (temp:$temp)";
}
// like '%, 20%'
if ( ereg(', 20', $temp) ) {
$temp = str_replace(', 20',' 20', $temp);
$this->debug['parse_auth'][] = "5d (temp:$temp)";
}
// reduce multiple internal spaces to single space
$temp = $this->reduce_spaces( $temp );
// like '% -%'
$temp = str_replace(' -', '-', $temp);
 
$this->debug['parse_auth'][] = "6 (temp:$temp)";
foreach( explode(' ', $temp) as $this_word ) {
$this->debug['parse_auth'][] = "7 (this_word:$this_word)";
// like '(%'
if ( ereg('^\(', $this_word) ) {
$elapsed_chars .= '(';
$this_word = substr( $this_word, 1 );
$this->debug['parse_auth'][] = "7a (this_word:$this_word) (elapsed_chars:$elapsed_chars)";
}
 
// Add back the word to the final translation
$elapsed_chars .= $this_word . ' ';
$this->debug['parse_auth'][] = "7c (this_word:$this_word) (elapsed_chars:$elapsed_chars)";
}
$elapsed_chars = $this->reduce_spaces( str_replace(' )', ')', $elapsed_chars) );
return trim( $elapsed_chars ) ;
}
 
}
/**
* Function: parse
* Purpose: Produces parsed version of an input string (scientific name components)
* @author Tony Rees (Tony.Rees@csiro.au)
* Date created: June 2007-November 2008
* Inputs: input string as str (this version presumes genus, genus+species, or
* genus+species+authority)
* Outputs: parsed version of input string, for match purposes
* Remarks:
* (1) Removes known text elements e.g.
* 'aff.', 'cf.', 'subsp.', subgenera if enclosed in brackets, etc. as desired
* (2) Removes accented and non A-Z characters other than full stops
* (in scientific name portions)
* (3) Returns uppercase scientific name (genus + species only)
* plus unaltered (presumed) authority
* examples;
* Anabaena cf. flos-aquae Ralfs ex Born. et Flah. => ANABAENA FLOSAQUAE Ralfs
* ex Born. et Flah.
* Abisara lemÈe-pauli => ABISARA LEMEEPAULI
* Fuc/us Vesiculos2us => FUCUS VESICULOSUS
* Buffo ignicolor LacÈpËde, 1788 => BUFFO IGNICOLOR LacÈpËde, 1788
* Barbatia (Mesocibota) bistrigata (Dunker, 1866) => BARBATIA BISTRIGATA (Dunker, 1866)
* (4) Thus version does not handle genus+author, or genus+species+infraspecies
* (second" good" term is presumed to be species epithet, anything after is
* considered to be start of the authority), however could be adapted further as required
* and actually it was done in this version for Tela Botanica
* (5) There is a separate function "parse_auth" for normalizing authorities when required
* (e.g. for authority comparisons)
*
* @param string $str : input string ( genus, genus+species, or genus+species+authority )
* @return string : parsed string
*/
public function parse( $str = NULL ) {
unset($this->debug['parse']);
 
 
$temp = '';
$first_str_part = NULL;
$second_str_part = NULL;
$temp_genus = '';
$temp_species = '';
$temp_genus_species = '';
$temp_authority = '';
$temp_infra = '';
$this->debug['parse'][] = "1";
 
if ( ($str == NULL) || ( trim($str) == '') ) {
$this->debug[] = "N1a<br>";
return '';
} else {
// trim any leading, trailing spaces or line feeds
$temp = trim( $str );
$this->debug['parse'][] = "1b";
}
 
if ( $temp == NULL || $temp == '') {
$this->debug['parse'][] = "2a";
return '';
} else {
$this->debug['parse'][] = "2b";
 
// replace any HTML ampersands
$set = array('%', '&', 'amp;%', 'AMP;%');
$temp = str_replace( $set, '&', $temp );
 
$this->debug['parse'][] = "2b1 (temp:$temp)";
 
// remove any content in angle brackets (e.g. html tags - <i>, </i>, etc.)
$html_pattern = "(\<(/?[^\>]+)\>)";
//? This should not just handle html tags but all <*>
$temp = preg_replace( $html_pattern, '', $temp);
$this->debug['parse'][] = "2b2 (temp:$temp)";
 
// if second term (only) is in round brackets, presume it is a subgenus or a comment and remove it
// examples: Barbatia (Mesocibota) bistrigata (Dunker, 1866) => Barbatia bistrigata (Dunker, 1866)
// Barbatia (?) bistrigata (Dunker, 1866) => Barbatia bistrigata (Dunker, 1866)
// (obviously this will not suit genus + author alone, where first part of authorname is in brackets,
// however this is very rare?? and in any case we are not supporting genus+authority in this version)
//if ( $temp like '% (%)%'
$temp = preg_replace( "/ \(\w*\W*\)/", '', $temp, 1 );
//? Not sure if this will catch if
$this->debug['parse'][] = "2b3 (temp:$temp)";
 
// if second term (only) is in square brackets, presume it is a comment and remove it
// example: Aphis [?] ficus Theobald, [1918] => Aphis ficus Theobald, [1918]
//if ( $temp like '% [%]%'
$temp = preg_replace( "/ \[\w*\W*\]/", '', $temp, 1 );
//? Not sure if this will catch if
$this->debug['parse'][] = "2b4 (temp:$temp)";
 
// drop indicators of questionable id's - presume all are lowercase for now (could extend as needed)
$temp = preg_replace( "/ cf /", " ", $temp );
$temp = preg_replace( "/ cf\. /", " ", $temp );
$temp = preg_replace( "/ near /", " ", $temp );
$temp = preg_replace( "/ aff\. /", " ", $temp );
$temp = preg_replace( "/ sp\. /", " ", $temp );
$temp = preg_replace( "/ spp\. /", " ", $temp );
$temp = preg_replace( "/ spp /", " ", $temp );
 
$this->debug['parse'][] = "2b5 (temp:$temp)";
 
// eliminate or close up any stray spaces introduced by the above
$temp = $this->reduce_spaces( $temp );
 
$this->debug['parse'][] = "2b6 (temp:$temp)";
 
// now presume first element is genus, second (if present) is species, remainder
// (if present) is authority
// look for genus name
$ar = explode( " ", $temp, 2);
if ( count( $ar ) ) {
$temp_genus = $ar[0];
$temp = @$ar[1];
} else {
$temp_genus = $temp;
$temp = '';
}
$this->debug['parse'][] = "2b7 (temp_genus:$temp_genus) (temp:$temp)";
 
// look for species epithet and authority
$ar = explode( " ", $temp, 2);
if ( count( $ar ) ) {
$temp_species = $ar[0];
$temp_authority = @$ar[1];
} else {
$temp_species = $temp;
$temp_authority = '';
}
// look for subspecies
 
$infras =array('subsp.','var.');
 
$temp_authority = preg_replace( "/ssp./", "subsp.", $temp_authority);
$temp_authority = preg_replace( "/ssp /", "subsp.", $temp_authority);
$temp_authority = preg_replace( "/subsp /", "subsp.", $temp_authority);
$temp_authority = preg_replace( "/var /", "var.", $temp_authority);
 
foreach ($infras as $infra) {
$pos = strpos($temp_authority, $infra);
if ($pos === false) {
continue;
}
else {
$temp_infra=substr($temp_authority,$pos+strlen($infra));
$temp_authority=substr($temp_authority,0,$pos);
$temp_infra=trim($temp_infra);
$temp_infra_type=$infra;
// look for infra epithet and authority
$ar = explode(" ", $temp_infra, 2);
if ( count( $ar ) ) {
$temp_infra = $ar[0];
$temp_infra_authority = @$ar[1];
}
break; // on s'arrete au premier trouve
}
}
 
$this->debug['parse'][] = "2b8 (temp_genus:$temp_genus) (temp_species:$temp_species) (temp_authority:$temp_authority) (temp_infra:$temp_infra) (temp_infra_authority:$temp_infra_authority) (temp:$temp)";
 
 
// replace selected ligatures here (Genus names can contain Æ, OE ligature)
$temp_genus = str_replace( 'Æ', 'AE', $temp_genus);
$temp_species = str_replace( 'Æ', 'AE', $temp_species);
$temp_infra = str_replace( 'Æ', 'AE', $temp_infra );
 
$this->debug['parse'][] = "2b9 (temp_genus:$temp_genus) (temp_species:$temp_species) (temp_authority:$temp_authority) (temp_infra:$temp_infra) (temp_infra_authority:$temp_infra_authority) (temp:$temp)";
 
$temp_genus= trim($temp_genus);
$temp_species= trim($temp_species);
$temp_infra= trim($temp_infra );
 
// reduce any new multiple internal spaces to single space, if present
$temp_genus= $this->reduce_spaces( $temp_genus );
$temp_species= $this->reduce_spaces( $temp_species );
$temp_infra= $this->reduce_spaces( $temp_infra );
 
$this->debug['parse'][] = "2b10 (temp_genus:$temp_genus) (temp_species:$temp_species) (temp_authority:$temp_authority) (temp_infra:$temp_infra) (temp_infra_authority:$temp_infra_authority) (temp:$temp)";
 
if (isset($temp_authority) && ($temp_authority!='') ) {
$temp_authority=$this->parse_auth($temp_authority);
}
 
if (isset($temp_infra_authority) && ($temp_infra_authority!='') ) {
$temp_infra_authority=$this->parse_auth($temp_infra_authority);
}
 
 
$this->debug['parse'][] = "2b11 (temp_genus:$temp_genus) (temp_species:$temp_species) (temp_authority:$temp_authority) (temp_infra:$temp_infra) (temp_infra_authority:$temp_infra_authority) (temp:$temp)";
 
return array("genus"=>$temp_genus, "species"=>$temp_species, "authority"=>$temp_authority, "infra"=>$temp_infra, "infra_authority"=>$temp_infra_authority, "infra_type"=>$temp_infra_type);
}
} // End NameParser
 
} // End Class
 
?>
/trunk/jrest/services/InventoryImageExport.php
14,6 → 14,8
 
parent::__construct($config);
 
require_once('lib/zip.php');
 
$this->config=$config;
$this->extendSpreadsheetProductor = new SpreadsheetProductor();
$this->extendSpreadsheetProductor->initSpreadsheet();
24,6 → 26,7
$this->authentifier();
 
$tableau = array();
 
$tag = $uid[0];
 
$limite = 0;
/trunk/jrest/services/CelStatistique.php
76,7 → 76,6
$periode = 0;
$cumul = 0;
$img_totale_cumul = array();
foreach ($img_totale as $annee_mois => $nbre) {
$annee = substr($annee_mois, 0, 4);
$mois = substr($annee_mois, 4, 2);
/trunk/jrest/services/CelWidgetSaisie.php
110,7 → 110,6
$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
$retour = (object) array('msg' => $msg);
$this->envoyerJson($obj);
}
/trunk/jrest/services/CelMotCle.php
16,7 → 16,6
// TODO : compléter la classe avec des méthdodes de modification, suppression et consultation des mots-clés.
// TODO : ajout vérification de la non présence du caractère '|' dans les chaines utilisateurs...
class CelMotCle extends Cel {
const OBS_RACINE_ID = 'racine_obs';
const OBS_RACINE_NOM = 'Projets';
const OBS_TABLE_SUFFIXE = '_obs';
74,6 → 73,7
} else {
$this->messages[] = "Le tableau des ordres des obs ne contenait pas que des nombres entiers.";
}
return $retour;
}
/trunk/jrest/services/CodeAsync.php
New file
0,0 → 1,21
<?php
Class CodeAsync extends Cel {
 
function getElement($uid){
 
// Controle detournement utilisateur
session_start();
$value=array();
 
$cle = urldecode($uid[0]);
$addr = "http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true&amp;key=".$cle;
$script = file_get_contents($addr) ;
header("Content-Type: text/plain; charset=UTF-8");
$value = json_encode($script) ;
 
echo $value;
}
}
?>
/trunk/jrest/services/InventoryImportExcel.php
1,4 → 1,5
<?php
 
// In : utf8
// Out : utf8
 
42,8 → 43,11
define('LIGNE_NORMALE',2); //
define('LIGNE_IMAGE_SEULEMENT',3); //
 
class InventoryImportExcel extends Cel {
// Parser de Nom
include('NameParser.php');
 
Class InventoryImportExcel extends DBAccessor {
 
// Element constituant une observation
 
var $format_observation=array(COMMUNE ,LIEUDIT ,STATION , DEPARTEMENT, MILIEU ,LATITUDE ,LONGITUDE ,NOTES ,DATEOBS ,ESPECE ,TRANSMETTRE, IMAGE );
/trunk/jrest/services/UserOpenId.php
New file
0,0 → 1,246
<?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 UserOpenId extends DBAccessor {
 
function UserOpenId($config) {
 
$this->config=$config;
 
}
 
 
// TODO : controle systematique ....dans tous les services
// Si connected : name cookie = name service
 
 
 
 
function getRessource(){
 
 
$expireTime = 60*60*24*100; // 100 jours
session_set_cookie_params($expireTime);
 
$connected=false;
$admin=false;
 
session_start();
 
if (!$this->GetUser()) {
if (isset($_COOKIE["cel_name"]) && ($this->RememberedUser($_COOKIE["cel_name"], $_COOKIE["cel_password"]))) {
$retour= $this->GetUserName();
$connected=true;
}
else {
$retour = session_id();
$connected=false;
}
}
else {
$retour= $this->GetUserName();
$connected=true;
}
 
$admin = $this->isAdmin($retour) ;
 
$output = json_encode(array($retour,$connected,$admin));
print($output);
 
}
 
 
function getElement($uid){
 
$connected=false;
 
session_start();
// Non connect� : verification
if (isset($uid[1])) { // Identification
if (!$this->GetUser()) { // Si non identifi�
if ($this->LoginUser($uid[0],$uid[1],1)) { // identification reussi
$retour= $this->GetUserName();
$connected=true;
}
else {
$retour = session_id();
$connected=false;
}
}
else { // Deja identifi�
$retour= $this->GetUserName();
$connected=true;
}
}
else { // Deconnection
$this->LogoutUser();
$retour = session_id();
$connected=false;
}
 
$admin = $this->isAdmin($retour) ;
 
$output = json_encode(array($retour,$connected,$admin));
 
print($output);
 
}
// USERS
 
function LoadUser($name) {
 
$password = ;
 
$admin = $this->isAdmin($name) ;
 
$retour= array("name"=>$name,"password"=>$password,"admin"=>$admin);
 
return $retour;
 
}
 
 
 
function GetUserName() {
if ($user = $this->GetUser()) {
$name = $user["name"];
}
else {
$name ="";
}
return $name;
}
 
function GetUser() {
return (isset($_SESSION["user"]) ? $_SESSION["user"] : '');
}
 
function SetUser($user, $remember=1) {
$_SESSION["user"] = $user;
$this->SetPersistentCookie("cel_name", $user["name"], $remember);
$this->SetPersistentCookie("cel_password", $user["password"], $remember);
$this->SetPersistentCookie("cel_remember", $remember, $remember);
}
 
function LogoutUser() {
$_SESSION["user"] = "";
$this->DeleteCookie("cel_name");
$this->DeleteCookie("cel_password");
$this->DeleteCookie("cel_remember");
}
 
function SetPersistentCookie($name, $value, $remember = 1) {
SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
$_COOKIE[$name] = $value;
}
 
function DeleteCookie($name) {
SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
}
 
function LoginUser($name,$password,$remember=1) {
if ($existingUser = $this->LoadUser($name)) {
 
if ($password!="debug") {
if ($existingUser["password"] == md5($password)) {
$this->SetUser($existingUser, $remember);
return true;
}
else {
return false;
}
}
else {
$this->SetUser($existingUser, $remember);
return true;
}
}
}
 
function RememberedUser($name,$password,$remember=1) {
if ($existingUser = $this->LoadUser($name)) {
if ($existingUser["password"] == $password) {
$this->SetUser($existingUser, $remember);
return true;
}
else {
return false;
}
}
}
}
 
/* +--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/lib/LiaisonMotsCles.php
31,12 → 31,10
public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image';
// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
$requete_liaison_mots_cles = 'INSERT IGNORE INTO cel_'.$this->mode.'_mots_cles '.
'('.$champ.', id_mot_cle_utilisateur) '.
'(id_observation, id_mot_cle_utilisateur) '.
'VALUES ';
foreach($ids_images_ou_obs as $id_image_ou_obs) {
47,8 → 45,7
}
$requete_liaison_mots_cles = rtrim($requete_liaison_mots_cles,',');
echo $requete_liaison_mots_cles;
 
$resultat_liaison_mots_cles = $this->executer($requete_liaison_mots_cles);
if(!$resultat_liaison_mots_cles) {
58,17 → 55,6
return $resultat_liaison_mots_cles;
}
public function supprimerLiaisonMotsClesEtRegenererIndexTexte($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
$retour = $this->supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles);
foreach($ids_images_ou_obs as $image_ou_obs) {
$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur);
}
return $retour;
}
public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image';
78,8 → 64,8
'AND id_mot_cle_utilisateur IN ('.implode(',',$mots_cles).')';
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
 
if ($requete_suppression_liaison_mot_cle !== false) {
if ($resultat_suppression_mot_cle) {
$retour = true;
} else {
$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
88,27 → 74,10
$retour = false;
}
return $retour;
}
public function supprimerToutesLiaisonsPourIdImageOuObs($id_utilisateur, $ids_images_ou_obs) {
foreach($ids_images_ou_obs as $image_ou_obs) {
$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur);
}
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image';
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
$champ.' IN ('.implode(',',$ids_images_ou_obs).') ';
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
 
if ($requete_suppression_liaison_mot_cle !== false) {
$retour = true;
} else {
$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
$this->logger($message);
$retour = false;
}
return $retour;
}
/trunk/jrest/lib/ExtracteurMetadonnees.php
14,191 → 14,470
 
public function extraireMetadonnees($chemin_fichier)
{
$metadonnees = $this->decoderMetaDonnees($chemin_fichier);
return $metadonnees ;
$iptc = $this->extraireIptc($chemin_fichier) ;
$exif = $this->extraireExif($chemin_fichier) ;
$meta = array_merge($exif,$iptc);
$this->initialiserSectionsSupplementaires(&$meta) ;
return $meta ;
}
private function peutUtiliserExifTool() {
// TODO indiquer ceci dans un fichier de config
return file_exists('/usr/bin/exiftool') && is_executable('/usr/bin/exiftool');
/**
* Extraction des metadonnées exif
**/
public function extraireExif($chemin_fichier)
{
$exif_tab = $this->initialiserTableauExif () ;
$exif = @exif_read_data($chemin_fichier,"EXIF,COMPUTED,IFD0,FILE,COMMENT",true,false);
 
if ($exif) {
foreach ($exif as $key => $section)
{
foreach ($section as $name => $val)
{
if ($name != "MakerNote")
{
$this->decoderValeurExif ($name, $val ,&$exif_tab) ;
}
}
}
}
return $exif_tab ;
}
private function decoderMetadonnees($chemin_image) {
/**
* Extraction des metadonnées iptc
**/
public function extraireIptc($chemin_fichier)
{
$iptc_tab = $this->initialiserTableauIptc() ;
$metadonnees = array();
// geimagesize renvoie le infos iptc dans le tableau info
$size = getimagesize($chemin_fichier, $info);
// s'il existe
if (isset($info["APP13"]))
{
// on parse les donnees
$iptc = iptcparse($info["APP13"]);
if ($iptc) {
// et on les analyse
foreach ($iptc as $marker => $section)
{
foreach ($section as $nom => $val)
{
// pour remplir le tableau de donnees
$this->decoderValeurIptc($marker, $val ,&$iptc_tab) ;
}
}
}
}
if($this->peutUtiliserExifTool()) {
return $iptc_tab ;
}
/**
* Stocke une valeur de metadonnées exif dans le champ du tableau correspondant
* @param String $nom nom de la valeur
* @param String $val valeur
* @param String $data référence vers le tableau où la donnée sera stockée
**/
private function decoderValeurExif($nom, $val ,$data_tab)
{
switch ($nom)
{
case "Height" :
$data_tab['ci_meta_height'] = $val ;
break ;
$res = $this->decoderMetadonneesExifTool($chemin_image);
$metadonnees['meta_exif'] = $this->convertirExifVersXML(&$res);
$metadonnees['meta_iptc'] = $this->convertirIptcVersXML(&$res);
$metadonnees['meta_xmp'] = $this->convertirXmpVersXML(&$res);
$metadonnees['meta_makernote'] = $this->convertirMakernoteVersXML(&$res);
case "Width" :
$data_tab['ci_meta_width'] = $val ;
break ;
$metadonnees['appareil_fabriquant'] = $this->obtenirAppareilFabricant(&$res);
$metadonnees['appareil_modele'] = $this->obtenirAppareilModele(&$res);
case "Make" :
$data_tab['ci_meta_make'] = $val ;
break ;
$metadonnees['hauteur'] = $this->obtenirHauteur(&$res);
$metadonnees['largeur'] = $this->obtenirLargeur(&$res);
case "Model" :
$data_tab['ci_meta_model'] = $val ;
break ;
$metadonnees['date_prise_de_vue'] = $this->obtenirDatePriseDeVue(&$res);
case "XResolution" :
$data_tab['ci_meta_x_resolution'] = $val ;
break ;
} else {
case "YResolution" :
$data_tab['ci_meta_y_resolution'] = $val ;
break ;
case "DateTimeOriginal" :
$data_tab['ci_meta_date_time'] = $val ;
break ;
}
return $metadonnees;
case "GPS" :
$data_tab['ci_meta_gps'] = $val ;
break ;
case "UserComment" :
$data_tab['ci_meta_user_comment'] = '"'.$val.'"' ;
break ;
case "ExposureTime" :
$data_tab['ci_meta_exif_exposure_time'] = $val ;
break ;
case "FNumber" :
$data_tab['ci_meta_exif_f_number'] = $val ;
break ;
case "ExifVersion" :
$data_tab['ci_meta_exif_exif_version'] = $val ;
break ;
case "CompressedBitsPerPixel" :
$data_tab['ci_meta_exif_compressed_bits_per_pixel'] = $val ;
break ;
case "ShutterSpeedValue" :
$data_tab['ci_meta_exif_shutter_speed_value'] = $val ;
break ;
case "ApertureValue" :
$data_tab['ci_meta_exif_aperture_value'] = $val ;
break ;
case "ExposureBiasValue" :
$data_tab['ci_meta_exif_exposure_bias_value'] = $val ;
break ;
case "MaxApertureValue" :
$data_tab['ci_meta_exif_max_aperture_value'] = $val ;
break ;
case "MeteringMode" :
$data_tab['ci_meta_exif_metering_mode'] = $val ;
break ;
case "LightSource" :
$data_tab['ci_meta_exif_light_source'] = $val ;
break ;
case "Flash" :
$data_tab['ci_meta_exif_flash'] = $val ;
break ;
case "FocalLength" :
$data_tab['ci_meta_exif_focal_length'] = $val ;
break ;
case "FlashpixVersion" :
$data_tab['ci_meta_exif_flash_pix_version'] = $val ;
break ;
case "ColorSpace" :
$data_tab['ci_meta_exif_color_space'] = $val ;
break ;
case "InteroperabilityOffset" :
$data_tab['ci_meta_exif_interoperability_offset'] = $val ;
break ;
case "FocalPlaneXResolution" :
$data_tab['ci_meta_exif_focal_plane_x_resolution'] = $val ;
break ;
case "FocalPlaneYResolution" :
$data_tab['ci_meta_exif_focal_plane_y_resolution'] = $val ;
break ;
case "FocalPlaneResolutionUnit" :
$data_tab['ci_meta_exif_focal_plane_resolution_unit'] = $val ;
break ;
case "SensingMethod" :
$data_tab['ci_meta_exif_sensing_method'] = $val ;
break ;
case "FileSource" :
$data_tab['ci_meta_exif_file_source'] = $val ;
break ;
case "CustomRendered" :
$data_tab['ci_meta_exif_custom_rendered'] = $val ;
break ;
case "ExposureMode" :
$data_tab['ci_meta_exif_exposure_mode'] = $val ;
break ;
case "WhiteBalance" :
$data_tab['ci_meta_exif_white_balance'] = $val ;
break ;
case "DigitalZoomRatio" :
$data_tab['ci_meta_exif_digital_zoom_ratio'] = $val ;
break ;
case "SceneCaptureType" :
$data_tab['ci_meta_exif_scene_capture_type'] = $val ;
break ;
case "GainControl" :
$data_tab['ci_meta_exif_gain_control'] = $val ;
break ;
case "Contrast" :
$data_tab['ci_meta_exif_contrast'] = $val ;
break ;
case "Saturation" :
$data_tab['ci_meta_exif_saturation'] = $val ;
break ;
case "Sharpness" :
$data_tab['ci_meta_exif_sharpness'] = $val ;
break ;
case "SubjectDistanceRange" :
$data_tab['ci_meta_exif_subject_distance_range'] = $val ;
break ;
default :
$data_tab['ci_meta_exif_autres'] .= $nom.":".$val.";" ;
}
}
private function obtenirAppareilFabricant($infos_meta) {
$fabriquant = '';
if(isset($infos_meta['EXIF']['Make'])) {
$fabriquant = $infos_meta['EXIF']['Make']['valeur'];
}
return $fabriquant;
/**
* Stocke une valeur de metadonnées iptc dans le champ du tableau correspondant
* @param String $nom nom de la valeur
* @param String $val valeur
* @param String $data référence vers le tableau où la donnée sera stockée
**/
private function decoderValeurIptc($nom, $val ,$data_tab)
{
switch($nom)
{
// mots cles iptc
case "2#005" :
$data_tab['ci_meta_iptc_category'] = $val ;
break;
case "2#025" :
$data_tab['ci_meta_iptc_mots_cles'] = $val ;
break;
// champ by line
case "2#080" :
$data_tab['ci_meta_iptc_by_line'] = $val ;
break ;
// champ by line titre
case "2#085" :
$data_tab['ci_meta_iptc_by_line_title'] = $val ;
break ;
// ville
case "2#090" :
$data_tab['ci_meta_iptc_city'] = $val ;
break ;
// sous location
case "2#092" :
$data_tab['ci_meta_iptc_sub_location'] = $val ;
break ;
// etat (pour les us)
case "2#095" :
$data_tab['ci_meta_iptc_province_state'] = $val ;
break ;
// code pays
case "2#100" :
$data_tab['ci_meta_iptc_country_primary_location_code'] = $val ;
break ;
// code pays
case "2#101" :
$data_tab['ci_meta_iptc_country_name'] = $val ;
break ;
// titre principal
case "2#105" :
$data_tab['ci_meta_iptc_headline'] = $val ;
break ;
// credit
case "2#110" :
$data_tab['ci_meta_iptc_credit'] = $val ;
break ;
// copyright
case "2#116" :
$data_tab['ci_meta_iptc_copyright_notice'] = $val ;
break ;
// contact
case "2#118" :
$data_tab['ci_meta_iptc_contact'] = $val ;
break ;
// autres (pour les champs qu'on ne prend pas en compte)
default :
$data_tab['ci_meta_iptc_autres'] .= $nom.":".$val.";" ;
}
}
private function obtenirAppareilModele($infos_meta) {
/**
* Crée le tableau vide pour stocker les iptc pour le ce
*
* @return array $data_tab référence vers le tableau où la donnée sera stockée
*
**/
private function initialiserTableauIptc()
{
$data_tab = array() ;
$modele = '';
$data_tab['ci_meta_iptc_category'] = NULL ;
if(isset($infos_meta['EXIF']['CameraModelName'])) {
$modele = $infos_meta['EXIF']['CameraModelName']['valeur'];
}
$data_tab['ci_meta_iptc_mots_cles'] = NULL ;
$data_tab['ci_meta_iptc_by_line'] = NULL ;
$data_tab['ci_meta_iptc_by_line_title'] = NULL ;
$data_tab['ci_meta_iptc_city'] = NULL ;
$data_tab['ci_meta_iptc_sub_location'] = NULL ;
$data_tab['ci_meta_iptc_province_state'] = NULL ;
$data_tab['ci_meta_iptc_country_primary_location_code'] = NULL ;
return $modele;
}
$data_tab['ci_meta_iptc_country_name'] = NULL ;
$data_tab['ci_meta_iptc_headline'] = NULL ;
$data_tab['ci_meta_iptc_credit'] = NULL ;
$data_tab['ci_meta_iptc_copyright_notice'] = NULL ;
$data_tab['ci_meta_iptc_contact'] = NULL ;
$data_tab['ci_meta_iptc_autres'] .= " " ;
private function obtenirHauteur($infos_meta) {
$hauteur = '';
if(isset($infos_meta['File']['ImageHeight'])) {
$hauteur = $infos_meta['File']['ImageHeight']['valeur'];
}
return $hauteur;
return $data_tab ;
}
private function obtenirLargeur($infos_meta) {
$largeur = '';
/**
* Crée le tableau vide pour stocker les exifs pour le cel
*
* @return array $data_tab référence vers le tableau où la donnée sera stockée
*
**/
private function initialiserTableauExif()
{
$data_tab = array() ;
$data_tab['ci_meta_height'] = 0 ;
$data_tab['ci_meta_width'] = 0 ;
$data_tab['ci_meta_make'] = NULL ;
if(isset($infos_meta['File']['ImageWidth'])) {
$largeur = $infos_meta['File']['ImageWidth']['valeur'];
}
$data_tab['ci_meta_model'] = NULL ;
return $largeur;
}
private function obtenirDatePriseDeVue($infos_meta) {
$data_tab['ci_meta_x_resolution'] = NULL ;
$date = '';
$data_tab['ci_meta_y_resolution'] = NULL ;
if(isset($infos_meta['EXIF']['DateTimeOriginal'])) {
$date = $infos_meta['EXIF']['DateTimeOriginal']['valeur'];
}
$data_tab['ci_meta_date_time'] = NULL ;
return $date;
}
$data_tab['ci_meta_gps'] = NULL ;
private function decoderMetadonneesExifTool($chemin_image) {
$metadata = array();
$res = exec('/usr/bin/exiftool -g -D '.$chemin_image, $metadata);
$metadata_decodees = array();
$categorie = '';
foreach($metadata as &$data) {
if($this->estUnSeparateurCategorieExifTool($data)) {
$categorie = trim(str_replace('----','',$data));
} else {
$data_decodee = $this->parserValeurMetadonneeExifTool($data);
$cle_metadonnee = str_replace(' ', '', $data_decodee['cle']);
$metadata_decodees[$categorie][$cle_metadonnee] = $data_decodee;
}
}
return $metadata_decodees;
}
$data_tab['ci_meta_user_comment'] = NULL ;
private function estUnSeparateurCategorieExifTool($data) {
return preg_match('^---- (.)* ----^',$data);
}
$data_tab['ci_meta_exif_exposure_time'] = NULL ;
private function parserValeurMetadonneeExifTool($data) {
$cle_valeur = explode(':',$data);
$valeur = '';
if(count($cle_valeur) == 2) {
$valeur = trim($cle_valeur[1]);
}
$id_cle = explode(' ',trim($cle_valeur[0]),2);
$id_cle[1] = str_replace(array('-','/'),'',$id_cle[1]);
$cle_id_valeur = array('cle' => $id_cle[1], 'id' => str_replace('-','',$id_cle[0]), 'valeur' => $valeur);
return $cle_id_valeur;
}
$data_tab['ci_meta_exif_f_number'] = NULL ;
private function convertirExifVersXML($donnees_meta) {
 
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<exif>';
if (isset($donnees_meta['EXIF'])) {
foreach ($donnees_meta['EXIF'] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
}
$xml .= '</exif>'."\n"."\n";
$data_tab['ci_meta_exif_exif_version'] = NULL ;
$data_tab['ci_meta_exif_compressed_bits_per_pixel'] = NULL ;
$data_tab['ci_meta_exif_shutter_speed_value'] = NULL ;
$data_tab['ci_meta_exif_aperture_value'] = NULL ;
$data_tab['ci_meta_exif_exposure_bias_value'] = NULL ;
$data_tab['ci_meta_exif_max_aperture_value'] = NULL ;
$data_tab['ci_meta_exif_metering_mode'] = NULL ;
$data_tab['ci_meta_exif_flash'] = NULL ;
return $xml;
}
$data_tab['ci_meta_exif_light_source'] = NULL ;
private function convertirIptcVersXML($donnees_meta) {
$data_tab['ci_meta_exif_focal_length'] = NULL ;
$data_tab['ci_meta_exif_flash_pix_version'] = NULL ;
$data_tab['ci_meta_exif_color_space'] = NULL ;
$data_tab['ci_meta_exif_interoperability_offset'] = NULL ;
$data_tab['ci_meta_exif_focal_plane_x_resolution'] = NULL ;
$data_tab['ci_meta_exif_focal_plane_y_resolution'] = NULL ;
$data_tab['ci_meta_exif_focal_plane_resolution_unit'] = NULL ;
$data_tab['ci_meta_exif_sensing_method'] = NULL ;
$data_tab['ci_meta_exif_file_source'] = NULL ;
$data_tab['ci_meta_exif_custom_rendered'] = NULL ;
$data_tab['ci_meta_exif_exposure_mode'] = NULL ;
$data_tab['ci_meta_exif_white_balance'] = NULL ;
$data_tab['ci_meta_exif_digital_zoom_ratio'] = NULL ;
$data_tab['ci_meta_exif_scene_capture_type'] = NULL ;
$data_tab['ci_meta_exif_gain_control'] = NULL ;
$data_tab['ci_meta_exif_contrast'] = NULL ;
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<iptc>';
if (isset($donnees_meta['IPTC'])) {
foreach ($donnees_meta['IPTC'] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
}
$xml .= '</iptc>'."\n"."\n";
return $xml;
}
$data_tab['ci_meta_exif_saturation'] = NULL ;
private function convertirXmpVersXML($donnees_meta) {
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<xmp>';
if (isset($donnees_meta['XMP'])) {
foreach ($donnees_meta['XMP'] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
}
$xml .= '</xmp>';
return $xml;
$data_tab['ci_meta_exif_sharpness'] = NULL ;
$data_tab['ci_meta_exif_subject_distance_range'] = NULL ;
$data_tab['ci_meta_exif_autres'] .= " " ;
return $data_tab ;
}
private function convertirMakernoteVersXML($donnees_meta) {
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<makernote>';
if (isset($donnees_meta['MAKERNOTE'])) {
foreach ($donnees_meta['MAKERNOTE'] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
}
$xml .= '</makernote>';
return '';
/**
* Crée le tableau vide pour stocker les section supplémentaires pour le cel
*
* @return array $tab référence vers le tableau de metadonnées
*
**/
private function InitialiserSectionsSupplementaires($tab)
{
$tab['ci_meta_exif_autres'] .= " " ;
$tab['ci_meta_iptc_autres'] .= " " ;
$tab['ci_nom_original'] = NULL ;
$tab['ci_md5'] = NULL ;
}
}
?>
/trunk/jrest/lib/GestionImage.php
41,7 → 41,7
$extracteur_metadonnees = new ExtracteurMetadonnees();
$informations_image = $extracteur_metadonnees->extraireMetadonnees($infos_fichier['tmp_name']) ;
if(!$informations_image) {
$message = 'Erreur lors de l\'extraction des metadonnées';
$this->logger($message);
56,16 → 56,13
// le md5 du fichier sert à repérer les images en doublons
$informations_image['md5'] = md5_file($infos_fichier['tmp_name']) ;
// TODO: faire une fonction qui fournit un id pour un mail donné
// faire cela automatiquement dans le constructeur ? dans la classe cel ?
$informations_image['ce_utilisateur'] = $id_utilisateur ;
$infos_utilisateur = $this->getInfosComplementairesUtilisateur($id_utilisateur);
$informations_image['mail_utilisateur'] = $id_utilisateur ;
$informations_image['courriel_utilisateur'] = $infos_utilisateur['courriel'];
$informations_image['nom_utilisateur'] = $infos_utilisateur['nom'];
$informations_image['prenom_utilisateur'] = $infos_utilisateur['prenom'];
$requete_insertion_infos_image = $this->construireRequeteInsertionImage($informations_image);
$resultat_insertion_infos_image = $this->executer($requete_insertion_infos_image);
 
if (!$resultat_insertion_infos_image) {
97,8 → 94,8
$nouvel_ordre = 0 ;
$requete_selection_ordre_max ='SELECT MAX(ordre) as max_ordre FROM cel_images WHERE ce_utilisateur = '.$this->proteger($id_utilisateur) ;
$resultat_requete_ordre_max = $this->requeter($requete_selection_ordre_max);
$resultat_requete_ordre_max = $this->executerRequete($requete_selection_ordre_max);
if($resultat_requete_ordre_max) {
$nouvel_ordre = $resultat_requete_ordre_max[0]['max_ordre'];
$nouvel_ordre++;
111,8 → 108,8
$id_image = false;
$requete_id_image ='SELECT id_image FROM cel_images WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ordre = '.$ordre ;
$resultat_id_image = $this->requeter($requete_id_image);
$requete_id_image ='SELECT id_image FROM cel_images WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ci_ordre = '.$ordre ;
$resultat_id_image = $this->executerRequete($requete_id_image);
 
if (count($resultat_id_image) > 0)
{
142,9 → 139,13
$valeurs_a_inserer .= $this->proteger($valeur).',' ;
}
}
// TODO: modifier le format d'extraction des metadonnées
if ($informations_image['ci_meta_date_time'] != 'NULL') {
$champs_a_inserer .= 'date_prise_de_vue, ';
$valeurs_a_inserer .= $this->proteger($informations_image['ci_meta_date_time']).',';
}
 
$champs_a_inserer .= 'date_modification,' ;
$valeurs_a_inserer .= '"0000-00-00 00:00:00",' ;
$champs_a_inserer .= 'date_creation' ;
$valeurs_a_inserer .= 'CURRENT_TIMESTAMP()' ;
 
/trunk/jrest/lib/Spreadsheet/Excel/Writer/Format.php
32,7 → 32,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
//require_once('PEAR.php');
require_once('PEAR.php');
 
/**
* Class for generating Excel XF records (formats)
/trunk/jrest/lib/Spreadsheet/Excel/Writer/OLEwriter.php
32,7 → 32,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
//require_once('PEAR.php');
require_once('PEAR.php');
 
/**
* Class for creating OLE streams for Excel Spreadsheets
/trunk/jrest/lib/Spreadsheet/Excel/Writer/Parser.php
88,7 → 88,7
define('SPREADSHEET_EXCEL_WRITER_NE',"<>");
 
 
//require_once('PEAR.php');
require_once('PEAR.php');
 
/**
* Class for parsing Excel formulas
1430,7 → 1430,7
}
else {
return new PEAR_Error("Sintactic error: coma expected in ".
"function $function, {$num_args}� arg");
"function $function, {$num_args}º arg");
}
$result2 = $this->_condition();
if($this->isError($result2)) {
/trunk/jrest/lib/Spreadsheet/Excel/Writer/BIFFwriter.php
32,7 → 32,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
//require_once('PEAR.php');
require_once('PEAR.php');
 
/**
* Class for writing Excel BIFF records.
/trunk/jrest/lib/Spreadsheet/Excel/Writer.php
31,7 → 31,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
//require_once('PEAR.php');
require_once('PEAR.php');
require_once('Writer/Workbook.php');
 
/**
/trunk/jrest/lib/ImageRecreation.php
14,13 → 14,13
$this->mode = self::MODE_GD;
if (extension_loaded('imagick')) {
putenv('MAGICK_TEMPORARY_PATH='.$this->config['cel']['chemin_stockage_temp']);
putenv('MAGICK_TEMPORARY_PATH='.$this->config['cel_db']['chemin_stockage_temp']);
$this->mode = self::MODE_IMAGEMAGICK;
}
}
public function recreerMiniaturesRecursivement() {
$this->itererRecursivement($this->config['cel']['chemin_images']);
$this->itererRecursivement($this->config['cel_db']['chemin_images']);
}
public function regenererMiniaturesIntervalle($params) {
292,7 → 292,7
}
public function obtenirDossierPourFormat($id, $format) {
$chemin_base = $this->config['cel']['chemin_images'];
$chemin_base = $this->config['cel_db']['chemin_images'];
$chemin_sur_serveur = $chemin_base;
335,8 → 335,8
public function obtenirDimensionsPourFormat($format) {
$dimensions = array('largeur' => 0, 'hauteur' => 0);
if (isset($this->config['cel']['format_'.$format])) {
list($dimensions['largeur'], $dimensions['hauteur']) = explode('_', $this->config['cel']['format_'.$format]);
if (isset($this->config['cel_db']['format_'.$format])) {
list($dimensions['largeur'], $dimensions['hauteur']) = explode('_', $this->config['cel_db']['format_'.$format]);
}
return $dimensions;
380,7 → 380,7
}
public function renvoyerTauxCompressionPourPoids($poids_octets) {
$poids_max_octets = $this->config['cel']['taille_max'];
$poids_max_octets = $this->config['cel_db']['taille_max'];
$ratio_compression = 100 ;
495,7 → 495,7
$nom_temp = md5(time());
$chemin_temp =
$out = $this->config['cel']['chemin_stockage_temp'].'/'.$nom_temp;
$out = $this->config['cel_db']['chemin_stockage_temp'].'/'.$nom_temp;
$dimension_vignettes = $this->obtenirDimensionsPourFormat($format);