Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 2149 → Rev 2150

/branches/v2.1-emondoir/jrest/services/InventoryImage.php
64,7 → 64,7
$this->controleUtilisateur($uid[0]);
 
if(count($pairs) == 0 || !isset($uid[1])) {
return;
return false;
}
 
$gestionnaire_image = new GestionImage($this->config);
71,11 → 71,14
$resultat_mise_a_jour = $gestionnaire_image->modifierImage($uid[0],$uid[1],$pairs);
 
$retour = false;
$ok = false;
if ($resultat_mise_a_jour) {
$retour = 'OK';
$ok = true;
}
 
$this->envoyer($retour);
return $ok;
}
 
/**
/branches/v2.1-emondoir/jrest/lib/GestionMotsClesChemin.php
549,6 → 549,9
$chemin = self::startsWith($chemin,'/') ? $chemin : '/'.$chemin;
$chemin = self::endsWith($chemin,'/') ? $chemin : $chemin.'/';
$chemin = str_replace('//', '/', $chemin);
// mise en minuscule du chemin afin d'éviter des cas où l'on aurait
// des même mots clés avec minuscule et majuscule
$chemin = strtolower($chemin);
return $chemin;
}
 
561,7 → 564,7
static public function simplifier($text) {
$caracteresASupprimer = array('\\','/', ',');
$text = str_replace($caracteresASupprimer, '', $text);
$text = trim($text);
$text = strtolower(trim($text));
return $text;
}
 
Property changes:
Modified: svn:mergeinfo
Merged /trunk/jrest/lib/GestionMotsClesChemin.php:r2147-2149
/branches/v2.1-emondoir/jrest/lib/GestionImage.php
180,7 → 180,7
$champs_a_ignorer = array('id_image');
foreach ($valeurs_metadonnees as $champ => $valeur) {
if (!in_array($champ,$champs_a_ignorer)) {
if ($champ == 'date_prise_de_vue') {
if ($champ == 'date_prise_de_vue' && trim($valeur != "")) {
$date_tab = explode('/',$valeur) ;
$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ;
$requete_maj_champs .= $champ.' = '.Cel::db()->proteger($date).' , ' ;
/branches/v2.1-emondoir/jrest/lib/Cel.php
1,18 → 1,15
<?php
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
 
/**
* Classe mère abstraite contenant les méthodes génériques des services.
* Encodage en entrée : utf8
* Encodage en sortie : utf8
*
* @author Jean-Pascal MILCENT <jpm@clapas.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
* @author Raphaël Droz <raphael@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version $Id$
* @copyright © 2012, 2013 Tela Botanica
* @copyright © 2006-2014 Tela Botanica
*/
require_once('Bdd2.php');
 
46,7 → 43,6
static $fallback_referentiel = 'autre';
 
public function __construct($config) {
 
@session_start();
// Tableau contenant la config de Jrest
$this->config = $config;
73,14 → 69,19
}
 
public static function db() {
if(! self::$bdd) die('ERR: no DB available');
if (! self::$bdd) {
die('ERREUR: aucune base de données de disponible.');
}
return self::$bdd;
}
 
// TODO: delete wrappers, en attendant que $this->bdd soit remplacé par Cel::db() partout.
public function __get($prop) {
if($prop == 'bdd') return self::$bdd;
return $this->$prop;
$retour = $this->$prop;
if ($prop == 'bdd') {
$retour = self::$bdd;
}
return $retour;
}
 
