Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2016 → Rev 2017

/trunk/services/modules/0.1/statistiques/StatistiquesParAnnee.php
112,7 → 112,7
'nbObsTC' => $this->getNbObsTC(),
'nbObsTCMPM' => $this->getNbObsTC(true),
'nbObsTCRetenue' => $this->getNbObsTCRetenue(),
//'nbObsTCRetenueMPM' => $this->getNbObsTCRetenue(true),
'nbObsTCRetenueMPM' => $this->getNbObsTCRetenue(true),
'nbObsTCConsensus' => $this->getNbObsTCConsensus(),
'nbObsTCConsensusMPM' => $this->getNbObsTCConsensus(true),
'nbObsTCConsensusNonValide' => $this->getNbObsTCConsensusNonValide(),
193,7 → 193,9
}
$requete .= " (certitude IN ('aDeterminer','douteux')))";
if ($mpm) {
$requete = $this->encapsulerMPM($requete, 'date_transmission');
// @TODO vérifier que grouper sur "date" est pertinent
// date_transmission n'est pas dispo pour grouper ici :-/
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
689,98 → 691,300
}
 
/**
* @TODO Statistiques sur les images de Pictoflora
* @REFLEXION aucune idée de ce qu'on met dedans
* Statistiques sur Sauvages de ma Rue (Sdmr)
* "MPM" = moyenne par mois
* - Nombre total d'observations sdmr
* - Nombre d'observations Sauvages de PACA
*/
private function getSdmr() {
return array(
'nbObsSdmrTotal' => $this->getNbObsSdmrTotal(),
'nbObsSdmrTotalMPM' => $this->getNbObsSdmrTotal(true),
'nbObsSdmrPACA' => $this->getNbObsSdmrPACA(),
'nbObsSdmrPACAMPM' => $this->getNbObsSdmrPACA(true)
);
}
 
