Rev 704 | Rev 717 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Widget fournissant des stats graphiques du CEL.* Encodage en entrée : utf8* Encodage en sortie : utf8** @author Jean-Pascal MILCENT <jpm@clapas.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 © 2010, Jean-Pascal MILCENT*/class Stats extends WidgetCommun {const PAGE_DEFAUT = 'defaut';const MODE_DEFAUT = 'defaut';const MODE_UTILISATEUR = 'utilisateur';private $page;private $mode;/*** Méthode appelée avec une requête de type GET.*/public function executer() {$retour = null;extract($this->parametres);$this->mode = (isset($mode)) ? $mode : self::MODE_DEFAUT;$this->page = (isset($page)) ? $page : self::PAGE_DEFAUT;$methode = $this->traiterNomMethodeExecuter($this->page);if (method_exists($this, $methode)) {$retour = $this->$methode();} else {$this->messages[] = "Ce type de carte '$methode' n'est pas disponible.";}if (is_null($retour)) {$info = 'Un problème est survenu : '.print_r($this->messages, true);$this->envoyer($info);} else {$squelette = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.$retour['squelette'].'.tpl.html';$html = $this->traiterSquelettePhp($squelette, $retour['donnees']);$this->envoyer($html);}}/*** Stats par défaut*/public function executerDefaut() {$widget = null;switch ($this->mode) {case self::MODE_DEFAUT :$widget['donnees'] = (array) $this->recupererStatsTxtNombres();$widget['squelette'] = 'stats';break;case self::MODE_UTILISATEUR :if ($this->authentifierUtilisateur()) {$widget['donnees'] = (array) $this->recupererStatsTxtNombres();$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();$widget['squelette'] = 'stats_utilisateur';}break;default :$this->messages[] = "Le mode '{$this->mode}' est inconnu.";}if (!is_null($widget)) {$widget['donnees']['url_service'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');$widget['donnees']['filtres'] = $this->parametres;}return $widget;}private function recupererPrenomNomIdentifie() {$nom = '';if ($this->getAuthIdentifiant() != null) {$infos_utilisateur = $this->recupererUtilisateursNomPrenom(array($this->getAuthIdentifiant()));if (array_key_exists($this->getAuthIdentifiant(), $infos_utilisateur)) {$utilisateur = (array) $infos_utilisateur[$this->getAuthIdentifiant()];$nom = $utilisateur['prenom'].' '.$utilisateur['nom'];} else {$nom = $this->getAuthIdentifiant();}}return $nom;}public function executerNombres() {$widget = null;switch ($this->mode) {case self::MODE_DEFAUT :$widget['donnees'] = (array) $this->recupererStatsTxtNombres();break;case self::MODE_UTILISATEUR :if ($this->authentifierUtilisateur()) {$widget['donnees'] = (array) $this->recupererStatsTxtNombres();$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();}break;default:$this->messages[] = "Le mode '{$this->mode}' est inconnu.";}if (!is_null($widget)) {$widget['squelette'] = 'stats_nbres';$widget['donnees']['filtres'] = $this->parametres;}return $widget;}private function recupererStatsTxtNombres() {// Récupération des données au format Json$service = "CelStatistiqueTxt/Nombres";$parametres = array();if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {$parametres[] = 'utilisateur='.$this->getAuthIdentifiant();}if (isset($this->parametres['num_taxon'])) {$parametres[] = 'num_taxon='.$this->parametres['num_taxon'];}if (isset($this->parametres['taxon'])) {$parametres[] = 'taxon='.$this->parametres['taxon'];}$service .= (count($parametres) > 0) ? '?'.implode('&', $parametres) : '';$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);$json = $this->getDao()->consulter($url);return (array) json_decode($json);}public function executerListeTaxonsNbrePhotos() {$widget = null;$widget['donnees']['taxons'] = $this->recupererStatsTxtListeTaxonsNbrePhotos();$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();$widget['donnees']['filtres'] = $this->parametres;$widget['squelette'] = 'liste_taxons_nbre_photos';return $widget;}private function recupererStatsTxtListeTaxonsNbrePhotos() {// Récupération des données au format Json$service = "CelStatistiqueTxt/ListeTaxonsNbrePhotos";$parametres = array();if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {$parametres[] = 'utilisateur='.$this->getAuthIdentifiant();}if (isset($this->parametres['num_taxon'])) {$parametres[] = 'num_taxon='.$this->parametres['num_taxon'];}if (isset($this->parametres['taxon'])) {$parametres[] = 'taxon='.$this->parametres['taxon'];}if (isset($this->parametres['start'])) {$parametres[] = 'start='.$this->parametres['start'];}if (isset($this->parametres['limit'])) {$parametres[] = 'limit='.$this->parametres['limit'];}$service .= (count($parametres) > 0) ? '?'.implode('&', $parametres) : '';$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);$json = $this->getDao()->consulter($url);return (array) json_decode($json);}public function executerListeUtilisateursNbrePhotos() {$widget = null;$utilisateurs = $this->recupererStatsTxtListeUtilisateursNbrePhotos();if (isset($utilisateurs)) {$noms = $this->recupererUtilisateursNomPrenom(array_keys($utilisateurs));foreach ($utilisateurs as $courriel => $infos) {if (array_key_exists($courriel, $noms)) {$nom_infos = (array) $noms[$courriel];$nom_fmt = $nom_infos['prenom'].' '.$nom_infos['nom'];$widget['donnees']['utilisateurs'][$nom_fmt] = $infos;}}}$widget['donnees']['filtres'] = $this->parametres;$widget['squelette'] = 'liste_utilisateurs_nbre_photos';return $widget;}private function recupererStatsTxtListeUtilisateursNbrePhotos() {// Récupération des données au format Json$service = "CelStatistiqueTxt/ListeUtilisateursNbrePhotos";if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {$this->getDao()->ajouterParametre('utilisateur', $this->getAuthIdentifiant());}if (isset($this->parametres['num_taxon'])) {$this->getDao()->ajouterParametre('num_taxon', $this->parametres['num_taxon']);}if (isset($this->parametres['taxon'])) {$this->getDao()->ajouterParametre('taxon', $this->parametres['taxon']);}if (isset($this->parametres['start'])) {$this->getDao()->ajouterParametre('start', $this->parametres['start']);}if (isset($this->parametres['limit'])) {$this->getDao()->ajouterParametre('limit', $this->parametres['limit']);}if (isset($this->parametres['tag'])) {$this->getDao()->ajouterParametre('tag', $this->parametres['tag']);}$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);$json = $this->getDao()->consulter($url);return (array) json_decode($json);}private function recupererUtilisateursNomPrenom($courriels) {// Récupération des données au format Json$service = "utilisateur/prenom-nom-par-courriel/".implode(',', $courriels);$url = sprintf($this->config['chemins']['baseURLServicesAnnuaireTpl'], $service);$json = $this->getDao()->consulter($url);return (array) json_decode($json);}}