/trunk/jrest/bibliotheque/JrestService.php |
---|
File deleted |
\ No newline at end of file |
/trunk/jrest/bibliotheque/JRestService.php |
---|
New file |
0,0 → 1,238 |
<?php |
/** |
* 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@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 2009 |
*/ |
abstract class JRestService { |
public $config; |
protected $bdd; |
protected $log = array(); |
protected $messages = array(); |
protected $debug = array(); |
protected $distinct = false; |
protected $orderby = null; |
protected $formatRetour = 'objet'; |
protected $start = 0; |
protected $limit = 150; |
public function __construct($config, $demarrer_session = true) { |
// Tableau contenant la config de Jrest |
$this->config = $config; |
// Connection à la base de données |
$this->bdd = $this->connecterPDO($this->config, 'appli'); |
// Nettoyage du $_GET (sécurité) |
if (isset($_GET)) { |
$get_params = array('orderby', 'distinct', 'start', 'limit', 'formatRetour'); |
foreach ($get_params as $get) { |
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';'); |
$_GET[$get] = str_replace($verifier, '', $_GET[$get]); |
if (isset($_GET[$get]) && $_GET[$get] != '') { |
$this->$get = $_GET[$get]; |
} else { |
$_GET[$get] = null; |
} |
} |
} |
} |
/** |
* Méthode appelée quand aucun paramètre n'est passé dans l'url et avec une requête de type GET. |
*/ |
public function getRessource() { |
$this->getElement(array()); |
} |
protected function envoyer($donnees = null, $mime = 'text/html', $encodage = 'utf-8', $json = true) { |
// Traitements des messages d'erreurs et données |
if (count($this->messages) != 0) { |
header('HTTP/1.1 500 Internal Server Error'); |
$mime = 'text/html'; |
$encodage = 'utf-8'; |
$json = true; |
$sortie = $this->messages; |
} else { |
$sortie = $donnees; |
if (is_null($donnees)) { |
$sortie = 'OK'; |
} |
} |
// Gestion de l'envoie du déboguage |
$this->envoyerDebogage(); |
// Encodage au format et JSON et envoie sur la sortie standard |
$contenu = $json ? json_encode($sortie) : $sortie; |
$this->envoyerContenu($encodage, $mime, $contenu); |
} |
protected function envoyerDebogage() { |
if (!is_array($this->debug)) { |
$this->debug[] = $this->debug; |
} |
if (count($this->debug) != 0) { |
foreach ($this->debug as $cle => $val) { |
if (is_array($val)) { |
$this->debug[$cle] = print_r($val, true); |
} |
} |
header('X-DebugJrest-Data:'.json_encode($this->debug)); |
} |
} |
protected function envoyerContenu($encodage, $mime, $contenu) { |
header("Content-Type: $mime; charset=$encodage"); |
print $contenu; |
} |
private function connecterPDO($config, $base = 'database') { |
$cfg = $config[$base]; |
$dsn = $cfg['phptype'].':dbname='.$cfg['database'].';host='.$cfg['hostspec']; |
try { |
$PDO = new PDO($dsn, $cfg['username'], $cfg['password']); |
} catch (PDOException $e) { |
echo 'La connexion à la base de donnée via PDO a échouée : ' . $e->getMessage(); |
} |
// Passe en UTF-8 la connexion à la BDD |
$PDO->exec("SET NAMES 'utf8'"); |
// Affiche les erreurs détectées par PDO (sinon mode silencieux => aucune erreur affiché) |
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
return $PDO; |
} |
protected function getTxt($id) { |
$sortie = ''; |
switch ($id) { |
case 'sql_erreur' : $sortie = 'Requête echec. Fichier : "%s". Ligne : "%s". Message : %s'; break; |
default : $sortie = $id; |
} |
return $sortie; |
} |
protected function traiterParametresUrl($params_attendu, $params, $pourBDD = true) { |
$sortie = array(); |
foreach ($params_attendu as $num => $nom) { |
if (isset($params[$num]) && $params[$num] != '*') { |
if ($pourBDD) { |
$params[$num] = $this->bdd->quote($params[$num]); |
} |
$sortie[$nom] = $params[$num]; |
} |
} |
return $sortie; |
} |
protected function traiterParametresPost($params) { |
$sortie = array(); |
foreach ($params as $cle => $valeur) { |
$sortie[$cle] = $this->bdd->quote($valeur); |
} |
return $sortie; |
} |
protected function getIdentification(&$params) { |
// Initialisation des variables |
$utilisateur = array(0, session_id()); |
// L'id utilisateur est soit passé par le POST soit dans l'url |
if (is_array($params) && isset($params['cmhl_ce_modifier_par'])) { |
$utilisateur[0] = $params['cmhl_ce_modifier_par']; |
unset($params['cmhl_ce_modifier_par']); |
} else if (is_string($params)) { |
$utilisateur[0] = $params; |
} |
return $utilisateur; |
} |
protected function etreAutorise($id_utilisateur) { |
$autorisation = false; |
if (($_SESSION['coel_utilisateur'] != '') && $_SESSION['coel_utilisateur']['id'] != $id_utilisateur) { |
$this->messages[] = 'Accès interdit.'; |
} else if ($_SESSION['coel_utilisateur'] == '') { |
$this->messages[] = 'Veuillez vous identifiez pour accéder à cette fonction.'; |
} else { |
$autorisation = true; |
} |
return $autorisation; |
} |
private function gererIdentificationPermanente() { |
// Pour maintenir l'utilisateur tjrs réellement identifié nous sommes obligé de recréer une SESSION et de le recharger depuis la bdd |
if ($this->getUtilisateur() == '' |
&& isset($_COOKIE['coel_login']) |
&& ($utilisateur = $this->chargerUtilisateur($_COOKIE['coel_login'], $_COOKIE['coel_mot_de_passe']))) { |
$this->setUtilisateur($utilisateur, $_COOKIE['coel_permanence']); |
} |
} |
protected function getUtilisateur() { |
return (isset($_SESSION['coel_utilisateur']) ? $_SESSION['coel_utilisateur'] : ''); |
} |
/** |
* Méthode prenant en paramètre un chemin de fichier squelette et un tableau associatif de données, |
* en extrait les variables, charge le squelette et retourne le résultat des deux combinés. |
* |
* @param String $fichier le chemin du fichier du squelette |
* @param Array $donnees un tableau associatif contenant les variables a injecter dans le squelette. |
* |
* @return boolean false si le squelette n'existe pas, sinon la chaine résultat. |
*/ |
public static function traiterSquelettePhp($fichier, Array $donnees = array()) { |
$sortie = false; |
if (file_exists($fichier)) { |
// Extraction des variables du tableau de données |
extract($donnees); |
// Démarage de la bufferisation de sortie |
ob_start(); |
// Si les tags courts sont activés |
if ((bool) @ini_get('short_open_tag') === true) { |
// Simple inclusion du squelette |
include $fichier; |
} else { |
// Sinon, remplacement des tags courts par la syntaxe classique avec echo |
$html_et_code_php = self::traiterTagsCourts($fichier); |
// Pour évaluer du php mélangé dans du html il est nécessaire de fermer la balise php ouverte par eval |
$html_et_code_php = '?>'.$html_et_code_php; |
// Interprétation du html et du php dans le buffer |
echo eval($html_et_code_php); |
} |
// Récupèration du contenu du buffer |
$sortie = ob_get_contents(); |
// Suppression du buffer |
@ob_end_clean(); |
} else { |
$msg = "Le fichier du squelette '$fichier' n'existe pas."; |
trigger_error($msg, E_USER_WARNING); |
} |
// Retourne le contenu |
return $sortie; |
} |
/** |
* Fonction chargeant le contenu du squelette et remplaçant les tags court php (<?= ...) par un tag long avec echo. |
* |
* @param String $chemin_squelette le chemin du fichier du squelette |
* |
* @return string le contenu du fichier du squelette php avec les tags courts remplacés. |
*/ |
private static function traiterTagsCourts($chemin_squelette) { |
$contenu = file_get_contents($chemin_squelette); |
// Remplacement de tags courts par un tag long avec echo |
$contenu = str_replace('<?=', '<?php echo ', $contenu); |
// Ajout systématique d'un point virgule avant la fermeture php |
$contenu = preg_replace("/;*\s*\?>/", "; ?>", $contenu); |
return $contenu; |
} |
} |
?> |
/trunk/jrest/services/JRestService.php |
---|
File deleted |
\ No newline at end of file |
/trunk/jrest/services/ExecuteurLien.php |
---|
1,20 → 1,20 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* Service |
* |
* @category PHP |
* @package papyrus_bp |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @category php 5.2 |
* @package Annuaire::Services |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/papyrus_bp/ |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$ |
*/ |
class ExecuteurLien extends JRestService { |
Class ExecuteurLien extends JRestService { |
public function getElement($uid){ |
if(isset($uid[0])) { |
$lien_code = $uid[0]; |
$lien = base64_decode(str_replace('_','/',$lien_code)); |
/trunk/jrest/services/InformationsUtilisateur.php |
---|
1,20 → 1,20 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* Service retournant des informations sur l'utilisateur. |
* |
* @category PHP |
* @package annuaire |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @category php 5.2 |
* @package Annuaire::Services |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/annuaire/ |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$ |
*/ |
class InformationsUtilisateur extends JRestService { |
Class InformationsUtilisateur extends JRestService { |
public function getElement($uid){ |
$mail_utilisateur = $uid[0]; |
$identificateur = new IdentificationControleur(); |
/trunk/jrest/services/EnvoiMessage.php |
---|
1,9 → 1,20 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Service d'envoie de courriel. |
* |
* @category php 5.2 |
* @package Annuaire::Services |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$ |
*/ |
class EnvoiMessage extends JRestService { |
Class EnvoiMessage extends JRestService { |
public function getElement($uid){ |
$identificateur = new IdentificationControleur(); |
$login = $identificateur->obtenirLoginUtilisateurParCookie(); |
10,7 → 21,7 |
$identification = $login; |
if(!$identification || trim($identification) == '') { |
print "false"; |
print 'false'; |
return; |
} |
$id_annuaire = Config::get('annuaire_defaut'); |
21,11 → 32,11 |
$messagerie = new MessageControleur(); |
// on remplace les identifiants par leurs destinataires |
// Remplacement les identifiants par leurs destinataires |
$destinataire_mail = $messagerie->obtenirMailParTableauId($id_annuaire, array($destinataire)); |
if(empty($destinataire_mail)) { |
print "false"; |
print 'false'; |
return; |
} |
36,11 → 47,9 |
if($retour) { |
header('Location: '.'http://'.$redirect); |
exit; |
} else { |
print "false"; |
print 'false'; |
} |
} |
} |
?> |
?> |
/trunk/jrest/services/GestionLettreActu.php |
---|
1,20 → 1,20 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* Service de gestion de la lettre d'actualité |
* |
* @category PHP |
* @package papyrus_bp |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @category php 5.2 |
* @package Annuaire::Services |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/papyrus_bp/ |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$ |
*/ |
class GestionLettreActu extends JRestService { |
Class GestionLettreActu extends JRestService { |
public function getElement($uid){ |
// TODO : rajouter controle d'accès ! |
$id_utilisateur = $uid[0]; |
28,11 → 28,8 |
$controleur = new LettreControleur(); |
$est_abonne = $controleur->estAbonneLettreActualite($id_annuaire,$id_utilisateur); |
$changement = $controleur->abonnerDesabonnerLettreActualite($id_annuaire, $id_utilisateur, !$est_abonne); |
echo 'OK'; |
} |
} |
?> |
?> |
/trunk/jrest/services/InscritsRss.php |
---|
1,20 → 1,20 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* Service |
* |
* @category PHP |
* @package annuaire |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @category php 5.2 |
* @package Annuaire::Services |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/annuaire/ |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$ |
*/ |
class InscritsRss extends JRestService { |
Class InscritsRss extends JRestService { |
public function getElement($uid){ |
$mail_utilisateur = $uid[0]; |
$admin = (isset($uid[1])) ? $uid[1] : false; |
$id_annuaire = Config::get('annuaire_defaut'); |
40,9 → 40,7 |
} else { |
if($this->verifierAcces($_SERVER['PHP_AUTH_USER'])) { |
return ; |
} |
else |
{ |
} else { |
header('WWW-Authenticate: Basic realm="www.tela-botanica.org"'); |
header('HTTP/1.0 401 Unauthorized'); |
header('Content-type: text/html; charset=UTF-8'); |
53,13 → 51,13 |
} |
public function verifierAcces($id) { |
$query="SELECT ".$this->config['database_ident']['ann_id']." as name FROM ".$this->config['database_ident']['database'].'.'.$this->config['database_ident']['annuaire']." WHERE ".$this->config['database_ident']['ann_id']." =".$this->bdd->quote($id) |
." AND ".$this->config['database_ident']['ann_pwd']." = ".$this->config['database_ident']['pass_crypt_funct']."(".$this->bdd->quote($_SERVER['PHP_AUTH_PW']).")" ; |
$query = 'SELECT '.$this->config['database_ident']['ann_id'].' AS name '. |
'FROM '.$this->config['database_ident']['database'].'.'.$this->config['database_ident']['annuaire'].' '. |
'WHERE '.$this->config['database_ident']['ann_id'].' = '.$this->bdd->quote($id).' '. |
' AND '.$this->config['database_ident']['ann_pwd'].' = '.$this->config['database_ident']['pass_crypt_funct'].'('.$this->bdd->quote($_SERVER['PHP_AUTH_PW']).')' ; |
$res = $this->bdd->query($query); |
if($res == "") { |
if ($res == '') { |
return false ; |
} |
68,7 → 66,6 |
} |
return true ; |
} |
} |
?> |
/trunk/jrest/services/Gestion.php |
---|
1,20 → 1,20 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* Service |
* |
* @category PHP |
* @package papyrus_bp |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @category php 5.2 |
* @package Annuaire::Services |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/papyrus_bp/ |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$ |
*/ |
class Gestion extends JRestService { |
Class Gestion extends JRestService { |
public function getElement($uid){ |
$id_utilisateur = $uid[0]; |
$mail_utilisateur = $uid[1]; |
30,11 → 30,11 |
$resume['titre'] = 'Lettre d\'actualité'; |
if($est_abonne == '1') { |
$message = 'Vous êtes abonné à la lettre d\'actualité'; |
$message = "Vous êtes abonné à la lettre d'actualité"; |
$intitule_lien = 'Se desinscrire'; |
} else { |
$message = 'Vous n\'êtes pas abonné à la lettre d\'actualité'; |
$intitule_lien = 'S\'inscrire'; |
$message = "Vous n'êtes pas abonné à la lettre d'actualité"; |
$intitule_lien = "S'inscrire"; |
} |
$base_url_application = $controleur->getUrlBaseComplete(); |
41,14 → 41,14 |
$cible_lien_desinscrire = $base_url_application.'/jrest/GestionLettreActu/'.$id_utilisateur.DS.$mail_utilisateur.DS.$id_annuaire; |
$cible_lien = $base_url_application.'/jrest/GestionLettreActu/'.$id_utilisateur.DS.$mail_utilisateur.DS.$id_annuaire; |
$resume_item = array('element' => $message, 'intitule_lien' => $intitule_lien, 'lien_desinscrire' => $cible_lien_desinscrire, 'lien' => $cible_lien); |
$resume_item = array( |
'element' => $message, |
'intitule_lien' => $intitule_lien, |
'lien_desinscrire' => $cible_lien_desinscrire, |
'lien' => $cible_lien); |
$resume['elements'][] = $resume_item; |
$this->envoyer($resume); |
} |
public function updateElement($uid, $pairs) { |
} |
} |
?> |