Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1922 Rev 1933
Line 388... Line 388...
388
		// TODO : ATTENTION -> vue que l'on utilise une vue basée sur les images, nous devons grouper par obs
388
		// TODO : ATTENTION -> vue que l'on utilise une vue basée sur les images, nous devons grouper par obs
389
		$this->addGroupBy('do.id_observation');
389
		$this->addGroupBy('do.id_observation');
390
	}
390
	}
Line 391... Line 391...
391
 
391
 
-
 
392
	private function ajouterContrainteType() {
-
 
393
		// Les contraintes régissant les onglets sont issus de la réunion dont le compte rendu 
-
 
394
		// disponible ici : http://tela-botanica.net/intranet/wakka.php?wiki=Octobre2014
-
 
395
		// Ce lien est à modifier pour pointer vers toute nouvelle réunion modifiant ce fonctionnement
392
	private function ajouterContrainteType() {
396
		
393
		if (isset($this->parametres['masque.type'])) {
397
		if (isset($this->parametres['masque.type'])) {
394
			if (array_key_exists('adeterminer', $this->parametres['masque.type'])) {
398
			if (array_key_exists('adeterminer', $this->parametres['masque.type'])) {
-
 
399
				// A DETERMINER : toutes les observations qui ont le tag "aDeterminer" 
395
				// Récupèration de toutes les observations qui on le tag "aDeterminer" *ou* qui n'ont pas de nom d'espèce
400
				// *ou* qui n'ont pas de nom d'espèce
396
				// *ou* qui ont la "certitude" à ("aDeterminer" *ou* "douteux")
401
				// *ou* qui ont la "certitude" à ("aDeterminer" *ou* "douteux")
397
				$this->addWhere('masque.type', '('.
402
				$this->addWhere('masque.type', '('.
398
					'do.certitude = "aDeterminer" '.
403
					'do.certitude = "aDeterminer" '.
399
					'OR do.certitude = "douteux" '.
404
					'OR do.certitude = "douteux" '.
400
					'OR do.mots_cles_texte LIKE "%aDeterminer%" '.
405
					'OR do.mots_cles_texte LIKE "%aDeterminer%" '.
401
					'OR do.nom_sel_nn IS NULL '.
406
					'OR do.nom_sel_nn IS NULL '.
402
					'OR do.nom_sel_nn = 0 '.// il ne DEVRAIT pas y avoir d'entrées à 0, mais il y en a quand-même !!
407
					'OR do.nom_sel_nn = 0 '.// il ne DEVRAIT pas y avoir d'entrées à 0, mais il y en a quand-même !!
403
					')');
408
					')');
-
 
409
			}
404
			}
410
			
405
			if (array_key_exists('validees', $this->parametres['masque.type'])) {
411
			if (array_key_exists('validees', $this->parametres['masque.type'])) {
-
 
412
				// VALIDEES : toutes les observations ayant un commentaire doté de proposition_retenue = 1
-
 
413
				// ou bien possédant une proposition initiale avec un nom valide ayant totalisé un score d'au moins 4
-
 
414
				// (ce qui correspond à au moins deux votes positifs dans la plupart des cas, dont un identifié)
406
				// Récupèration de toutes les observations ayant un commentaire doté de proposition_retenue = 1
415
				$sous_requete_score_prop_votees = $this->getSousRequeteSommeVotesPropositions();				
-
 
416
				$this->addJoin('INNER JOIN del_commentaire AS dc '.
407
				$this->addJoin('INNER JOIN del_commentaire AS dc '.
417
					'ON ( '.
-
 
418
						'do.id_observation = dc.ce_observation '.
-
 
419
						'AND ( '.
-
 
420
							'dc.proposition_retenue = 1 OR '.
-
 
421
							'( '.
-
 
422
								'dc.proposition_initiale = 1 '.
-
 
423
								'AND dc.nom_sel_nn != 0 '.
-
 
424
								'AND dc.nom_sel_nn IS NOT NULL '.
-
 
425
								' AND dc.id_commentaire IN ('.$sous_requete_score_prop_votees.' >= 4) '.
-
 
426
							') '.
-
 
427
						') '.
-
 
428
					')'
408
					'ON (do.id_observation = dc.ce_observation AND dc.proposition_retenue = 1) ');
429
				);
409
			}
430
			}
410
 
431
			
-
 
432
			if(array_key_exists('aconfirmer', $this->parametres['masque.type'])) {
-
 
433
				// A CONFIRMER : toutes les observations moins les validées et à confirmer
-
 
434
				// i.e. : des observations avec un nom valide, qui ne sont pas à déterminer
-
 
435
				// (ni certitude "aDeterminer" ou "douteuse", ni mot clé),
-
 
436
				// ne possédant pas de proposition officiellement retenue 
411
			if (array_key_exists('endiscussion', $this->parametres['masque.type'])) {
437
				// et ayant une proposition initiale totalisant un score de moins de 4 
-
 
438
				$sous_requete_score_prop_votees = $this->getSousRequeteSommeVotesPropositions();
-
 
439
				$this->addWhere('masque.type', 
-
 
440
						'('.
412
				$nbreCommentaire =(int) ($this->conteneur->getParametre('observations.nb_commentaires_discussion'));
441
							'do.id_observation IN ('.
-
 
442
								'SELECT dc.ce_observation FROM del_commentaire dc WHERE dc.proposition_retenue = 0'.
-
 
443
								' OR ( '.
-
 
444
									'dc.proposition_initiale = 1 '.
-
 
445
									'AND dc.nom_sel_nn != 0 '.
-
 
446
									'AND dc.nom_sel_nn IS NOT NULL '.
-
 
447
									'AND dc.id_commentaire IN ('.$sous_requete_score_prop_votees.' < 4) '.
-
 
448
								') '.
413
				$this->addWhere('masque.type', '(SELECT COUNT(id_commentaire) FROM del_commentaire AS dc '.
449
							') AND do.id_observation NOT IN ('.
-
 
450
								'SELECT dc.ce_observation FROM del_commentaire dc '.
-
 
451
								'WHERE '.
-
 
452
								' dc.proposition_retenue = 1'.
-
 
453
							') '.
-
 
454
							'AND do.certitude != "douteux" AND do.certitude != "aDeterminer" '.
-
 
455
							'AND do.mots_cles_texte NOT LIKE "%aDeterminer%" '.
-
 
456
							'AND do.nom_sel_nn != 0 '.
-
 
457
							'AND do.nom_sel_nn IS NOT NULL'.
-
 
458
						') '	
414
					"WHERE ce_observation = id_observation) > $nbreCommentaire ");
459
					);
Line 415... Line 460...
415
			}
460
			}	
416
 
461
 
417
			if ($this->etreAppliImg()) {
462
			if ($this->etreAppliImg()) {
418
				$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ');
463
				$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ');
419
			}
464
			}
-
 
465
		}
-
 
466
	}
-
 
467
	
-
 
468
	private function getSousRequeteSommeVotesPropositions() {
-
 
469
		// ATTENTION : un vote identifié compte 3 votes anonymes (dans les deux sens)
-
 
470
		return  'SELECT ce_proposition '.
-
 
471
				'FROM del_commentaire_vote dcv '.
-
 
472
				'GROUP BY ce_proposition HAVING '.
-
 
473
				'SUM(CASE '.
-
 
474
				'	WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN 3 '.
-
 
475
				'	WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN -3 '.
-
 
476
				'	WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN 1 '.
-
 
477
				'	WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN -1 '.
-
 
478
				'END '.
Line 420... Line 479...
420
		}
479
			') ';
421
	}
480
	}
422
 
481
 
423
	public function ajouterConstrainteAppliImg() {
482
	public function ajouterConstrainteAppliImg() {
Line 565... Line 624...
565
 
624
 
566
		// parmi self::$tri_possible
625
		// parmi self::$tri_possible
567
		switch ($this->parametres['tri']) {
626
		switch ($this->parametres['tri']) {
568
			case 'date_observation' :
627
			case 'date_observation' :
-
 
628
				$this->addOrderBy("date_observation $ordre, id_observation $ordre");
-
 
629
				break;			
-
 
630
			case 'nb_commentaires' :
-
 
631
				$sql_nb_comms = '(SELECT COUNT(id_commentaire) FROM del_commentaire AS dc WHERE ce_observation = id_observation)';
569
				$this->addOrderBy("date_observation $ordre, id_observation $ordre");
632
				$this->addOrderBy("$sql_nb_comms $ordre, id_observation $ordre");
-
 
633
				break;
570
				break;
634
			case 'date_transmission' :
571
			default:
635
			default:
572
				$this->addOrderBy("do.date_transmission $ordre, id_observation $ordre");
636
				$this->addOrderBy("do.date_transmission $ordre, id_observation $ordre");
573
		}
637
		}