Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1997 Rev 2009
Line 52... Line 52...
52
		$erreurs = array();
52
		$erreurs = array();
Line 53... Line 53...
53
 
53
 
54
		if ($this->annee != null && !is_int($this->annee)) {
54
		if ($this->annee != null && !is_int($this->annee)) {
55
			$erreurs[] = "Le paramètre 'annee' doit être un entier.";
55
			$erreurs[] = "Le paramètre 'annee' doit être un entier.";
56
		}
-
 
57
 
56
		}
58
		if (method_exists($this, $this->obtenirNomMethode($this->type)) === false) {
57
		if (method_exists($this, $this->obtenirNomMethode($this->type)) === false) {
59
			$erreurs[] = "Les stats de type '{$this->type}' n'existent pas.";
58
			$erreurs[] = "Les stats de type '{$this->type}' n'existent pas.";
60
		}
-
 
61
 
59
		}
62
		if (!empty($erreurs)) {
60
		if (!empty($erreurs)) {
63
			$msg = "Erreur de configuration :\n".implode("\n", $erreurs)."\n\n".Statistiques::getDoc();
61
			$msg = "Erreur de configuration :\n".implode("\n", $erreurs)."\n\n".Statistiques::getDoc();
64
			throw new Exception($msg, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
62
			throw new Exception($msg, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
65
		}
63
		}
Line -... Line 64...
-
 
64
	}
-
 
65
 
-
 
66
	/**
-
 
67
	 * Ouh la jolie méthode magique !!
-
 
68
	 * @param unknown $mot
66
	}
69
	 * @return string
67
 
70
	 */
68
	private function obtenirNomMethode($mot) {
71
	private function obtenirNomMethode($mot) {
69
		$classeNom = 'get'.str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
72
		$classeNom = 'get'.str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
Line -... Line 73...
-
 
73
		return $classeNom;
-
 
74
	}
-
 
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);
70
		return $classeNom;
89
		return (array) json_decode($json);
71
	}
90
	}
72
 
91
 
73
	// retourne toutes les stats pour l'année spécifiée
92
	// retourne toutes les stats pour l'année spécifiée
Line 297... Line 316...
297
			'nombre' => intval($cpt),
316
			'nombre' => intval($cpt),
298
			'donnees' => $resultat
317
			'donnees' => $resultat
299
		);
318
		);
300
		return $retour;
319
		return $retour;
301
	}
320
	}
-
 
321
 
-
 
322
	/**
-
 
323
	 * Statistiques sur les propositions et les votes
-
 
324
	 * - Nombre de proposition faites (au total et sur les derniers 15 jours)
-
 
325
	 * - Nombre de propositions validées(au total et sur le dernier mois)
-
 
326
	 * - Nombres de votes (au total et sur les derniers 15 jours)
-
 
327
	 */
-
 
328
	private function getPropositions() {
-
 
329
		$nbPropositions = $this->getNbPropositions();
-
 
330
		$nbPropositionsValidees = $this->getNbPropositionsValidees();
-
 
331
		$votes = $this->getNbVotes();
-
 
332
		return array(
-
 
333
			'annee' => $this->annee,
-
 
334
			'nbPropositionsTotal' => $nbPropositions[0],
-
 
335
			'nbPropositions15J' => $nbPropositions[1],
-
 
336
			'nbPropositionsValidees' => $nbPropositionsValidees[0],
-
 
337
			'nbPropositionsValidees15J' => $nbPropositionsValidees[1],
-
 
338
			'nbVotes' => $votes[0],
-
 
339
			'nbVotes15J' => $votes[1]
-
 
340
		);
-
 
341
	}
-
 
342
 
-
 
343
	/**
-
 
344
	 * @TODO Nombre de proposition faites (au total et sur les derniers 15 jours)
-
 
345
	 * @REFLEXION retourner un array ? Si on demande une année spécifique, comment calculer
-
 
346
	 * l'activité des 15 derniers jours (on met la case à null ?)
-
 
347
	 */
