| Line 519... |
Line 519... |
| 519 |
$idsImages[] = $observation['id_image'];
|
519 |
$idsImages[] = $observation['id_image'];
|
| 520 |
}
|
520 |
}
|
| Line 521... |
Line 521... |
| 521 |
|
521 |
|
| 522 |
$chaineIdImages = implode(',', $idsImages);
|
522 |
$chaineIdImages = implode(',', $idsImages);
|
| - |
|
523 |
$requeteImages .= ' WHERE doi.id_image IN ('.$chaineIdImages.') '.
|
| 523 |
$requeteImages .= ' WHERE doi.id_image IN ('.$chaineIdImages.') '.
|
524 |
' GROUP BY doi.id_image, doi.id_observation '.
|
| 524 |
' ORDER BY FIELD(doi.id_image, '.$chaineIdImages.')'.
|
525 |
' ORDER BY FIELD(doi.id_image, '.$chaineIdImages.')'.
|
| Line 525... |
Line 526... |
| 525 |
' LIMIT '.$this->navigation->getLimite(); // On limite sur le nombre car les obs peuvent avoir plusieurs images
|
526 |
' LIMIT '.$this->navigation->getLimite(); // On limite sur le nombre car les obs peuvent avoir plusieurs images
|
| - |
|
527 |
|
| 526 |
|
528 |
} else {
|
| 527 |
} else {
|
529 |
$requeteImages .= ' GROUP BY doi.id_image, doi.id_observation ';
|
| 528 |
$requeteImages .= ' ORDER BY id_observation DESC';
|
530 |
$requeteImages .= ' ORDER BY id_observation DESC';
|
| Line 529... |
Line -... |
| 529 |
$requeteImages .= $this->gestionBdd->getLimitSql();
|
- |
|
| 530 |
}
|
- |
|
| 531 |
|
- |
|
| 532 |
|
- |
|
| 533 |
/**
|
- |
|
| 534 |
* 88307
|
- |
|
| 535 |
* SELECT *, di.mots_cles_texte as mots_cles_texte_image FROM del_obs_image doi
|
- |
|
| 536 |
* INNER JOIN del_image di ON doi.id_image = di.id_image
|
- |
|
| 537 |
* WHERE id_observation IN (783590,922353,922351,922349,921316,921315,921313,921312,783388,921310,921309,921308)
|
531 |
$requeteImages .= $this->gestionBdd->getLimitSql();
|
| Line 538... |
Line 532... |
| 538 |
* ORDER BY FIELD(id_observation, 783590,922353,922351,922349,921316,921315,921313,921312,783388,921310,921309,921308)
|
532 |
}
|
| 539 |
* */
|
533 |
|
| Line 580... |
Line 574... |
| 580 |
}
|
574 |
}
|
| Line 581... |
Line 575... |
| 581 |
|
575 |
|
| 582 |
|
576 |
|
| 583 |
// On compte à part les images issues de la jointure de del_obs_image et del_image car la fonction
|
577 |
// On compte à part les images issues de la jointure de del_obs_image et del_image car la fonction
|
| - |
|
578 |
// SQL_CALC_FOUND_ROWS dans la fonction requete image fait passer le temps d'éxécution de 0.0011 à 15s !
|
| - |
|
579 |
$requeteNbImages = 'SELECT SUM(t.nb) as nb FROM (SELECT count(DISTINCT doi.id_image) as nb '.
|
| - |
|
580 |
'FROM del_obs_image doi '.
|
| - |
|
581 |
'INNER JOIN del_image di '.
|
| 584 |
// SQL_CALC_FOUND_ROWS dans la fonction requete image fait passer le temps d'éxécution de 0.0011 à 15s !
|
582 |
'ON di.id_image = doi.id_image '.
|
| - |
|
583 |
'GROUP BY doi.id_image, doi.id_observation) t ';
|
| 585 |
$requeteNbImages = 'SELECT count(doi.id_image) as nb FROM del_obs_image doi INNER JOIN del_image di ON di.id_image = doi.id_image';
|
584 |
$resultatNbImages = $this->bdd->recupererTous($requeteNbImages);
|
| 586 |
$resultatNbImages = $this->bdd->recupererTous($requeteNbImages);
|
585 |
|
| 587 |
$total = (int) $resultatNbImages[0]['nb'];
|
586 |
$total = (int) $resultatNbImages[0]['nb'];
|
| 588 |
$this->navigation->setTotal($total);
|
587 |
$this->navigation->setTotal($total);
|
| 589 |
}
|
588 |
}
|
| 590 |
|
589 |
|
| Line 591... |
Line 590... |
| 591 |
return $liaisons;
|
590 |
return $liaisons;
|
| Line 646... |
Line 645... |
| 646 |
' FROM del_obs_image doi '.
|
645 |
' FROM del_obs_image doi '.
|
| 647 |
' INNER JOIN del_image di ON doi.id_image = di.id_image '.
|
646 |
' INNER JOIN del_image di ON doi.id_image = di.id_image '.
|
| 648 |
' INNER JOIN del_observation dob ON dob.id_observation = doi.id_observation '.
|
647 |
' INNER JOIN del_observation dob ON dob.id_observation = doi.id_observation '.
|
| 649 |
' LEFT JOIN del_image_tag dit ON dit.ce_image = di.id_image '.
|
648 |
' LEFT JOIN del_image_tag dit ON dit.ce_image = di.id_image '.
|
| 650 |
' LEFT JOIN del_utilisateur du ON du.id_utilisateur = di.ce_utilisateur ';
|
649 |
' LEFT JOIN del_utilisateur du ON du.id_utilisateur = di.ce_utilisateur ';
|
| 651 |
|
650 |
|
| 652 |
$conditionsImg = $this->getConditionsImages();
|
651 |
$conditionsImg = $this->getConditionsImages();
|
| Line 653... |
Line 652... |
| 653 |
|
652 |
|
| 654 |
if (!empty($conditionsImg)) {
|
653 |
if (!empty($conditionsImg)) {
|
| 655 |
$where = ' WHERE ('.implode(' OR ', $conditionsImg).') ';
|
654 |
$where = ' WHERE ('.implode(' OR ', $conditionsImg).') ';
|
| Line 676... |
Line 675... |
| 676 |
$tag = $this->parametres['masque.tag'];
|
675 |
$tag = $this->parametres['masque.tag'];
|
| 677 |
$requeteVotes .= ' LEFT JOIN del_image_tag dit ON dit.ce_image = di.id_image ';
|
676 |
$requeteVotes .= ' LEFT JOIN del_image_tag dit ON dit.ce_image = di.id_image ';
|
| 678 |
$requeteVotes .= " WHERE (dit.tag_normalise LIKE '$tag%' OR di.mots_cles_texte LIKE '%$tag%') AND dit.actif = 1 ";
|
677 |
$requeteVotes .= " WHERE (dit.tag_normalise LIKE '$tag%' OR di.mots_cles_texte LIKE '%$tag%') AND dit.actif = 1 ";
|
| 679 |
}
|
678 |
}
|
| Line 680... |
Line -... |
| 680 |
|
- |
|
| 681 |
|
679 |
|
| 682 |
$requeteVotes .= ' GROUP BY doi.id_image, doi.id_observation '.
|
680 |
$requeteVotes .= ' GROUP BY doi.id_image, doi.id_observation '.
|
| 683 |
' ORDER by total_votes '.$this->directionTri .', id_observation '.$this->directionTri.' '.
|
681 |
' ORDER by total_votes '.$this->directionTri .', id_observation '.$this->directionTri.' '.
|
| Line 684... |
Line -... |
| 684 |
$this->gestionBdd->getLimitSql();
|
- |
|
| 685 |
|
682 |
$this->gestionBdd->getLimitSql();
|
| 686 |
|
683 |
|
| 687 |
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
|
684 |
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
|
| 688 |
$tabVotes = array();
|
685 |
$tabVotes = array();
|
| 689 |
foreach ($resultatsVotes as $vote) {
|
686 |
foreach ($resultatsVotes as $vote) {
|
| Line 701... |
Line 698... |
| 701 |
|
698 |
|
| 702 |
|
699 |
|
| 703 |
$chaineTri .= ' doi.id_image IN ('.$strVotes.') ';
|
700 |
$chaineTri .= ' doi.id_image IN ('.$strVotes.') ';
|
| 704 |
$chaineOrdre = ' ORDER BY FIELD(doi.id_image, '.$strVotes.') ';
|
- |
|
| 705 |
}
|
701 |
$chaineOrdre = ' ORDER BY FIELD(doi.id_image, '.$strVotes.') ';
|
| 706 |
|
702 |
}
|
| Line 707... |
Line 703... |
| 707 |
|
703 |
|
| 708 |
if ($this->parametres['tri'] == 'tags') {
|
704 |
if ($this->parametres['tri'] == 'tags') {
|
| 709 |
|
705 |
|
| 710 |
$requetetags = ' SELECT SQL_CALC_FOUND_ROWS distinct doi.id_image, COUNT(id_tag) as total_tags '.
|
706 |
$requetetags = ' SELECT SQL_CALC_FOUND_ROWS doi.id_image, COUNT(id_tag) as total_tags '.
|
| 711 |
' FROM del_obs_image doi LEFT JOIN del_image_tag dit ON dit.ce_image = doi.id_image ';
|
707 |
' FROM del_obs_image doi LEFT JOIN del_image_tag dit ON dit.ce_image = doi.id_image AND dit.actif = 1 ';
|
| 712 |
|
708 |
|
| 713 |
if (isset($this->parametres['masque.tag'])) {
|
709 |
if (isset($this->parametres['masque.tag'])) {
|
| 714 |
// Et si on a cherché par tag ?
|
710 |
// Et si on a cherché par tag ?
|
| 715 |
$requetetags .= ' LEFT JOIN del_image di ON dit.ce_image = di.id_image ';
|
- |
|
| 716 |
$tag = $this->parametres['masque.tag'];
|
- |
|
| 717 |
$requetetags .= " WHERE (dit.tag_normalise LIKE '$tag%' OR di.mots_cles_texte LIKE '%$tag%') AND dit.actif = 1 ";
|
711 |
$requetetags .= ' LEFT JOIN del_image di ON dit.ce_image = di.id_image ';
|
| Line 718... |
Line 712... |
| 718 |
} else {
|
712 |
$tag = $this->parametres['masque.tag'];
|
| 719 |
$requetetags .= ' WHERE dit.actif = 1 ';
|
713 |
$requetetags .= " WHERE (dit.tag_normalise LIKE '$tag%' OR di.mots_cles_texte LIKE '%$tag%') ";
|
| 720 |
}
|
714 |
}
|
| 721 |
|
715 |
|
| 722 |
$requetetags .= ' GROUP BY id_image, id_observation '.
|
716 |
$requetetags .= ' GROUP BY id_image, id_observation '.
|
| 723 |
' ORDER by total_tags '.$this->directionTri.', id_observation '.$this->directionTri.
|
717 |
' ORDER by total_tags '.$this->directionTri.', id_observation '.$this->directionTri.
|
| 724 |
$this->gestionBdd->getLimitSql();
|
718 |
$this->gestionBdd->getLimitSql();
|
| 725 |
|
719 |
|
| 726 |
$resultatstags = $this->bdd->recupererTous($requetetags);
|
720 |
$resultatstags = $this->bdd->recupererTous($requetetags);
|
| Line 740... |
Line 734... |
| 740 |
}
|
734 |
}
|
| Line 741... |
Line 735... |
| 741 |
|
735 |
|
| 742 |
$chaineTri .= ' doi.id_image IN ('.$strtags.') ';
|
736 |
$chaineTri .= ' doi.id_image IN ('.$strtags.') ';
|
| 743 |
$chaineOrdre = ' ORDER BY FIELD(doi.id_image, '.$strtags.') ';
|
737 |
$chaineOrdre = ' ORDER BY FIELD(doi.id_image, '.$strtags.') ';
|
| 744 |
}
|
- |
|
| 745 |
|
738 |
}
|
| 746 |
|
739 |
|
| 747 |
$requeteImages .= $chaineTri.' GROUP BY doi.id_image, doi.id_observation '.$chaineOrdre;
|
740 |
$requeteImages .= $chaineTri.' GROUP BY doi.id_image, doi.id_observation '.$chaineOrdre;
|
| 748 |
} else {
|
741 |
} else {
|
| 749 |
$requeteImages .= ' GROUP BY doi.id_image, doi.id_observation'; // des fois, on a plusieurs observations pour la même image ...
|
742 |
$requeteImages .= ' GROUP BY doi.id_image, doi.id_observation'; // des fois, on a plusieurs observations pour la même image ...
|
| 750 |
$requeteImages .= $this->gestionBdd->getLimitSql();
|
743 |
$requeteImages .= $this->gestionBdd->getLimitSql();
|
| 751 |
}
|
744 |
}
|
| 752 |
|
745 |
|
| 753 |
$retour = $this->bdd->recupererTous($requeteImages);
|
746 |
$retour = $this->bdd->recupererTous($requeteImages);
|
| 754 |
$total = $this->getFoundRows();
|
747 |
$total = $this->getFoundRows();
|
| Line 755... |
Line 748... |
| 755 |
$this->navigation->setTotal($total);
|
748 |
$this->navigation->setTotal($total);
|