74,22 → 74,6 |
} |
|
/** |
* Prend en paramêtre un tableau de courriels et retourne après avoir intérogé un service we de l'annuaire |
* une tableau avec en clé le courriel et en valeur, un tableau associatif : |
* - nom : le nom de l'utilisateur |
* - prenom : le prénom de l'utilisateur. |
* @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é |
* @param array $courriels un tableau de courriels pour lesquels il faut recherche le prénom et nom. |
*/ |
protected function recupererUtilisateursNomPrenom(Array $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); |
} |
|
/** |
* Statistiques sur les observations |
* "MPM" = moyenne par mois |
* "TC" = tag à déterminer ou certitude incertaine |
625,7 → 609,7 |
*/ |
private function getListeMeilleursProposeurs() { |
$liste = array(); |
$requete = "SELECT * FROM (SELECT utilisateur_courriel, count(prop) as nb_prop" |
$requete = "SELECT * FROM (SELECT utilisateur_courriel, ce_utilisateur, 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"; |
633,10 → 617,16 |
$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 widget CEL stats) |
// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ? |
// ... |
|
// Formatage de la liste avec les intitulés des utilisateurs |
$ids = array_column($resultat, 'ce_utilisateur'); |
$ids = array_filter($ids, 'is_numeric'); // on oublie les ids de session et autres facéties |
$infosUtilisateurs = $this->recupererIntitulesUtilisateursParIds($ids, true); |
foreach ($resultat as &$util) { |
$ce = $util['ce_utilisateur']; |
$util['intitule'] = isset($infosUtilisateurs[$ce]['intitule']) ? $infosUtilisateurs[$ce]['intitule'] : null; |
} |
|
return array( |
'liste' => $resultat |
); |
648,16 → 638,22 |
*/ |
private function getListeMeilleursVoteurs() { |
$liste = array(); |
$requete = "SELECT * FROM (SELECT courriel, COUNT(DISTINCT `id_vote`) AS nombre FROM del_commentaire_vote, del_utilisateur where"; |
$requete = "SELECT * FROM (SELECT courriel, ce_utilisateur, COUNT(DISTINCT `id_vote`) AS nombre FROM del_commentaire_vote, del_utilisateur where"; |
if ($this->annee != null) { |
$requete .= " year(`date`) = " . $this->annee . " AND"; |
} |
$requete .= " ce_utilisateur = id_utilisateur AND valeur = 1 GROUP BY `ce_utilisateur`) AS utilisateurs WHERE nombre > 100 ORDER BY nombre DESC LIMIT 20"; |
$resultat = $this->bdd->recupererTous($requete); |
// 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 ? |
// ... |
|
// Formatage de la liste avec les intitulés des utilisateurs |
$ids = array_column($resultat, 'ce_utilisateur'); |
$ids = array_filter($ids, 'is_numeric'); // on oublie les ids de session et autres facéties |
$infosUtilisateurs = $this->recupererIntitulesUtilisateursParIds($ids, true); |
foreach ($resultat as &$util) { |
$ce = $util['ce_utilisateur']; |
$util['intitule'] = isset($infosUtilisateurs[$ce]['intitule']) ? $infosUtilisateurs[$ce]['intitule'] : null; |
} |
|
return array( |
'liste' => $resultat |
); |
681,10 → 677,16 |
$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" |
. " ORDER BY moyenne DESC"; // @ TODO limite ? |
$resultat = $this->bdd->recupererTous($requete); |
// 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 ? |
// ... |
|
// Formatage de la liste avec les intitulés des utilisateurs |
$ids = array_column($resultat, 'ce_utilisateur'); |
$ids = array_filter($ids, 'is_numeric'); // on oublie les ids de session et autres facéties |
$infosUtilisateurs = $this->recupererIntitulesUtilisateursParIds($ids, true); |
foreach ($resultat as &$util) { |
$ce = $util['ce_utilisateur']; |
$util['intitule'] = isset($infosUtilisateurs[$ce]['intitule']) ? $infosUtilisateurs[$ce]['intitule'] : null; |
} |
|
return array( |
'liste' => $resultat |
); |
989,23 → 991,26 |
} |
|
/** |
* @TODO Liste des utilisateurs ayant ajouté le plus de mots-clés |
* Liste des utilisateurs ayant ajouté le plus de mots-clés |
*/ |
private function getListeMeilleursTagueurs() { |
$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"; |
$requete = "SELECT count(*) as nombre, IF (ce_utilisateur REGEXP '^-?[0-9]+$', ce_utilisateur, null) as ce_util FROM del_image_tag"; |
if ($this->annee != null) { |
$requete .= " year(`date`) = " . $this->annee . " AND"; |
$requete .= " WHERE year(date) = " . $this->annee; |
} |
$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"; |
$requete .= " GROUP BY ce_util ORDER BY nombre DESC LIMIT 20"; |
$resultat = $this->bdd->recupererTous($requete); |
// 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 ? |
// ... |
*/ |
|
// Formatage de la liste avec les intitulés des utilisateurs |
$ids = array_column($resultat, 'ce_util'); |
$ids = array_filter($ids, 'is_numeric'); // on oublie les ids de session et autres facéties |
$infosUtilisateurs = $this->recupererIntitulesUtilisateursParIds($ids, true); |
foreach ($resultat as &$util) { |
$ce = $util['ce_util']; |
$util['intitule'] = isset($infosUtilisateurs[$ce]['intitule']) ? $infosUtilisateurs[$ce]['intitule'] : null; |
} |
|
return array( |
'liste' => $resultat |
); |
1022,4 → 1027,18 |
. " GROUP BY CONCAT(year($colonne),month($colonne)) ) AS nombre"; |
return $requeteEncapsulee; |
} |
|
/** |
* Prend en paramêtre un tableau d'identifiants utilisateurs et retourne après avoir interrogé un |
* webservice de l'annuaire un tableau avec en clé l'id et en valeur l'intitulé |
* @param array $ids un tableau d'ids |
*/ |
protected function recupererIntitulesUtilisateursParIds(array $ids) { |
$service = "utilisateur/infos-par-id/" . implode(',', $ids); |
$url = $this->conteneur->getParametre('urlServiceBaseAnnuaire') . $service; |
//echo "URL: $url\n\n"; |
$json = $this->conteneur->getRestClient()->consulter($url); |
$resultat = json_decode($json, true); |
return $resultat; |
} |
} |