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