Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 521 → Rev 522

/branches/v1.3-balance/jrest/bibliotheque/JRestService.php
24,6 → 24,9
protected $start = 0;
protected $limit = 150;
 
/** pour l'envoi de XML : éventuelle balise dans laquelle placer tout le contenu */
protected $baliseMaitresse;
 
public function __construct($config, $demarrer_session = true) {
// Tableau contenant la config de Jrest
$this->config = $config;
61,6 → 64,39
$this->envoyer($contenu, 'application/json', $encodage, false);
}
 
/** à l'arrache pour rétrocompatibilité avec le service "annuaire_tela" de eFlore_chatin */
protected function envoyerXml($donnees, $encodage = 'utf-8') {
$xml = '<?xml version="1.0" encoding="' . strtoupper($encodage) . '"?>';
if ($this->baliseMaitresse) {
$xml .= '<' . $this->baliseMaitresse . '>';
}
$xml .= $this->genererXmlAPartirDeTableau($donnees);
if ($this->baliseMaitresse) {
$xml .= '</' . $this->baliseMaitresse . '>';
}
$this->envoyer($xml, 'application/xml', $encodage, false);
}
 
/**
* Génère un XML minimaliste à partir d'un tableau associatif
* Note : gère mal les indices numériques
* @TODO utiliser une vraie lib
*/
protected function genererXmlAPartirDeTableau($tableau) {
$xml = '';
foreach ($tableau as $balise => $donnee) {
$xml .= '<' . $balise . '>';
if (is_array($donnee)) {
// récurer, balayer, que ce soit toujours pimpant
$xml .= $this->genererXmlAPartirDeTableau($donnee);
} else {
$xml .= $donnee;
}
$xml .= '</' . $balise . '>';
}
return $xml;
}
 
protected function envoyerJsonVar($variable, $donnees = null, $encodage = 'utf-8') {
$contenu = "var $variable = ".json_encode($donnees);
$this->envoyer($contenu, 'text/html', $encodage, false);
347,6 → 383,28
return $identifie;
}
 
/**
* Envoie une demande d'authentification HTTP puis compare le couple
* login / mot de passe envoyé par l'utilisateur, à ceux définis dans
* la config (section database_ident).
* En cas d'erreur, sort du programme avec un entête HTTP 401
* @TODO redondant avec les trucs du dessus :'(
*/
protected function authentificationHttpSimple() {
$autorise = true;
// contrôle d'accès
$nomUtil = $_SERVER['PHP_AUTH_USER'];
$mdp = $_SERVER['PHP_AUTH_PW'];
$autorise = (($nomUtil == $this->config['database_ident']['username']) && ($mdp == $this->config['database_ident']['password']));
// entêtes HTTP
if (! $autorise) {
header('WWW-Authenticate: Basic realm="Annuaire de Tela Botanica"');
header('HTTP/1.0 401 Unauthorized');
echo 'Veuillez vous authentifier pour utiliser ce service';
exit;
}
}
 
protected function creerCookiePersistant($duree = null, $id = null, $mdp = null) {
$id = is_null($id) ? $_SERVER['PHP_AUTH_USER'] : $id;
$mdp = is_null($mdp) ? $_SERVER['PHP_AUTH_PW'] : $mdp;