| Line 110... |
Line 110... |
| 110 |
'nbObsSansIdent' => $this->getNbObsSansIdent(),
|
110 |
'nbObsSansIdent' => $this->getNbObsSansIdent(),
|
| 111 |
'nbObsSansIdentMPM' => $this->getNbObsSansIdent(true),
|
111 |
'nbObsSansIdentMPM' => $this->getNbObsSansIdent(true),
|
| 112 |
'nbObsTC' => $this->getNbObsTC(),
|
112 |
'nbObsTC' => $this->getNbObsTC(),
|
| 113 |
'nbObsTCMPM' => $this->getNbObsTC(true),
|
113 |
'nbObsTCMPM' => $this->getNbObsTC(true),
|
| 114 |
'nbObsTCRetenue' => $this->getNbObsTCRetenue(),
|
114 |
'nbObsTCRetenue' => $this->getNbObsTCRetenue(),
|
| 115 |
//'nbObsTCRetenueMPM' => $this->getNbObsTCRetenue(true),
|
115 |
'nbObsTCRetenueMPM' => $this->getNbObsTCRetenue(true),
|
| 116 |
'nbObsTCConsensus' => $this->getNbObsTCConsensus(),
|
116 |
'nbObsTCConsensus' => $this->getNbObsTCConsensus(),
|
| 117 |
'nbObsTCConsensusMPM' => $this->getNbObsTCConsensus(true),
|
117 |
'nbObsTCConsensusMPM' => $this->getNbObsTCConsensus(true),
|
| 118 |
'nbObsTCConsensusNonValide' => $this->getNbObsTCConsensusNonValide(),
|
118 |
'nbObsTCConsensusNonValide' => $this->getNbObsTCConsensusNonValide(),
|
| 119 |
'nbObsTCConsensusNonValideMPM' => $this->getNbObsTCConsensusNonValide(true),
|
119 |
'nbObsTCConsensusNonValideMPM' => $this->getNbObsTCConsensusNonValide(true),
|
| 120 |
);
|
120 |
);
|
| Line 191... |
Line 191... |
| 191 |
if ($this->annee != null) {
|
191 |
if ($this->annee != null) {
|
| 192 |
$requete .= ' YEAR(date_transmission) = ' . $this->annee . " AND";
|
192 |
$requete .= ' YEAR(date_transmission) = ' . $this->annee . " AND";
|
| 193 |
}
|
193 |
}
|
| 194 |
$requete .= " (certitude IN ('aDeterminer','douteux')))";
|
194 |
$requete .= " (certitude IN ('aDeterminer','douteux')))";
|
| 195 |
if ($mpm) {
|
195 |
if ($mpm) {
|
| - |
|
196 |
// @TODO vérifier que grouper sur "date" est pertinent
|
| - |
|
197 |
// date_transmission n'est pas dispo pour grouper ici :-/
|
| 196 |
$requete = $this->encapsulerMPM($requete, 'date_transmission');
|
198 |
$requete = $this->encapsulerMPM($requete);
|
| 197 |
}
|
199 |
}
|
| 198 |
$resultat = $this->bdd->recupererTous($requete);
|
200 |
$resultat = $this->bdd->recupererTous($requete);
|
| 199 |
return intval(array_pop($resultat[0]));
|
201 |
return intval(array_pop($resultat[0]));
|
| 200 |
}
|
202 |
}
|
| Line 687... |
Line 689... |
| 687 |
'liste' => $resultat
|
689 |
'liste' => $resultat
|
| 688 |
);
|
690 |
);
|
| 689 |
}
|
691 |
}
|
| Line 690... |
Line 692... |
| 690 |
|
692 |
|
| - |
|
693 |
/**
|
| - |
|
694 |
* Statistiques sur Sauvages de ma Rue (Sdmr)
|
| - |
|
695 |
* "MPM" = moyenne par mois
|
| - |
|
696 |
* - Nombre total d'observations sdmr
|
| - |
|
697 |
* - Nombre d'observations Sauvages de PACA
|
| - |
|
698 |
*/
|
| - |
|
699 |
private function getSdmr() {
|
| - |
|
700 |
return array(
|
| - |
|
701 |
'nbObsSdmrTotal' => $this->getNbObsSdmrTotal(),
|
| - |
|
702 |
'nbObsSdmrTotalMPM' => $this->getNbObsSdmrTotal(true),
|
| - |
|
703 |
'nbObsSdmrPACA' => $this->getNbObsSdmrPACA(),
|
| - |
|
704 |
'nbObsSdmrPACAMPM' => $this->getNbObsSdmrPACA(true)
|
| - |
|
705 |
);
|
| - |
|
706 |
}
|
| - |
|
707 |
|
| - |
|
708 |
/**
|
| - |
|
709 |
* Nombre total d'observations Sauvages de ma Rue
|
| - |
|
710 |
*/
|
| - |
|
711 |
private function getNbObsSdmrTotal($mpm=false) {
|
| - |
|
712 |
$requete = "SELECT COUNT(DISTINCT ce_observation) as nb_total FROM del_commentaire WHERE";
|
| - |
|
713 |
if ($this->annee != null) {
|
| - |
|
714 |
$requete .= ' YEAR(date) <= ' . $this->annee . ' AND';
|
| - |
|
715 |
}
|
| - |
|
716 |
$requete .= " ce_observation in (SELECT id_observation FROM del_observation WHERE mots_cles_texte like '%sauvages%')";
|
| - |
|
717 |
if ($mpm) {
|
| - |
|
718 |
$requete = $this->encapsulerMPM($requete);
|
| - |
|
719 |
}
|
| - |
|
720 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
721 |
return intval(array_pop($resultat[0]));
|
| - |
|
722 |
}
|
| - |
|
723 |
|
| - |
|
724 |
/**
|
| - |
|
725 |
* Nombre total d'observations Sauvages de ma Rue en PACA
|
| - |
|
726 |
*/
|
| - |
|
727 |
private function getNbObsSdmrPACA($mpm=false) {
|
| - |
|
728 |
$requete = "SELECT COUNT(DISTINCT ce_observation) as nb_total FROM del_commentaire WHERE";
|
| - |
|
729 |
if ($this->annee != null) {
|
| - |
|
730 |
$requete .= ' YEAR(date) <= ' . $this->annee . ' AND';
|
| - |
|
731 |
}
|
| - |
|
732 |
$requete .= " ce_observation in (SELECT id_observation FROM del_observation"
|
| - |
|
733 |
. " WHERE SUBSTR(ce_zone_geo, 9 , 2) IN (13,04,05,06,83,84) AND mots_cles_texte like '%sauvages%')";
|
| - |
|
734 |
if ($mpm) {
|
| - |
|
735 |
$requete = $this->encapsulerMPM($requete);
|
| - |
|
736 |
}
|
| - |
|
737 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
738 |
return intval(array_pop($resultat[0]));
|
| - |
|
739 |
}
|
| - |
|
740 |
|
| 691 |
/**
|
741 |
/**
|
| - |
|
742 |
* Statistiques sur les images de Pictoflora
|
| - |
|
743 |
* "MPM" = Moyenne par mois
|
| 692 |
* @TODO Statistiques sur les images de Pictoflora
|
744 |
* - Nombre total d'images
|
| - |
|
745 |
* - Nombre d'images ayant au moins un mot-clé
|
| - |
|
746 |
* - Nombre d'images ayant au moins un vote
|
| - |
|
747 |
* - Nombre d'images de l'année ayant au moins un mot-clé
|
| 693 |
* @REFLEXION aucune idée de ce qu'on met dedans
|
748 |
* - Nombre d'images de l'année ayant au moins un vote
|
| 694 |
*/
|
749 |
*/
|
| 695 |
private function getImages() {
|
750 |
private function getImages() {
|
| 696 |
return array(
|
751 |
return array(
|
| - |
|
752 |
'nbImagesTotal' => $this->getNbImagesTotal(),
|
| - |
|
753 |
'nbImagesTotalMPM' => $this->getNbImagesTotal(true),
|
| - |
|
754 |
'nbImagesAyantTag' => $this->getNbImagesAyantTag(),
|
| - |
|
755 |
'nbImagesAyantTagMPM' => $this->getNbImagesAyantTag(true),
|
| - |
|
756 |
'nbImagesAyantVote' => $this->getNbImagesAyantVote(),
|
| - |
|
757 |
'nbImagesAyantVoteMPM' => $this->getNbImagesAyantVote(true),
|
| - |
|
758 |
'nbImagesAnneeAyantTag' => $this->getNbImagesAnneeAyantTag(),
|
| - |
|
759 |
'nbImagesAnneeAyantTagMPM' => $this->getNbImagesAnneeAyantTag(true),
|
| - |
|
760 |
'nbImagesAnneeAyantVote' => $this->getNbImagesAnneeAyantVote(),
|
| 697 |
'annee' => $this->annee
|
761 |
'nbImagesAnneeAyantVoteMPM' => $this->getNbImagesAnneeAyantVote(true),
|
| 698 |
);
|
762 |
);
|
| Line 699... |
Line 763... |
| 699 |
}
|
763 |
}
|
| - |
|
764 |
|
| - |
|
765 |
/**
|
| - |
|
766 |
* Nombre total d'images Pictoflora
|
| - |
|
767 |
*/
|
| - |
|
768 |
private function getNbImagesTotal($mpm=false) {
|
| - |
|
769 |
$requete = "SELECT COUNT(*) AS nb_total FROM del_image";
|
| - |
|
770 |
if ($this->annee != null) {
|
| - |
|
771 |
$requete .= ' WHERE YEAR(date_transmission) = ' . $this->annee;
|
| - |
|
772 |
}
|
| - |
|
773 |
if ($mpm) {
|
| - |
|
774 |
$requete = $this->encapsulerMPM($requete, 'date_transmission');
|
| - |
|
775 |
}
|
| - |
|
776 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
777 |
return intval(array_pop($resultat[0]));
|
| - |
|
778 |
}
|
| - |
|
779 |
|
| - |
|
780 |
/**
|
| - |
|
781 |
* Nombre total d'images Pictoflora ayant au moins un mot-clé
|
| - |
|
782 |
*/
|
| - |
|
783 |
private function getNbImagesAyantTag($mpm=false) {
|
| - |
|
784 |
$requete = "SELECT COUNT(DISTINCT ce_image) AS nb_total FROM del_image_tag";
|
| - |
|
785 |
if ($this->annee != null) {
|
| - |
|
786 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| - |
|
787 |
}
|
| - |
|
788 |
if ($mpm) {
|
| - |
|
789 |
$requete = $this->encapsulerMPM($requete);
|
| - |
|
790 |
}
|
| - |
|
791 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
792 |
return intval(array_pop($resultat[0]));
|
| - |
|
793 |
}
|
| - |
|
794 |
|
| - |
|
795 |
/**
|
| - |
|
796 |
* Nombre total d'images Pictoflora ayant au moins un vote
|
| - |
|
797 |
*/
|
| - |
|
798 |
private function getNbImagesAyantVote($mpm=false) {
|
| - |
|
799 |
$requete = "SELECT COUNT(DISTINCT ce_image) AS nb_total FROM del_image_vote";
|
| - |
|
800 |
if ($this->annee != null) {
|
| - |
|
801 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| - |
|
802 |
}
|
| - |
|
803 |
if ($mpm) {
|
| - |
|
804 |
$requete = $this->encapsulerMPM($requete);
|
| - |
|
805 |
}
|
| - |
|
806 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
807 |
return intval(array_pop($resultat[0]));
|
| - |
|
808 |
}
|
| - |
|
809 |
|
| - |
|
810 |
/**
|
| - |
|
811 |
* Nombre total d'images Pictoflora de l'année ayant au moins un mot-clé
|
| - |
|
812 |
*/
|
| - |
|
813 |
private function getNbImagesAnneeAyantTag($mpm=false) {
|
| - |
|
814 |
if ($this->annee == null) {
|
| - |
|
815 |
return null;
|
| - |
|
816 |
}
|
| - |
|
817 |
$requete = "SELECT COUNT(DISTINCT ce_image) AS nb_total FROM del_image_tag WHERE YEAR(date) = " . $this->annee
|
| - |
|
818 |
. " AND ce_image IN (SELECT id_image FROM del_image WHERE year(date_transmission) = " . $this->annee . ")";
|
| - |
|
819 |
if ($mpm) {
|
| - |
|
820 |
$requete = $this->encapsulerMPM($requete);
|
| - |
|
821 |
}
|
| - |
|
822 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
823 |
return intval(array_pop($resultat[0]));
|
| - |
|
824 |
}
|
| - |
|
825 |
|
| - |
|
826 |
/**
|
| - |
|
827 |
* Nombre total d'images Pictoflora de l'année ayant au moins un vote
|
| - |
|
828 |
*/
|
| - |
|
829 |
private function getNbImagesAnneeAyantVote($mpm=false) {
|
| - |
|
830 |
if ($this->annee == null) {
|
| - |
|
831 |
return null;
|
| - |
|
832 |
}
|
| - |
|
833 |
$requete = "SELECT COUNT(DISTINCT ce_image) AS nb_total FROM del_image_vote WHERE YEAR(date) = " . $this->annee
|
| - |
|
834 |
. " AND ce_image IN (SELECT id_image FROM del_image WHERE year(date_transmission) = " . $this->annee . ")";
|
| - |
|
835 |
if ($mpm) {
|
| - |
|
836 |
$requete = $this->encapsulerMPM($requete);
|
| - |
|
837 |
}
|
| - |
|
838 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
839 |
return intval(array_pop($resultat[0]));
|
| - |
|
840 |
}
|
| 700 |
|
841 |
|
| - |
|
842 |
/**
|
| - |
|
843 |
* Statistiques sur les votes et mots-clés (tags) de Pictoflora
|
| - |
|
844 |
* "MPM" = moyenne par mois
|
| 701 |
/**
|
845 |
* - Nombre total de votes
|
| 702 |
* @TODO Statistiques sur les mots-clés de Pictoflora
|
846 |
* - Nombre total de mots clés
|
| 703 |
* @REFLEXION aucune idée de ce qu'on met dedans
|
847 |
* - Nombre d'images ayant le mot-clé "defiPhoto"
|
| 704 |
*/
|
848 |
*/
|
| 705 |
private function getTags() {
|
849 |
private function getTagsVotes() {
|
| - |
|
850 |
return array(
|
| - |
|
851 |
'nbTagsTotal' => $this->getNbTagsTotal(),
|
| - |
|
852 |
'nbTagsTotalMPM' => $this->getNbTagsTotal(true),
|
| - |
|
853 |
'nbVotesTotal' => $this->getNbVotesTotal(),
|
| - |
|
854 |
'nbVotesTotalMPM' => $this->getNbVotesTotal(true),
|
| - |
|
855 |
// devra être paramétré par une liste de mots-clés
|
| 706 |
return array(
|
856 |
//'nbImagesTagDP' => $this->getNbImagesTagDP(),
|
| 707 |
'annee' => $this->annee
|
857 |
//'nbImagesTagDPMPM' => $this->getNbImagesTagDP(true)
|
| Line 708... |
Line 858... |
| 708 |
);
|
858 |
);
|
| - |
|
859 |
}
|
| - |
|
860 |
|
| - |
|
861 |
/**
|
| - |
|
862 |
* Nombre total de mots clés Pictoflora
|
| - |
|
863 |
*/
|
| - |
|
864 |
private function getNbTagsTotal($mpm=false) {
|
| - |
|
865 |
$requete = "SELECT COUNT(*) AS nb_total FROM del_image_tag";
|
| - |
|
866 |
if ($this->annee != null) {
|
| - |
|
867 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| - |
|
868 |
}
|
| - |
|
869 |
if ($mpm) {
|
| - |
|
870 |
$requete = $this->encapsulerMPM($requete);
|
| - |
|
871 |
}
|
| - |
|
872 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
873 |
return intval(array_pop($resultat[0]));
|
| - |
|
874 |
}
|
| - |
|
875 |
|
| - |
|
876 |
/**
|
| - |
|
877 |
* Nombre total de votes Pictoflora
|
| - |
|
878 |
*/
|
| - |
|
879 |
private function getNbVotesTotal($mpm=false) {
|
| - |
|
880 |
$requete = "SELECT COUNT(*) AS nb_total FROM del_image_vote";
|
| - |
|
881 |
if ($this->annee != null) {
|
| - |
|
882 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| - |
|
883 |
}
|
| - |
|
884 |
if ($mpm) {
|
| - |
|
885 |
$requete = $this->encapsulerMPM($requete);
|
| - |
|
886 |
}
|
| - |
|
887 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
888 |
return intval(array_pop($resultat[0]));
|
| 709 |
}
|
889 |
}
|
| 710 |
|
890 |
|
| - |
|
891 |
/**
|
| 711 |
/**
|
892 |
* Statistiques sur les utilisateurs de Pictoflora
|
| 712 |
* @TODO Statistiques sur les utilisateurs de Pictoflora
|
893 |
* "MPM" = Moyenne par mois
|
| 713 |
* - Nombre total d'utilisateurs
|
894 |
* "AF" = Ayant fait
|
| 714 |
* - Nombre d'utilisateurs réguliers
|
895 |
* - Nombre d'utilisateurs ayant ajouté un mot-clé
|
| 715 |
* - Nombre d'utilisateurs prenant part au taggage ?
|
896 |
* - Nombre d'utilisateurs ayant voté
|
| 716 |
* - Nombre de participants actifs pour le mois, la semaine, l'année
|
- |
|
| 717 |
*/
|
897 |
* - Nombre d'utilisateurs ayant fait une action
|
| 718 |
private function getUtilisateursPf() {
|
- |
|
| 719 |
$nbUtilisateursActifs = $this->getNbUtilisateursPfActifs();
|
898 |
*/
|
| 720 |
return array(
|
899 |
private function getUtilisateursPf() {
|
| 721 |
'annee' => $this->annee,
|
900 |
return array(
|
| 722 |
'nbUtilisateursTotal' => $this->getNbUtilisateursPfTotal(),
|
901 |
'nbUtilisateursAFTag' => $this->getNbUtilisateursPfAFTag(),
|
| 723 |
'nbUtilisateursReguliers' => $this->getNbUtilisateursPfReguliers(),
|
902 |
'nbUtilisateursAFTagMPM' => $this->getNbUtilisateursPfAFTag(true),
|
| 724 |
'nbUtilisateursTaggant' => $this->getNbUtilisateursPfTaggant(),
|
903 |
'nbUtilisateursAFVote' => $this->getNbUtilisateursPfAFVote(),
|
| 725 |
'nbUtilisateursActifsAnnee' => $nbUtilisateursActifs['annee'],
|
904 |
'nbUtilisateursAFVoteMPM' => $this->getNbUtilisateursPfAFVote(true),
|
| 726 |
'nbUtilisateursActifsMois' => $nbUtilisateursActifs['mois'],
|
905 |
'nbUtilisateursAFAction' => $this->getNbUtilisateursPfAFAction(),
|
| Line 727... |
Line 906... |
| 727 |
'nbUtilisateursActifsSemaine' => $nbUtilisateursActifs['semaine']
|
906 |
'nbUtilisateursAFActionMPM' => $this->getNbUtilisateursPfAFActionMPM()
|
| 728 |
);
|
907 |
);
|
| 729 |
}
|
- |
|
| 730 |
|
908 |
}
|
| 731 |
/**
|
909 |
|
| - |
|
910 |
/**
|
| - |
|
911 |
* Nombre d'utilisateurs ayant ajouté un mot-clé
|
| - |
|
912 |
*/
|
| - |
|
913 |
private function getNbUtilisateursPfAFTag($mpm=false) {
|
| 732 |
* @TODO Nombre total d'utilisateurs de Pictoflora
|
914 |
$requete = "SELECT COUNT(DISTINCT ce_utilisateur) AS nb_total FROM del_image_tag";
|
| - |
|
915 |
if ($this->annee != null) {
|
| - |
|
916 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| 733 |
* @REFLEXION est-ce le même nombre que les utilisateurs d'Identiplante ?
|
917 |
}
|
| 734 |
*/
|
918 |
if ($mpm) {
|
| 735 |
private function getNbUtilisateursPfTotal() {
|
919 |
$requete = $this->encapsulerMPM($requete);
|
| Line 736... |
Line 920... |
| 736 |
$requete = "";
|
920 |
}
|
| 737 |
$resultat = $this->bdd->recupererTous($requete);
|
921 |
$resultat = $this->bdd->recupererTous($requete);
|
| 738 |
return intval($resultat[0][0]);
|
- |
|
| 739 |
}
|
922 |
return intval(array_pop($resultat[0]));
|
| 740 |
|
923 |
}
|
| - |
|
924 |
|
| - |
|
925 |
/**
|
| - |
|
926 |
* Nombre d'utilisateurs ayant fait un vote
|
| - |
|
927 |
*/
|
| 741 |
/**
|
928 |
private function getNbUtilisateursPfAFVote($mpm=false) {
|
| - |
|
929 |
$requete = "SELECT COUNT(DISTINCT ce_utilisateur) AS nb_total FROM del_image_vote";
|
| - |
|
930 |
if ($this->annee != null) {
|
| 742 |
* @TODO Nombre d'utilisateurs réguliers de Pictoflora
|
931 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| 743 |
* @REFLEXION quelle différence avec getNbUtilisateursPfActifs() ?
|
932 |
}
|
| 744 |
*/
|
933 |
if ($mpm) {
|
| Line 745... |
Line 934... |
| 745 |
private function getNbUtilisateursPfReguliers() {
|
934 |
$requete = $this->encapsulerMPM($requete);
|
| 746 |
$requete = "";
|
935 |
}
|
| 747 |
$resultat = $this->bdd->recupererTous($requete);
|
936 |
$resultat = $this->bdd->recupererTous($requete);
|
| 748 |
return intval($resultat[0][0]);
|
937 |
return intval(array_pop($resultat[0]));
|
| - |
|
938 |
}
|
| - |
|
939 |
|
| - |
|
940 |
/**
|
| - |
|
941 |
* Nombre d'utilisateurs ayant fait une action
|
| - |
|
942 |
*/
|
| - |
|
943 |
private function getNbUtilisateursPfAFAction() {
|
| - |
|
944 |
$requete = "SELECT COUNT(*) AS nb_total FROM (SELECT ce_utilisateur FROM del_image_tag";
|
| - |
|
945 |
if ($this->annee != null) {
|
| 749 |
}
|
946 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| 750 |
|
947 |
}
|
| 751 |
/**
|
948 |
$requete .= " UNION SELECT ce_utilisateur FROM del_image_vote";
|
| 752 |
* @TODO Nombre d'utilisateurs de Pictoflora prenant part aux votes
|
949 |
if ($this->annee != null) {
|
| Line 753... |
Line 950... |
| 753 |
*/
|
950 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| 754 |
private function getNbUtilisateursPfTaggant() {
|
951 |
}
|
| 755 |
$requete = "";
|
- |
|
| 756 |
$resultat = $this->bdd->recupererTous($requete);
|
952 |
$requete .= ") AS action";
|
| 757 |
return intval($resultat[0][0]);
|
953 |
$resultat = $this->bdd->recupererTous($requete);
|
| 758 |
}
|
954 |
return intval(array_pop($resultat[0]));
|
| - |
|
955 |
}
|
| - |
|
956 |
|
| - |
|
957 |
/**
|
| - |
|
958 |
* Moyenne par mois du nombre d'utilisateurs ayant fait une action
|
| - |
|
959 |
* -> n'est pas encapsulable par encapsulerMPM()
|
| 759 |
|
960 |
*/
|
| - |
|
961 |
private function getNbUtilisateursPfAFActionMPM() {
|
| - |
|
962 |
$requete = "SELECT avg(nb_total) FROM (SELECT COUNT(*) AS nb_total FROM (SELECT * FROM (SELECT ce_utilisateur, date FROM del_image_tag";
|
| - |
|
963 |
if ($this->annee != null) {
|
| 760 |
/**
|
964 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| 761 |
* @TODO Nombre de participants à Pictoflora actifs (pour le mois, la semaine, l'année)
|
965 |
}
|
| 762 |
* @REFLEXION retourner un array ? Si on demande une année spécifique, comment calculer
|
966 |
$requete .= " UNION SELECT ce_utilisateur, date FROM del_image_vote";
|
| Line 763... |
Line 967... |
| 763 |
* l'activité du mois et de la semaine (on met la case à null ?)
|
967 |
if ($this->annee != null) {
|
| 764 |
*/
|
968 |
$requete .= ' WHERE YEAR(date) = ' . $this->annee;
|
| 765 |
private function getNbUtilisateursPfActifs() {
|
969 |
}
|
| 766 |
$requete = "";
|
970 |
$requete .= ") AS action GROUP BY ce_utilisateur) AS utildate GROUP BY CONCAT(year(date),month(date))) as truc";
|
| 767 |
$resultat = $this->bdd->recupererTous($requete);
|
971 |
$resultat = $this->bdd->recupererTous($requete);
|
| - |
|
972 |
return intval(array_pop($resultat[0]));
|
| 768 |
return intval($resultat[0][0]);
|
973 |
}
|
| - |
|
974 |
|
| - |
|
975 |
/**
|
| - |
|
976 |
* Liste des mots-clés les plus fréquents
|
| 769 |
}
|
977 |
*/
|
| 770 |
|
- |
|
| 771 |
/**
|
- |
|
| 772 |
* @TODO Liste des mots-clés les plus fréquents
|
- |
|
| 773 |
*/
|
978 |
private function getListeMeilleursTags() {
|
| 774 |
private function getListeMeilleursTags() {
|
979 |
$liste = array();
|
| 775 |
$liste = array();
|
- |
|
| 776 |
$requete = "";
|
980 |
$requete = "SELECT count(*) as occurrences, tag FROM del_image_tag";
|
| 777 |
$resultat = $this->bdd->recupererTous($requete);
|
981 |
if ($this->annee != null) {
|
| Line 778... |
Line 982... |
| 778 |
// Formater liste
|
982 |
$requete .= " WHERE YEAR(date) = " . $this->annee;
|
| 779 |
// ...
|
983 |
}
|
| 780 |
|
984 |
$requete .= " GROUP BY tag ORDER BY occurrences DESC LIMIT 20";
|
| 781 |
return array(
|
985 |
$resultat = $this->bdd->recupererTous($requete);
|
| 782 |
'annee' => $this->annee,
|
986 |
return array(
|
| - |
|
987 |
'liste' => $resultat
|
| - |
|
988 |
);
|
| 783 |
'listeMeilleursTags' => $liste
|
989 |
}
|
| - |
|
990 |
|
| - |
|
991 |
/**
|
| - |
|
992 |
* @TODO Liste des utilisateurs ayant ajouté le plus de mots-clés
|
| - |
|
993 |
*/
|
| 784 |
);
|
994 |
private function getListeMeilleursTagueurs() {
|
| 785 |
}
|
995 |
$resultat = array();
|
| 786 |
|
996 |
/*$requete = "SELECT * FROM (SELECT utilisateur_courriel, count(prop) as nb_prop"
|
| 787 |
/**
|
997 |
. " FROM (SELECT `ce_proposition` as prop, COUNT(DISTINCT `id_vote`) AS nb_vote FROM del_commentaire_vote where";
|
| - |
|
998 |
if ($this->annee != null) {
|
| Line 788... |
Line 999... |
| 788 |
* @TODO Liste des utilisateurs ayant ajouté le plus de mots-clés
|
999 |
$requete .= " year(`date`) = " . $this->annee . " AND";
|
| 789 |
*/
|
1000 |
}
|
| 790 |
private function getListeMeilleursTagueurs() {
|
- |
|
| 791 |
$liste = array();
|
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`)"
|
| 792 |
$requete = "";
|
1002 |
. " AS utlisateurs WHERE nb_prop > 10 ORDER BY nb_prop DESC LIMIT 20";
|
| Line 793... |
Line 1003... |
| 793 |
$resultat = $this->bdd->recupererTous($requete);
|
1003 |
$resultat = $this->bdd->recupererTous($requete);
|
| 794 |
// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir service CEL stats)
|
1004 |
// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir widget CEL stats)
|
| Line 810... |
Line 1020... |
| 810 |
$requeteEncapsulee = "SELECT AVG(nb_total) as moyenne FROM ("
|
1020 |
$requeteEncapsulee = "SELECT AVG(nb_total) as moyenne FROM ("
|
| 811 |
. $requete
|
1021 |
. $requete
|
| 812 |
. " GROUP BY CONCAT(year($colonne),month($colonne)) ) AS nombre";
|
1022 |
. " GROUP BY CONCAT(year($colonne),month($colonne)) ) AS nombre";
|
| 813 |
return $requeteEncapsulee;
|
1023 |
return $requeteEncapsulee;
|
| 814 |
}
|
1024 |
}
|
| 815 |
|
- |
|
| 816 |
/* ---------------- OBSOLETE -------------
|
- |
|
| 817 |
|
- |
|
| 818 |
// Retourne le nombre moyen d'observations non identifiées envoyées par mois, pour l'année $annee
|
- |
|
| 819 |
private function getMoyenneObsSansNomParMois() {
|
- |
|
| 820 |
$sqlTableTmp = "SELECT COUNT(*) AS compte, ".
|
- |
|
| 821 |
" CONCAT(YEAR(date_transmission),'-',MONTH(date_transmission)) AS anneemois ".
|
- |
|
| 822 |
"FROM del_observation ".
|
- |
|
| 823 |
"WHERE (mots_cles_texte LIKE '%aDeterminer%' ".
|
- |
|
| 824 |
"OR certitude = 'aDeterminer' ".
|
- |
|
| 825 |
"OR certitude = 'douteux' ".
|
- |
|
| 826 |
// Obs n'ayant pas de nom_sel_nn (détermination non choisie parmi le référentiel)
|
- |
|
| 827 |
"OR nom_sel_nn IS NULL ".
|
- |
|
| 828 |
"OR nom_sel_nn = 0 ".
|
- |
|
| 829 |
"OR id_observation IN ({$this->getSqlObsSansNom()}) ".
|
- |
|
| 830 |
') '.
|
- |
|
| 831 |
(($this->annee !== null) ? "AND YEAR(date_transmission) = '{$this->annee}' " : '').
|
- |
|
| 832 |
'GROUP BY anneemois '.
|
- |
|
| 833 |
'ORDER BY anneemois DESC ';
|
- |
|
| 834 |
|
- |
|
| 835 |
$requete = "SELECT AVG(parMois.compte) AS moyenne FROM ($sqlTableTmp) AS parMois ".
|
- |
|
| 836 |
' -- '.__FILE__.' : '.__LINE__;
|
- |
|
| 837 |
$resultat = $this->bdd->recupererTous($requete);
|
- |
|
| 838 |
return intval($resultat[0]['moyenne']);
|
- |
|
| 839 |
}
|
- |
|
| 840 |
|
- |
|
| 841 |
private function getSqlObsSansNom() {
|
- |
|
| 842 |
$sqlObsSansNom = "SELECT DISTINCT ce_observation ".
|
- |
|
| 843 |
"FROM del_commentaire ".
|
- |
|
| 844 |
"WHERE proposition_initiale = 1 ".
|
- |
|
| 845 |
"AND (nom_sel_nn IS NULL OR nom_sel_nn = '') ";
|
- |
|
| 846 |
return $sqlObsSansNom;
|
- |
|
| 847 |
}
|
- |
|
| 848 |
|
- |
|
| 849 |
// Retourne la moyenne par mois sur l'année en cours, des propositions marquées comme "retenues"
|
- |
|
| 850 |
// dont le dernier vote est dans l'année considérée (comptées en groupant par mois du dernier vote)
|
- |
|
| 851 |
private function getMoyenneObsIdentifieesParMois() {
|
- |
|
| 852 |
// Compte et date du dernier vote des propositions marquées comme "retenues"
|
- |
|
| 853 |
$sqlTableTmp1 = "SELECT COUNT(*), MAX(dcv.date) AS maxdate ".
|
- |
|
| 854 |
"FROM del_commentaire AS dc ".
|
- |
|
| 855 |
" LEFT JOIN del_commentaire_vote dcv ON dcv.ce_proposition = dc.id_commentaire ".
|
- |
|
| 856 |
" WHERE proposition_retenue = 1 ".
|
- |
|
| 857 |
" GROUP BY dc.id_commentaire ".
|
- |
|
| 858 |
(($this->annee !== null) ? "HAVING MAX(YEAR(dcv.date)) = '{$this->annee}' " : '');
|
- |
|
| 859 |
|
- |
|
| 860 |
$sqlTableTmp2 = 'SELECT COUNT(*) AS valideesparmois, '.
|
- |
|
| 861 |
" CONCAT(YEAR(maxdate), '-', MONTH(maxdate)) AS anneemois ".
|
- |
|
| 862 |
"FROM ($sqlTableTmp1) AS temp ".
|
- |
|
| 863 |
"GROUP BY anneemois ";
|
- |
|
| 864 |
|
- |
|
| 865 |
$requete = "SELECT AVG(valideesparmois) AS moyenne FROM ($sqlTableTmp2) AS temp2 ".
|
- |
|
| 866 |
' -- '.__FILE__.' : '.__LINE__;
|
- |
|
| 867 |
|
- |
|
| 868 |
$resultat = $this->bdd->recupererTous($requete);
|
- |
|
| 869 |
return intval($resultat[0]['moyenne']);
|
- |
|
| 870 |
}
|
- |
|
| 871 |
|
- |
|
| 872 |
// Version améliorée mais non optimale (prend en compte les consensus non validés)
|
- |
|
| 873 |
// @TODO on devrait croiser les IDS pour ne pas prendre en compte les obs validées ou en
|
- |
|
| 874 |
// consensus, mais qui datent des années précédentes
|
- |
|
| 875 |
// @ACHTUNG mache pas, dépasse les 100% (voir Wiki)
|
- |
|
| 876 |
private function getPourcentageObsIdentifieesFinAnneePlus() {
|
- |
|
| 877 |
// Obs ayant atteint un consensus cette année
|
- |
|
| 878 |
$requete = "SELECT COUNT(*) AS nombre ".
|
- |
|
| 879 |
"FROM (SELECT id_observation, id_commentaire, id_vote, nbvotes ".
|
- |
|
| 880 |
"FROM (SELECT do.id_observation, dc.id_commentaire, dcv.id_vote, COUNT(dcv.id_vote) AS nbvotes ".
|
- |
|
| 881 |
"FROM del_commentaire AS dc ".
|
- |
|
| 882 |
" LEFT JOIN del_observation AS do ON (do.id_observation = dc.ce_observation) ".
|
- |
|
| 883 |
" LEFT JOIN del_commentaire_vote AS dcv ON (dc.id_commentaire = dcv.ce_proposition) ".
|
- |
|
| 884 |
"AND dcv.valeur = 1 ".
|
- |
|
| 885 |
"AND dc.proposition_retenue = 0 ".
|
- |
|
| 886 |
"GROUP BY dc.id_commentaire ".
|
- |
|
| 887 |
(($this->annee != null) ? " HAVING MAX(YEAR(dcv.date)) = '{$this->annee}' " : '').
|
- |
|
| 888 |
" ) AS temp ".
|
- |
|
| 889 |
"GROUP BY id_observation ".
|
- |
|
| 890 |
") AS temp2 ".
|
- |
|
| 891 |
' -- '.__FILE__.' : '.__LINE__;
|
- |
|
| 892 |
$obsEnConsensus = $this->bdd->recupererTous($requete);
|
- |
|
| 893 |
$oc = intval($obsEnConsensus[0]['nombre']);
|
- |
|
| 894 |
|
- |
|
| 895 |
// Obs ayant une "proposition retenue" cette année
|
- |
|
| 896 |
$requete = "SELECT COUNT(*) AS nombre ".
|
- |
|
| 897 |
"FROM (SELECT COUNT(DISTINCT id_observation), MAX(dcv.date) AS maxdate ".
|
- |
|
| 898 |
"FROM del_commentaire AS dc ".
|
- |
|
| 899 |
" LEFT JOIN del_commentaire_vote AS dcv ON (dcv.ce_proposition = dc.id_commentaire) ".
|
- |
|
| 900 |
" LEFT JOIN del_observation AS do ON (do.id_observation = dc.ce_observation) ".
|
- |
|
| 901 |
"WHERE proposition_retenue = 1 ".
|
- |
|
| 902 |
(($this->annee != null) ? "AND YEAR(do.date_transmission) = '{$this->annee}' " : '').
|
- |
|
| 903 |
"GROUP BY dc.id_commentaire ".
|
- |
|
| 904 |
(($this->annee != null) ? "HAVING MAX(YEAR(dcv.date)) = '{$this->annee}' " : '').
|
- |
|
| 905 |
") as temp ".
|
- |
|
| 906 |
' -- '.__FILE__.' : '.__LINE__;
|
- |
|
| 907 |
$nbObsValidees = $this->bdd->recupererTous($requete);
|
- |
|
| 908 |
$ov = intval($nbObsValidees[0]['nombre']);
|
- |
|
| 909 |
|
- |
|
| 910 |
// Nombre d'obs sans nom soumises cette année
|
- |
|
| 911 |
$requete = "SELECT COUNT(*) AS nombre ".
|
- |
|
| 912 |
"FROM del_observation ".
|
- |
|
| 913 |
"WHERE (mots_cles_texte LIKE '%aDeterminer%' ".
|
- |
|
| 914 |
"OR certitude = 'aDeterminer' ".
|
- |
|
| 915 |
"OR certitude = 'douteux' ".
|
- |
|
| 916 |
"OR nom_sel_nn IS NULL ".
|
- |
|
| 917 |
"OR nom_sel_nn = 0 ".
|
- |
|
| 918 |
"OR id_observation IN ({$this->getSqlObsSansNom()})".
|
- |
|
| 919 |
') '.
|
- |
|
| 920 |
(($this->annee != null) ? "AND YEAR(date_transmission) = '{$this->annee}' " : '').
|
- |
|
| 921 |
' -- '.__FILE__.' : '.__LINE__;
|
- |
|
| 922 |
$nbObsSansNom = $this->bdd->recupererTous($requete);
|
- |
|
| 923 |
$osn = intval($nbObsSansNom[0]['nombre']);
|
- |
|
| 924 |
|
- |
|
| 925 |
return array(
|
- |
|
| 926 |
'observationsEnConsensus' => $oc,
|
- |
|
| 927 |
'observationsValidees' => $ov,
|
- |
|
| 928 |
'observationsSansNom' => $osn,
|
- |
|
| 929 |
'pourcentage' => ($osn == 0 ? 0 : round(((($oc + $ov) / $osn) * 100), 2))
|
- |
|
| 930 |
);
|
- |
|
| 931 |
}
|
- |
|
| 932 |
|
- |
|
| 933 |
private function getPourcentageObsIdentifieesFinAnnee() {
|
- |
|
| 934 |
$requete = "SELECT ( ".
|
- |
|
| 935 |
"SELECT COUNT(*) FROM ( ".
|
- |
|
| 936 |
"SELECT COUNT(DISTINCT id_observation), MAX(dcv.date) AS maxdate ".
|
- |
|
| 937 |
"FROM del_commentaire AS dc ".
|
- |
|
| 938 |
" LEFT JOIN del_commentaire_vote AS dcv ON (dcv.ce_proposition = dc.id_commentaire) ".
|
- |
|
| 939 |
" LEFT JOIN del_observation AS do ON (do.id_observation = dc.ce_observation) ".
|
- |
|
| 940 |
"WHERE proposition_retenue = 1 ".
|
- |
|
| 941 |
(($this->annee != null) ? "AND YEAR(do.date_transmission) = '{$this->annee}' " : '').
|
- |
|
| 942 |
"GROUP BY dc.id_commentaire ".
|
- |
|
| 943 |
(($this->annee != null) ? "HAVING MAX(YEAR(dcv.date)) = '{$this->annee}' " : '').
|
- |
|
| 944 |
") AS temp)".
|
- |
|
| 945 |
" / ".
|
- |
|
| 946 |
"(SELECT COUNT(*) ".
|
- |
|
| 947 |
"FROM del_observation ".
|
- |
|
| 948 |
"WHERE (mots_cles_texte LIKE '%aDeterminer%' ".
|
- |
|
| 949 |
"OR certitude = 'aDeterminer' ".
|
- |
|
| 950 |
"OR certitude = 'douteux' ".
|
- |
|
| 951 |
"OR nom_sel_nn IS NULL ".
|
- |
|
| 952 |
"OR nom_sel_nn = 0 ".
|
- |
|
| 953 |
"OR id_observation IN ( ".
|
- |
|
| 954 |
"SELECT DISTINCT ce_observation ".
|
- |
|
| 955 |
"FROM del_commentaire ".
|
- |
|
| 956 |
"WHERE proposition_initiale = 1 ".
|
- |
|
| 957 |
"AND (nom_sel_nn IS NULL OR nom_sel_nn = '') ".
|
- |
|
| 958 |
") ".
|
- |
|
| 959 |
") ".
|
- |
|
| 960 |
(($this->annee != null) ? "AND YEAR(date_transmission) = '{$this->annee}' " : '').
|
- |
|
| 961 |
") * 100 AS pourcentage ".
|
- |
|
| 962 |
' -- '.__FILE__.' : '.__LINE__;
|
- |
|
| 963 |
$resultat = $this->bdd->recupererTous($requete);
|
- |
|
| 964 |
return floatval($resultat[0]['pourcentage']);
|
- |
|
| 965 |
}
|
- |
|
| 966 |
|
- |
|
| 967 |
// Retourne la moyenne sur l'année du nombre d'actions (commentaire ou vote) par jour
|
- |
|
| 968 |
private function getMoyenneActionsParJour() {
|
- |
|
| 969 |
// nombre de commentaires sur l'année
|
- |
|
| 970 |
$sqlNbreCommentaires = 'SELECT COUNT(*) FROM del_commentaire '.
|
- |
|
| 971 |
($this->annee != null ? "WHERE YEAR(date) = '{$this->annee}' " : '');
|
- |
|
| 972 |
|
- |
|
| 973 |
// nombre de votes sur l'année
|
- |
|
| 974 |
$sqlNbreVotes = 'SELECT COUNT(*) FROM del_commentaire_vote '.
|
- |
|
| 975 |
($this->annee != null ? "WHERE YEAR(date) = '{$this->annee}' " : '');
|
- |
|
| 976 |
|
- |
|
| 977 |
// nombre de jours écoulés dans l'année*
|
- |
|
| 978 |
$sqlNbreJours = "SELECT 365 * (YEAR(now()) - MIN(YEAR(date)) + 1) FROM del_commentaire_vote WHERE YEAR(date) != 0 ";
|
- |
|
| 979 |
if ($this->annee != null) {
|
- |
|
| 980 |
$sqlNbreJours = "SELECT IF(YEAR(CURDATE()) = '{$this->annee}', DAYOFYEAR(CURDATE()), 365) ";
|
- |
|
| 981 |
}
|
- |
|
| 982 |
|
- |
|
| 983 |
// nombre d'actions / nombre de jours
|
- |
|
| 984 |
$requete = "SELECT ((($sqlNbreCommentaires) + ($sqlNbreVotes)) / ($sqlNbreJours)) AS moyenne ".
|
- |
|
| 985 |
' -- '.__FILE__.' : '.__LINE__;
|
- |
|
| 986 |
|
- |
|
| 987 |
$resultat = $this->bdd->recupererTous($requete);
|
- |
|
| 988 |
return intval($resultat[0]['moyenne']);
|
- |
|
| 989 |
}
|
- |
|
| 990 |
|
- |
|
| 991 |
// Retourne le nombre et la liste des personnes ayant sur l'année une moyenne de participation par mois >= 1
|
- |
|
| 992 |
private function getParticipants() {
|
- |
|
| 993 |
// Faire la moyenne par utilisateur et par mois
|
- |
|
| 994 |
$requete = "SELECT cal.nbmois, SUM(somme) / cal.nbmois as moyenne, ce_utilisateur, utilisateur_courriel ".
|
- |
|
| 995 |
"FROM ".
|
- |
|
| 996 |
// Compter le nombre de participations pour chaque utilisateur à chaque mois de cette année
|
- |
|
| 997 |
"(SELECT COUNT(*) as somme, CONCAT(YEAR(date),'-',MONTH(date)) AS anneemois, ".
|
- |
|
| 998 |
"ce_utilisateur, utilisateur_courriel, id_commentaire ".
|
- |
|
| 999 |
"FROM del_commentaire ".
|
- |
|
| 1000 |
"WHERE ce_proposition = '' ".
|
- |
|
| 1001 |
"AND nom_sel_nn != '' ".
|
- |
|
| 1002 |
"AND nom_sel_nn IS NOT NULL ".
|
- |
|
| 1003 |
(($this->annee != null) ? " AND YEAR(date) = '{$this->annee}' " : '').
|
- |
|
| 1004 |
"GROUP BY anneemois, ce_utilisateur, utilisateur_courriel) AS ppm, ".
|
- |
|
| 1005 |
// Trouver le nombre de mois différents lors desquels les utilisateurs ont participé, cette année
|
- |
|
| 1006 |
// Pour l'année en cours par ex, retournera 2 si on est en février (voire un au début du mois).
|
- |
|
| 1007 |
"(SELECT COUNT(distinct CONCAT(YEAR(date),'-',MONTH(date))) AS nbmois ".
|
- |
|
| 1008 |
"FROM del_commentaire ".
|
- |
|
| 1009 |
"WHERE ce_proposition = '' ".
|
- |
|
| 1010 |
(($this->annee != null) ? "AND YEAR(date) = '{$this->annee}' " : '').
|
- |
|
| 1011 |
"AND nom_sel_nn != '' ".
|
- |
|
| 1012 |
"AND nom_sel_nn IS NOT NULL) AS cal ".
|
- |
|
| 1013 |
"GROUP BY ce_utilisateur, utilisateur_courriel ".
|
- |
|
| 1014 |
"HAVING SUM(somme) / cal.nbmois >= 1 ".
|
- |
|
| 1015 |
"ORDER BY moyenne ".
|
- |
|
| 1016 |
' -- '.__FILE__.' : '.__LINE__;
|
- |
|
| 1017 |
|
- |
|
| 1018 |
$resultat = $this->bdd->recupererTous($requete);
|
- |
|
| 1019 |
$cpt = count($resultat);
|
- |
|
| 1020 |
$retour = array(
|
- |
|
| 1021 |
'nombre' => intval($cpt),
|
- |
|
| 1022 |
'donnees' => $resultat
|
- |
|
| 1023 |
);
|
- |
|
| 1024 |
return $retour;
|
- |
|
| 1025 |
}
|
- |
|
| 1026 |
|
- |
|
| 1027 |
--------------- FIN OBSOLETE -------------- */
|
- |
|
| 1028 |
}
|
1025 |
}
|
| 1029 |
|
1026 |
|