Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2201 → Rev 2202

/trunk/widget/modules/stats/Stats.php
37,30 → 37,32
if (is_null($retour)) {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
$this->envoyer($info);
} else {
} else if (isset($retour['squelette'])) {
$squelette = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.$retour['squelette'].'.tpl.html';
$html = $this->traiterSquelettePhp($squelette, $retour['donnees']);
$this->envoyer($html);
} else {
$this->envoyer($retour);
}
}
 
/**
* Stats par défaut
* Stats par défaut - exécute tout et met ça dans un squelette Bootstrap
*/
public function executerDefaut() {
$widget = null;
$widget['squelette'] = 'stats_tout'; // squelette bootstrap unifié
$utilisateur_authentifie = false;
 
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();
$auth = $this->authentifierUtilisateur();
if ($auth) {
$utilisateur_authentifie = true;
$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
$widget['squelette'] = 'stats_utilisateur';
}
break;
default :
68,26 → 70,17
}
if (!is_null($widget)) {
$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/css/stats_tout.css');
$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/js/defaut.js');
$widget['donnees']['url_image_chargement'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/img/chargement.gif');
$widget['donnees']['url_widget'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'stats');
$widget['donnees']['url_service'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
$widget['donnees']['filtres'] = $this->parametres;
$widget['donnees']['utilisateur_authentifie'] = $utilisateur_authentifie;
}
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;
98,6 → 91,7
case self::MODE_UTILISATEUR :
if ($this->authentifierUtilisateur()) {
$widget['donnees'] = (array) $this->recupererStatsTxtNombres();
$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
}
break;
106,7 → 100,7
}
if (!is_null($widget)) {
$widget['squelette'] = 'stats_nbres';
$widget['squelette'] = 'nombres';
$widget['donnees']['filtres'] = $this->parametres;
}
113,6 → 107,272
return $widget;
}
public function executerListeTaxonsNbrePhotos() {
$widget = null;
switch ($this->mode) {
case self::MODE_DEFAUT :
$widget['donnees']['taxons'] = $this->recupererStatsTxtListeTaxonsNbrePhotos();
break;
case self::MODE_UTILISATEUR :
if ($this->authentifierUtilisateur()) {
$widget['donnees']['taxons'] = $this->recupererStatsTxtListeTaxonsNbrePhotos();
$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
}
break;
default:
$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
}
if (!is_null($widget)) {
$widget['squelette'] = 'liste_taxons_nbre_photos';
$widget['donnees']['filtres'] = $this->parametres;
}
 
return $widget;
}
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;
}
 
