17,14 → 17,14 |
'nom' => 'coel_structure', |
'prefixe' => 'cs', |
'id' => array('cs_id_structure')), |
122 => array( |
'nom' => 'coel_structure_conservation', |
'prefixe' => 'csc', |
'id' => array('csc_id_structure')), |
123 => array( |
'nom' => 'coel_structure_valorisation', |
'prefixe' => 'csv', |
'id' => array('csv_id_structure'))); |
122 => array( |
'nom' => 'coel_structure_conservation', |
'prefixe' => 'csc', |
'id' => array('csc_id_structure')), |
123 => array( |
'nom' => 'coel_structure_valorisation', |
'prefixe' => 'csv', |
'id' => array('csv_id_structure'))); |
|
/** |
* Méthode principale appelée avec une requête de type GET. |
67,7 → 67,7 |
$p = $this->traiterParametresUrl(array('id_projet', 'id_structure', 'recherche'), $param); |
|
// Construction de la requête |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' cs.*, csc.*, csv.*, '. |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' cs.*, csc.*, csv.*, '. |
' cmhl_date_modification, cmhl_notes, cmhl_source, cmhl_ce_modifier_par, cmhl_ce_etat, cmhl_ip '. |
'FROM coel_structure AS cs '. |
' LEFT JOIN coel_meta_historique_ligne ON (cs_ce_meta = cmhl_id_historique_ligne) '. |
128,7 → 128,7 |
$this->messages[] = "Il est obligatoire d'indiquer type de recherche pour utiliser ce service."; |
} else { |
// Construction de la requête |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' '. |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' '. |
' IF ( SUBSTRING( cs_code_postal FROM 1 FOR 2 ) >= 96, '. |
' SUBSTRING( cs_code_postal FROM 1 FOR 3 ), '. |
' SUBSTRING( cs_code_postal FROM 1 FOR 2 ) ) AS id, '. |
222,8 → 222,8 |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
} |
|
$this->envoyer($id_structure); |
|
$this->envoyer($id_structure); |
} |
|
/** |
258,9 → 258,13 |
|
// Vérification des tables à vraiment mettre à jour en fonction des données passées. |
$tables_a_modifier = $this->recupererTablesAModifier($params); |
|
|
// Pour chaque table du module nous lançons si nécessaire l'historisation puis la mise à jour |
foreach ($tables_a_modifier as $table_id => $table) { |
if(!$this->avoirCleComplete($table)) { |
error_log("tentative d'UPDATE sans contrainte de WHERE, $table = " . print_r($table, TRUE)); |
continue; // ne pas mettre à jour sans contrainte de WHERE |
} |
$this->mettreAJourAvecCle($id_utilisateur, $id_session, $table_id, $table); |
} |
} catch (PDOException $e) { |
279,7 → 283,7 |
* Méthode appelée pour supprimer un élément |
*/ |
public function deleteElement($uid) { |
// NOTES : une structure ne peut pas être supprimée si elle possède des collections liées. |
// NOTES : une structure ne peut pas être supprimée si elle possède des collections liées. |
// Vérification de la présence des id passés par l'url |
if (!isset($uid[0]) || !isset($uid[1])) { |
$this->messages[] = "Identifiant de structure ou d'utilisateur manquant. Vous ne devriez pas avoir accès à ce service."; |
288,39 → 292,39 |
list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]); |
|
// Contrôle du non détournement de l'utilisateur |
if ($this->etreAutorise($id_utilisateur)) { |
if ($this->etreAutorise($id_utilisateur)) { |
// Récupération des id passés par l'url |
$identifiants = explode(',', rtrim($uid[1], ',')); |
|
try { |
if (count($identifiants) == 0) { |
$this->messages[] = "Aucun enregistrement n'a été supprimé."; |
} else { |
foreach ($identifiants as $id_structure) { |
// Vérification que la structure ne possède pas de collections liées |
try { |
if (count($identifiants) == 0) { |
$this->messages[] = "Aucun enregistrement n'a été supprimé."; |
} else { |
foreach ($identifiants as $id_structure) { |
// Vérification que la structure ne possède pas de collections liées |
if ($this->verifierPresenceCollection($id_structure) === false) { |
$params = array('cs_id_structure' => $id_structure, 'csc_id_structure' => $id_structure, 'csv_id_structure' => $id_structure); |
$tables_a_modifier = $this->recupererTablesAModifier($params); |
|
foreach ($tables_a_modifier as $table_id => $table) { |
if ($this->avoirEnregistrement($table)) { |
$resultat = $this->supprimer($table); |
if ($this->avoirEnregistrement($table)) { |
$resultat = $this->supprimer($table); |
if ($resultat === true) { |
// Historisation (Ajout des méta-données) |
$cle = $this->recupererCle($table); |
$this->historiser($table_id, $cle, 'NULL', $id_utilisateur, 3, $id_session); |
} |
} |
} |
} |
} |
} else { |
$this->messages[] = "La structure '$id_structure' ne peut pas être supprimée car elle possède des collections liées."; |
} |
} |
} |
} catch (PDOException $e) { |
} |
} |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
} |
} |
} |
} |
|
// Envoie sur la sortie standard |
328,11 → 332,11 |
} |
|
private function verifierPresenceCollection($id_structure) { |
$requete = 'SELECT COUNT(cc_id_collection) AS nbre_collection '. |
$requete = 'SELECT COUNT(cc_id_collection) AS nbre_collection '. |
'FROM coel_collection '. |
"WHERE cc_ce_structure = '$id_structure' ". |
'GROUP BY cc_ce_structure '; |
|
'GROUP BY cc_ce_structure '; |
|
// Vérification que la structure ne possède pas de collections liées |
$nbre_collection = $this->bdd->query($requete)->fetchColumn(); |
|