Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1680 → Rev 1681

/trunk/services/modules/0.1/plantnet/Changements.php
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;
}
}