-
 
348
	private function getNbPropositionsTotal() {
-
 
349
		$requete = "";
-
 
350
		$resultat = $this->bdd->recupererTous($requete);
-
 
351
		return intval($resultat[0][0]);
-
 
352
	}
-
 
353
 
-
 
354
	/**
-
 
355
	 * @TODO Nombre de proposition validées (au total et sur les derniers 15 jours)
-
 
356
	 * @REFLEXION retourner un array ? Si on demande une année spécifique, comment calculer
-
 
357
	 * l'activité des 15 derniers jours (on met la case à null ?)
-
 
358
	 */
-
 
359
	private function getNbPropositionsValidees() {
-
 
360
		$requete = "";
-
 
361
		$resultat = $this->bdd->recupererTous($requete);
-
 
362
		return intval($resultat[0][0]);
-
 
363
	}
-
 
364
 
-
 
365
	/**
-
 
366
	 * @TODO Nombre de votes (au total et sur les derniers 15 jours)
-
 
367
	 * @REFLEXION retourner un array ? Si on demande une année spécifique, comment calculer
-
 
368
	 * l'activité des 15 derniers jours (on met la case à null ?)
-
 
369
	 */
-
 
370
	private function getNbVotes() {
-
 
371
		$requete = "";
-
 
372
		$resultat = $this->bdd->recupererTous($requete);
-
 
373
		return intval($resultat[0][0]);
-
 
374
	}
-
 
375
 
-
 
376
	/**
-
 
377
	 * Statistiques sur les utilisateurs d'Identiplante
-
 
378
	 * - Nombre total d'utilisateurs
-
 
379
	 * - Nombre d'utilisateurs réguliers
-
 
380
	 * - Nombre d'utilisateurs prenant part aux votes
-
 
381
	 * - Nombre de participants actifs pour le mois, la semaine, l'année
-
 
382
	 */
-
 
383
	private function getUtilisateursIp() {
-
 
384
		return array(
-
 
385
			'annee' => $this->annee,
-
 
386
			'nbUtilisateursTotal' => $this->getNbUtilisateursIpTotal(),
-
 
387
			'nbUtilisateursReguliers' => $this->getNbUtilisateursIpReguliers(),
-
 
388
			'nbUtilisateursVotant' => $this->getNbUtilisateursIpVotant(),
-
 
389
			'nbUtilisateursActifs' => $this->getNbUtilisateursIpActifs(),
-
 
390
		);
-
 
391
	}
-
 
392
 
-
 
393
	/**
-
 
394
	 * @TODO Nombre total d'utilisateurs d'Identiplante
-
 
395
	 * @REFLEXION est-ce le même nombre que les utilisateurs d'Identiplante ?
-
 
396
	 */
-
 
397
	private function getNbUtilisateursIpTotal() {
-
 
398
		$requete = "";
-
 
399
		$resultat = $this->bdd->recupererTous($requete);
-
 
400
		return intval($resultat[0][0]);
-
 
401
	}
-
 
402
 
-
 
403
	/**
-
 
404
	 * @TODO Nombre d'utilisateurs réguliers d'Identiplante
-
 
405
	 * @REFLEXION quelle différence avec getNbUtilisateursIpActifs() ?
-
 
406
	 */
-
 
407
	private function getNbUtilisateursIpReguliers() {
-
 
408
		$requete = "";
-
 
409
		$resultat = $this->bdd->recupererTous($requete);
-
 
410
		return intval($resultat[0][0]);
-
 
411
	}
-
 
412
 
-
 
413
	/**
-
 
414
	 * @TODO Nombre d'utilisateurs d'Identiplante prenant part aux votes
-
 
415
	 */
-
 
416
	private function getNbUtilisateursIpVotant() {
-
 
417
		$requete = "";
-
 
418
		$resultat = $this->bdd->recupererTous($requete);
-
 
419
		return intval($resultat[0][0]);
-
 
420
	}
