| Line 113... |
Line 113... |
| 113 |
if (isset($this->requete['where']['OR_SOUS_REQUETE']) && count($this->requete['where']['OR_SOUS_REQUETE']) > 0) {
|
113 |
if (isset($this->requete['where']['OR_SOUS_REQUETE']) && count($this->requete['where']['OR_SOUS_REQUETE']) > 0) {
|
| 114 |
$clauseWhereSousRequete = implode(' OR ', $this->requete['where']['OR_SOUS_REQUETE']);
|
114 |
$clauseWhereSousRequete = implode(' OR ', $this->requete['where']['OR_SOUS_REQUETE']);
|
| 115 |
$sousRequete = 'di.ce_observation IN '.
|
115 |
$sousRequete = 'di.ce_observation IN '.
|
| 116 |
"(SELECT id_observation FROM del_observation AS do WHERE $clauseWhereSousRequete ) ";
|
116 |
"(SELECT id_observation FROM del_observation AS do WHERE $clauseWhereSousRequete ) ";
|
| 117 |
$this->requete['where']['OR'][] = "( $sousRequete )";
|
117 |
$this->requete['where']['OR'][] = "( $sousRequete )";
|
| 118 |
unset($this->requete['join']['LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ']);
|
118 |
unset($this->requete['join'][$this->getSqlJointureObs()]);
|
| 119 |
}
|
119 |
}
|
| Line 120... |
Line 120... |
| 120 |
|
120 |
|
| 121 |
if (isset($this->requete['where']['OR']) && count($this->requete['where']['OR']) > 0) {
|
121 |
if (isset($this->requete['where']['OR']) && count($this->requete['where']['OR']) > 0) {
|
| 122 |
$this->requete['where']['AND'][] = '('.implode(' OR ', $this->requete['where']['OR']).')';
|
122 |
$this->requete['where']['AND'][] = '('.implode(' OR ', $this->requete['where']['OR']).')';
|
| Line 294... |
Line 294... |
| 294 |
|
294 |
|
| 295 |
$this->ajouterJoinObsSiNecessaire();
|
295 |
$this->ajouterJoinObsSiNecessaire();
|
| 296 |
}
|
296 |
}
|
| Line 297... |
Line 297... |
| 297 |
}
|
297 |
}
|
| 298 |
|
298 |
|
| 299 |
private function ajouterContraintePays() {
|
299 |
private function ajouterContraintePays() {
|
| 300 |
if (isset($this->parametres['masque.pays'])) {
|
300 |
if (isset($this->parametres['masque.pays'])) {
|
| 301 |
// Attention le standard contient parfois FX pour la france métropolitaine
|
301 |
// Attention le standard contient parfois FX pour la france métropolitaine
|
| 302 |
// Dans ce cas particulier on cherche donc FR et FX
|
302 |
// Dans ce cas particulier on cherche donc FR et FX
|
| 303 |
$this->parametres['masque.pays'] = strtoupper($this->parametres['masque.pays']);
|
303 |
$this->parametres['masque.pays'] = strtoupper($this->parametres['masque.pays']);
|
| 304 |
if(strpos($this->parametres['masque.pays'], 'FR') !== false) {
|
304 |
if(strpos($this->parametres['masque.pays'], 'FR') !== false) {
|
| 305 |
$this->parametres['masque.pays'] = str_replace('FR', 'FR,FX', $this->parametres['masque.pays']);
|
305 |
$this->parametres['masque.pays'] = str_replace('FR', 'FR,FX', $this->parametres['masque.pays']);
|
| 306 |
}
|
306 |
}
|
| 307 |
$pays = explode(',', $this->parametres['masque.pays']);
|
307 |
$pays = explode(',', $this->parametres['masque.pays']);
|
| 308 |
$pays = implode(',', $this->bdd->proteger($pays));
|
308 |
$pays = implode(',', $this->bdd->proteger($pays));
|
| 309 |
$this->addWhere('masque.pays', "do.pays IN ($pays)");
|
309 |
$this->addWhere('masque.pays', "do.pays IN ($pays)");
|
| 310 |
|
310 |
|
| 311 |
$this->ajouterJoinObsSiNecessaire();
|
311 |
$this->ajouterJoinObsSiNecessaire();
|
| Line 312... |
Line 312... |
| 312 |
}
|
312 |
}
|
| 313 |
}
|
313 |
}
|
| 314 |
|
314 |
|
| Line 380... |
Line 380... |
| 380 |
}
|
380 |
}
|
| 381 |
}
|
381 |
}
|
| Line 382... |
Line 382... |
| 382 |
|
382 |
|
| 383 |
private function ajouterJoinObsSiNecessaire() {
|
383 |
private function ajouterJoinObsSiNecessaire() {
|
| 384 |
if ($this->etreAppliImg()) {
|
384 |
if ($this->etreAppliImg()) {
|
| 385 |
$this->addJoin('INNER JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ');
|
385 |
$this->addJoin($this->getSqlJointureObs());
|
| 386 |
}
|
386 |
}
|
| - |
|
387 |
}
|
| - |
|
388 |
|
| - |
|
389 |
private function getSqlJointureObs() {
|
| - |
|
390 |
return 'INNER JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ';
|
| Line 387... |
Line 391... |
| 387 |
}
|
391 |
}
|
| 388 |
|
392 |
|
| 389 |
public function ajouterConstrainteAppliObs() {
|
393 |
public function ajouterConstrainteAppliObs() {
|
| 390 |
$this->ajouterContrainteTagCel();
|
394 |
$this->ajouterContrainteTagCel();
|
| Line 437... |
Line 441... |
| 437 |
// A CONFIRMER : toutes les observations moins les validées et à confirmer
|
441 |
// A CONFIRMER : toutes les observations moins les validées et à confirmer
|
| 438 |
// i.e. : des observations avec un nom valide, qui ne sont pas à déterminer
|
442 |
// i.e. : des observations avec un nom valide, qui ne sont pas à déterminer
|
| 439 |
// (ni certitude "aDeterminer" ou "douteuse", ni mot clé),
|
443 |
// (ni certitude "aDeterminer" ou "douteuse", ni mot clé),
|
| 440 |
// ne possédant pas de proposition officiellement retenue
|
444 |
// ne possédant pas de proposition officiellement retenue
|
| 441 |
// et ayant une proposition initiale totalisant un score de moins de 4
|
445 |
// et ayant une proposition initiale totalisant un score de moins de 4
|
| 442 |
$sous_requete_score_prop_votees = $this->getSousRequeteSommeVotesPropositions();
|
446 |
$sous_requete_score_prop_votees = $this->getSousRequeteSommeVotesPropositions();
|
| 443 |
$this->addWhere('masque.type',
|
447 |
$this->addWhere('masque.type',
|
| 444 |
'('.
|
448 |
'('.
|
| 445 |
'do.id_observation IN ('.
|
449 |
'do.id_observation IN ('.
|
| 446 |
'SELECT dc.ce_observation FROM del_commentaire dc WHERE dc.proposition_retenue = 0'.
|
450 |
'SELECT dc.ce_observation FROM del_commentaire dc WHERE dc.proposition_retenue = 0'.
|
| 447 |
' AND ( '.
|
451 |
' AND ( '.
|
| 448 |
'dc.proposition_initiale = 1 '.
|
452 |
'dc.proposition_initiale = 1 '.
|
| 449 |
'AND dc.nom_sel_nn != 0 '.
|
453 |
'AND dc.nom_sel_nn != 0 '.
|
| 450 |
'AND dc.nom_sel_nn IS NOT NULL '.
|
454 |
'AND dc.nom_sel_nn IS NOT NULL '.
|
| 451 |
'AND dc.id_commentaire IN ('.$sous_requete_score_prop_votees.' < 4) '.
|
455 |
'AND dc.id_commentaire IN ('.$sous_requete_score_prop_votees.' < 4) '.
|
| 452 |
') '.
|
456 |
') '.
|
| 453 |
') AND do.id_observation NOT IN ('.
|
457 |
') AND do.id_observation NOT IN ('.
|
| 454 |
'SELECT dc.ce_observation FROM del_commentaire dc '.
|
458 |
'SELECT dc.ce_observation FROM del_commentaire dc '.
|
| 455 |
'WHERE '.
|
459 |
'WHERE '.
|
| 456 |
' dc.proposition_retenue = 1'.
|
460 |
' dc.proposition_retenue = 1'.
|
| 457 |
') '.
|
461 |
') '.
|
| 458 |
'AND do.certitude != "douteux" AND do.certitude != "aDeterminer" '.
|
462 |
'AND do.certitude != "douteux" AND do.certitude != "aDeterminer" '.
|
| 459 |
'AND do.mots_cles_texte NOT LIKE "%aDeterminer%" '.
|
463 |
'AND do.mots_cles_texte NOT LIKE "%aDeterminer%" '.
|
| 460 |
'AND do.nom_sel_nn != 0 '.
|
464 |
'AND do.nom_sel_nn != 0 '.
|
| 461 |
'AND do.nom_sel_nn IS NOT NULL'.
|
465 |
'AND do.nom_sel_nn IS NOT NULL'.
|
| 462 |
') '
|
466 |
') '
|
| 463 |
);
|
467 |
);
|
| 464 |
}
|
468 |
}
|
| Line 465... |
Line 469... |
| 465 |
|
469 |
|
| 466 |
if ($this->etreAppliImg()) {
|
- |
|
| 467 |
$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ');
|
- |
|
| 468 |
}
|
470 |
$this->ajouterJoinObsSiNecessaire();
|
| 469 |
}
|
471 |
}
|
| Line 470... |
Line 472... |
| 470 |
}
|
472 |
}
|
| 471 |
|
473 |
|
| 472 |
private function getSousRequeteSommeVotesPropositions() {
|
474 |
private function getSousRequeteSommeVotesPropositions() {
|
| 473 |
// ATTENTION : un vote identifié compte 3 votes anonymes (dans les deux sens)
|
475 |
// ATTENTION : un vote identifié compte 3 votes anonymes (dans les deux sens)
|
| 474 |
return 'SELECT ce_proposition '.
|
476 |
return 'SELECT ce_proposition '.
|
| 475 |
'FROM del_commentaire_vote dcv '.
|
477 |
'FROM del_commentaire_vote dcv '.
|
| 476 |
'GROUP BY ce_proposition HAVING '.
|
478 |
'GROUP BY ce_proposition HAVING '.
|
| 477 |
'SUM(CASE '.
|
479 |
'SUM(CASE '.
|
| 478 |
' WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN 3 '.
|
480 |
' WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN 3 '.
|
| 479 |
' WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN -3 '.
|
481 |
' WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN -3 '.
|
| 480 |
' WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN 1 '.
|
482 |
' WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN 1 '.
|
| 481 |
' WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN -1 '.
|
483 |
' WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN -1 '.
|
| 482 |
'END '.
|
484 |
'END '.
|
| Line 483... |
Line 485... |
| 483 |
') ';
|
485 |
') ';
|
| 484 |
}
|
486 |
}
|
| Line 494... |
Line 496... |
| 494 |
if (isset($this->parametres['masque.milieu'])) {
|
496 |
if (isset($this->parametres['masque.milieu'])) {
|
| 495 |
$milieu = $this->parametres['masque.milieu'];
|
497 |
$milieu = $this->parametres['masque.milieu'];
|
| 496 |
$milieuMotif = $this->bdd->proteger("%$milieu%");
|
498 |
$milieuMotif = $this->bdd->proteger("%$milieu%");
|
| 497 |
$this->addWhere('masque.milieu', "do.milieu LIKE $milieuMotif");
|
499 |
$this->addWhere('masque.milieu', "do.milieu LIKE $milieuMotif");
|
| Line 498... |
Line 500... |
| 498 |
|
500 |
|
| 499 |
if ($this->etreAppliImg()) {
|
- |
|
| 500 |
$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ');
|
- |
|
| 501 |
}
|
501 |
$this->ajouterJoinObsSiNecessaire();
|
| 502 |
}
|
502 |
}
|
| Line 503... |
Line 503... |
| 503 |
}
|
503 |
}
|
| 504 |
|
504 |
|
| Line 555... |
Line 555... |
| 555 |
|
555 |
|
| 556 |
if ($this->etreAppliObs()) {
|
556 |
if ($this->etreAppliObs()) {
|
| 557 |
$this->addJoin('LEFT JOIN del_image AS di ON (di.ce_observation = do.id_observation) ');
|
557 |
$this->addJoin('LEFT JOIN del_image AS di ON (di.ce_observation = do.id_observation) ');
|
| 558 |
}
|
558 |
}
|
| 559 |
}
|
559 |
}
|
| 560 |
if ($this->etreAppliImg()) {
|
- |
|
| 561 |
$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ');
|
- |
|
| 562 |
}
|
560 |
$this->ajouterJoinObsSiNecessaire();
|
| 563 |
}
|
561 |
}
|
| Line 564... |
Line 562... |
| 564 |
}
|
562 |
}
|
| 565 |
|
563 |
|
| Line 577... |
Line 575... |
| 577 |
'WHERE actif = 1 '.
|
575 |
'WHERE actif = 1 '.
|
| 578 |
'GROUP BY ce_image '.
|
576 |
'GROUP BY ce_image '.
|
| 579 |
"HAVING GROUP_CONCAT(DISTINCT tag_normalise ORDER BY tag_normalise) REGEXP $tagsMotif ";
|
577 |
"HAVING GROUP_CONCAT(DISTINCT tag_normalise ORDER BY tag_normalise) REGEXP $tagsMotif ";
|
| 580 |
}
|
578 |
}
|
| 581 |
} else {
|
579 |
} else {
|
| 582 |
// Si un seul tag est demandé il se trouve dans le OR
|
580 |
// Si un seul tag est demandé il se trouve dans le OR dans le cas de la recherche
|
| - |
|
581 |
// spécifique et dans le AND dans le cas de la recherche générale
|
| - |
|
582 |
// WTF?
|
| - |
|
583 |
$tag = "";
|
| - |
|
584 |
if(isset($this->parametres['masque.tag_del']['OR'][0])) {
|
| 583 |
$tag = $this->parametres['masque.tag_del']['OR'][0];
|
585 |
$tag = $this->parametres['masque.tag_del']['OR'][0];
|
| - |
|
586 |
} else if(isset($this->parametres['masque.tag_del']['AND'][0])) {
|
| - |
|
587 |
$tag = $this->parametres['masque.tag_del']['AND'][0];
|
| - |
|
588 |
}
|
| - |
|
589 |
|
| 584 |
$sousRequete = 'SELECT ce_image '.
|
590 |
$sousRequete = 'SELECT ce_image '.
|
| 585 |
'FROM del_image_tag '.
|
591 |
'FROM del_image_tag '.
|
| 586 |
'WHERE actif = 1 '.
|
592 |
'WHERE actif = 1 '.
|
| 587 |
'AND tag_normalise LIKE '.$this->bdd->proteger($tag.'%');
|
593 |
'AND tag_normalise LIKE '.$this->bdd->proteger($tag.'%');
|
| 588 |
}
|
594 |
}
|
| Line 593... |
Line 599... |
| 593 |
|
599 |
|
| 594 |
private function getNombreDeTags() {
|
600 |
private function getNombreDeTags() {
|
| 595 |
$somme = 0;
|
601 |
$somme = 0;
|
| 596 |
if (isset($this->parametres['masque.tag_del']['AND'])) {
|
602 |
if (isset($this->parametres['masque.tag_del']['AND'])) {
|
| 597 |
$somme = count($this->parametres['masque.tag_del']['AND']);
|
603 |
$somme = count($this->parametres['masque.tag_del']['AND']);
|
| 598 |
} else {
|
604 |
} else {
|
| 599 |
$somme = count($this->parametres['masque.tag_del']['OR']);
|
605 |
$somme = count($this->parametres['masque.tag_del']['OR']);
|
| 600 |
}
|
606 |
}
|
| 601 |
return $somme;
|
607 |
return $somme;
|
| Line 602... |
Line 608... |
| 602 |
}
|
608 |
}
|
| Line 651... |
Line 657... |
| 651 |
$tri = isset($this->parametres['tri']) ? $this->parametres['tri'] : '';
|
657 |
$tri = isset($this->parametres['tri']) ? $this->parametres['tri'] : '';
|
| 652 |
switch ($tri) {
|
658 |
switch ($tri) {
|
| 653 |
case 'date_observation' :
|
659 |
case 'date_observation' :
|
| 654 |
$this->addOrderBy("date_observation $ordre, id_observation $ordre");
|
660 |
$this->addOrderBy("date_observation $ordre, id_observation $ordre");
|
| 655 |
break;
|
661 |
break;
|
| 656 |
case 'nb_commentaires' :
|
662 |
case 'nb_commentaires' :
|
| 657 |
$sql_nb_comms = '(SELECT COUNT(id_commentaire) FROM del_commentaire AS dc WHERE ce_observation = id_observation)';
|
663 |
$sql_nb_comms = '(SELECT COUNT(id_commentaire) FROM del_commentaire AS dc WHERE ce_observation = id_observation)';
|
| 658 |
$this->addOrderBy("$sql_nb_comms $ordre, id_observation $ordre");
|
664 |
$this->addOrderBy("$sql_nb_comms $ordre, id_observation $ordre");
|
| 659 |
break;
|
665 |
break;
|
| 660 |
case 'date_transmission' :
|
666 |
case 'date_transmission' :
|
| 661 |
default:
|
667 |
default:
|
| 662 |
$this->addOrderBy("do.date_transmission $ordre, id_observation $ordre");
|
668 |
$this->addOrderBy("do.date_transmission $ordre, id_observation $ordre");
|
| 663 |
}
|
669 |
}
|