Line 84... |
Line 84... |
84 |
if ($this->requeteSansParametres($ressources, $parametres)) {
|
84 |
if ($this->requeteSansParametres($ressources, $parametres)) {
|
85 |
$liaisons = $this->chargerLiaisonsSimple();
|
85 |
$liaisons = $this->chargerLiaisonsSimple();
|
86 |
$observations = $this->chargerObservations($liaisons);
|
86 |
$observations = $this->chargerObservations($liaisons);
|
87 |
$total = $this->compterObservations();
|
87 |
$total = $this->compterObservations();
|
88 |
$this->navigation->setTotal($total);
|
88 |
$this->navigation->setTotal($total);
|
- |
|
89 |
// modifie $observations
|
89 |
$observations = $this->chargerImages($observations);
|
90 |
$this->chargerImages($observations);
|
- |
|
91 |
// modifie $observations
|
90 |
$observations = $this->chargerDeterminations($observations);
|
92 |
$this->chargerDeterminations($observations);
|
Line 91... |
Line 93... |
91 |
|
93 |
|
92 |
//Compute
|
94 |
//Compute
|
93 |
$resultats = array();
|
95 |
$resultats = array();
|
94 |
foreach ($observations as $id => $observation) {
|
96 |
foreach ($observations as $id => $observation) {
|
Line 101... |
Line 103... |
101 |
} else {
|
103 |
} else {
|
102 |
$liaisons = $this->chargerLiaisons();
|
104 |
$liaisons = $this->chargerLiaisons();
|
103 |
$total = $this->compterObservations();
|
105 |
$total = $this->compterObservations();
|
104 |
$this->navigation->setTotal($total);
|
106 |
$this->navigation->setTotal($total);
|
105 |
$observations = $this->chargerObservations($liaisons);
|
107 |
$observations = $this->chargerObservations($liaisons);
|
- |
|
108 |
// modifie $observations
|
106 |
$observations = $this->chargerImages($observations);
|
109 |
$this->chargerImages($observations);
|
- |
|
110 |
// modifie $observations
|
107 |
$observations = $this->chargerDeterminations($observations);
|
111 |
$this->chargerDeterminations($observations);
|
Line 108... |
Line 112... |
108 |
|
112 |
|
109 |
// Mettre en forme le résultat et l'envoyer pour affichage
|
113 |
// Mettre en forme le résultat et l'envoyer pour affichage
|
110 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $observations);
|
114 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $observations);
|
111 |
}
|
115 |
}
|
Line 469... |
Line 473... |
469 |
--------------------------------------------------------------------------------*/
|
473 |
--------------------------------------------------------------------------------*/
|
470 |
/**
|
474 |
/**
|
471 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
475 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
472 |
* */
|
476 |
* */
|
473 |
private function chargerLiaisons() {
|
477 |
private function chargerLiaisons() {
|
- |
|
478 |
$requeteLiaisons = sprintf(
|
474 |
$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS '.
|
479 |
'SELECT SQL_CALC_FOUND_ROWS '.
|
475 |
' dob.id_observation, nom_sel, famille, ce_zone_geo, zone_geo, lieudit, '.
|
480 |
' dob.id_observation, nom_sel, famille, ce_zone_geo, zone_geo, lieudit, '.
|
476 |
' station, milieu, date_observation, dob.mots_cles_texte, date_transmission, di.id_image, '.
|
481 |
' station, milieu, date_observation, dob.mots_cles_texte, date_transmission, di.id_image, '.
|
477 |
' dob.ce_utilisateur, prenom, nom, courriel, '.
|
482 |
' dob.ce_utilisateur, prenom, nom, courriel, '.
|
478 |
' dob.prenom_utilisateur, dob.nom_utilisateur, dob.courriel_utilisateur, '.
|
483 |
' dob.prenom_utilisateur, dob.nom_utilisateur, dob.courriel_utilisateur, '.
|
479 |
' nom_original, dob.commentaire AS dob_commentaire, '.
|
484 |
' nom_original, dob.commentaire AS dob_commentaire, '.
|
480 |
' dob.nt, dob.nom_sel_nn '.
|
485 |
' dob.nt, dob.nom_sel_nn '.
|
481 |
'FROM del_observation AS dob '.
|
486 |
'FROM del_observation AS dob '.
|
482 |
' LEFT JOIN del_utilisateur AS du '.
|
487 |
' LEFT JOIN del_utilisateur AS du '.
|
483 |
' ON du.id_utilisateur = dob.ce_utilisateur '.
|
488 |
' ON du.id_utilisateur = dob.ce_utilisateur '.
|
484 |
' LEFT JOIN del_obs_image AS doi '.
|
489 |
' LEFT JOIN del_obs_image AS doi '.
|
485 |
' ON doi.id_observation = dob.id_observation '.
|
490 |
' ON doi.id_observation = dob.id_observation '.
|
486 |
' LEFT JOIN del_image AS di '.
|
491 |
' LEFT JOIN del_image AS di '.
|
487 |
' ON di.id_image = doi.id_image '.
|
492 |
' ON di.id_image = doi.id_image '.
|
488 |
$this->chargerClauseWhere().
|
493 |
'%s'.
|
489 |
' GROUP BY doi.id_observation'.
|
494 |
' GROUP BY doi.id_observation'.
|
- |
|
495 |
' ORDER BY %s %s %s -- %s',
|
- |
|
496 |
$this->chargerClauseWhere(),
|
- |
|
497 |
$this->tri,
|
490 |
' ORDER BY '.$this->tri.' '.$this->directionTri.' '.
|
498 |
$this->directionTri,
|
491 |
$this->gestionBdd->getLimitSql();
|
499 |
$this->gestionBdd->getLimitSql(),
|
- |
|
500 |
__FILE__ . ':' . __LINE__);
|
Line 492... |
Line 501... |
492 |
|
501 |
|
493 |
return $this->bdd->recupererTous($requeteLiaisons);
|
502 |
return $this->bdd->recupererTous($requeteLiaisons);
|
Line 494... |
Line 503... |
494 |
}
|
503 |
}
|
- |
|
504 |
|
495 |
|
505 |
private function chargerLiaisonsSimple() {
|
496 |
private function chargerLiaisonsSimple() {
|
506 |
$requeteObs = sprintf(
|
497 |
$requeteObs = 'SELECT SQL_CALC_FOUND_ROWS '.
|
507 |
'SELECT SQL_CALC_FOUND_ROWS '.
|
498 |
' dob.id_observation, nom_sel, famille, ce_zone_geo, zone_geo, lieudit, '.
|
508 |
' dob.id_observation, nom_sel, famille, ce_zone_geo, zone_geo, lieudit, '.
|
499 |
' station, milieu, date_observation, dob.mots_cles_texte, date_transmission, '.
|
509 |
' station, milieu, date_observation, dob.mots_cles_texte, date_transmission, '.
|
500 |
' dob.ce_utilisateur, prenom, nom, courriel, '.
|
510 |
' dob.ce_utilisateur, prenom, nom, courriel, '.
|
501 |
' dob.prenom_utilisateur, dob.nom_utilisateur, dob.courriel_utilisateur, '.
|
511 |
' dob.prenom_utilisateur, dob.nom_utilisateur, dob.courriel_utilisateur, '.
|
502 |
' dob.commentaire as dob_commentaire, '.
|
512 |
' dob.commentaire as dob_commentaire, '.
|
503 |
' dob.nt, dob.nom_sel_nn '.
|
513 |
' dob.nt, dob.nom_sel_nn '.
|
504 |
'FROM del_observation AS dob '.
|
514 |
'FROM del_observation AS dob '.
|
- |
|
515 |
' LEFT JOIN del_utilisateur AS du ON dob.ce_utilisateur = du.id_utilisateur '.
|
505 |
' LEFT JOIN del_utilisateur AS du
|
516 |
' ORDER BY %s %s %s -- %s',
|
506 |
ON dob.ce_utilisateur = du.id_utilisateur '.
|
517 |
$this->tri,
|
- |
|
518 |
$this->directionTri,
|
507 |
' ORDER BY '.$this->tri.' '.$this->directionTri.' '.
|
519 |
$this->gestionBdd->getLimitSql(),
|
Line 508... |
Line 520... |
508 |
$this->gestionBdd->getLimitSql();
|
520 |
__FILE__ . ':' . __LINE__);
|
509 |
$liaisons = $this->bdd->recupererTous($requeteObs);
|
521 |
$liaisons = $this->bdd->recupererTous($requeteObs);
|
Line 546... |
Line 558... |
546 |
|
558 |
|
547 |
/**
|
559 |
/**
|
548 |
* Sélectionner toutes les images de chaque observation
|
560 |
* Sélectionner toutes les images de chaque observation
|
549 |
* @param array $observations la liste des observations
|
561 |
* @param array $observations la liste des observations
|
550 |
* */
|
562 |
* */
|
551 |
private function chargerImages($observations) {
|
563 |
private function chargerImages(&$observations) {
|
552 |
$idObs = array_values(array_map(create_function('$a', 'return $a["id_observation"];'),
|
564 |
$idObs = array_values(array_map(create_function('$a', 'return $a["id_observation"];'),
|
553 |
$observations));
|
565 |
$observations));
|
554 |
$r = sprintf('SELECT id_observation, doi.id_image, date_prise_de_vue AS date, hauteur , largeur ' .
|
566 |
$r = sprintf('SELECT id_observation, doi.id_image, date_prise_de_vue AS date, hauteur , largeur ' .
|
555 |
' FROM del_obs_image AS doi ' .
|
567 |
' FROM del_obs_image AS doi ' .
|
556 |
' INNER JOIN del_image AS di ON doi.id_image = di.id_image ' .
|
568 |
' INNER JOIN del_image AS di ON doi.id_image = di.id_image ' .
|
557 |
' WHERE doi.id_observation IN (%s)',
|
569 |
' WHERE doi.id_observation IN (%s) -- %s',
|
- |
|
570 |
implode(',',$idObs),
|
558 |
implode(',',$idObs));
|
571 |
__FILE__ . ':' . __LINE__);
|
- |
|
572 |
$images = $this->bdd->recupererTous($r);
|
559 |
$images = $this->bdd->recupererTous($r);
|
573 |
if(!$images) return;
|
560 |
foreach ($images as $image) {
|
574 |
foreach ($images as $image) {
|
561 |
$idObs = $image['id_observation'];
|
575 |
$idObs = $image['id_observation'];
|
562 |
// rapide formatage de l'image puisque le SELECT à déjà fait le gros du travail
|
576 |
// rapide formatage de l'image puisque le SELECT à déjà fait le gros du travail
|
563 |
unset($image['id_observation']);
|
577 |
unset($image['id_observation']);
|
564 |
$image['binaire.href'] = $this->formaterLienImage($image['id_image']);
|
578 |
$image['binaire.href'] = $this->formaterLienImage($image['id_image']);
|
565 |
$observations['"' . $idObs . '"']['images'][] = $image;
|
579 |
$observations['"' . $idObs . '"']['images'][] = $image;
|
566 |
}
|
- |
|
567 |
return $observations;
|
580 |
}
|
Line 568... |
Line 581... |
568 |
}
|
581 |
}
|
569 |
|
582 |
|
570 |
/**
|
583 |
/**
|
571 |
* Récupérer toutes les déterminations et le nombre de commentaire au total
|
584 |
* Récupérer toutes les déterminations et le nombre de commentaire au total
|
572 |
* @param array $observations la liste des observations à mettre à jour
|
585 |
* @param array $observations la liste des observations à mettre à jour
|
573 |
* */
|
586 |
* */
|
574 |
private function chargerDeterminations($observations) {
|
587 |
private function chargerDeterminations(&$observations) {
|
- |
|
588 |
$idObs = array_values(array_map(create_function('$a', 'return $a["id_observation"];'),
|
575 |
foreach ($observations as $id => $observation) {
|
589 |
$observations));
|
576 |
$idObs = $observation['id_observation'];
|
590 |
$r = sprintf('SELECT * FROM del_commentaire AS dc WHERE dc.nom_sel IS NOT NULL AND ce_observation IN (%s) -- %s',
|
- |
|
591 |
implode(',',$idObs),
|
577 |
$requetePropositions = 'SELECT * '.
|
592 |
__FILE__ . ':' . __LINE__);
|
578 |
'FROM del_commentaire AS dc '.
|
593 |
$propositions = $this->bdd->recupererTous($r);
|
579 |
'WHERE dc.nom_sel IS NOT NULL '.
|
594 |
if(!$propositions) return;
|
580 |
" AND ce_observation = $idObs ";
|
595 |
foreach ($propositions as $proposition) {
|
581 |
$propositions = $this->bdd->recupererTous($requetePropositions);
|
596 |
$idObs = $proposition['ce_observation'];
|
582 |
$observations[$id]['commentaires'] = $this->formaterDeterminations($propositions);
|
- |
|
583 |
}
|
597 |
$observations['"' . $idObs . '"']['commentaires'][] = $this->formaterDeterminations($proposition);
|
Line 584... |
Line 598... |
584 |
return $observations;
|
598 |
}
|
585 |
}
|
599 |
}
|
586 |
|
600 |
|
587 |
/**
|
601 |
/**
|
588 |
* Charger les votes sur les déterminations
|
602 |
* Charger les votes sur les déterminations
|
589 |
* @param Array $observations le tableau des observations à mettre à jour
|
603 |
* @param Array $observations le tableau des observations à mettre à jour
|
590 |
* */
|
- |
|
591 |
private function chargerVotes($ids_proposition, $propositions) {
|
- |
|
592 |
$listePropositions = implode(', ', $ids_proposition);
|
604 |
* */
|
593 |
$requeteVotes = 'SELECT * '.
|
- |
|
594 |
'FROM del_commentaire_vote '.
|
- |
|
595 |
"WHERE ce_proposition IN ($listePropositions)";
|
605 |
private function chargerVotes($ids_proposition, &$propositions) {
|
596 |
|
606 |
$resultatsVotes = $this->bdd->recupererTous(sprintf('SELECT * FROM del_commentaire_vote WHERE ce_proposition IN (%s)',
|
597 |
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
|
607 |
implode(',', $ids_proposition)));
|
598 |
foreach ($resultatsVotes as $vote) {
|
- |
|
599 |
$propositions[$vote['ce_proposition']]['votes'][$vote['id_vote']] = $this->formaterVote($vote);
|
608 |
foreach ($resultatsVotes as $vote) {
|
Line 600... |
Line 609... |
600 |
}
|
609 |
$propositions[$vote['ce_proposition']]['votes'][$vote['id_vote']] = $this->formaterVote($vote);
|
601 |
return $propositions;
|
610 |
}
|
602 |
}
|
611 |
}
|
603 |
|
612 |
|
604 |
/**
|
613 |
/**
|
605 |
* Charger le nombre de commentaires (sans détermination) associé à l'observation
|
- |
|
606 |
* @param Array $observations le tableau des observatins à mettre à jour
|
614 |
* Charger le nombre de commentaires (sans détermination) associé à l'observation
|
607 |
* */
|
- |
|
608 |
private function chargerNombreCommentaire($ids_proposition, $propositions) {
|
615 |
* @param Array $observations le tableau des observatins à mettre à jour
|
609 |
$listePropositions = implode(', ', $ids_proposition);
|
616 |
* */
|
610 |
$requeteNbCommentaires = 'SELECT ce_commentaire_parent, ce_proposition, COUNT( id_commentaire ) AS nb '.
|
- |
|
611 |
'FROM del_commentaire '.
|
- |
|
612 |
"WHERE ce_proposition IN ($listePropositions) ".
|
- |
|
613 |
'GROUP BY ce_proposition ';
|
617 |
private function chargerNombreCommentaire($ids_proposition, &$propositions) {
|
614 |
|
618 |
$listeCommentaires = $this->bdd->recupererTous(sprintf('SELECT ce_commentaire_parent, ce_proposition, COUNT( id_commentaire ) AS nb '.
|
615 |
$listeCommentaires = $this->bdd->recupererTous($requeteNbCommentaires);
|
619 |
'FROM del_commentaire WHERE ce_proposition IN (%s) GROUP BY ce_proposition',
|
616 |
|
620 |
implode(',', $ids_proposition)));
|
617 |
foreach ($listeCommentaires as $ligneProposition) {
|
621 |
foreach ($listeCommentaires as $ligneProposition) {
|
618 |
// ce test sert à exclure les proposition de 1er niveau qui sont elles aussi des commentaires
|
622 |
// ce test sert à exclure les proposition de 1er niveau qui sont elles aussi des commentaires
|
619 |
if($ligneProposition['ce_commentaire_parent'] != null && $ligneProposition['ce_commentaire_parent'] != 0) {
|
623 |
if($ligneProposition['ce_commentaire_parent'] != null && $ligneProposition['ce_commentaire_parent'] != 0) {
|
620 |
$propositions[$ligneProposition['ce_commentaire_parent']]['nb_commentaires'] = $ligneProposition['nb'];
|
624 |
$propositions[$ligneProposition['ce_commentaire_parent']]['nb_commentaires'] = $ligneProposition['nb'];
|
621 |
} else {
|
- |
|
622 |
$propositions[$ligneProposition['ce_proposition']]['observation']['nb_commentaires'] = $ligneProposition['nb'];
|
625 |
} else {
|
Line 623... |
Line 626... |
623 |
}
|
626 |
$propositions[$ligneProposition['ce_proposition']]['observation']['nb_commentaires'] = $ligneProposition['nb'];
|
624 |
}
|
627 |
}
|
625 |
return $propositions;
|
628 |
}
|
Line 656... |
Line 659... |
656 |
/**
|
659 |
/**
|
657 |
*
|
660 |
*
|
658 |
* Formate une liste de proposition en fonction du fichier de configuration
|
661 |
* Formate une liste de proposition en fonction du fichier de configuration
|
659 |
*/
|
662 |
*/
|
660 |
private function formaterDeterminations($listePropositions) {
|
663 |
private function formaterDeterminations($listePropositions) {
|
- |
|
664 |
if(!$listePropositions) return array();
|
661 |
$propositions_format = array();
|
665 |
$propositions_format = array();
|
662 |
if ($listePropositions != array()) {
|
- |
|
- |
|
666 |
|
663 |
foreach ($listePropositions as $id => $proposition) {
|
667 |
foreach ($listePropositions as $id => $proposition) {
|
664 |
$ids_proposition[] = $proposition['id_commentaire'];
|
668 |
$ids_proposition[] = $proposition['id_commentaire'];
|
665 |
|
669 |
|
666 |
$proposition_formatee = array('nb_commentaires' => '0');
|
670 |
$proposition_formatee = array('nb_commentaires' => '0');
|
667 |
foreach ($this->mappingCommentaire as $nomOriginal => $nomFinal) {
|
671 |
foreach ($this->mappingCommentaire as $nomOriginal => $nomFinal) {
|
668 |
if (isset($proposition[$nomOriginal])) {
|
672 |
if (isset($proposition[$nomOriginal])) {
|
669 |
$proposition_formatee[$nomFinal] = $proposition[$nomOriginal];
|
673 |
$proposition_formatee[$nomFinal] = $proposition[$nomOriginal];
|
670 |
}
|
- |
|
671 |
}
|
674 |
}
|
672 |
$propositions_format[$proposition['id_commentaire']] = $proposition_formatee;
|
- |
|
673 |
}
|
675 |
}
|
674 |
$propositions_format = $this->chargerVotes($ids_proposition, $propositions_format);
|
676 |
$propositions_format[$proposition['id_commentaire']] = $proposition_formatee;
|
675 |
$propositions_format = $this->chargerNombreCommentaire($ids_proposition, $propositions_format);
|
- |
|
676 |
}
|
677 |
}
|
- |
|
678 |
// modifie $propositions_format
|
- |
|
679 |
$this->chargerVotes($ids_proposition, $propositions_format);
|
- |
|
680 |
// modifie $propositions_format
|
- |
|
681 |
$this->chargerNombreCommentaire($ids_proposition, $propositions_format);
|
677 |
return $propositions_format;
|
682 |
return $propositions_format;
|
678 |
}
|
683 |
}
|
Line 679... |
Line 684... |
679 |
|
684 |
|
680 |
/**
|
685 |
/**
|