Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1574 → Rev 1575

/trunk/jrest/services/CoelStatistique.php
5,7 → 5,10
* Encodage en sortie : utf8
*
* Cas d'utilisation :
* /CoelStatistique/MonTypeDeStat : retourne l'url du graphique pour le type de statistique demandé
* /CoelStatistique/MonTypeDeStat : retourne la balise html image du graphique pour le type de statistique demandé
* /CoelStatistique/MonTypeDeStat/MonIdProjet : retourne la balise html image du graphique pour le type de statistique
* demandé et le projet indiqué.
* ?html=non : ce paramètre ajouté en fin d'url, force le retour de l'url du graphique sans la balise html img
*
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
19,12 → 22,13
const META_LISTE_SIECLE = 1040;// Liste des siècles pour les collections naturalistes
const META_LISTE_TYPE_HERBIER = 1083;// Liste des types de collection botanique
private $parametres = array();
private $url_serveur_graph_tpl = 'http://%s.chart.apis.google.com/chart';
/**
* Méthode appelée avec une requête de type GET.
*/
public function getElement($param) {
$html = null;
$graph = null;
if (isset($param[0])) {
$service_demande = array_shift($param);
31,21 → 35,55
$this->parametres = $param;
$methode = 'get'.$service_demande;
if (method_exists($this, $methode)) {
$html = $this->$methode();
$graph = $this->$methode();
}
} else {
$this->messages[] = "Le service COEL Statistique nécessite un paramètre.";
}
$this->envoyerHTML($html);
if (!is_null($graph)) {
if ((!isset($_GET['html']) || $_GET['html'] == 'oui')) {
// Nous retournons une balise HTML img
$url = $this->construireUrlGraph($graph);
$html = '<img src="'.$url.'"/>';
$this->envoyerHTML($html);
} else {
// Nous retournons une image
$contexte = stream_context_create(
array('http' => array(
'method' => 'POST',
'content' => http_build_query($graph))));
$image = file_get_contents($this->getUrlServeurGraph(), false, $contexte);
$this->envoyer($image, 'image/png', null, false);
}
} else {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
$this->envoyerHTML($info);
}
}
private function getAccueil() {
$html = '<h2>Bienvenue</h2>'.
'<p>Vous utilisez Coel</p>';
return $html;
private function getUrlServeurGraph() {
$url = sprintf($this->url_serveur_graph_tpl, rand(0, 9));
return $url;
}
private function construireUrlGraph($graph) {
$graph = $this->protegerGraphPourUrl($graph);
$url_parametres = array();
foreach ($graph as $cle => $valeur) {
$url_parametres[] = "$cle=$valeur";
}
$url = $this->getUrlServeurGraph().'?'.implode('&', $url_parametres);
return $url;
}
private function protegerGraphPourUrl($graph) {
if (isset($graph['chtt'])) {
$graph['chtt'] = str_replace(' ', '+', $graph['chtt']);
}
return $graph;
}
private function getNombreDonnees() {
// Récupération des données
$types = array( array('Commentaires', 'commentaire', 'ccm'),
60,27 → 98,23
}
// Post traitement des données de la base de données
$titre = str_replace(' ', '+', 'Nombre de données');
asort($donnees);
$valeurs = implode(',', $donnees);
arsort($donnees);
$etiquettes = implode('|', array_keys($donnees));
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=bhs'.
'&chs=250x180'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.max($donnees).
'&chxt=y'.
'&chxl='.'0 :|'.$etiquettes.'|'.
'&chm=N ** ,000000,0,-1,10'.
'&chtt='.$titre;
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
return $sortie;
// Paramètres du graphique
$graph = array(
'cht' => 'bhs',
'chs' => '250x180',
'chco' => '4D89F9',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chxt' => 'y',
'chxl' => "0 :|$etiquettes|",
'chm' => 'N ** ,000000,0,-1,10',
'chtt' => 'Nombre de données');
return $graph;
}
private function executerRequeteNombre($entite, $abr) {
122,7 → 156,6
}
// Post traitement des données de la base de données
$titre = str_replace(' ', '+', 'Ma participation tous projets confondus');
$max_global = array();
$ensembles_donnees = array();
foreach ($donnees as $ensemble_donnees) {
143,24 → 176,22
$legende = implode('|', $etats);
$etiquettes_x = "0|$moitier|$maximum";
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=bhs'.
'&chs=320x180'.
'&chbh=a,2,4'.
'&chco=66B032,FABC02,FE2712'.
'&chdl='.$legende.
'&chdlp=b'.
'&chd=t:'.$valeurs.
'&chds=0,'.$maximum.
'&chxt=y,x'.
'&chxl='.'0:|'.$etiquettes.'|1:|'.$etiquettes_x.
'&chm=N,000000,0,-1,10,1|N,000000,1,-1,10,1|N,000000,2,-1,10,1'.
'&chtt='.$titre;
// Paramètres du graphique
$graph = array(
'cht' => 'bhs',
'chs' => '320x180',
'chbh' => 'a,2,4',
'chco' => '66B032,FABC02,FE2712',
'chdl' => $legende,
'chdlp' => 'b',
'chd' => "t:$valeurs",
'chds' => "0,$maximum",
'chxt' => 'y,x',
'chxl' => "0:|$etiquettes|1:|$etiquettes_x",
'chm' => 'N,000000,0,-1,10,1|N,000000,1,-1,10,1|N,000000,2,-1,10,1',
'chtt' => 'Ma participation tous projets confondus');
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
return $sortie;
return $graph;
}
private function executerRequeteNombreDansHistorique($table_identifiants, $etat, $personne_id = null) {
200,7 → 231,6
}
// Post traitement des données de la base de données
$titre = str_replace(' ', '+', 'Type de dépôt|des collections');
$donnees = array();
foreach ($infos as $info) {
if ($info['type'] != '') {
215,22 → 245,20
arsort($donnees);
$etiquettes = implode('|', array_keys($donnees));
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=bhs'.
'&chs=250x170'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.(max($donnees)+5).
'&chxt=y'.
'&chxl='.'0 :|'.$etiquettes.'|'.
'&chm=N *,000000,0,-1,10'.
'&chtt='.$titre.
'&chts=000000,12';
// Paramètres du graphique
$graph = array(
'cht' => 'bhs',
'chs' => '250x170',
'chco' => '4D89F9',
'chd' => "t:$valeurs",
'chds' => '0,'.(max($donnees)+5),
'chxt' => 'y',
'chxl' => "0 :|$etiquettes|",
'chm' => 'N *,000000,0,-1,10',
'chtt' => 'Type de dépôt|des collections',
'chts' => '000000,12');
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
return $sortie;
return $graph;
}
private function getNombreCollectionParStructure() {
255,7 → 283,6
}
// Post traitement des données de la base de données
$titre = str_replace(' ', '+', 'Nombre de collections|par institution');
$donnees = array( '1 collection' => 0,
'2 collections' => 0,
'Entre 3 et 10' => 0,
288,20 → 315,18
$etiquettes = implode('|', array_keys($donnees));
//$legende = implode('|', array_keys($donnees));
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=p3'.
'&chs=350x200'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.max($donnees).
'&chdl='.$etiquettes.
'&chtt='.$titre.
'&chts=000000,12';
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '350x200',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $etiquettes,
'chtt' => 'Nombre de collections|par institution',
'chts' => '000000,12');
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
return $sortie;
return $graph;
}
private function getNombrePartParStructure() {
369,24 → 394,21
$donnees = array_reverse($donnees, true);
$legende = implode('|', array_keys($donnees));
$valeurs = implode(',', $donnees);
$titre = str_replace(' ', '+', 'Nombre de parts conservées |par institution');
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=p3'.
'&chs=400x225'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.max($donnees).
'&chdl='.$legende.
'&chdlp=r,0,1,2,3,4,5'.
'&chtt='.$titre.
'&chts=000000,11.5'.
'&chts=000000,12';
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '400x225',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',//4D89F9 ou EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|DEBAB0 ou B02B2C|D15600|C79810|73880A|6BBA70|3F4C6B|356AA0
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $legende,
'chdlp' => 'r,0,1,2,3,4,5',
'chtt' => 'Nombre de parts conservées |par institution',
'chts' => '000000,11.5',
'chts' => '000000,12');
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
return $sortie;
return $graph;
}
private function getNombrePartParCollection() {
411,7 → 433,7
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
$sortie = null;
$graph = null;
if ($infos !== false) {
// Post traitement des données de la base de données
// Extraction du nombre de part
454,25 → 476,21
$donnees = array_reverse($donnees, true);
$legende = implode('|', array_keys($donnees));
$valeurs = implode(',', $donnees);
$titre = str_replace(' ', '+', 'Nombre de parts conservées |par collection');
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=p3'.
'&chs=400x225'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.max($donnees).
'&chdl='.$legende.
'&chdlp=r,0,1,2,3,4,5'.
'&chtt='.$titre.
'&chts=000000,11.5'.
'&chts=000000,12';
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '400x225',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $legende,
'chdlp' => 'r,0,1,2,3,4,5',
'chtt' => 'Nombre de parts conservées |par collection',
'chts' => '000000,11.5',
'chts' => '000000,12');
}
return $sortie;
return $graph;
}
private function getNombreCollectionParDepartement() {
498,7 → 516,7
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
$sortie = null;
$graph = null;
if ($infos !== false) {
// Post traitement des données de la base de données
// Extraction du nombre de part
521,27 → 539,24
asort($donnees);
$valeurs = implode(',', $donnees);
$titre = str_replace(' ', '+', 'Nombre de collections conservées |par département');
$legende = implode('|', array_keys($donnees));
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=p3'.
'&chs=400x225'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.max($donnees).
'&chdl='.$legende.
'&chtt='.$titre.
'&chts=000000,11.5'.
'&chts=000000,12';
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '400x225',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $legende,
'chtt' => 'Nombre de collections conservées |par département',
'chts' => '000000,11.5',
'chts' => '000000,12');
}
} else {
$this->messages[] = "Veuillez sélectionner un projet pour voir le graphique.";
}
return $sortie;
return $graph;
}
private function getNombreCollectionParTypeStructure() {
568,7 → 583,7
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
//Coel::debug($infos);
$sortie = null;
$graph = null;
if ($infos !== false) {
// Post traitement des données de la base de données
// Extraction du nombre de part
596,24 → 611,21
asort($donnees);
$valeurs = implode(',', $donnees);
$titre = str_replace(' ', '+', "Collections conservées |par type d'institution");
$legende = implode('|', array_keys($donnees));
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=p3'.
'&chs=400x225'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.max($donnees).
'&chdl='.$legende.
'&chtt='.$titre.
'&chts=000000,11.5'.
'&chts=000000,12';
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '400x225',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $legende,
'chtt' => "Collections conservées |par type d'institution",
'chts' => '000000,11.5',
'chts' => '000000,12');
}
return $sortie;
return $graph;
}
private function getNombreCollectionParPeriode() {
650,7 → 662,7
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
$sortie = null;
$graph = null;
if ($infos !== false) {
// Traitement des métadonées
$periodes = array(0 => array('nom' => 'Non renseigné', 'abr' => 0));
690,24 → 702,21
asort($donnees);
$valeurs = implode(',', $donnees);
$titre = str_replace(' ', '+', "Collections recensées par|siècle de constitution");
$legende = implode('|', array_keys($donnees));
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=p3'.
'&chs=400x225'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.max($donnees).
'&chdl='.$legende.
'&chtt='.$titre.
'&chts=000000,11.5'.
'&chts=000000,12';
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '400x225',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $legende,
'chtt' => "Collections recensées par|siècle de constitution",
'chts' => '000000,11.5',
'chts' => '000000,12');
}
return $sortie;
return $graph;
}
private function getNombreHerbierParType() {
745,7 → 754,7
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
$sortie = null;
$graph = null;
if ($infos !== false) {
// Traitement des métadonées
$types = array(0 => array('nom' => 'Non renseigné', 'abr' => 'NR'));
775,24 → 784,21
asort($donnees);
$valeurs = implode(',', $donnees);
$titre = str_replace(' ', '+', "Nombre d'herbier par type");
$legende = implode('|', array_keys($donnees));
// Construire de l'url de l'image
$url = 'http://chart.apis.google.com/chart?'.
'cht=p3'.
'&chs=300x350'.
'&chco=4D89F9'.
'&chd=t:'.$valeurs.
'&chds=0,'.max($donnees).
'&chdl='.$legende.
'&chdlp=bv'.
'&chtt='.$titre.
'&chts=000000,11.5'.
'&chts=000000,12';
// Retour du html contenant l'image
$sortie = '<img src="'.$url.'"/>';
// Paramètres du graphique
$graph = array(
'cht' => 'p3',
'chs' => '300x350',
'chco' => 'EDC951|DEB0DB|DEC9B0|B0DEB3|B0C4DE|B0B0DE|927CBA',
'chd' => "t:$valeurs",
'chds' => '0,'.max($donnees),
'chdl' => $legende,
'chdlp' => 'bv',
'chtt' => "Nombre d'herbier par type",
'chts' => '000000,11.5',
'chts' => '000000,12');
}
return $sortie;
return $graph;
}
}