390,9 → 390,14 |
} |
|
private function ajouterContrainteType() { |
// Les contraintes régissant les onglets sont issus de la réunion dont le compte rendu |
// disponible ici : http://tela-botanica.net/intranet/wakka.php?wiki=Octobre2014 |
// Ce lien est à modifier pour pointer vers toute nouvelle réunion modifiant ce fonctionnement |
|
if (isset($this->parametres['masque.type'])) { |
if (array_key_exists('adeterminer', $this->parametres['masque.type'])) { |
// Récupèration de toutes les observations qui on le tag "aDeterminer" *ou* qui n'ont pas de nom d'espèce |
// A DETERMINER : toutes les observations qui ont le tag "aDeterminer" |
// *ou* qui n'ont pas de nom d'espèce |
// *ou* qui ont la "certitude" à ("aDeterminer" *ou* "douteux") |
$this->addWhere('masque.type', '('. |
'do.certitude = "aDeterminer" '. |
402,23 → 407,77 |
'OR do.nom_sel_nn = 0 '.// il ne DEVRAIT pas y avoir d'entrées à 0, mais il y en a quand-même !! |
')'); |
} |
|
if (array_key_exists('validees', $this->parametres['masque.type'])) { |
// Récupèration de toutes les observations ayant un commentaire doté de proposition_retenue = 1 |
// VALIDEES : toutes les observations ayant un commentaire doté de proposition_retenue = 1 |
// ou bien possédant une proposition initiale avec un nom valide ayant totalisé un score d'au moins 4 |
// (ce qui correspond à au moins deux votes positifs dans la plupart des cas, dont un identifié) |
$sous_requete_score_prop_votees = $this->getSousRequeteSommeVotesPropositions(); |
$this->addJoin('INNER JOIN del_commentaire AS dc '. |
'ON (do.id_observation = dc.ce_observation AND dc.proposition_retenue = 1) '); |
'ON ( '. |
'do.id_observation = dc.ce_observation '. |
'AND ( '. |
'dc.proposition_retenue = 1 OR '. |
'( '. |
'dc.proposition_initiale = 1 '. |
'AND dc.nom_sel_nn != 0 '. |
'AND dc.nom_sel_nn IS NOT NULL '. |
' AND dc.id_commentaire IN ('.$sous_requete_score_prop_votees.' >= 4) '. |
') '. |
') '. |
')' |
); |
} |
|
if(array_key_exists('aconfirmer', $this->parametres['masque.type'])) { |
// A CONFIRMER : toutes les observations moins les validées et à confirmer |
// i.e. : des observations avec un nom valide, qui ne sont pas à déterminer |
// (ni certitude "aDeterminer" ou "douteuse", ni mot clé), |
// ne possédant pas de proposition officiellement retenue |
// et ayant une proposition initiale totalisant un score de moins de 4 |
$sous_requete_score_prop_votees = $this->getSousRequeteSommeVotesPropositions(); |
$this->addWhere('masque.type', |
'('. |
'do.id_observation IN ('. |
'SELECT dc.ce_observation FROM del_commentaire dc WHERE dc.proposition_retenue = 0'. |
' OR ( '. |
'dc.proposition_initiale = 1 '. |
'AND dc.nom_sel_nn != 0 '. |
'AND dc.nom_sel_nn IS NOT NULL '. |
'AND dc.id_commentaire IN ('.$sous_requete_score_prop_votees.' < 4) '. |
') '. |
') AND do.id_observation NOT IN ('. |
'SELECT dc.ce_observation FROM del_commentaire dc '. |
'WHERE '. |
' dc.proposition_retenue = 1'. |
') '. |
'AND do.certitude != "douteux" AND do.certitude != "aDeterminer" '. |
'AND do.mots_cles_texte NOT LIKE "%aDeterminer%" '. |
'AND do.nom_sel_nn != 0 '. |
'AND do.nom_sel_nn IS NOT NULL'. |
') ' |
); |
} |
|
if (array_key_exists('endiscussion', $this->parametres['masque.type'])) { |
$nbreCommentaire =(int) ($this->conteneur->getParametre('observations.nb_commentaires_discussion')); |
$this->addWhere('masque.type', '(SELECT COUNT(id_commentaire) FROM del_commentaire AS dc '. |
"WHERE ce_observation = id_observation) > $nbreCommentaire "); |
} |
|
if ($this->etreAppliImg()) { |
$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) '); |
} |
} |
} |
|
private function getSousRequeteSommeVotesPropositions() { |
// ATTENTION : un vote identifié compte 3 votes anonymes (dans les deux sens) |
return 'SELECT ce_proposition '. |
'FROM del_commentaire_vote dcv '. |
'GROUP BY ce_proposition HAVING '. |
'SUM(CASE '. |
' WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN 3 '. |
' WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN -3 '. |
' WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN 1 '. |
' WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN -1 '. |
'END '. |
') '; |
} |
|
public function ajouterConstrainteAppliImg() { |
$this->ajouterContrainteMilieu(); |
567,7 → 626,12 |
switch ($this->parametres['tri']) { |
case 'date_observation' : |
$this->addOrderBy("date_observation $ordre, id_observation $ordre"); |
break; |
case 'nb_commentaires' : |
$sql_nb_comms = '(SELECT COUNT(id_commentaire) FROM del_commentaire AS dc WHERE ce_observation = id_observation)'; |
$this->addOrderBy("$sql_nb_comms $ordre, id_observation $ordre"); |
break; |
case 'date_transmission' : |
default: |
$this->addOrderBy("do.date_transmission $ordre, id_observation $ordre"); |
} |