Subversion Repositories eFlore/Applications.del

Rev

Rev 2016 | Rev 2018 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2016 Rev 2017
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