-
 
421
 
-
 
422
	/**
-
 
423
	 * @TODO Nombre de participants actifs à Identiplante (pour le mois, la semaine, l'année)
-
 
424
	 * @REFLEXION retourner un array ? Si on demande une année spécifique, comment calculer
-
 
425
	 * l'activité du mois et de la semaine (on met la case à null ?)
-
 
426
	 */
-
 
427
	private function getNbUtilisateursIpActifs() {
-
 
428
		$requete = "";
-
 
429
		$resultat = $this->bdd->recupererTous($requete);
-
 
430
		return intval($resultat[0][0]);
-
 
431
	}
-
 
432
 
-
 
433
	/**
-
 
434
	 * @TODO Liste des utilisateurs ayant fait le plus de propositions, et
-
 
435
	 * le plus de propositions retenues (ou ayant atteint un consensus)
-
 
436
	 */
-
 
437
	private function getListeMeilleursProposeurs() {
-
 
438
		$liste = array();
-
 
439
		$requete = "";
-
 
440
		$resultat = $this->bdd->recupererTous($requete);
-
 
441
		// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir widget CEL stats)
-
 
442
		// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ?
-
 
443
		// ...
-
 
444
 
-
 
445
		return array(
-
 
446
			'annee' => $this->annee,
-
 
447
			'listeMeilleursProposeurs' => $liste[0],
-
 
448
			'listeMeilleursProposeursAyantEteRetenus' => $liste[1]
-
 
449
		);
-
 
450
	}
-
 
451
 
-
 
452
	/**
-
 
453
	 * @TODO Liste des utilisateurs ayant fait le plus de votes, et le plus
-
 
454
	 * de votes sur des propositions retenues (ou ayant atteint un consensus)
-
 
455
	 */
-
 
456
	private function getListeMeilleursVoteurs() {
-
 
457
		$liste = array();
-
 
458
		$requete = "";
-
 
459
		$resultat = $this->bdd->recupererTous($requete);
-
 
460
		// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir service CEL stats)
-
 
461
		// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ?
-
 
462
		// ...
-
 
463
 
-
 
464
		return array(
-
 
465
			'annee' => $this->annee,
-
 
466
			'listeMeilleursVoteurs' => $liste[0],
-
 
467
			'listeMeilleursVoteursSurPropositionsRetenues' => $liste[1]
-
 
468
		);
-
 
469
	}
-
 
470
 
-
 
471
	/**
-
 
472
	 * @TODO Statistiques sur les images de Pictoflora
-
 
473
	 * @REFLEXION aucune idée de ce qu'on met dedans
-
 
474
	 */
-
 
475
	private function getImages() {
-
 
476
		return array(
-
 
477
			'annee' => $this->annee
-
 
478
		);
-
 
479
	}
-
 
480
 
-
 
481
	/**
-
 
482
	 * @TODO Statistiques sur les mots-clés de Pictoflora
-
 
483
	 * @REFLEXION aucune idée de ce qu'on met dedans
-
 
484
	 */
-
 
485
	private function getTags() {
-
 
486
		return array(
-
 
487
			'annee' => $this->annee
-
 
488
		);
-
 
489
	}
-
 
490
 
-
 
491
	/**
-
 
492
	 * @TODO Statistiques sur les utilisateurs de Pictoflora
-
 
493
	 * - Nombre total d'utilisateurs
-
 
494
	 * - Nombre d'utilisateurs réguliers
-
 
495
	 * - Nombre d'utilisateurs prenant part au taggage ?
-
 
496
	 * - Nombre de participants actifs pour le mois, la semaine, l'année
-
 
497
	 */
-
 
