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 |
}
|