Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2445 → Rev 2446

/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);