42,13 → 42,14 |
|
// redéfinis en 2020, affiche toutes les infos images et obs à partir d'un join pour n'avoir que les images liées à une obs |
public function rechercherImagesJoinObservation($id_utilisateur = null, $criteres = array(), $debut = 0 , $limite = 50) { |
$ordre = (isset($criteres['tri']) && $criteres['tri']) ? $criteres['tri'] : ''; |
unset($criteres['tri']); |
$direction = (isset($criteres['dir']) && $criteres['dir']) ? $criteres['dir'] : 'ASC'; |
unset($criteres['dir']); |
$imgUrlTplBase = explode('%', $this->config['settings']['celImgUrlTpl'])[0]; |
$debut = ($debut < 0) ? 0 : $debut; |
$requete_recherche_images = 'SELECT ci.`id_image` as id_photo, co.guid, |
$ordre = (isset($criteres['tri']) && $criteres['tri']) ? $criteres['tri'] : ''; |
unset($criteres['tri']); |
$direction = (isset($criteres['dir']) && $criteres['dir']) ? $criteres['dir'] : 'ASC'; |
unset($criteres['dir']); |
$imgUrlTplBase = explode('%', $this->config['settings']['celImgUrlTpl'])[0]; |
|
$debut = ($debut < 0) ? 0 : $debut; |
$requete_recherche_images = 'SELECT ci.`id_image` as id_photo, co.guid, |
`id_observation` as id_obs, `nom_sel`, `nom_sel_nn`, `zone_geo` as localisation, `latitude`, `longitude`, |
`date_observation` as date_obs, `commentaire`, `certitude`, `grade` as fiabilite, programme as projet, |
`score_identiplante` as score_ip, `url_identiplante` as url_ip, `validation_identiplante` as est_ip_valide, |
59,24 → 60,24 |
`ce_utilisateur` as id_utilisateur, `courriel_utilisateur` as mail_utilisateur, `pseudo_utilisateur` as nom_utilisateur, |
ci.`nom_original`, ci.`date_prise_de_vue` as date_photo, "Creative Commons BY-SA (2.0)" as licence, |
concat(`nom_sel`, " par ", `pseudo_utilisateur`, " [CC BY-SA 2.0 FR], via Tela Botanica") as attribution, |
concat("'.$imgUrlTplBase.'", lpad(ci.id_image, 9, "0"), "O") as url_photo, ci.`mots_cles_texte` as tags_photo '; |
|
$requete_recherche_images .= $this->fabriquerRequeteJointureDblObs(); |
$requete_recherche_images .= ($id_utilisateur != null) ? 'AND co.ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) : ''; |
|
|
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres); |
$requete_recherche_images .= $sous_requete_recherche; |
|
if (!empty($ordre)) { |
$requete_recherche_images .= ' ORDER BY '.$ordre.' '.$direction; |
} |
$requete_recherche_images .= ' LIMIT '.$debut.','.$limite; |
|
$resultats_images = array(); |
$resultats_images = Cel::db()->requeter($requete_recherche_images); |
|
return $resultats_images; |
concat("'.$imgUrlTplBase.'", lpad(ci.id_image, 9, "0"), "O,") as url_photo, ci.`mots_cles_texte` as tags_photo '; |
|
$requete_recherche_images .= $this->fabriquerRequeteJointureDblObs(); |
$requete_recherche_images .= ($id_utilisateur != null) ? 'AND co.ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) : ''; |
|
|
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres); |
$requete_recherche_images .= $sous_requete_recherche; |
|
if (!empty($ordre)) { |
$requete_recherche_images .= ' ORDER BY '.$ordre.' '.$direction; |
} |
$requete_recherche_images .= ' LIMIT '.$debut.','.$limite; |
|
$resultats_images = array(); |
$resultats_images = Cel::db()->requeter($requete_recherche_images); |
|
return $resultats_images; |
} |
|
public function rechercherImages($id_utilisateur = null, $criteres = array(), $debut = 0 , $limite = 50) { |
142,11 → 143,11 |
} |
|
private function fabriquerRequeteJointureDblObs() { |
$requete = 'FROM cel_images_export ci '. |
'JOIN cel_export_total co '. |
'ON ci.ce_observation = co.id_observation '. |
'WHERE 1 '; |
return $requete; |
$requete = 'FROM cel_images_export ci '. |
'JOIN cel_export_total co '. |
'ON ci.ce_observation = co.id_observation '. |
'WHERE 1 '; |
return $requete; |
} |
|
public function obtenirInformationsObservationsAssociees($id_utilisateur, $id_image) { |
220,9 → 221,13 |
$sous_requete .= ' AND '; |
break; |
case "standard": |
$sous_requete .= 'co.donnees_standard = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND '; |
break; |
$sous_requete .= 'co.donnees_standard = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND '; |
break; |
case "referentiel": |
$sous_requete .= 'co.referentiel = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND '; |
break; |
case "taxon": |
$valeur = str_replace('indetermine','null',$valeur); |
$sous_requete .= ' ('; |
232,33 → 237,49 |
$sous_requete .= ') AND ' ; |
break; |
case "auteur": |
$sous_requete .= '(co.ce_utilisateur LIKE '.Cel::db()->proteger($valeur.'%').' OR '. |
'co.courriel_utilisateur LIKE '.Cel::db()->proteger($valeur.'%').' OR '. |
'co.pseudo_utilisateur LIKE '.Cel::db()->proteger($valeur.'%'). |
') AND '; |
if (is_numeric($valeur)) { |
$sous_requete .= 'co.ce_utilisateur = '.Cel::db()->proteger($valeur).' AND '; |
} elseif (strpos($valeur, '@') !== false) { |
$sous_requete .= 'co.courriel_utilisateur = '.Cel::db()->proteger($valeur). |
' AND '; |
} else { |
$sous_requete .= 'co.pseudo_utilisateur LIKE '.Cel::db()->proteger($valeur.'%'). |
' AND '; |
} |
break; |
case "ce_zone_geo": |
if($valeur == "NULL") { |
$sous_requete .= "(co.ce_zone_geo IS NULL OR co.ce_zone_geo = '')"; |
} else { |
$sous_requete .= '(co.ce_zone_geo LIKE '.(is_numeric($valeur) ? Cel::db()->proteger('INSEE-C:'.$valeur.'%') : Cel::db()->proteger($valeur)).') '; |
if($valeur !== "NULL") { |
$depts = explode(",", $valeur); |
if (count($depts) == 1) { |
$sous_requete .= '(co.ce_zone_geo = '. Cel::db()->proteger($valeur).') '; |
} else { |
$sous_requete .= '(co.dept in ('.$valeur.')) '; |
} |
} |
break; |
case "zone_geo": |
if($valeur == "NULL") { |
$sous_requete .= "(co.zone_geo IS NULL OR co.zone_geo = '')"; |
} else { |
if($valeur !== "NULL") { |
$sous_requete .= '(co.zone_geo = '.Cel::db()->proteger($valeur).') '; |
} |
break; |
case "pays": |
if($valeur !== "NULL") { |
$sous_requete .= '(co.pays like '.Cel::db()->proteger($valeur.'%').') '; |
} |
break; |
case "famille": |
$sous_requete .= 'co.famille = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND ' ; |
break; |
case "programme": |
if($valeur !== "NULL") { |
$sous_requete .= '(co.programme = '.Cel::db()->proteger($valeur).') '; |
} |
break; |
case "tri": |
break; |
break; |
case "dir": |
break; |
break; |
default: |
$sous_requete .= 'ci.'.$nom.' = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND ' ; |