/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&v=2&sensor=true&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); |