498
	private function getUtilisateursPf() {
-
 
499
		return array(
-
 
500
			'annee' => $this->annee,
-
 
501
			'nbUtilisateursTotal' => $this->getNbUtilisateursPfTotal(),
-
 
502
			'nbUtilisateursReguliers' => $this->getNbUtilisateursPfReguliers(),
-
 
503
			'nbUtilisateursVotant' => $this->getNbUtilisateursPfTaggant(),
-
 
504
			'nbUtilisateursActifs' => $this->getNbUtilisateursPfActifs(),
-
 
505
		);
-
 
506
	}
-
 
507
 
-
 
508
	/**
-
 
509
	 * @TODO Nombre total d'utilisateurs de Pictoflora
-
 
510
	 * @REFLEXION est-ce le même nombre que les utilisateurs d'Identiplante ?
-
 
511
	 */
-
 
512
	private function getNbUtilisateursPfTotal() {
-
 
513
		$requete = "";
-
 
514
		$resultat = $this->bdd->recupererTous($requete);
-
 
515
		return intval($resultat[0][0]);
-
 
516
	}
-
 
517
 
-
 
518
	/**
-
 
519
	 * @TODO Nombre d'utilisateurs réguliers de Pictoflora
-
 
520
	 * @REFLEXION quelle différence avec getNbUtilisateursPfActifs() ?
-
 
521
	 */
-
 
522
	private function getNbUtilisateursPfReguliers() {
-
 
523
		$requete = "";
-
 
524
		$resultat = $this->bdd->recupererTous($requete);
-
 
525
		return intval($resultat[0][0]);
-
 
526
	}
-
 
527
 
-
 
528
	/**
-
 
529
	 * @TODO Nombre d'utilisateurs de Pictoflora prenant part aux votes
-
 
530
	 */
-
 
531
	private function getNbUtilisateursPfTaggant() {
-
 
532
		$requete = "";
-
 
533
		$resultat = $this->bdd->recupererTous($requete);
-
 
534
		return intval($resultat[0][0]);
-
 
535
	}
-
 
536
 
-
 
537
	/**
-
 
538
	 * @TODO Nombre de participants à Pictoflora actifs (pour le mois, la semaine, l'année)
-
 
539
	 * @REFLEXION retourner un array ? Si on demande une année spécifique, comment calculer
-
 
540
	 * l'activité du mois et de la semaine (on met la case à null ?)
-
 
541
	 */
-
 
542
	private function getNbUtilisateursPfActifs() {
-
 
543
		$requete = "";
-
 
544
		$resultat = $this->bdd->recupererTous($requete);
-
 
545
		return intval($resultat[0][0]);
-
 
546
	}
-
 
547
 
-
 
548
	/**
-
 
549
	 * @TODO Liste des mots-clés les plus fréquents
-
 
550
	 */
-
 
551
	private function getListeMeilleursTags() {
-
 
552
		$liste = array();
-
 
553
		$requete = "";
-
 
554
		$resultat = $this->bdd->recupererTous($requete);
-
 
555
		// Formater liste
-
 
556
		// ...
-
 
557
 
-
 
558
		return array(
-
 
559
			'annee' => $this->annee,
-
 
560
			'listeMeilleursTags' => $liste
-
 
561
		);
-
 
562
	}
-
 
563
 
-
 
564
	/**
-
 
565
	 * @TODO Liste des utilisateurs ayant ajouté le plus de mots-clés
-
 
566
	 */
-
 
567
	private function getListeMeilleursTagueurs() {
-
 
568
		$liste = array();
-
 
569
		$requete = "";
-
 
570
		$resultat = $this->bdd->recupererTous($requete);
-
 
571
		// Formater liste (récupérer les pseudos des gens dans l'annuaire etc. => voir service CEL stats)
-
 
572
		// => faut-il le faire ici ou dans le widget ? :-/ plutôt ici non ?
-
 
573
		// ...
-
 
574
 
-
 
575
		return array(
-
 
576
			'annee' => $this->annee,
-
 
577
			'listeMeilleursTagueurs' => $liste
-
 
578
		);
-
 
579
	}
302
}
580
}
303
581