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; |
} |
} |