Line 72... |
Line 72... |
72 |
$classeNom = 'get'.str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
|
72 |
$classeNom = 'get'.str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
|
73 |
return $classeNom;
|
73 |
return $classeNom;
|
74 |
}
|
74 |
}
|
Line 75... |
Line 75... |
75 |
|
75 |
|
76 |
/**
|
- |
|
77 |
* Prend en paramêtre un tableau de courriels et retourne après avoir intérogé un service we de l'annuaire
|
- |
|
78 |
* une tableau avec en clé le courriel et en valeur, un tableau associatif :
|
- |
|
79 |
* - nom : le nom de l'utilisateur
|
- |
|
80 |
* - prenom : le prénom de l'utilisateur.
|
- |
|
81 |
* @TODO ne gère pas le pseudo, qui devrait être retourné en lieu et place des nom / prénom s'il est utilisé et renseigné
|
- |
|
82 |
* @param array $courriels un tableau de courriels pour lesquels il faut recherche le prénom et nom.
|
- |
|
83 |
*/
|
- |
|
84 |
protected function recupererUtilisateursNomPrenom(Array $courriels) {
|
- |
|
85 |
// Récupération des données au format Json
|
- |
|
86 |
$service = "utilisateur/prenom-nom-par-courriel/".implode(',', $courriels);
|
- |
|
87 |
$url = sprintf($this->config['chemins']['baseURLServicesAnnuaireTpl'], $service);
|
- |
|
88 |
$json = $this->getDao()->consulter($url);
|
- |
|
89 |
return (array) json_decode($json);
|
- |
|
90 |
}
|
- |
|
91 |
|
- |
|
92 |
/**
|
76 |
/**
|
93 |
* Statistiques sur les observations
|
77 |
* Statistiques sur les observations
|
94 |
* "MPM" = moyenne par mois
|
78 |
* "MPM" = moyenne par mois
|
95 |
* "TC" = tag à déterminer ou certitude incertaine
|
79 |
* "TC" = tag à déterminer ou certitude incertaine
|
96 |
* - Nombre d'observations au total
|
80 |
* - Nombre d'observations au total
|
Line 623... |
Line 607... |
623 |
/**
|
607 |
/**
|
624 |
* Liste des utilisateurs dont les propositions ont été votées positivement
|
608 |
* Liste des utilisateurs dont les propositions ont été votées positivement
|
625 |
*/
|
609 |
*/
|
626 |
private function getListeMeilleursProposeurs() {
|
610 |
private function getListeMeilleursProposeurs() {
|
627 |
$liste = array();
|
611 |
$liste = array();
|
628 |
$requete = "SELECT * FROM (SELECT utilisateur_courriel, count(prop) as nb_prop"
|
612 |
$requete = "SELECT * FROM (SELECT utilisateur_courriel, ce_utilisateur, count(prop) as nb_prop"
|
629 |
. " FROM (SELECT `ce_proposition` as prop, COUNT(DISTINCT `id_vote`) AS nb_vote FROM del_commentaire_vote where";
|
613 |
. " FROM (SELECT `ce_proposition` as prop, COUNT(DISTINCT `id_vote`) AS nb_vote FROM del_commentaire_vote where";
|
630 |
if ($this->annee != null) {
|
614 |
if ($this->annee != null) {
|
631 |
$requete .= " year(`date`) = " . $this->annee . " AND";
|
615 |
$requete .= " year(`date`) = " . $this->annee . " AND";
|
632 |
}
|
616 |
}
|
633 |
$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`)"
|
617 |
$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`)"
|
634 |
. " AS utlisateurs WHERE nb_prop > 10 ORDER BY nb_prop DESC LIMIT 20";
|
618 |
. " AS utlisateurs WHERE nb_prop > 10 ORDER BY nb_prop DESC LIMIT 20";
|
635 |
$resultat = $this->bdd->recupererTous($requete);
|
619 |
$resultat = $this->bdd->recupererTous($requete);
|
- |
|
620 |
|
636 |
// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir widget CEL stats)
|
621 |
// Formatage de la liste avec les intitulés des utilisateurs
|
- |
|
622 |
$ids = array_column($resultat, 'ce_utilisateur');
|
637 |
// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ?
|
623 |
$ids = array_filter($ids, 'is_numeric'); // on oublie les ids de session et autres facéties
|
- |
|
624 |
$infosUtilisateurs = $this->recupererIntitulesUtilisateursParIds($ids, true);
|
- |
|
625 |
foreach ($resultat as &$util) {
|
- |
|
626 |
$ce = $util['ce_utilisateur'];
|
- |
|
627 |
$util['intitule'] = isset($infosUtilisateurs[$ce]['intitule']) ? $infosUtilisateurs[$ce]['intitule'] : null;
|
638 |
// ...
|
628 |
}
|
Line 639... |
Line 629... |
639 |
|
629 |
|
640 |
return array(
|
630 |
return array(
|
641 |
'liste' => $resultat
|
631 |
'liste' => $resultat
|
642 |
);
|
632 |
);
|
Line 646... |
Line 636... |
646 |
* Liste des utilisateurs ayant fait le plus de votes positifs
|
636 |
* Liste des utilisateurs ayant fait le plus de votes positifs
|
647 |
* @TODO et le plus de votes sur des propositions retenues (ou ayant atteint un consensus)
|
637 |
* @TODO et le plus de votes sur des propositions retenues (ou ayant atteint un consensus)
|
648 |
*/
|
638 |
*/
|
649 |
private function getListeMeilleursVoteurs() {
|
639 |
private function getListeMeilleursVoteurs() {
|
650 |
$liste = array();
|
640 |
$liste = array();
|
651 |
$requete = "SELECT * FROM (SELECT courriel, COUNT(DISTINCT `id_vote`) AS nombre FROM del_commentaire_vote, del_utilisateur where";
|
641 |
$requete = "SELECT * FROM (SELECT courriel, ce_utilisateur, COUNT(DISTINCT `id_vote`) AS nombre FROM del_commentaire_vote, del_utilisateur where";
|
652 |
if ($this->annee != null) {
|
642 |
if ($this->annee != null) {
|
653 |
$requete .= " year(`date`) = " . $this->annee . " AND";
|
643 |
$requete .= " year(`date`) = " . $this->annee . " AND";
|
654 |
}
|
644 |
}
|
655 |
$requete .= " ce_utilisateur = id_utilisateur AND valeur = 1 GROUP BY `ce_utilisateur`) AS utilisateurs WHERE nombre > 100 ORDER BY nombre DESC LIMIT 20";
|
645 |
$requete .= " ce_utilisateur = id_utilisateur AND valeur = 1 GROUP BY `ce_utilisateur`) AS utilisateurs WHERE nombre > 100 ORDER BY nombre DESC LIMIT 20";
|
656 |
$resultat = $this->bdd->recupererTous($requete);
|
646 |
$resultat = $this->bdd->recupererTous($requete);
|
- |
|
647 |
|
657 |
// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir widget CEL stats)
|
648 |
// Formatage de la liste avec les intitulés des utilisateurs
|
- |
|
649 |
$ids = array_column($resultat, 'ce_utilisateur');
|
658 |
// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ?
|
650 |
$ids = array_filter($ids, 'is_numeric'); // on oublie les ids de session et autres facéties
|
- |
|
651 |
$infosUtilisateurs = $this->recupererIntitulesUtilisateursParIds($ids, true);
|
- |
|
652 |
foreach ($resultat as &$util) {
|
- |
|
653 |
$ce = $util['ce_utilisateur'];
|
- |
|
654 |
$util['intitule'] = isset($infosUtilisateurs[$ce]['intitule']) ? $infosUtilisateurs[$ce]['intitule'] : null;
|
659 |
// ...
|
655 |
}
|
Line 660... |
Line 656... |
660 |
|
656 |
|
661 |
return array(
|
657 |
return array(
|
662 |
'liste' => $resultat
|
658 |
'liste' => $resultat
|
663 |
);
|
659 |
);
|
Line 679... |
Line 675... |
679 |
$requete .= " year(`date`) = " . $this->annee . " AND";
|
675 |
$requete .= " year(`date`) = " . $this->annee . " AND";
|
680 |
}
|
676 |
}
|
681 |
$requete .= " ce_proposition = '' 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"
|
677 |
$requete .= " ce_proposition = '' 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"
|
682 |
. " ORDER BY moyenne DESC"; // @ TODO limite ?
|
678 |
. " ORDER BY moyenne DESC"; // @ TODO limite ?
|
683 |
$resultat = $this->bdd->recupererTous($requete);
|
679 |
$resultat = $this->bdd->recupererTous($requete);
|
- |
|
680 |
|
684 |
// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir widget CEL stats)
|
681 |
// Formatage de la liste avec les intitulés des utilisateurs
|
- |
|
682 |
$ids = array_column($resultat, 'ce_utilisateur');
|
685 |
// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ?
|
683 |
$ids = array_filter($ids, 'is_numeric'); // on oublie les ids de session et autres facéties
|
- |
|
684 |
$infosUtilisateurs = $this->recupererIntitulesUtilisateursParIds($ids, true);
|
- |
|
685 |
foreach ($resultat as &$util) {
|
- |
|
686 |
$ce = $util['ce_utilisateur'];
|
- |
|
687 |
$util['intitule'] = isset($infosUtilisateurs[$ce]['intitule']) ? $infosUtilisateurs[$ce]['intitule'] : null;
|
686 |
// ...
|
688 |
}
|
Line 687... |
Line 689... |
687 |
|
689 |
|
688 |
return array(
|
690 |
return array(
|
689 |
'liste' => $resultat
|
691 |
'liste' => $resultat
|
690 |
);
|
692 |
);
|
Line 987... |
Line 989... |
987 |
'liste' => $resultat
|
989 |
'liste' => $resultat
|
988 |
);
|
990 |
);
|
989 |
}
|
991 |
}
|
Line 990... |
Line 992... |
990 |
|
992 |
|
991 |
/**
|
993 |
/**
|
992 |
* @TODO Liste des utilisateurs ayant ajouté le plus de mots-clés
|
994 |
* Liste des utilisateurs ayant ajouté le plus de mots-clés
|
993 |
*/
|
995 |
*/
|
994 |
private function getListeMeilleursTagueurs() {
|
996 |
private function getListeMeilleursTagueurs() {
|
995 |
$resultat = array();
|
997 |
$resultat = array();
|
996 |
/*$requete = "SELECT * FROM (SELECT utilisateur_courriel, count(prop) as nb_prop"
|
- |
|
997 |
. " FROM (SELECT `ce_proposition` as prop, COUNT(DISTINCT `id_vote`) AS nb_vote FROM del_commentaire_vote where";
|
998 |
$requete = "SELECT count(*) as nombre, IF (ce_utilisateur REGEXP '^-?[0-9]+$', ce_utilisateur, null) as ce_util FROM del_image_tag";
|
998 |
if ($this->annee != null) {
|
999 |
if ($this->annee != null) {
|
999 |
$requete .= " year(`date`) = " . $this->annee . " AND";
|
1000 |
$requete .= " WHERE year(date) = " . $this->annee;
|
1000 |
}
|
- |
|
1001 |
$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`)"
|
1001 |
}
|
1002 |
. " AS utlisateurs WHERE nb_prop > 10 ORDER BY nb_prop DESC LIMIT 20";
|
1002 |
$requete .= " GROUP BY ce_util ORDER BY nombre DESC LIMIT 20";
|
- |
|
1003 |
$resultat = $this->bdd->recupererTous($requete);
|
1003 |
$resultat = $this->bdd->recupererTous($requete);
|
1004 |
|
- |
|
1005 |
// Formatage de la liste avec les intitulés des utilisateurs
|
1004 |
// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir widget CEL stats)
|
1006 |
$ids = array_column($resultat, 'ce_util');
|
- |
|
1007 |
$ids = array_filter($ids, 'is_numeric'); // on oublie les ids de session et autres facéties
|
- |
|
1008 |
$infosUtilisateurs = $this->recupererIntitulesUtilisateursParIds($ids, true);
|
1005 |
// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ?
|
1009 |
foreach ($resultat as &$util) {
|
- |
|
1010 |
$ce = $util['ce_util'];
|
1006 |
// ...
|
1011 |
$util['intitule'] = isset($infosUtilisateurs[$ce]['intitule']) ? $infosUtilisateurs[$ce]['intitule'] : null;
|
Line 1007... |
Line 1012... |
1007 |
*/
|
1012 |
}
|
1008 |
|
1013 |
|
1009 |
return array(
|
1014 |
return array(
|
1010 |
'liste' => $resultat
|
1015 |
'liste' => $resultat
|
Line 1020... |
Line 1025... |
1020 |
$requeteEncapsulee = "SELECT AVG(nb_total) as moyenne FROM ("
|
1025 |
$requeteEncapsulee = "SELECT AVG(nb_total) as moyenne FROM ("
|
1021 |
. $requete
|
1026 |
. $requete
|
1022 |
. " GROUP BY CONCAT(year($colonne),month($colonne)) ) AS nombre";
|
1027 |
. " GROUP BY CONCAT(year($colonne),month($colonne)) ) AS nombre";
|
1023 |
return $requeteEncapsulee;
|
1028 |
return $requeteEncapsulee;
|
1024 |
}
|
1029 |
}
|
- |
|
1030 |
|
- |
|
1031 |
/**
|
- |
|
1032 |
* Prend en paramêtre un tableau d'identifiants utilisateurs et retourne après avoir interrogé un
|
- |
|
1033 |
* webservice de l'annuaire un tableau avec en clé l'id et en valeur l'intitulé
|
- |
|
1034 |
* @param array $ids un tableau d'ids
|
- |
|
1035 |
*/
|
- |
|
1036 |
protected function recupererIntitulesUtilisateursParIds(array $ids) {
|
- |
|
1037 |
$service = "utilisateur/infos-par-id/" . implode(',', $ids);
|
- |
|
1038 |
$url = $this->conteneur->getParametre('urlServiceBaseAnnuaire') . $service;
|
- |
|
1039 |
//echo "URL: $url\n\n";
|
- |
|
1040 |
$json = $this->conteneur->getRestClient()->consulter($url);
|
- |
|
1041 |
$resultat = json_decode($json, true);
|
- |
|
1042 |
return $resultat;
|
- |
|
1043 |
}
|
1025 |
}
|
1044 |
}
|
1026 |
|
1045 |
|