73,7 → 73,9 |
$compte = $this->bdd->recuperer('SELECT FOUND_ROWS() AS nbre'); |
$total = (int) $compte['nbre']; |
|
$obs = $this->regrouperObs($liaisons); |
$imgdata = $this->recupererDonneeObs($liaisons); |
$obs = $this->regrouperObs($liaisons, $imgdata); |
|
$obs = $this->chargerPropositionPlusProbable($obs); |
$obs = $this->orderArray($obs); |
} |
119,16 → 121,7 |
|
$requete_sql = |
'select SQL_CALC_FOUND_ROWS vdi.id_observation, vdi.id_image, '. |
'vdi.nom_sel, '. |
'vdi.nom_referentiel, vdi.nom_ret, vdi.nom_ret_nn, vdi.nt, vdi.famille, '. |
'vdi.zone_geo, vdi.latitude, vdi.longitude, '. |
'vdi.date_observation, vdi.date_creation, vdi.date_transmission, '. |
'vdi.mots_cles_texte as mots_cles_texte, '. |
'vdi.i_mots_cles_texte as mots_cles_texte_image, '. |
|
'vdi.ce_utilisateur as ce_utilisateur, '. |
'vdi.prenom_utilisateur, vdi.courriel_utilisateur, vdi.nom_utilisateur, vdi.nom_original as nom_image, '. |
|
'GROUP_CONCAT(del_image_vote.valeur) as votes, GROUP_CONCAT(DISTINCT tag) as tags, '. |
|
'GREATEST(vdi.date_creation, vdi.date_modification, MAX(del_image_tag.date), '. |
168,44 → 161,85 |
|
} |
|
|
// recupere les donnée associées (fait en 2 requetes pour optimiser) |
private function recupererDonneeObs(&$liaisons) { |
|
// recuperer les ids |
$ids = array(); |
foreach ($liaisons as $img) { |
$id = $img['id_image']; |
$ids[] = $id; |
} |
|
// recuperer les donnees |
$resultats = $this->bdd->recupererTous(sprintf( |
'SELECT '. |
'vdi.id_observation, vdi.id_image, '. |
'vdi.nom_sel, '. |
'vdi.nom_referentiel, vdi.nom_ret, vdi.nom_ret_nn, vdi.nt, vdi.famille, '. |
'vdi.zone_geo, vdi.latitude, vdi.longitude, '. |
'vdi.date_observation, vdi.date_creation, vdi.date_transmission, '. |
'vdi.mots_cles_texte as mots_cles_texte, '. |
'vdi.i_mots_cles_texte as mots_cles_texte_image, '. |
|
'vdi.ce_utilisateur as ce_utilisateur, '. |
'vdi.prenom_utilisateur, vdi.courriel_utilisateur, vdi.nom_utilisateur, vdi.nom_original as nom_image '. |
|
'FROM v_del_image as vdi '. |
'WHERE vdi.id_image IN (%s) '. |
'', implode(',', $ids))); |
|
// regroupe les données par id_image |
$img_data = array(); |
foreach ($resultats as $img) { |
$id = $img['id_image']; |
$img_data[$id] = $img; |
} |
return $img_data; |
} |
|
/** |
* Retourner un tableau d'images formaté en fonction des liaisons trouvées |
* @param $liaisons les liaisons de la table del_obs_images |
* */ |
private function regrouperObs(&$liaisons) { |
private function regrouperObs(&$liaisons, &$imgdatas) { |
|
// regroupe les observations |
$obs = array(); |
foreach ($liaisons as $img) { |
$idobs = $img['id_observation']; |
$idimg = $img['id_image']; |
|
$imgdata = $imgdatas[$idimg]; |
|
if (!isset($obs[$idobs])) { |
$obs[$idobs] = array(); |
} |
|
$obs[$idobs]['id_observation'] = $idobs; |
$obs[$idobs]['auteur_id'] = $img['ce_utilisateur']; |
$obs[$idobs]['auteur_prenom'] = $img['prenom_utilisateur']; |
$obs[$idobs]['auteur_nom'] = $img['nom_utilisateur']; |
$obs[$idobs]['auteur_courriel'] = $img['courriel_utilisateur']; |
$obs[$idobs]['auteur_id'] = $imgdata['ce_utilisateur']; |
$obs[$idobs]['auteur_prenom'] = $imgdata['prenom_utilisateur']; |
$obs[$idobs]['auteur_nom'] = $imgdata['nom_utilisateur']; |
$obs[$idobs]['auteur_courriel'] = $imgdata['courriel_utilisateur']; |
|
$obs[$idobs]['mots_cles_obs_cel'] = $this->formaterMotsClesCel($img['mots_cles_texte']); |
$obs[$idobs]['mots_cles_obs_cel'] = $this->formaterMotsClesCel($imgdata['mots_cles_texte']); |
|
$obs[$idobs]['date_observation'] = $img['date_observation']; |
$obs[$idobs]['date_publication'] = $img['date_transmission']; |
$obs[$idobs]['date_creation'] = $img['date_creation']; |
$obs[$idobs]['date_observation'] = $imgdata['date_observation']; |
$obs[$idobs]['date_publication'] = $imgdata['date_transmission']; |
$obs[$idobs]['date_creation'] = $imgdata['date_creation']; |
$obs[$idobs]['date_changement'] = $img['modif_date']; |
|
$obs[$idobs]['nom_sel'] = $img['nom_sel']; |
$obs[$idobs]['nom_referentiel'] = $img['nom_referentiel']; |
$obs[$idobs]['nom_ret'] = $img['nom_ret']; |
$obs[$idobs]['nn'] = $img['nom_ret_nn']; |
$obs[$idobs]['nt'] = $img['nt']; |
$obs[$idobs]['famille'] = $img['famille']; |
$obs[$idobs]['nom_sel'] = $imgdata['nom_sel']; |
$obs[$idobs]['nom_referentiel'] = $imgdata['nom_referentiel']; |
$obs[$idobs]['nom_ret'] = $imgdata['nom_ret']; |
$obs[$idobs]['nn'] = $imgdata['nom_ret_nn']; |
$obs[$idobs]['nt'] = $imgdata['nt']; |
$obs[$idobs]['famille'] = $imgdata['famille']; |
|
$obs[$idobs]['zone_geo'] = $img['zone_geo']; |
$obs[$idobs]['latitude'] = floatval($img['latitude']); |
$obs[$idobs]['longitude'] = floatval($img['longitude']); |
$obs[$idobs]['zone_geo'] = $imgdata['zone_geo']; |
$obs[$idobs]['latitude'] = floatval($imgdata['latitude']); |
$obs[$idobs]['longitude'] = floatval($imgdata['longitude']); |
|
|
if (!isset($obs[$idobs]['images'])) { |
214,11 → 248,11 |
|
$img_obj = array( |
'id_image' => $img['id_image'], |
'nom_image' => $img['nom_image'], |
'nom_image' => $imgdata['nom_image'], |
'url' => sprintf('http://api.tela-botanica.org/img:%09dO.jpg', $img['id_image']), |
'votes' => array_map('intval', explode(',', $img['votes'])), |
'tags' => explode(',', $img['tags']), |
'mots_cles_img_cel' => $this->formaterMotsClesCel($img['mots_cles_texte_image']) |
'mots_cles_img_cel' => $this->formaterMotsClesCel($imgdata['mots_cles_texte_image']) |
); |
// push |
$obs[$idobs]['images'][] = $img_obj; |
289,7 → 323,6 |
* */ |
private function formaterMotsClesCel($chaineMotCleCel) { |
|
|
$mots_cles_cel_affiches = "fleur,fleurs,feuille,feuilles,ecorce,fruit,fruits,port,plantnet,plantscan_new"; |
|
|
297,7 → 330,11 |
explode(',', $mots_cles_cel_affiches), // $tabMotsClesAffiches |
explode(',', $chaineMotCleCel)); // $tabMotsClesCel |
|
return explode(',', implode(',', $result)); |
if (count($result) === 0) { |
return array(); |
} |
$ret = explode(',', implode(',', $result)); |
return $ret; |
} |
|
} |