Line 64... |
Line 64... |
64 |
'ce_zone_geo AS id_zone_geo', 'zone_geo', 'lieudit',
|
64 |
'ce_zone_geo AS id_zone_geo', 'zone_geo', 'lieudit',
|
65 |
'station', 'milieu', 'date_observation', 'mots_cles_texte', 'date_transmission',
|
65 |
'station', 'milieu', 'date_observation', 'mots_cles_texte', 'date_transmission',
|
66 |
'ce_utilisateur AS `auteur.id`', 'prenom_utilisateur AS `auteur.prenom`',
|
66 |
'ce_utilisateur AS `auteur.id`', 'prenom_utilisateur AS `auteur.prenom`',
|
67 |
'nom_utilisateur AS `auteur.nom`', 'courriel_utilisateur AS observateur',
|
67 |
'nom_utilisateur AS `auteur.nom`', 'courriel_utilisateur AS observateur',
|
68 |
'commentaire'),
|
68 |
'commentaire'),
|
69 |
'di' => array('id_image', 'date_prise_de_vue AS `date`', 'hauteur' , 'largeur' /* 'nom_original'//apparemment inutilisé */),
|
69 |
'di' => array('id_image', 'date_prise_de_vue AS `date`', 'hauteur',/* 'largeur','nom_original' // apparemment inutilisés */),
|
70 |
'du' => array('prenom', 'nom', 'courriel'),
|
70 |
'du' => array('prenom', 'nom', 'courriel'),
|
71 |
'dc' => array('commentaire')
|
71 |
'dc' => array('commentaire')
|
72 |
);
|
72 |
);
|
Line 87... |
Line 87... |
87 |
static function reformateObservation($obs, $url_pattern = '') {
|
87 |
static function reformateObservation($obs, $url_pattern = '') {
|
88 |
$obs = array_map('array_filter', $obs);
|
88 |
$obs = array_map('array_filter', $obs);
|
89 |
$obs_merged = array();
|
89 |
$obs_merged = array();
|
90 |
foreach($obs as $o) {
|
90 |
foreach($obs as $o) {
|
91 |
$id = $o['id_observation'];
|
91 |
$id = $o['id_observation'];
|
- |
|
92 |
|
- |
|
93 |
// car auteur.id peut être un email, un hash, ou un annuaire_tela.U_ID
|
- |
|
94 |
// mais dans les deux premiers cas SELECT courriel AS observateur fait déjà l'affaire
|
- |
|
95 |
if(!is_numeric($o['auteur.id'])) $o['auteur.id'] = "0";
|
- |
|
96 |
if(!isset($o['auteur.nom'])) $o['auteur.nom'] = '[inconnu]';
|
- |
|
97 |
|
92 |
$image = array_intersect_key($o, array_flip(array('id_image', 'date', 'hauteur' , 'largeur', 'nom_original')));
|
98 |
$image = array_intersect_key($o, array_flip(array('id_image', 'date', 'hauteur' , 'largeur', 'nom_original')));
|
93 |
$image['binaire.href'] = sprintf($url_pattern, $image['id_image']);
|
99 |
$image['binaire.href'] = sprintf($url_pattern, $image['id_image']);
|
94 |
unset($o['id_image'], $o['date'], $o['hauteur'], $o['largeur'], $o['nom_original']);
|
100 |
unset($o['id_image'], $o['date'], $o['hauteur'], $o['largeur'], $o['nom_original']);
|
95 |
if(!isset($obs_merged['"' . $id . '"'])) $obs_merged['"' . $id . '"'] = $o;
|
101 |
if(!isset($obs_merged['"' . $id . '"'])) $obs_merged['"' . $id . '"'] = $o;
|
96 |
$obs_merged['"' . $id . '"']['images'][] = $image;
|
102 |
$obs_merged['"' . $id . '"']['images'][] = $image;
|
97 |
}
|
103 |
}
|
98 |
return $obs_merged;
|
104 |
return $obs_merged;
|
99 |
}
|
105 |
}
|
Line -... |
Line 106... |
- |
|
106 |
|
100 |
|
107 |
// utilisée uniquement par Observation.php
|
- |
|
108 |
static function reformateObservationSimpleIndex($obs, $url_pattern = '') {
|
- |
|
109 |
// XXX: cf Observation.php::consulter(), nous pourriouns ici
|
101 |
static function reformateObservationSimpleIndex($obs, $url_pattern = '') {
|
110 |
// conserver les valeurs vides (pour les phptests notamment, ou non)
|
102 |
$obs = array_map('array_filter', $obs);
|
111 |
$obs = array_map('array_filter', $obs);
|
103 |
$obs_merged = array();
|
112 |
$obs_merged = array();
|
104 |
foreach($obs as $o) {
|
113 |
foreach($obs as $o) {
|
105 |
$id = $o['id_observation'];
|
114 |
$id = $o['id_observation'];
|
Line 478... |
Line 487... |
478 |
__FILE__ . ':' . __LINE__);
|
487 |
__FILE__ . ':' . __LINE__);
|
479 |
$propositions = $this->bdd->recupererTous($r);
|
488 |
$propositions = $this->bdd->recupererTous($r);
|
480 |
if(!$propositions) return;
|
489 |
if(!$propositions) return;
|
481 |
foreach ($propositions as $proposition) {
|
490 |
foreach ($propositions as $proposition) {
|
482 |
$idObs = $proposition['ce_observation'];
|
491 |
$idObs = $proposition['ce_observation'];
|
- |
|
492 |
$idComment = $proposition['id_commentaire'];
|
- |
|
493 |
$comment = $this->formaterDetermination($idComment, $proposition);
|
483 |
$observations['"' . $idObs . '"']['commentaires'][] = $this->formaterDeterminations($proposition);
|
494 |
if($comment) $observations['"' . $idObs . '"']['commentaires'][$idComment] = $comment;
|
- |
|
495 |
|
484 |
}
|
496 |
}
|
485 |
}
|
497 |
}
|
Line -... |
Line 498... |
- |
|
498 |
|
- |
|
499 |
private function formaterDetermination($commentId, $proposition) {
|
486 |
|
500 |
if(!$proposition) return NULL;
|
- |
|
501 |
|
- |
|
502 |
$proposition_formatee = array('nb_commentaires' => '0');
|
487 |
/**
|
503 |
foreach ($this->mappingCommentaire as $nomOriginal => $nomFinal) {
|
488 |
* Charger les votes sur les déterminations
|
504 |
if (isset($proposition[$nomOriginal])) {
|
489 |
* @param Array $observations le tableau des observations à mettre à jour
|
505 |
$proposition_formatee[$nomFinal] = $proposition[$nomOriginal];
|
- |
|
506 |
}
|
- |
|
507 |
}
|
490 |
* */
|
508 |
|
491 |
private function chargerVotes($ids_proposition, &$propositions) {
|
509 |
// Charger les votes sur les déterminations
|
492 |
$resultatsVotes = $this->bdd->recupererTous(sprintf('SELECT * FROM del_commentaire_vote WHERE ce_proposition IN (%s)',
|
510 |
$resultatsVotes = $this->bdd->recupererTous(
|
- |
|
511 |
sprintf('SELECT * FROM del_commentaire_vote WHERE ce_proposition = %d', $commentId));
|
493 |
implode(',', $ids_proposition)));
|
512 |
|
494 |
foreach ($resultatsVotes as $vote) {
|
513 |
foreach ($resultatsVotes as $vote) {
|
495 |
$propositions[$vote['ce_proposition']]['votes'][$vote['id_vote']] = $this->formaterVote($vote);
|
514 |
$proposition_formatee['votes'][$vote['id_vote']] = $this->formaterVote($vote);
|
496 |
}
|
- |
|
Line 497... |
Line 515... |
497 |
}
|
515 |
}
|
- |
|
516 |
|
498 |
|
517 |
|
499 |
/**
|
- |
|
500 |
* Charger le nombre de commentaires (sans détermination) associé à l'observation
|
- |
|
501 |
* @param Array $observations le tableau des observatins à mettre à jour
|
518 |
// chargerNombreCommentaire()
|
502 |
* */
|
519 |
// Charger le nombre de commentaires (sans détermination) associé à l'observation
|
503 |
private function chargerNombreCommentaire($ids_proposition, &$propositions) {
|
520 |
$listeCommentaires = $this->bdd->recupererTous(sprintf(
|
504 |
$listeCommentaires = $this->bdd->recupererTous(sprintf('SELECT ce_commentaire_parent, ce_proposition, COUNT( id_commentaire ) AS nb '.
|
521 |
'SELECT ce_commentaire_parent, ce_proposition, COUNT( id_commentaire ) AS nb '.
|
505 |
'FROM del_commentaire WHERE ce_proposition IN (%s) GROUP BY ce_proposition',
|
522 |
'FROM del_commentaire WHERE ce_proposition = %d GROUP BY ce_proposition -- %s',
|
506 |
implode(',', $ids_proposition)));
|
523 |
$commentId, __FILE__ . ':' . __LINE__));
|
- |
|
524 |
foreach ($listeCommentaires as $ligneProposition) {
|
- |
|
525 |
// ce test sert à exclure les proposition de 1er niveau qui sont elles aussi des commentaires
|
- |
|
526 |
if($ligneProposition['ce_commentaire_parent']) {
|
- |
|
527 |
// TODO/debug: id_commentaire_parent != $commentId ??
|
- |
|
528 |
// reprendre la "logique" du code... moins de boucles, moins de requêtes, ...
|
- |
|
529 |
if($ligneProposition['ce_commentaire_parent'] != $commentId) {
|
507 |
foreach ($listeCommentaires as $ligneProposition) {
|
530 |
// restore_error_handler();
|
- |
|
531 |
error_log(sprintf("possible error: nb_commentaires = %s: comment = %d, parent = %d, %s",
|
508 |
// ce test sert à exclure les proposition de 1er niveau qui sont elles aussi des commentaires
|
532 |
$ligneProposition['nb'], $commentId, $ligneProposition['ce_commentaire_parent'], __FILE__));
|
509 |
if($ligneProposition['ce_commentaire_parent'] != null && $ligneProposition['ce_commentaire_parent'] != 0) {
|
533 |
}
|
510 |
$propositions[$ligneProposition['ce_commentaire_parent']]['nb_commentaires'] = $ligneProposition['nb'];
|
534 |
$proposition_formatee['nb_commentaires'] = $ligneProposition['nb'];
|
511 |
} else {
|
535 |
} else {
|
512 |
$propositions[$ligneProposition['ce_proposition']]['observation']['nb_commentaires'] = $ligneProposition['nb'];
|
536 |
$proposition_formatee['observation']['nb_commentaires'] = $ligneProposition['nb'];
|
513 |
}
|
- |
|
514 |
}
|
- |
|
515 |
}
|
- |
|
516 |
|
- |
|
517 |
/**
|
- |
|
518 |
*
|
- |
|
519 |
* Formate une liste de proposition en fonction du fichier de configuration
|
- |
|
520 |
*/
|
- |
|
521 |
private function formaterDeterminations($proposition) {
|
- |
|
522 |
if(!$proposition) return array();
|
- |
|
Line 523... |
Line -... |
523 |
$propositions_format = array();
|
- |
|
524 |
$ids_proposition[] = $proposition['id_commentaire'];
|
- |
|
525 |
|
- |
|
526 |
$proposition_formatee = array('nb_commentaires' => '0');
|
- |
|
527 |
foreach ($this->mappingCommentaire as $nomOriginal => $nomFinal) {
|
- |
|
528 |
if (isset($proposition[$nomOriginal])) {
|
- |
|
529 |
$proposition_formatee[$nomFinal] = $proposition[$nomOriginal];
|
- |
|
530 |
}
|
- |
|
531 |
}
|
- |
|
532 |
$propositions_format[$proposition['id_commentaire']] = $proposition_formatee;
|
- |
|
533 |
// modifie $propositions_format
|
- |
|
534 |
$this->chargerVotes($ids_proposition, $propositions_format);
|
537 |
}
|
535 |
// modifie $propositions_format
|
538 |
}
|
Line 536... |
Line 539... |
536 |
$this->chargerNombreCommentaire($ids_proposition, $propositions_format);
|
539 |
|
537 |
return $propositions_format;
|
540 |
return $proposition_formatee;
|
538 |
}
|
541 |
}
|