/trunk/jrest/lib/GestionImage.php |
---|
238,15 → 238,6 |
$this->logger($message); |
} |
$requete = 'DELETE FROM cel_obs_images '. |
"WHERE id_image in ($chaine_ids_images) ". |
' -- '.__FILE__.' : '.__LINE__; |
$resultat_suppression_lien_images_obs = Cel::db()->executer($requete); |
if ($resultat_suppression_lien_images_obs === false) { |
$message = "Erreur lors de la suppression des observations associées à l'image" ; |
$this->logger($message); |
} |
$gestion_mots_cles = new GestionMotsClesChemin($this->config, 'images'); |
$resultat_suppression_lien_images_mots_cles = $gestion_mots_cles->supprimerToutesLiaisonsPourIdsElementsLies($ids_images_non_protegees); |
if (!$resultat_suppression_lien_images_mots_cles === false) { |
/trunk/jrest/lib/RechercheImage.php |
---|
104,63 → 104,52 |
} |
private function fabriquerRequeteJointureObs() { |
$requete_jointure_observations = 'FROM cel_images ci '. |
'LEFT JOIN cel_obs_images coi '. |
'ON coi.id_image = ci.id_image '. |
$requete = 'FROM cel_images ci '. |
'LEFT JOIN cel_obs co '. |
'ON coi.id_observation = co.id_observation '. |
'ON ci.ce_observation = co.id_observation '. |
'WHERE 1 '; |
return $requete_jointure_observations; |
return $requete; |
} |
public function obtenirInformationsObservationsAssociees($id_utilisateur, $id_image) { |
$requete = 'SELECT ce_observation FROM cel_images WHERE id_image = '.$id_image; |
$resultats = Cel::db()->requeter($requete); |
$requete_table_liaison = 'SELECT id_observation FROM cel_obs_images WHERE id_image = '.$id_image; |
$idsObsListe = array(); |
foreach ($resultats as $liaison) { |
$idsObsListe[] = $liaison['ce_observation']; |
} |
$ids_obs = implode(',', $idsObsListe); |
$resultats_liaisons_images = Cel::db()->requeter($requete_table_liaison); |
$ids_obs = ''; |
foreach($resultats_liaisons_images as $liaison) { |
$ids_obs .= $liaison['id_observation'].","; |
} |
$ids_obs = rtrim($ids_obs,','); |
$infos_obs = ''; |
if (trim($ids_obs) != '') { |
$requete = 'SELECT * FROM cel_obs WHERE id_observation IN ('.$ids_obs.') AND ce_utilisateur = "'.$id_utilisateur.'"'; |
$resultats = Cel::db()->requeter($requete); |
if(trim($ids_obs) != '') { |
$requete_obs_liees = 'SELECT * FROM cel_obs WHERE id_observation IN ('.$ids_obs.') AND ce_utilisateur ="'.$id_utilisateur.'"'; |
$resultat_obs_liees = Cel::db()->requeter($requete_obs_liees); |
foreach($resultat_obs_liees as $obs_liee) |
{ |
foreach ($resultats as $obs_liee) { |
$infos_obs .= $obs_liee['ordre'].'#'.$obs_liee['nom_sel'].'#'.$obs_liee['transmission'].';;' ; |
} |
} |
return $infos_obs; |
} |
private function fabriquerSousRequeteRecherche($id_utilisateur, $criteres) { |
$sous_requete = ' AND '; |
foreach($criteres as $nom => $valeur) |
{ |
foreach($criteres as $nom => $valeur) { |
if($valeur == null || trim($nom) == "" || trim($valeur) == "") { |
continue; |
} |
switch($nom) { |
case "id_image"; |
switch($nom) { |
case "id_image"; |
$sous_requete .= 'ci.id_image = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND '; |
break; |
$sous_requete .= ' AND '; |
break; |
case "mots_cles"; |
$sous_requete .= $this->creerSousRequeteMotsCles($valeur); |
break; |
break; |
case "id_mots_cles"; |
$liste_mc = '"'.str_replace(';','","',$valeur).'"'; |
167,18 → 156,17 |
$tpl_sous_requete = GestionMotsClesChemin::obtenirTemplateRequeteMotsClesIds('images'); |
$sous_requete .= 'id_image IN ('.sprintf($tpl_sous_requete, $liste_mc).')'; |
$sous_requete .= ' AND ' ; |
break; |
break; |
case "commentaire": |
$mots_comment_liste = explode(" " , $valeur) ; |
foreach($mots_comment_liste as $mot_comment) |
{ |
foreach($mots_comment_liste as $mot_comment) { |
$mot_comment = trim($mot_comment) ; |
$sous_requete .= 'ci.'.$nom.' LIKE '.Cel::db()->proteger('%'.$mot_comment.'%') ; |
$sous_requete .= ' AND ' ; |
} |
break; |
break; |
case "annee": |
case "mois": |
246,9 → 234,7 |
break; |
} |
} |
$sous_requete = rtrim($sous_requete,' AND '); |
return $sous_requete; |
} |
/trunk/jrest/lib/Cel.php |
---|
346,7 → 346,7 |
$autorisation = ($this->etreUtilisateurAutorise() && $this->etreAdminCel($identifiant)) ? true : false; |
return $autorisation; |
} |
public function etreAdminCelParId($id) { |
// si l'utilisateur s'est déjà identifié, alors les infos |
// sur le fait qu'il est admin ou non sont déjà disponibles |
355,7 → 355,7 |
} else { |
$requete = "SELECT admin FROM cel_utilisateurs WHERE id_utilisateur = ".Cel::db()->proteger($id); |
$resultat = Cel::db()->requeter($requete); |
$admin = false; |
if ($resultat && count($resultat) > 0) { |
$admin = ($resultat[0]['admin'] == 1); |
372,7 → 372,7 |
} else { |
$requete = "SELECT admin FROM cel_utilisateurs WHERE courriel = ".Cel::db()->proteger($courriel); |
$resultat = Cel::db()->requeter($requete); |
$admin = false; |
if ($resultat && count($resultat) > 0) { |
$admin = ($resultat[0]['admin'] == 1); |
551,7 → 551,7 |
protected function convertirCodeZoneGeoVersDepartement($code_zone_geo) { |
$code_departement = ''; |
if($this->estUnCodeInseeDepartement($code_zone_geo)) { |
if ($this->estUnCodeInseeDepartement($code_zone_geo)) { |
$code_departement = substr(ltrim($code_zone_geo,'INSEE-C:'),0,2); |
} |
return $code_departement; |
563,7 → 563,7 |
protected function convertirCodeZoneGeoVersCodeInsee($code_zone_geo) { |
$code_departement = ''; |
if($this->estUnCodeInseeDepartement($code_zone_geo)) { |
if ($this->estUnCodeInseeDepartement($code_zone_geo)) { |
$code_departement = ltrim($code_zone_geo,'INSEE-C:'); |
} |
return $code_departement; |
642,7 → 642,7 |
} |
return $urlEflore; |
} |
protected function nePasInterpreterXml($txt) { |
return '<![CDATA['.$txt.']]>'; |
} |
/trunk/jrest/lib/FormateurGroupeColonne.php |
---|
453,7 → 453,7 |
if(!$obsids) return; |
$rec = Cel::db()->requeter( |
sprintf("SELECT o.id_observation, GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i " . |
"FROM cel_images i LEFT JOIN cel_obs_images oi ON (i.id_image = oi.id_image) LEFT JOIN cel_obs o ON (oi.id_observation = o.id_observation) " . |
"FROM cel_images i LEFT JOIN cel_obs o ON (i.ce_observation = o.id_observation) " . |
"WHERE o.ce_utilisateur = %d AND o.id_observation IN (%s) " . |
"GROUP BY id_observation", |
SEPARATEUR_IMAGES, |
471,10 → 471,12 |
return self::$cache['getImages'][$obs['id_observation']]; |
$rec = Cel::db()->requeter( |
sprintf("SELECT GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i FROM cel_images i" |
." LEFT JOIN cel_obs_images oi ON (i.id_image = oi.id_image)" |
." LEFT JOIN cel_obs o ON (oi.id_observation = o.id_observation)" |
." WHERE o.ce_utilisateur = %d AND o.id_observation = %d LIMIT 1", |
sprintf("SELECT GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i ". |
"FROM cel_images i ". |
" LEFT JOIN cel_obs o ON (i.ce_observation = o.id_observation) ". |
"WHERE o.ce_utilisateur = %d ". |
" AND o.id_observation = %d ". |
'LIMIT 1', |
SEPARATEUR_IMAGES, |
$id_utilisateur, |
$obs['id_observation'])); |
651,7 → 653,7 |
} |
static function getNomCommun_v4($obs) { |
// Attention la fonction suppose que l'on ait fait appel à getNomCommun_preload avant |
// Attention la fonction suppose que l'on ait fait appel à getNomCommun_preload avant |
// d'être appelée |
if(! $obs['nt']) return NULL; |
if(! self::referenceTableExiste()) return NULL; |
695,15 → 697,15 |
$data = $v; |
unset($data['referentiel']); // non nécessaire |
unset($data['num_nom_retenu']); // non nécessaire |
// Des fois les synonymes ont des valeurs pour baseflor et pas le nom retenu et vice versa |
// on les fusionne pour avoir le maximum d'infos, en attendant de repenser la table référence |
// on les fusionne pour avoir le maximum d'infos, en attendant de repenser la table référence |
if(isset(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']])) { |
$orig = array_filter(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']], 'strlen'); |
$data = array_filter($data , 'strlen'); |
$orig = array_filter(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']], 'strlen'); |
$data = array_filter($data , 'strlen'); |
$data = array_merge($orig, $data); |
} |
self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']] = $data; |
} |
710,7 → 712,7 |
return NULL; |
} |
/** |
/** |
* Attention la fonction suppose que l'on ait fait appel à baseflor_preload avant |
* d'être appelée |
* @CASSECOUILLES elle pourrait le détecter et le faire elle-même |
742,12 → 744,12 |
// Quand les données sont prêtes, on les fusionne |
$ligne = array_merge($ligne, $donneesBF); |
} |
static function champsEtendus_preload($cel, $obsids) { |
$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs'); |
$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs'); |
$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($obsids); |
// Supprime les champs étendus considérés comme privés dans le cas de l'export public en chargeant |
// Supprime les champs étendus considérés comme privés dans le cas de l'export public en chargeant |
// le catalogue et en excluant ceux qui sont explicitement privés |
if(!$cel->export_prive) { |
$indices_a_supprimer = array(); |
754,7 → 756,7 |
$catalogue_champs_etendus = $gestion_champs_etendus->consulterCatalogueChampsEtendusPredefinis(); |
foreach($catalogue_champs_etendus as $champ_catalogue) { |
if($champ_catalogue['options']['prive'] == 1) { |
// Les champs étendus peuvent avoir des variantes lorsqu'ils apparaissent de multiples fois. |
// Les champs étendus peuvent avoir des variantes lorsqu'ils apparaissent de multiples fois. |
// Vont donc matcher monChamp mais aussi monChamp:1, monChamp:2 ou bien monChamp1, monChamp: etc... |
// pour plus de sécurité (ce filtra n'est affectué qu'une fois au début de l'export donc on ne s'en prive pas) |
$entrees = preg_grep("/".$champ_catalogue['cle']."(?::?\d*)?$/", $colonnes_champs_supp_par_obs); |
763,11 → 765,11 |
} |
// les champs étendus sont renvoyés dans l'export suivant les colonnes présentes dans ce tableau |
// les éliminer de la liste des colonnes suffit à les faire ignorer par l'export |
foreach($indices_a_supprimer as $indice_supp) { |
unset($colonnes_champs_supp_par_obs[$indice_supp]); |
foreach($indices_a_supprimer as $indice_supp) { |
unset($colonnes_champs_supp_par_obs[$indice_supp]); |
} |
} |
// ces deux lignes réordonnent l'ordre des colonnes des champs étendus en fonction de l'ordre (très spécifique) |
// de self::$ordre_champ_etendus_Florileges, les champs non-mentionnés sont ajoutés à la fin. |
$colonnes_champs_supp_par_obs = self::sortArrayByArray(array_flip($colonnes_champs_supp_par_obs), |
/trunk/jrest/lib/GestionObservation.php |
---|
297,19 → 297,8 |
$msg = "Erreur de suppression d'une liste d'observations : $resultat_suppression_observations"; |
$this->logger('CEL_bugs', $msg); |
} else { |
$requete = 'DELETE FROM cel_obs_images '. |
"WHERE id_observation IN ($chaine_ids_obs) ". |
' -- ' . __FILE__ . ':' . __LINE__; |
// TODO [jpm] : pourquoi on supprime pas les images si on supprime les obs ? |
$resultat_suppression_liens = Cel::db()->executer($requete); |
if ($resultat_suppression_liens === false) { |
$msg = "Erreur de suppression d'une liste de liaison entre observations et images : $requete"; |
$this->logger('CEL_bugs', $msg); |
} else { |
$retour = true; |
} |
$gestion_mots_cles = new GestionMotsClesChemin($this->config, 'obs'); |
$resultat_suppression_mots_cles = $gestion_mots_cles->supprimerToutesLiaisonsPourIdsElementsLies($ids_obs_non_protegees); |