protected function protegerTableau(Array $tableau) {
157,6 → 158,12
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de l'ENVOI au NAVIGATEUR
 
protected function envoyerMessageErreur($code, $msg) {
http_response_code($code);
header("Content-Type: text/plain; charset=utf-8");
die($msg);
}
 
protected function envoyerJson($donnees, $encodage = 'utf-8') {
$encodage_json = true;
$this->envoyer($donnees, 'application/json', $encodage, $encodage_json);
175,7 → 182,7
protected function envoyer($donnees = null, $mime = 'text/html', $encodage = 'utf-8', $json = false) {
// Traitements des messages d'erreurs et données
if (count($this->messages) != 0) {
header('HTTP/1.1 500 Internal Server Error');
http_response_code(500);// Internal Server Error
$mime = 'application/json';
$json = true;
$sortie = $this->messages;
219,7 → 226,7
}
 
static function envoyerAuth($message_accueil, $message_echec) {
header('HTTP/1.0 401 Unauthorized');
http_response_code(401);// Unauthorized
header('WWW-Authenticate: Basic realm="'.mb_convert_encoding($message_accueil, 'ISO-8859-1', 'UTF-8').'"');
header('Content-type: text/plain; charset=UTF-8');
print $message_echec;
281,23 → 288,24
}
 
public function controleAppelIpAutorisee() {
$ips_autorisees = explode(',', @$this->config['jrest_admin']['ip_autorisees']);
if(!in_array($_SERVER['REMOTE_ADDR'], $ips_autorisees) && $_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR']) {
header('HTTP/1.0 401 Unauthorized');
exit('Accès interdit');
$ipsAutorisees = explode(',', $this->config['jrest_admin']['ip_autorisees']);
$remoteIp = filter_input(INPUT_SERVER, 'REMOTE_ADDR', FILTER_VALIDATE_IP);
$serverIp = filter_input(INPUT_SERVER, 'SERVER_ADDR', FILTER_VALIDATE_IP);
if (!in_array($remoteIp, $ipsAutorisees) || $remoteIp != $serverIp) {
$msg = "Accès interdit. \n".
"Vous n'êtes pas autorisé à accéder à ce service depuis '$remoteIp' !\n";
$this->envoyerMessageErreur(401, $msg);
}
return true;
}
 
public function logger($index,$chaine = 'err') {
if(!class_exists('Log')) {
if (!class_exists('Log')) {
Log::getInstance();
}
 
Log::setCheminLog($this->config['log']['cheminlog']);
Log::setTimeZone($this->config['log']['timezone']);
Log::setTailleMax($this->config['log']['taillemax']);
 
Log::ajouterEntree($index,$chaine);
}
 
343,48 → 351,59
}
 
public function getInfosComplementairesUtilisateur($id_utilisateur) {
$defaut_infos = array('prenom' => '', 'nom' => '', 'courriel' => '');
if(! is_numeric($id_utilisateur)) return $defaut_infos;
$infos = array('prenom' => '', 'nom' => '', 'courriel' => '');
if (is_numeric($id_utilisateur)) {
$idUtilisateurP = Cel::db()->proteger($id_utilisateur);
$requete = 'SELECT prenom, nom, courriel '.
'FROM cel_utilisateurs '.
"WHERE id_utilisateur = $idUtilisateurP ".
' -- ' . __FILE__ . ':' . __LINE__;
$resultat = Cel::db()->requeter($requete);
 
$resultat_infos_utilisateur = Cel::db()->requeter(
'SELECT prenom, nom, courriel FROM cel_utilisateurs'
. ' WHERE id_utilisateur = '.Cel::db()->proteger($id_utilisateur));
 
if($resultat_infos_utilisateur && count($resultat_infos_utilisateur)) return $resultat_infos_utilisateur[0];
return $defaut_infos; // autrement, info par défaut
if ($resultat && count($resultat)) {
$infos = $resultat[0];
}
}
return $infos;
}
 
public function getInfosComplementairesUtilisateurPourMail($mail_utilisateur) {
$infos = array('prenom' => '', 'nom' => '', 'courriel' => $mail_utilisateur);
 
$infos_utilisateur = array('prenom' => '', 'nom' => '', 'courriel' => $mail_utilisateur);
$mailUtilisateurP = Cel::db()->proteger($mail_utilisateur);
$requete = 'SELECT id_utilisateur as id, prenom, nom '.
'FROM cel_utilisateurs '.
"WHERE courriel = $mailUtilisateurP ".
' -- ' . __FILE__ . ':' . __LINE__;
 
$requete_infos_utilisateur = 'SELECT id_utilisateur as id, prenom, nom FROM cel_utilisateurs '.
'WHERE courriel = '.Cel::db()->proteger($mail_utilisateur);
$resultat = Cel::db()->requeter($requete);
 
$resultat_infos_utilisateur = Cel::db()->requeter($requete_infos_utilisateur);
 
if($resultat_infos_utilisateur && is_array($resultat_infos_utilisateur) && count($resultat_infos_utilisateur) > 0) {
$infos_utilisateur = $resultat_infos_utilisateur;
if ($resultat && is_array($resultat) && count($resultat) > 0) {
$infos = $resultat;
}
 
return $infos_utilisateur;
return $infos;
}
 
protected function controlerAccessibiliteWs() {
if (self::ARRET_SERVICE) {
$msg = "Les services du CEL sont temporairement désactivées.";
$this->envoyerMessageErreur(503, $msg);
}
return true;
}
 
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DE MÉTHODES COMMUNES ENTRE LES SERVICES
 
protected function denullifierTableauValeurCel(&$tableau) {
 
// Denullifiage
foreach($tableau as $k=>$v) {
if (($v=="null") || ($v=="000null")) {
$row[$k]="";
foreach ($tableau as $k => $v) {
if (($v == 'null') || ($v == '000null')) {
$row[$k] = '';
} else {
$row[$k] = utf8_decode($v);
}
else {
$row[$k]=utf8_decode($v);
}
}
 
return $tableau;
}
 
403,7 → 422,8
*/
protected function creerAuteurs(Array $courriels) {
$auteurs = array();
if ($identites = $this->recupererUtilisateursIdentite($courriels)) {
$identites = $this->recupererUtilisateursIdentite($courriels);
if ($identites) {
foreach ($identites as $courriel => $infos) {
$auteurs[$courriel] = $infos['intitule'];
}
475,10 → 495,10
}
 
protected function convertirDateHeureMysqlEnTimestamp($date_heure_mysql){
$val = explode(' ', $date_heure_mysql);
$date = explode('-', $val[0]);
$heure = explode(':', $val[1]);
return mktime((int) $heure[0], (int) $heure[1], (int) $heure[2], (int) $date[1], (int) $date[2], (int) $date[0]);
$val = explode(' ', $date_heure_mysql);
$date = explode('-', $val[0]);
$heure = explode(':', $val[1]);
return mktime((int) $heure[0], (int) $heure[1], (int) $heure[2], (int) $date[1], (int) $date[2], (int) $date[0]);
}
 
protected function etreNull($valeur) {
499,12 → 519,10
}
 
protected function convertirCodeZoneGeoVersDepartement($code_zone_geo) {
 
$code_departement = '';
if($this->estUnCodeInseeDepartement($code_zone_geo)) {
$code_departement = substr(ltrim($code_zone_geo,'INSEE-C:'),0,2);
}
 
return $code_departement;
}
 
513,23 → 531,27
}
 
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;
}
 
static function obtenirCodeInseeCommunePourNomEtDepartement($nom_commune, $code_insee) {
$resultat = Cel::db()->requeter(sprintf(
'SELECT id_zone_geo FROM cel_zones_geo WHERE nom LIKE %s AND id_zone_geo LIKE %s',
Cel::db()->proteger($nom_commune),
Cel::db()->proteger("INSEE-C:" . $code_insee . '%')));
$nomCommuneP = Cel::db()->proteger($nom_commune);
$codeInseeP = Cel::db()->proteger("INSEE-C:$code_insee%");
$requete = 'SELECT id_zone_geo '.
'FROM cel_zones_geo '.
"WHERE nom LIKE $nomCommuneP AND id_zone_geo LIKE $codeInseeP ".
' -- ' . __FILE__ . ':' . __LINE__;
$resultat = Cel::db()->requeter($requete);
 
if($resultat && count($resultat)) return $resultat[0]['id_zone_geo'];
return $code_insee; // autrement retourne l'original
$infos = $code_insee; // Par défaut retourne l'original
if ($resultat && count($resultat)) {
$infos = $resultat[0]['id_zone_geo'];
}
return $infos;
}
 
protected function encoderMotCle($mot_cle) {
556,9 → 578,10
$requete = 'SELECT cmc_mot_cle as mot_cle '.
"FROM $table ".
"WHERE cmc_id_mot_cle_utilisateur IN ($mots_cles) ".
"AND cmc_id_proprietaire = $utilisateur_id ";
"AND cmc_id_proprietaire = $utilisateur_id ".
' -- ' . __FILE__ . ':' . __LINE__;
 
$elements = Cel::db()->executerRequete($requete);
$elements = Cel::db()->requeter($requete);
if (is_array($elements)) {
foreach ($elements as $mot) {
$mots[] = $mot['mot_cle'];
682,3 → 705,4
return $contenu;
}
}
?>
/branches/v2.1-emondoir/src/org/tela_botanica/client/util/MotsClesUtilitaire.java
15,7 → 15,7
private static String[] caracteresInterdits = {"\\", "/", ","};
public static String obtenirCheminParent(String cheminMotCle, String motCle) {
return cheminMotCle.substring(0, cheminMotCle.length() - motCle.length() -1);
return cheminMotCle.substring(0, cheminMotCle.length() - motCle.length() -1).toLowerCase();
}
 
public static Object[] construireArbre(String NomRacine, String idRacine,
48,8 → 48,12
.isString().stringValue();
String motCle = noeud.get("mot_cle").isString()
.stringValue();
// le chemin est mis en minuscule afin de fusionner toutes
// la variantes minuscules majuscule d'un mot clé
// qui peuvent poser problème
String chemin = noeud.get("chemin").isString()
.stringValue();
.stringValue().toLowerCase();
String cheminParent = MotsClesUtilitaire.obtenirCheminParent(chemin, motCle);
String parent = parentes.get(cheminParent);
65,6 → 69,7
if(afficherCheckbox) {
node.setChecked(false);
}
 
Node parentNode = arbreMotsCles.getNodeById(parent);
node.setUserObject(usObj);
parentNode.appendChild(node);
/branches/v2.1-emondoir/src/org/tela_botanica/client/vues/image/BarreNotationVue.java
132,15 → 132,26
if (nouvelleDonnees instanceof String[]) {
// on récupère le premier élément (un entier, qui contient la note)
String[] note = (String[]) nouvelleDonnees;
int noteInt = Integer.parseInt(note[0]);
try {
int noteInt = Integer.parseInt(note[0]);
 
// si l'entier est une note valide
if (noteInt != -1 && noteInt >= 0) {
// si l'entier est une note valide
if (noteInt != -1 && noteInt >= 0) {
 
noter(noteInt);
}
// sinon si l'entier vaut -1
else {
noter(noteInt);
}
// sinon si l'entier vaut -1
else {
// alors on note avec 0
// et on met le booleen de notation a false (qui signifie que
// l'image n'est pas encore notée)
estNote = false;
noteEnCours = 0;
// et demande l'affichage
afficherNote();
}
} catch(NumberFormatException e) {
// rien car pas de note (idem que le cas -1
// alors on note avec 0
// et on met le booleen de notation a false (qui signifie que
// l'image n'est pas encore notée)
149,7 → 160,6
// et demande l'affichage
afficherNote();
}
 
}
 
}
Property changes:
Modified: svn:mergeinfo
Merged /trunk/src/org/tela_botanica/client/vues/image/BarreNotationVue.java:r2147-2149
/branches/v2.1-emondoir/src/org/tela_botanica/client/vues/image/FenetreGestionMotsCles.java
337,6 → 337,7
// et on notifie le médiateur de l'ajout et on lui passe
// l'arbre
surAjoutMotCle(nd, getArbreMotsCles().getTree());
arbreMotsCles.disable();
}
// si c'est noeud déjà existant
else {
347,9 → 348,9
// et on notifie le médiateur de la modification et on lui
// passe l'arbre
surChangementTexte(nd, getArbreMotsCles().getTree());
arbreMotsCles.disable();
}
}
arbreMotsCles.disable();
}
 
// gestion du déplacement d'un noeud
/branches/v2.1-emondoir/.
Property changes:
Modified: svn:mergeinfo
Merged /trunk:r2147-2149