/**
* Nombre total d'observations Sauvages de ma Rue
*/
private function getNbObsSdmrTotal($mpm=false) {
$requete = "SELECT COUNT(DISTINCT ce_observation) as nb_total FROM del_commentaire WHERE";
if ($this->annee != null) {
$requete .= ' YEAR(date) <= ' . $this->annee . ' AND';
}
$requete .= " ce_observation in (SELECT id_observation FROM del_observation WHERE mots_cles_texte like '%sauvages%')";
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Nombre total d'observations Sauvages de ma Rue en PACA
*/
private function getNbObsSdmrPACA($mpm=false) {
$requete = "SELECT COUNT(DISTINCT ce_observation) as nb_total FROM del_commentaire WHERE";
if ($this->annee != null) {
$requete .= ' YEAR(date) <= ' . $this->annee . ' AND';
}
$requete .= " ce_observation in (SELECT id_observation FROM del_observation"
. " WHERE SUBSTR(ce_zone_geo, 9 , 2) IN (13,04,05,06,83,84) AND mots_cles_texte like '%sauvages%')";
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Statistiques sur les images de Pictoflora
* "MPM" = Moyenne par mois
* - Nombre total d'images
* - Nombre d'images ayant au moins un mot-clé
* - Nombre d'images ayant au moins un vote
* - Nombre d'images de l'année ayant au moins un mot-clé
* - Nombre d'images de l'année ayant au moins un vote
*/
private function getImages() {
return array(
'annee' => $this->annee
'nbImagesTotal' => $this->getNbImagesTotal(),
'nbImagesTotalMPM' => $this->getNbImagesTotal(true),
'nbImagesAyantTag' => $this->getNbImagesAyantTag(),
'nbImagesAyantTagMPM' => $this->getNbImagesAyantTag(true),
'nbImagesAyantVote' => $this->getNbImagesAyantVote(),
'nbImagesAyantVoteMPM' => $this->getNbImagesAyantVote(true),
'nbImagesAnneeAyantTag' => $this->getNbImagesAnneeAyantTag(),
'nbImagesAnneeAyantTagMPM' => $this->getNbImagesAnneeAyantTag(true),
'nbImagesAnneeAyantVote' => $this->getNbImagesAnneeAyantVote(),
'nbImagesAnneeAyantVoteMPM' => $this->getNbImagesAnneeAyantVote(true),
);
}
 
/**
* @TODO Statistiques sur les mots-clés de Pictoflora
* @REFLEXION aucune idée de ce qu'on met dedans
* Nombre total d'images Pictoflora
*/
private function getTags() {
private function getNbImagesTotal($mpm=false) {
$requete = "SELECT COUNT(*) AS nb_total FROM del_image";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date_transmission) = ' . $this->annee;
}
if ($mpm) {
$requete = $this->encapsulerMPM($requete, 'date_transmission');
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Nombre total d'images Pictoflora ayant au moins un mot-clé
*/
private function getNbImagesAyantTag($mpm=false) {
$requete = "SELECT COUNT(DISTINCT ce_image) AS nb_total FROM del_image_tag";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Nombre total d'images Pictoflora ayant au moins un vote
*/
private function getNbImagesAyantVote($mpm=false) {
$requete = "SELECT COUNT(DISTINCT ce_image) AS nb_total FROM del_image_vote";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Nombre total d'images Pictoflora de l'année ayant au moins un mot-clé
*/
private function getNbImagesAnneeAyantTag($mpm=false) {
if ($this->annee == null) {
return null;
}
$requete = "SELECT COUNT(DISTINCT ce_image) AS nb_total FROM del_image_tag WHERE YEAR(date) = " . $this->annee
. " AND ce_image IN (SELECT id_image FROM del_image WHERE year(date_transmission) = " . $this->annee . ")";
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Nombre total d'images Pictoflora de l'année ayant au moins un vote
*/
private function getNbImagesAnneeAyantVote($mpm=false) {
if ($this->annee == null) {
return null;
}
$requete = "SELECT COUNT(DISTINCT ce_image) AS nb_total FROM del_image_vote WHERE YEAR(date) = " . $this->annee
. " AND ce_image IN (SELECT id_image FROM del_image WHERE year(date_transmission) = " . $this->annee . ")";
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Statistiques sur les votes et mots-clés (tags) de Pictoflora
* "MPM" = moyenne par mois
* - Nombre total de votes
* - Nombre total de mots clés
* - Nombre d'images ayant le mot-clé "defiPhoto"
*/
private function getTagsVotes() {
return array(
'annee' => $this->annee
'nbTagsTotal' => $this->getNbTagsTotal(),
'nbTagsTotalMPM' => $this->getNbTagsTotal(true),
'nbVotesTotal' => $this->getNbVotesTotal(),
'nbVotesTotalMPM' => $this->getNbVotesTotal(true),
// devra être paramétré par une liste de mots-clés
//'nbImagesTagDP' => $this->getNbImagesTagDP(),
//'nbImagesTagDPMPM' => $this->getNbImagesTagDP(true)
);
}
 
/**
* @TODO Statistiques sur les utilisateurs de Pictoflora
* - Nombre total d'utilisateurs
* - Nombre d'utilisateurs réguliers
* - Nombre d'utilisateurs prenant part au taggage ?
* - Nombre de participants actifs pour le mois, la semaine, l'année
* Nombre total de mots clés Pictoflora
*/
private function getNbTagsTotal($mpm=false) {
$requete = "SELECT COUNT(*) AS nb_total FROM del_image_tag";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Nombre total de votes Pictoflora
*/
private function getNbVotesTotal($mpm=false) {
$requete = "SELECT COUNT(*) AS nb_total FROM del_image_vote";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval(array_pop($resultat[0]));
}
 
/**
* Statistiques sur les utilisateurs de Pictoflora
* "MPM" = Moyenne par mois
* "AF" = Ayant fait
* - Nombre d'utilisateurs ayant ajouté un mot-clé
* - Nombre d'utilisateurs ayant voté
* - Nombre d'utilisateurs ayant fait une action
*/
private function getUtilisateursPf() {
$nbUtilisateursActifs = $this->getNbUtilisateursPfActifs();
return array(
'annee' => $this->annee,
'nbUtilisateursTotal' => $this->getNbUtilisateursPfTotal(),
'nbUtilisateursReguliers' => $this->getNbUtilisateursPfReguliers(),
'nbUtilisateursTaggant' => $this->getNbUtilisateursPfTaggant(),
'nbUtilisateursActifsAnnee' => $nbUtilisateursActifs['annee'],
'nbUtilisateursActifsMois' => $nbUtilisateursActifs['mois'],
'nbUtilisateursActifsSemaine' => $nbUtilisateursActifs['semaine']
'nbUtilisateursAFTag' => $this->getNbUtilisateursPfAFTag(),
'nbUtilisateursAFTagMPM' => $this->getNbUtilisateursPfAFTag(true),
'nbUtilisateursAFVote' => $this->getNbUtilisateursPfAFVote(),
'nbUtilisateursAFVoteMPM' => $this->getNbUtilisateursPfAFVote(true),
'nbUtilisateursAFAction' => $this->getNbUtilisateursPfAFAction(),
'nbUtilisateursAFActionMPM' => $this->getNbUtilisateursPfAFActionMPM()
);
}
 
/**
* @TODO Nombre total d'utilisateurs de Pictoflora
* @REFLEXION est-ce le même nombre que les utilisateurs d'Identiplante ?
* Nombre d'utilisateurs ayant ajouté un mot-clé
*/
private function getNbUtilisateursPfTotal() {
$requete = "";
private function getNbUtilisateursPfAFTag($mpm=false) {
$requete = "SELECT COUNT(DISTINCT ce_utilisateur) AS nb_total FROM del_image_tag";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval($resultat[0][0]);
return intval(array_pop($resultat[0]));
}
 
/**
* @TODO Nombre d'utilisateurs réguliers de Pictoflora
* @REFLEXION quelle différence avec getNbUtilisateursPfActifs() ?
* Nombre d'utilisateurs ayant fait un vote
*/
private function getNbUtilisateursPfReguliers() {
$requete = "";
private function getNbUtilisateursPfAFVote($mpm=false) {
$requete = "SELECT COUNT(DISTINCT ce_utilisateur) AS nb_total FROM del_image_vote";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
if ($mpm) {
$requete = $this->encapsulerMPM($requete);
}
$resultat = $this->bdd->recupererTous($requete);
return intval($resultat[0][0]);
return intval(array_pop($resultat[0]));
}
 
/**
* @TODO Nombre d'utilisateurs de Pictoflora prenant part aux votes
* Nombre d'utilisateurs ayant fait une action
*/
private function getNbUtilisateursPfTaggant() {
$requete = "";
private function getNbUtilisateursPfAFAction() {
$requete = "SELECT COUNT(*) AS nb_total FROM (SELECT ce_utilisateur FROM del_image_tag";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
$requete .= " UNION SELECT ce_utilisateur FROM del_image_vote";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
$requete .= ") AS action";
$resultat = $this->bdd->recupererTous($requete);
return intval($resultat[0][0]);
return intval(array_pop($resultat[0]));
}
 
/**
* @TODO Nombre de participants à Pictoflora actifs (pour le mois, la semaine, l'année)
* @REFLEXION retourner un array ? Si on demande une année spécifique, comment calculer
* l'activité du mois et de la semaine (on met la case à null ?)
* Moyenne par mois du nombre d'utilisateurs ayant fait une action
* -> n'est pas encapsulable par encapsulerMPM()
*/
private function getNbUtilisateursPfActifs() {
$requete = "";
private function getNbUtilisateursPfAFActionMPM() {
$requete = "SELECT avg(nb_total) FROM (SELECT COUNT(*) AS nb_total FROM (SELECT * FROM (SELECT ce_utilisateur, date FROM del_image_tag";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
$requete .= " UNION SELECT ce_utilisateur, date FROM del_image_vote";
if ($this->annee != null) {
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
}
$requete .= ") AS action GROUP BY ce_utilisateur) AS utildate GROUP BY CONCAT(year(date),month(date))) as truc";
$resultat = $this->bdd->recupererTous($requete);
return intval($resultat[0][0]);
return intval(array_pop($resultat[0]));
}
 
/**
* @TODO Liste des mots-clés les plus fréquents
* Liste des mots-clés les plus fréquents
*/
private function getListeMeilleursTags() {
$liste = array();
$requete = "";
$requete = "SELECT count(*) as occurrences, tag FROM del_image_tag";
if ($this->annee != null) {
$requete .= " WHERE YEAR(date) = " . $this->annee;
}
$requete .= " GROUP BY tag ORDER BY occurrences DESC LIMIT 20";
$resultat = $this->bdd->recupererTous($requete);
// Formater liste
// ...
 
return array(
'annee' => $this->annee,
'listeMeilleursTags' => $liste
'liste' => $resultat
);
}
 
788,16 → 992,22
* @TODO Liste des utilisateurs ayant ajouté le plus de mots-clés
*/
private function getListeMeilleursTagueurs() {
$liste = array();
$requete = "";
$resultat = array();
/*$requete = "SELECT * FROM (SELECT utilisateur_courriel, count(prop) as nb_prop"
. " FROM (SELECT `ce_proposition` as prop, COUNT(DISTINCT `id_vote`) AS nb_vote FROM del_commentaire_vote where";
if ($this->annee != null) {
$requete .= " year(`date`) = " . $this->annee . " AND";
}
$requete .= " valeur = 1 GROUP BY `ce_proposition`) AS vote, del_commentaire WHERE nb_vote > 3 AND prop = id_commentaire AND `ce_utilisateur` != 0 GROUP BY `ce_utilisateur`)"
. " AS utlisateurs WHERE nb_prop > 10 ORDER BY nb_prop DESC LIMIT 20";
$resultat = $this->bdd->recupererTous($requete);
// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir service CEL stats)
// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir widget CEL stats)
// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ?
// ...
*/
 
return array(
'annee' => $this->annee,
'listeMeilleursTagueurs' => $liste
'liste' => $resultat
);
}
 
812,217 → 1022,4
. " GROUP BY CONCAT(year($colonne),month($colonne)) ) AS nombre";
return $requeteEncapsulee;
}
 
/* ---------------- OBSOLETE -------------
// Retourne le nombre moyen d'observations non identifiées envoyées par mois, pour l'année $annee
private function getMoyenneObsSansNomParMois() {
$sqlTableTmp = "SELECT COUNT(*) AS compte, ".
" CONCAT(YEAR(date_transmission),'-',MONTH(date_transmission)) AS anneemois ".
"FROM del_observation ".
"WHERE (mots_cles_texte LIKE '%aDeterminer%' ".
"OR certitude = 'aDeterminer' ".
"OR certitude = 'douteux' ".
// Obs n'ayant pas de nom_sel_nn (détermination non choisie parmi le référentiel)
"OR nom_sel_nn IS NULL ".
"OR nom_sel_nn = 0 ".
"OR id_observation IN ({$this->getSqlObsSansNom()}) ".
') '.
(($this->annee !== null) ? "AND YEAR(date_transmission) = '{$this->annee}' " : '').
'GROUP BY anneemois '.
'ORDER BY anneemois DESC ';
$requete = "SELECT AVG(parMois.compte) AS moyenne FROM ($sqlTableTmp) AS parMois ".
' -- '.__FILE__.' : '.__LINE__;
$resultat = $this->bdd->recupererTous($requete);
return intval($resultat[0]['moyenne']);
}
private function getSqlObsSansNom() {
$sqlObsSansNom = "SELECT DISTINCT ce_observation ".
"FROM del_commentaire ".
"WHERE proposition_initiale = 1 ".
"AND (nom_sel_nn IS NULL OR nom_sel_nn = '') ";
return $sqlObsSansNom;
}
// Retourne la moyenne par mois sur l'année en cours, des propositions marquées comme "retenues"
// dont le dernier vote est dans l'année considérée (comptées en groupant par mois du dernier vote)
private function getMoyenneObsIdentifieesParMois() {
// Compte et date du dernier vote des propositions marquées comme "retenues"
$sqlTableTmp1 = "SELECT COUNT(*), MAX(dcv.date) AS maxdate ".
"FROM del_commentaire AS dc ".
" LEFT JOIN del_commentaire_vote dcv ON dcv.ce_proposition = dc.id_commentaire ".
" WHERE proposition_retenue = 1 ".
" GROUP BY dc.id_commentaire ".
(($this->annee !== null) ? "HAVING MAX(YEAR(dcv.date)) = '{$this->annee}' " : '');
$sqlTableTmp2 = 'SELECT COUNT(*) AS valideesparmois, '.
" CONCAT(YEAR(maxdate), '-', MONTH(maxdate)) AS anneemois ".
"FROM ($sqlTableTmp1) AS temp ".
"GROUP BY anneemois ";
$requete = "SELECT AVG(valideesparmois) AS moyenne FROM ($sqlTableTmp2) AS temp2 ".
' -- '.__FILE__.' : '.__LINE__;
$resultat = $this->bdd->recupererTous($requete);
return intval($resultat[0]['moyenne']);
}
// Version améliorée mais non optimale (prend en compte les consensus non validés)
// @TODO on devrait croiser les IDS pour ne pas prendre en compte les obs validées ou en
// consensus, mais qui datent des années précédentes
// @ACHTUNG mache pas, dépasse les 100% (voir Wiki)
private function getPourcentageObsIdentifieesFinAnneePlus() {
// Obs ayant atteint un consensus cette année
$requete = "SELECT COUNT(*) AS nombre ".
"FROM (SELECT id_observation, id_commentaire, id_vote, nbvotes ".
"FROM (SELECT do.id_observation, dc.id_commentaire, dcv.id_vote, COUNT(dcv.id_vote) AS nbvotes ".
"FROM del_commentaire AS dc ".
" LEFT JOIN del_observation AS do ON (do.id_observation = dc.ce_observation) ".
" LEFT JOIN del_commentaire_vote AS dcv ON (dc.id_commentaire = dcv.ce_proposition) ".
"AND dcv.valeur = 1 ".
"AND dc.proposition_retenue = 0 ".
"GROUP BY dc.id_commentaire ".
(($this->annee != null) ? " HAVING MAX(YEAR(dcv.date)) = '{$this->annee}' " : '').
" ) AS temp ".
"GROUP BY id_observation ".
") AS temp2 ".
' -- '.__FILE__.' : '.__LINE__;
$obsEnConsensus = $this->bdd->recupererTous($requete);
$oc = intval($obsEnConsensus[0]['nombre']);
// Obs ayant une "proposition retenue" cette année
$requete = "SELECT COUNT(*) AS nombre ".
"FROM (SELECT COUNT(DISTINCT id_observation), MAX(dcv.date) AS maxdate ".
"FROM del_commentaire AS dc ".
" LEFT JOIN del_commentaire_vote AS dcv ON (dcv.ce_proposition = dc.id_commentaire) ".
" LEFT JOIN del_observation AS do ON (do.id_observation = dc.ce_observation) ".
"WHERE proposition_retenue = 1 ".
(($this->annee != null) ? "AND YEAR(do.date_transmission) = '{$this->annee}' " : '').
"GROUP BY dc.id_commentaire ".
(($this->annee != null) ? "HAVING MAX(YEAR(dcv.date)) = '{$this->annee}' " : '').
") as temp ".
' -- '.__FILE__.' : '.__LINE__;
$nbObsValidees = $this->bdd->recupererTous($requete);
$ov = intval($nbObsValidees[0]['nombre']);
// Nombre d'obs sans nom soumises cette année
$requete = "SELECT COUNT(*) AS nombre ".
"FROM del_observation ".
"WHERE (mots_cles_texte LIKE '%aDeterminer%' ".
"OR certitude = 'aDeterminer' ".
"OR certitude = 'douteux' ".
"OR nom_sel_nn IS NULL ".
"OR nom_sel_nn = 0 ".
"OR id_observation IN ({$this->getSqlObsSansNom()})".
') '.
(($this->annee != null) ? "AND YEAR(date_transmission) = '{$this->annee}' " : '').
' -- '.__FILE__.' : '.__LINE__;
$nbObsSansNom = $this->bdd->recupererTous($requete);
$osn = intval($nbObsSansNom[0]['nombre']);
return array(
'observationsEnConsensus' => $oc,
'observationsValidees' => $ov,
'observationsSansNom' => $osn,
'pourcentage' => ($osn == 0 ? 0 : round(((($oc + $ov) / $osn) * 100), 2))
);
}
private function getPourcentageObsIdentifieesFinAnnee() {
$requete = "SELECT ( ".
"SELECT COUNT(*) FROM ( ".
"SELECT COUNT(DISTINCT id_observation), MAX(dcv.date) AS maxdate ".
"FROM del_commentaire AS dc ".
" LEFT JOIN del_commentaire_vote AS dcv ON (dcv.ce_proposition = dc.id_commentaire) ".
" LEFT JOIN del_observation AS do ON (do.id_observation = dc.ce_observation) ".
"WHERE proposition_retenue = 1 ".
(($this->annee != null) ? "AND YEAR(do.date_transmission) = '{$this->annee}' " : '').
"GROUP BY dc.id_commentaire ".
(($this->annee != null) ? "HAVING MAX(YEAR(dcv.date)) = '{$this->annee}' " : '').
") AS temp)".
" / ".
"(SELECT COUNT(*) ".
"FROM del_observation ".
"WHERE (mots_cles_texte LIKE '%aDeterminer%' ".
"OR certitude = 'aDeterminer' ".
"OR certitude = 'douteux' ".
"OR nom_sel_nn IS NULL ".
"OR nom_sel_nn = 0 ".
"OR id_observation IN ( ".
"SELECT DISTINCT ce_observation ".
"FROM del_commentaire ".
"WHERE proposition_initiale = 1 ".
"AND (nom_sel_nn IS NULL OR nom_sel_nn = '') ".
") ".
") ".
(($this->annee != null) ? "AND YEAR(date_transmission) = '{$this->annee}' " : '').
") * 100 AS pourcentage ".
' -- '.__FILE__.' : '.__LINE__;
$resultat = $this->bdd->recupererTous($requete);
return floatval($resultat[0]['pourcentage']);
}
// Retourne la moyenne sur l'année du nombre d'actions (commentaire ou vote) par jour
private function getMoyenneActionsParJour() {
// nombre de commentaires sur l'année
$sqlNbreCommentaires = 'SELECT COUNT(*) FROM del_commentaire '.
($this->annee != null ? "WHERE YEAR(date) = '{$this->annee}' " : '');
// nombre de votes sur l'année
$sqlNbreVotes = 'SELECT COUNT(*) FROM del_commentaire_vote '.
($this->annee != null ? "WHERE YEAR(date) = '{$this->annee}' " : '');
// nombre de jours écoulés dans l'année*
$sqlNbreJours = "SELECT 365 * (YEAR(now()) - MIN(YEAR(date)) + 1) FROM del_commentaire_vote WHERE YEAR(date) != 0 ";
if ($this->annee != null) {
$sqlNbreJours = "SELECT IF(YEAR(CURDATE()) = '{$this->annee}', DAYOFYEAR(CURDATE()), 365) ";
}
// nombre d'actions / nombre de jours
$requete = "SELECT ((($sqlNbreCommentaires) + ($sqlNbreVotes)) / ($sqlNbreJours)) AS moyenne ".
' -- '.__FILE__.' : '.__LINE__;
$resultat = $this->bdd->recupererTous($requete);
return intval($resultat[0]['moyenne']);
}
// Retourne le nombre et la liste des personnes ayant sur l'année une moyenne de participation par mois >= 1
private function getParticipants() {
// Faire la moyenne par utilisateur et par mois
$requete = "SELECT cal.nbmois, SUM(somme) / cal.nbmois as moyenne, ce_utilisateur, utilisateur_courriel ".
"FROM ".
// Compter le nombre de participations pour chaque utilisateur à chaque mois de cette année
"(SELECT COUNT(*) as somme, CONCAT(YEAR(date),'-',MONTH(date)) AS anneemois, ".
"ce_utilisateur, utilisateur_courriel, id_commentaire ".
"FROM del_commentaire ".
"WHERE ce_proposition = '' ".
"AND nom_sel_nn != '' ".
"AND nom_sel_nn IS NOT NULL ".
(($this->annee != null) ? " AND YEAR(date) = '{$this->annee}' " : '').
"GROUP BY anneemois, ce_utilisateur, utilisateur_courriel) AS ppm, ".
// Trouver le nombre de mois différents lors desquels les utilisateurs ont participé, cette année
// Pour l'année en cours par ex, retournera 2 si on est en février (voire un au début du mois).
"(SELECT COUNT(distinct CONCAT(YEAR(date),'-',MONTH(date))) AS nbmois ".
"FROM del_commentaire ".
"WHERE ce_proposition = '' ".
(($this->annee != null) ? "AND YEAR(date) = '{$this->annee}' " : '').
"AND nom_sel_nn != '' ".
"AND nom_sel_nn IS NOT NULL) AS cal ".
"GROUP BY ce_utilisateur, utilisateur_courriel ".
"HAVING SUM(somme) / cal.nbmois >= 1 ".
"ORDER BY moyenne ".
' -- '.__FILE__.' : '.__LINE__;
$resultat = $this->bdd->recupererTous($requete);
$cpt = count($resultat);
$retour = array(
'nombre' => intval($cpt),
'donnees' => $resultat
);
return $retour;
}
--------------- FIN OBSOLETE -------------- */
}
/trunk/widget/modules/stats/squelettes/tagsVotes.tpl.html
New file
0,0 → 1,16
<h2>Pictoflora - Mots-clés et votes</h2>
<?= isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "" ?>
<table class="table table-hover">
<thead>
<tr>
<th>Indicateur</th>
<th>Nombre</th>
<th>Moyenne par mois</th>
</tr>
</thead>
<tbody>
<tr><td>Nombre de mots-clés au total</td><td><?=$nbTagsTotal ?></td><td><?=$nbTagsTotalMPM ?></td></tr>
<tr><td>Nombre de votes au total</td><td><?=$nbVotesTotal ?></td><td><?=$nbVotesTotalMPM ?></td></tr>
<!-- <tr><td>Nombre d'images ayant le mot-clé "defiPhoto"</td><td><?=$nbImagesTagDP ?></td><td><?=$nbImagesTagDPMPM ?></td></tr> -->
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/listeMeilleursTags.tpl.html
1,2 → 1,15
<h2>Pictoflora - Mots clés les plus fréquents</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<h2>Pictoflora - les <?php echo count($liste) ?> mots clés les plus fréquents</h2>
<?= isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "" ?>
<table class="table table-hover">
<thead>
<tr>
<th>Mot-clé</th>
<th>Occurrences</th>
</tr>
</thead>
<tbody>
<?php foreach($liste as $mc): ?>
<tr><td><?= $mc['tag'] ?></td><td><?= $mc['occurrences'] ?></td></tr>
<?php endforeach; ?>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/utilisateursPf.tpl.html
1,10 → 1,16
<h2>Pictoflora - Utilisateurs</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<ul>
<li>Nombre total d'utilisateurs : <strong><?=$nbUtilisateursTotal ?></strong></li>
<li>Nombre d'utilisateurs réguliers : <strong><?=$nbUtilisateursReguliers ?></strong></li>
<li>Nombre d'utilisateurs ajoutant des mots clés : <strong><?=$nbUtilisateursTaggant ?></strong></li>
<li>ombre de participants actifs pour l'année : <strong><?=$nbUtilisateursActifsAnnee ?></strong></li>
<li>ombre de participants actifs pour le mois : <strong><?=$nbUtilisateursActifsMois ?></strong></li>
<li>ombre de participants actifs pour la semaine : <strong><?=$nbUtilisateursActifsSemaine ?></strong></li>
</ul>
<?= isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "" ?>
<table class="table table-hover">
<thead>
<tr>
<th>Indicateur</th>
<th>Nombre</th>
<th>Moyenne par mois</th>
</tr>
</thead>
<tbody>
<tr><td>Nombre d'utilisateurs ayant ajouté un mot-clé</td><td><?=$nbUtilisateursAFTag ?></td><td><?=$nbUtilisateursAFTagMPM ?></td></tr>
<tr><td>Nombre d'utilisateurs ayant voté</td><td><?=$nbUtilisateursAFVote ?></td><td><?=$nbUtilisateursAFVoteMPM ?></td></tr>
<tr><td>Nombre d'utilisateurs ayant fait une action</td><td><?=$nbUtilisateursAFAction ?></td><td><?=$nbUtilisateursAFActionMPM ?></td></tr>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/utilisateursIp.tpl.html
1,15 → 1,19
<h2>Identiplante - Utilisateurs</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<ul>
<li>Nombre total d'utilisateurs : <strong><?=$nbUtilisateursTotal ?></strong></li>
<li>Nombre d'utilisateurs ayant fait au moins une proposition : <strong><?=$nbUtilisateursAFProposition ?></strong></li>
<li>Moyenne par mois du nombre d'utilisateurs ayant fait au moins une proposition : <strong><?=$nbUtilisateursAFPropositionMPM ?></strong></li>
<li>Nombre d'utilisateurs ayant fait au moins un commentaire : <strong><?=$nbUtilisateursAFCommentaire ?></strong></li>
<li>Moyenne par mois du nombre d'utilisateurs ayant fait au moins un commentaire : <strong><?=$nbUtilisateursAFCommentaireMPM ?></strong></li>
<li>Nombre d'utilisateurs identifiés prenant part aux votes : <strong><?=$nbUtilisateursAFVote ?></strong></li>
<li>Moyenne par mois du nombre d'utilisateurs identifiés prenant part aux votes : <strong><?=$nbUtilisateursAFVoteMPM ?></strong></li>
<li>Nombre d'utilisateurs anonymes prenant part aux votes : <strong><?=$nbUtilisateursAnonymesAFVote ?></strong></li>
<li>Moyenne par mois du nombre d'utilisateurs anonymes prenant part aux votes : <strong><?=$nbUtilisateursAnonymesAFVoteMPM ?></strong></li>
<li>Nombre d'utilisateurs ayant fait une action : <strong><?=$nbUtilisateursAFActionMPM ?></strong></li>
<li>Moyenne par mois du nombre d'utilisateurs ayant fait une action : <strong><?=$nbUtilisateursAFActionMPM ?></strong></li>
</ul>
<table class="table table-hover">
<thead>
<tr>
<th>Indicateur</th>
<th>Nombre</th>
<th>Moyenne par mois</th>
</tr>
</thead>
<tbody>
<tr><td>Nombre total d'utilisateurs</td><td><?=$nbUtilisateursTotal ?></td><td>-</td></tr>
<tr><td>Nombre d'utilisateurs ayant fait au moins une proposition</td><td><?=$nbUtilisateursAFProposition ?></td><td><?=$nbUtilisateursAFPropositionMPM ?></td></tr>
<tr><td>Nombre d'utilisateurs ayant fait au moins un commentaire</td><td><?=$nbUtilisateursAFCommentaire ?></td><td><?=$nbUtilisateursAFCommentaireMPM ?></td></tr>
<tr><td>Nombre d'utilisateurs identifiés prenant part aux votes</td><td><?=$nbUtilisateursAFVote ?></td><td><?=$nbUtilisateursAFVoteMPM ?></td></tr>
<tr><td>Nombre d'utilisateurs anonymes prenant part aux votes</td><td><?=$nbUtilisateursAnonymesAFVote ?></td><td><?=$nbUtilisateursAnonymesAFVoteMPM ?></td></tr>
<tr><td>Nombre d'utilisateurs ayant fait une action</td><td><?=$nbUtilisateursAFActionMPM ?></td><td><?=$nbUtilisateursAFActionMPM ?></td></tr>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/listeMeilleursVoteurs.tpl.html
1,8 → 1,15
<h2>Identiplante - les <?= count($liste) ?> utilisateurs ayant fait le plus de votes positifs</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<?php
foreach ($liste as $u) {
print_r($u);
echo "<br/><br/>";
}
?>
<table class="table table-hover">
<thead>
<tr>
<th>Contributeur</th>
<th>Nombre de propositions</th>
</tr>
</thead>
<tbody>
<?php foreach($liste as $util): ?>
<tr><td><?= $util['courriel'] ?></td><td><?= $util['nombre'] ?></td></tr>
<?php endforeach; ?>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/listeMeilleursProposeurs.tpl.html
1,8 → 1,15
<h2>Identiplante - les <?= count($liste) ?> utilisateurs ayant fait le plus de propositions votées positivement</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<?php
foreach ($liste as $u) {
print_r($u);
echo "<br/><br/>";
}
?>
<table class="table table-hover">
<thead>
<tr>
<th>Contributeur</th>
<th>Nombre de propositions</th>
</tr>
</thead>
<tbody>
<?php foreach($liste as $util): ?>
<tr><td><?= $util['utilisateur_courriel'] ?></td><td><?= $util['nb_prop'] ?></td></tr>
<?php endforeach; ?>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/listeProposeursReguliers.tpl.html
1,8 → 1,15
<h2>Identiplante - les <?= count($liste) ?> utilisateurs ayant fait au moins une proposition par mois, sur toute la période</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<?php
foreach ($liste as $u) {
print_r($u);
echo "<br/><br/>";
}
?>
<table class="table table-hover">
<thead>
<tr>
<th>Contributeur</th>
<th>Nombre moyen de propositions par mois</th>
</tr>
</thead>
<tbody>
<?php foreach($liste as $util): ?>
<tr><td><?= $util['utilisateur_courriel'] != '' ? $util['utilisateur_courriel'] : "contributeurs anonymes" ?></td><td><?= intval($util['moyenne']) ?></td></tr>
<?php endforeach; ?>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/images.tpl.html
1,5 → 1,18
<h2>Pictoflora - Images</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<ul>
<li>Nombre d'images au total : <strong><?=$nbImagesTotal ?></strong></li>
</ul>
<?= isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "" ?>
<table class="table table-hover">
<thead>
<tr>
<th>Indicateur</th>
<th>Nombre</th>
<th>Moyenne par mois</th>
</tr>
</thead>
<tbody>
<tr><td>Nombre total d'images</td><td><?=$nbImagesTotal ?></td><td><?=$nbImagesTotalMPM ?></td></tr>
<tr><td>Nombre d'images ayant au moins un mot-clé</td><td><?=$nbImagesAyantTag ?></td><td><?=$nbImagesAyantTagMPM ?></td></tr>
<tr><td>Nombre d'images ayant au moins un vote</td><td><?=$nbImagesAyantVote ?></td><td><?=$nbImagesAyantVoteMPM ?></td></tr>
<tr><td>Nombre d'images de l'année ayant au moins un mot-clé</td><td><?=$nbImagesAnneeAyantTag ?></td><td><?=$nbImagesAnneeAyantTagMPM ?></td></tr>
<tr><td>Nombre d'images de l'année ayant au moins un vote</td><td><?=$nbImagesAnneeAyantVote ?></td><td><?=$nbImagesAnneeAyantVoteMPM ?></td></tr>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/sdmr.tpl.html
New file
0,0 → 1,15
<h2>Identiplante - Sauvages de ma Rue</h2>
<?= isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "" ?>
<table class="table table-hover">
<thead>
<tr>
<th>Indicateur</th>
<th>Nombre</th>
<th>Moyenne par mois</th>
</tr>
</thead>
<tbody>
<tr><td>Nombre d'observations Sauvages de ma Rue au total</td><td><?=$nbObsSdmrTotal ?></td><td><?=$nbObsSdmrTotalMPM ?></td></tr>
<tr><td>Nombre d'observations Sauvages de PACA au total</td><td><?=$nbObsSdmrPACA ?></td><td><?=$nbObsSdmrPACAMPM ?></td></tr>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/propositions.tpl.html
1,23 → 1,23
<h2>Identiplante - Propositions</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<ul>
<li>Nombre moyen d'actions par jour : <strong><?=$nbMoyenActionsParJour ?></strong></li>
<li>Nombre de votes au total : <strong><?=$nbVotes ?></strong></li>
<li>Moyenne par mois du nombre de votes au total : <strong><?=$nbVotesMPM ?></strong></li>
<li>Nombre de commentaires au total : <strong><?=$nbCommentaires ?></strong></li>
<li>Moyenne par mois du nombre de commentaires au total : <strong><?=$nbCommentairesMPM ?></strong></li>
<li>Nombre de propositions au total : <strong><?=$nbPropositionsToutesObs ?></strong></li>
<li>Moyenne par mois du nombre de propositions au total : <strong><?=$nbPropositionsToutesObsMPM ?></strong></li>
<li>Nombre de propositions retenues : <strong><?=$nbPropositionsRetenuesToutesObs ?></strong></li>
<li>Moyenne par mois du nombre de propositions retenues : <strong><?=$nbPropositionsRetenuesToutesObsMPM ?></strong></li>
<li>Nombre de propositions en consensus : <strong><?=$nbPropositionsConsensusToutesObs ?></strong></li>
<li>Moyenne par mois du nombre de propositions en consensus : <strong><?=$nbPropositionsConsensusToutesObsMPM ?></strong></li>
<?php if($annee != null) : ?>
<li>Nombre de propositions de l'année au total : <strong><?=$nbPropositionsObsAnnee ?></strong></li>
<li>Moyenne par mois du nombre de propositions de l'année au total : <strong><?=$nbPropositionsObsAnneeMPM ?></strong></li>
<li>Nombre de propositions de l'année retenues : <strong><?=$nbPropositionsRetenuesObsAnnee ?></strong></li>
<li>Moyenne par mois du nombre de propositions de l'année retenues : <strong><?=$nbPropositionsRetenuesObsAnneeMPM ?></strong></li>
<li>Nombre de propositions de l'année en consensus : <strong><?=$nbPropositionsConsensusObsAnnee ?></strong></li>
<li>Moyenne par mois du nombre de propositions de l'année en consensus : <strong><?=$nbPropositionsConsensusObsAnneeMPM ?></strong></li>
<?= isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "" ?>
<table class="table table-hover"><thead>
<tr>
<th>Indicateur</th>
<th>Nombre</th>
<th>Moyenne par mois</th>
</tr>
</thead>
<tbody>
<tr><td>Nombre moyen d'actions par jour</td><td><?=$nbMoyenActionsParJour ?></td><td>-</td></tr>
<tr><td>Nombre de votes au total</td><td><?=$nbVotes ?></td><td><?=$nbVotesMPM ?></td></tr>
<tr><td>Nombre de commentaires au total</td><td><?=$nbCommentaires ?></td><td><?=$nbCommentairesMPM ?></td></tr>
<tr><td>Nombre de propositions au total</td><td><?=$nbPropositionsToutesObs ?></td><td><?=$nbPropositionsToutesObsMPM ?></td></tr>
<tr><td>Nombre de propositions retenues</td><td><?=$nbPropositionsRetenuesToutesObs ?></td><td><?=$nbPropositionsRetenuesToutesObsMPM ?></td></tr>
<tr><td>Nombre de propositions en consensus</td><td><?=$nbPropositionsConsensusToutesObs ?></td><td><?=$nbPropositionsConsensusToutesObsMPM ?></td></tr>
<?php if ($annee != null): ?>
<tr><td>Nombre de propositions de l'année au total</td><td><?=$nbPropositionsObsAnnee ?></td><td><?=$nbPropositionsObsAnneeMPM ?></td></tr>
<tr><td>Nombre de propositions de l'année retenues</td><td><?=$nbPropositionsRetenuesObsAnnee ?></td><td><?=$nbPropositionsRetenuesObsAnneeMPM ?></td></tr>
<tr><td>Nombre de propositions de l'année en consensus</td><td><?=$nbPropositionsConsensusObsAnnee ?></td><td><?=$nbPropositionsConsensusObsAnneeMPM ?></td></tr>
<?php endif; ?>
</ul>
</tbody>
</table>
/trunk/widget/modules/stats/squelettes/stats_tout.tpl.html
80,10 → 80,11
<li><a href="#" data-portion="liste-meilleurs-proposeurs">Utilisateurs dont les propositions ont été votées positivement</a></li>
<li><a href="#" data-portion="liste-meilleurs-voteurs">Utilisateurs ayant fait le plus de votes positifs</a></li>
<li><a href="#" data-portion="liste-proposeurs-reguliers">Utilisateurs ayant fait au moins une proposition par mois</a></li>
<li><a href="#" data-portion="sdmr">Sauvages de ma rue</a></li>
<br/>
<li class="separateur"># Pictoflora</li>
<li><a href="#" data-portion="images">Images</a></li>
<li><a href="#" data-portion="tags">Mots-clés</a></li>
<li><a href="#" data-portion="tags-votes">Mots-clés et votes</a></li>
<li><a href="#" data-portion="utilisateurs-pf">Utilisateurs et fréquentation</a></li>
<li><a href="#" data-portion="liste-meilleurs-tags">Mots-clés les plus ajoutés</a></li>
<li><a href="#" data-portion="liste-meilleurs-tagueurs">Utilisateurs ayant ajouté le plus de mots-clés</a></li>
109,9 → 110,11
</div>
<div class="resultat" id="emplacement-resultat-liste-proposeurs-reguliers">
</div>
<div class="resultat" id="emplacement-resultat-sdmr">
</div>
<div class="resultat" id="emplacement-resultat-images">
</div>
<div class="resultat" id="emplacement-resultat-tags">
<div class="resultat" id="emplacement-resultat-tags-votes">
</div>
<div class="resultat" id="emplacement-resultat-utilisateurs-pf">
</div>
/trunk/widget/modules/stats/squelettes/observations.tpl.html
1,10 → 1,20
<h2>Identiplante - Observations</h2>
<?=(isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "")?>
<ul>
<li>Nombre moyen d'observations non identifiées soumises chaque mois : <strong><?=$moyenneObsSansNomParMois ?></strong></li>
<li>Nombre moyen d'observations identifiées chaque mois : <strong><?=$moyenneObsIdentifieesParMois ?></strong></li>
<li>Pourcentage des observations identifiees et validées à la fin de l'annee : <strong><?=number_format($pourcentageObsIdentifieesEnFinDAnnee, 0, ',', ' ') ?> %</strong></li>
<li>Pourcentage des observations ayant atteint un consensus à la fin de l'annee : <strong><?=number_format($pourcentageObsIdentifieesEnFinDAnneePlusPlus, 0, ',', ' ') ?> %</strong></li>
<li>Nombre moyen d'actions (commentaires et votes) par jour : <strong><?=$moyenneActionsParJour ?></strong></li>
<li>Nombre de personnes envoyant au moins une proposition par mois : <strong><?=$personnesEnvoyantUnePropositionParMois ?></strong></li>
</ul>
<?= isset($annee) ? "<h4>Pour l'année " . $annee . "</h4>" : "" ?>
<table class="table table-hover">
<thead>
<tr>
<th>Indicateur</th>
<th>Nombre</th>
<th>Moyenne par mois</th>
</tr>
</thead>
<tbody>
<tr><td>Nombre d'observations au total</td><td><?=$nbObsTotal ?></td><td><?=$nbObsTotalMPM ?></td></tr>
<tr><td>Nombre d'obs sans identification (ou tag ou certitude)</td><td><?=$nbObsSansIdentOuTC ?></td><td><?=$nbObsSansIdentOuTCMPM ?></td></tr>
<tr><td>Nombre d'obs sans identification</td><td><?=$nbObsSansIdent ?></td><td><?=$nbObsSansIdentMPM ?></td></tr>
<tr><td>Nombre d'obs avec tag à déterminer ou certitude incertaine</td><td><?=$nbObsTC ?></td><td><?=$nbObsTCMPM ?></td></tr>
<tr><td>Nombre d'obs avec tag à déterminer ou certitude incertaine et retenue</td><td><?=$nbObsTCRetenue ?></td><td><?=$nbObsTCRetenueMPM ?></td></tr>
<tr><td>Nombre d'obs avec tag à déterminer ou certitude incertaine et avec consensus</td><td><?=$nbObsTCConsensus ?></td><td><?=$nbObsTCConsensusMPM ?></td></tr>
<tr><td>Nombre d'obs avec tag à déterminer ou certitude incertaine et avec consensus mais non validées</td><td><?=$nbObsTCConsensusNonValide ?></td><td><?=$nbObsTCConsensusNonValideMPM ?></td></tr>
</tbody>
</table>