/**
* Aligne les contributeurs contre un mur et... euh... hum;
* Appelle le service pour obtenir les n principaux contributeurs depuis x jours,
* en termes d'observations ajoutées, d'images ajoutées, ou les deux
* Paramètres : "jours" (int), "nombre" (int), "critere" ("obs" ou "img" ou "")
* @return array
*/
public function executerGrandsContributeurs() {
$widget = null;
$widget['donnees'] = (array) $this->recupererStatsTxtGrandsContributeurs();
if (!is_null($widget)) {
$widget['squelette'] = 'grands_contributeurs';
$widget['donnees']['url_service'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
}
return $widget;
}
 
public function executerObservationsActivite() {
$html = "";
$html .= '<div class="flottant-gauche">'
.'<h2>Observations - Activité</h2>';
 
$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
$i = 1;
switch ($this->mode) {
case self::MODE_DEFAUT :
$html .= '<img class="stats" src="' . $url_service . '/UtilisationJournaliere/' . date("Y-m-d", (time() - 86400))
. '?serveur=' . $i++ . '" alt="Intensité d\'utilisation pour la journée d\'hier" />'
.'<img class="stats" src="' . $url_service . '/UtilisationJournaliere'
. '?serveur=' . $i++ . '" alt="Intensité d\'utilisation pour aujourd\'hui" />';
break;
case self::MODE_UTILISATEUR :
if ($this->authentifierUtilisateur()) {
$utilisateur = $this->getAuthIdentifiant();
$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
$html .= '<img class="stats" src="' . $url_service . '/UtilisationJournaliere/' . date("Y-m-d", (time() - 86400))
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Intensité d\'utilisation pour la journée d\'hier" />'
.'<img class="stats" src="' . $url_service . '/UtilisationJournaliere'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Intensité d\'utilisation pour aujourd\'hui" />';
} else {
$html .= "Impossible d'authentifier l'utilisateur";
}
break;
default:
$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
}
 
$html .= '</div>';
return $html;
}
 
public function executerObservationsDonnees() {
$html = "";
$html .= '<div class="flottant-gauche">'
.'<h2>Observations - Activité</h2>';
$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
$i = 1;
switch ($this->mode) {
case self::MODE_DEFAUT :
$html .= '<img class="stats" src="' . $url_service . '/NbreObsPublicVsPrivee'
. '?serveur=' . $i++ . '" alt="Nombre d\'observations publiques versus privées" />'
.'<img class="stats" src="' . $url_service . '/NbreObsIdVsTest'
. '?serveur=' . $i++ . '" alt="Nombre d\'observations identifiées versus tests" />'
.'<img class="stats" src="' . $url_service . '/NbreObsDetermineeVsInconnue'
. '?serveur=' . $i++ . '" alt="Nombre d\'observations déterminées versus inconnues" />'
. '<br/>'
.'<img class="stats" src="' . $url_service . '/NbreObsAvecIndicationGeo'
. '?serveur=' . $i++ . '" alt="Nombre d\'observations avec indications géographiques" />';
break;
case self::MODE_UTILISATEUR :
if ($this->authentifierUtilisateur()) {
$utilisateur = $this->getAuthIdentifiant();
$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
$html .= '<img class="stats" src="' . $url_service . '/NbreObsPublicVsPrivee'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations publiques versus privées" />'
.'<img class="stats" src="' . $url_service . '/NbreObsIdVsTest'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations identifiées versus tests" />'
.'<img class="stats" src="' . $url_service . '/NbreObsDetermineeVsInconnue'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations déterminées versus inconnues" />'
. '<br/>'
.'<img class="stats" src="' . $url_service . '/NbreObsAvecIndicationGeo'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations avec indications géographiques" />';
} else {
$html .= "Impossible d'authentifier l'utilisateur";
}
break;
default:
$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
}
$html .= '</div>';
return $html;
}
 
public function executerObservationsEvolution() {
$html = "";
$html .= '<div class="flottant-gauche">'
.'<h2>Observations - Activité</h2>';
$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
$i = 1;
switch ($this->mode) {
case self::MODE_DEFAUT :
$html .= '<img class="stats" src="' . $url_service . '/EvolObsParMoisGlissant'
. '?serveur=' . $i++ . '" alt="Évolutions des observation sur le dernier mois glissant" />'
.'<img class="stats" src="' . $url_service . '/EvolObsParMois'
. '?serveur=' . $i++ . '" alt="Évolutions des observation par mois" />'
. '<br/>'
.'<img class="stats" src="' . $url_service . '/EvolObsParAn'
. '?serveur=' . $i++ . '" alt="Évolutions des observation par an" />';
break;
case self::MODE_UTILISATEUR :
if ($this->authentifierUtilisateur()) {
$utilisateur = $this->getAuthIdentifiant();
$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
$html .= '<img class="stats" src="' . $url_service . '/EvolObsParMoisGlissant'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation sur le dernier mois glissant" />'
.'<img class="stats" src="' . $url_service . '/EvolObsParMois'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation par mois" />'
. '<br/>'
.'<img class="stats" src="' . $url_service . '/EvolObsParAn'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation par an" />';
} else {
$html .= "Impossible d'authentifier l'utilisateur";
}
break;
default:
$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
}
$html .= '</div>';
return $html;
}
 
public function executerUtilisateurs() {
$html = "";
$html .= '<div class="flottant-gauche">'
.'<h2>Observations - Activité</h2>';
 
$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
$i = 1;
switch ($this->mode) {
case self::MODE_DEFAUT :
$html .= '<img class="stats" src="' . $url_service . '/NuagePointsObsParHeureEtJourSemaine'
. '?serveur=' . $i++ . '" alt="Nuage de points d\'observation par heure et jour de la semaine" />'
. '<img class="stats" src="' . $url_service . '/NbreObsParUtilisateur'
. '?serveur=' . $i++ . '" alt="Nombre d\'observations par utilisateur" />'
. '<img class="stats" src="' . $url_service . '/NbreObsParUtilisateurEtTest'
. '?serveur=' . $i++ . '" alt="Nombre d\'observations par utilisateur et test" />'
. '<img class="stats" src="' . $url_service . '/EvolUtilisateurParMois'
. '?serveur=' . $i++ . '" alt="Évolution des utilisateurs par mois" />'
. '<img class="stats" src="' . $url_service . '/NuagePointsObsAnciennete'
. '?serveur=' . $i++ . '" alt="Répartition des utilisateurs en fonction du nombre d\'observations et de l\'ancienneté" />';
break;
case self::MODE_UTILISATEUR :
if ($this->authentifierUtilisateur()) {
$utilisateur = $this->getAuthIdentifiant();
$html .= '<img class="stats" src="' . $url_service . '/NuagePointsObsParHeureEtJourSemaine'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nuage de points d\'observation par heure et jour de la semaine" />';
} else {
$html .= "Impossible d'authentifier l'utilisateur";
}
break;
default:
$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
}
 
$html .= '</div>';
return $html;
}
 
public function executerImages() {
$html = "";
$html .= '<div class="flottant-gauche">'
.'<h2>Observations - Activité</h2>';
$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
$i = 1;
switch ($this->mode) {
case self::MODE_DEFAUT :
$html .= '<img class="stats" src="' . $url_service . '/EvolImgParMois'
. '?serveur=' . $i++ . '" alt="Évolutions du dépôt d\'images par mois" />'
. '<img class="stats" src="' . $url_service . '/EvolImgLieesParMois'
. '?serveur=' . $i++ . '" alt="Évolutions des images liées aux observations par mois" />';
break;
case self::MODE_UTILISATEUR :
if ($this->authentifierUtilisateur()) {
$utilisateur = $this->getAuthIdentifiant();
$html .= '<img class="stats" src="' . $url_service . '/EvolImgParMois'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions du dépôt d\'images par mois" />'
. '<img class="stats" src="' . $url_service . '/EvolImgLieesParMois'
. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des images liées aux observations par mois" />';
} else {
$html .= "Impossible d'authentifier l'utilisateur";
}
break;
default:
$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
}
$html .= '</div>';
return $html;
}
 
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;
}
private function recupererStatsTxtNombres() {
// Récupération des données au format Json
$service = "CelStatistiqueTxt/Nombres";
134,15 → 394,6
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";
170,24 → 421,6
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";
217,23 → 450,6
return (array) json_decode($json);
}
 
/**
* Aligne les contributeurs contre un mur et... euh... hum;
* Appelle le service pour obtenir les n principaux contributeurs depuis x jours,
* en termes d'observations ajoutées, d'images ajoutées, ou les deux
* Paramètres : "jours" (int), "nombre" (int), "critere" ("obs" ou "img" ou "")
* @return array
*/
public function executerGrandsContributeurs() {
$widget = null;
$widget['donnees'] = (array) $this->recupererStatsTxtGrandsContributeurs();
if (!is_null($widget)) {
$widget['squelette'] = 'stats_grands_contributeurs';
$widget['donnees']['url_service'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
}
return $widget;
}
 
private function recupererStatsTxtGrandsContributeurs() {
// Récupération des données au format Json
$service = "CelStatistiqueTxt/GrandsContributeurs";