Line 15... |
Line 15... |
15 |
// ATTENTION : tjrs garder la table principale en premier, puis mettre les tables spécialisées.
|
15 |
// ATTENTION : tjrs garder la table principale en premier, puis mettre les tables spécialisées.
|
16 |
protected $tables = array( 120 => array(
|
16 |
protected $tables = array( 120 => array(
|
17 |
'nom' => 'coel_structure',
|
17 |
'nom' => 'coel_structure',
|
18 |
'prefixe' => 'cs',
|
18 |
'prefixe' => 'cs',
|
19 |
'id' => array('cs_id_structure')),
|
19 |
'id' => array('cs_id_structure')),
|
20 |
122 => array(
|
20 |
122 => array(
|
21 |
'nom' => 'coel_structure_conservation',
|
21 |
'nom' => 'coel_structure_conservation',
|
22 |
'prefixe' => 'csc',
|
22 |
'prefixe' => 'csc',
|
23 |
'id' => array('csc_id_structure')),
|
23 |
'id' => array('csc_id_structure')),
|
24 |
123 => array(
|
24 |
123 => array(
|
25 |
'nom' => 'coel_structure_valorisation',
|
25 |
'nom' => 'coel_structure_valorisation',
|
26 |
'prefixe' => 'csv',
|
26 |
'prefixe' => 'csv',
|
27 |
'id' => array('csv_id_structure')));
|
27 |
'id' => array('csv_id_structure')));
|
Line 28... |
Line 28... |
28 |
|
28 |
|
29 |
/**
|
29 |
/**
|
30 |
* Méthode principale appelée avec une requête de type GET.
|
30 |
* Méthode principale appelée avec une requête de type GET.
|
31 |
*/
|
31 |
*/
|
Line 65... |
Line 65... |
65 |
|
65 |
|
66 |
// Pré traitement des paramêtres
|
66 |
// Pré traitement des paramêtres
|
Line 67... |
Line 67... |
67 |
$p = $this->traiterParametresUrl(array('id_projet', 'id_structure', 'recherche'), $param);
|
67 |
$p = $this->traiterParametresUrl(array('id_projet', 'id_structure', 'recherche'), $param);
|
68 |
|
68 |
|
69 |
// Construction de la requête
|
69 |
// Construction de la requête
|
70 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' cs.*, csc.*, csv.*, '.
|
70 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' cs.*, csc.*, csv.*, '.
|
71 |
' cmhl_date_modification, cmhl_notes, cmhl_source, cmhl_ce_modifier_par, cmhl_ce_etat, cmhl_ip '.
|
71 |
' cmhl_date_modification, cmhl_notes, cmhl_source, cmhl_ce_modifier_par, cmhl_ce_etat, cmhl_ip '.
|
72 |
'FROM coel_structure AS cs '.
|
72 |
'FROM coel_structure AS cs '.
|
73 |
' LEFT JOIN coel_meta_historique_ligne ON (cs_ce_meta = cmhl_id_historique_ligne) '.
|
73 |
' LEFT JOIN coel_meta_historique_ligne ON (cs_ce_meta = cmhl_id_historique_ligne) '.
|
Line 126... |
Line 126... |
126 |
$p = $this->traiterParametresUrl(array('type', 'projets'), $param);
|
126 |
$p = $this->traiterParametresUrl(array('type', 'projets'), $param);
|
127 |
if (!isset($p['type'])) {
|
127 |
if (!isset($p['type'])) {
|
128 |
$this->messages[] = "Il est obligatoire d'indiquer type de recherche pour utiliser ce service.";
|
128 |
$this->messages[] = "Il est obligatoire d'indiquer type de recherche pour utiliser ce service.";
|
129 |
} else {
|
129 |
} else {
|
130 |
// Construction de la requête
|
130 |
// Construction de la requête
|
131 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' '.
|
131 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' '.
|
132 |
' IF ( SUBSTRING( cs_code_postal FROM 1 FOR 2 ) >= 96, '.
|
132 |
' IF ( SUBSTRING( cs_code_postal FROM 1 FOR 2 ) >= 96, '.
|
133 |
' SUBSTRING( cs_code_postal FROM 1 FOR 3 ), '.
|
133 |
' SUBSTRING( cs_code_postal FROM 1 FOR 3 ), '.
|
134 |
' SUBSTRING( cs_code_postal FROM 1 FOR 2 ) ) AS id, '.
|
134 |
' SUBSTRING( cs_code_postal FROM 1 FOR 2 ) ) AS id, '.
|
135 |
' COUNT( cs_id_structure ) AS nbre '.
|
135 |
' COUNT( cs_id_structure ) AS nbre '.
|
136 |
'FROM coel_structure '.
|
136 |
'FROM coel_structure '.
|
Line 220... |
Line 220... |
220 |
$this->ajouterGuid($params['cpr_abreviation'], $id_structure);
|
220 |
$this->ajouterGuid($params['cpr_abreviation'], $id_structure);
|
221 |
}
|
221 |
}
|
222 |
} catch (PDOException $e) {
|
222 |
} catch (PDOException $e) {
|
223 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
|
223 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
|
224 |
}
|
224 |
}
|
225 |
|
225 |
|
226 |
$this->envoyer($id_structure);
|
226 |
$this->envoyer($id_structure);
|
227 |
}
|
227 |
}
|
Line 228... |
Line 228... |
228 |
|
228 |
|
229 |
/**
|
229 |
/**
|
230 |
* Méthode appelée pour mettre à jour un élément
|
230 |
* Méthode appelée pour mettre à jour un élément
|
Line 256... |
Line 256... |
256 |
}
|
256 |
}
|
257 |
}
|
257 |
}
|
Line 258... |
Line 258... |
258 |
|
258 |
|
259 |
// Vérification des tables à vraiment mettre à jour en fonction des données passées.
|
259 |
// Vérification des tables à vraiment mettre à jour en fonction des données passées.
|
260 |
$tables_a_modifier = $this->recupererTablesAModifier($params);
|
260 |
$tables_a_modifier = $this->recupererTablesAModifier($params);
|
261 |
|
261 |
|
262 |
// Pour chaque table du module nous lançons si nécessaire l'historisation puis la mise à jour
|
262 |
// Pour chaque table du module nous lançons si nécessaire l'historisation puis la mise à jour
|
- |
|
263 |
foreach ($tables_a_modifier as $table_id => $table) {
|
- |
|
264 |
if(!$this->avoirCleComplete($table)) {
|
- |
|
265 |
error_log("tentative d'UPDATE sans contrainte de WHERE, $table = " . print_r($table, TRUE));
|
- |
|
266 |
continue; // ne pas mettre à jour sans contrainte de WHERE
|
263 |
foreach ($tables_a_modifier as $table_id => $table) {
|
267 |
}
|
264 |
$this->mettreAJourAvecCle($id_utilisateur, $id_session, $table_id, $table);
|
268 |
$this->mettreAJourAvecCle($id_utilisateur, $id_session, $table_id, $table);
|
265 |
}
|
269 |
}
|
266 |
} catch (PDOException $e) {
|
270 |
} catch (PDOException $e) {
|
267 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
|
271 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
|
Line 277... |
Line 281... |
277 |
|
281 |
|
278 |
/**
|
282 |
/**
|
279 |
* Méthode appelée pour supprimer un élément
|
283 |
* Méthode appelée pour supprimer un élément
|
280 |
*/
|
284 |
*/
|
281 |
public function deleteElement($uid) {
|
285 |
public function deleteElement($uid) {
|
282 |
// NOTES : une structure ne peut pas être supprimée si elle possède des collections liées.
|
286 |
// NOTES : une structure ne peut pas être supprimée si elle possède des collections liées.
|
283 |
// Vérification de la présence des id passés par l'url
|
287 |
// Vérification de la présence des id passés par l'url
|
284 |
if (!isset($uid[0]) || !isset($uid[1])) {
|
288 |
if (!isset($uid[0]) || !isset($uid[1])) {
|
285 |
$this->messages[] = "Identifiant de structure ou d'utilisateur manquant. Vous ne devriez pas avoir accès à ce service.";
|
289 |
$this->messages[] = "Identifiant de structure ou d'utilisateur manquant. Vous ne devriez pas avoir accès à ce service.";
|
286 |
} else {
|
290 |
} else {
|
287 |
// Identification de l'utilisateur
|
291 |
// Identification de l'utilisateur
|
Line 288... |
Line 292... |
288 |
list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
|
292 |
list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
|
289 |
|
293 |
|
290 |
// Contrôle du non détournement de l'utilisateur
|
294 |
// Contrôle du non détournement de l'utilisateur
|
291 |
if ($this->etreAutorise($id_utilisateur)) {
|
295 |
if ($this->etreAutorise($id_utilisateur)) {
|
Line 292... |
Line 296... |
292 |
// Récupération des id passés par l'url
|
296 |
// Récupération des id passés par l'url
|
293 |
$identifiants = explode(',', rtrim($uid[1], ','));
|
297 |
$identifiants = explode(',', rtrim($uid[1], ','));
|
294 |
|
298 |
|
295 |
try {
|
299 |
try {
|
296 |
if (count($identifiants) == 0) {
|
300 |
if (count($identifiants) == 0) {
|
297 |
$this->messages[] = "Aucun enregistrement n'a été supprimé.";
|
301 |
$this->messages[] = "Aucun enregistrement n'a été supprimé.";
|
298 |
} else {
|
302 |
} else {
|
299 |
foreach ($identifiants as $id_structure) {
|
303 |
foreach ($identifiants as $id_structure) {
|
300 |
// Vérification que la structure ne possède pas de collections liées
|
304 |
// Vérification que la structure ne possède pas de collections liées
|
Line 301... |
Line 305... |
301 |
if ($this->verifierPresenceCollection($id_structure) === false) {
|
305 |
if ($this->verifierPresenceCollection($id_structure) === false) {
|
302 |
$params = array('cs_id_structure' => $id_structure, 'csc_id_structure' => $id_structure, 'csv_id_structure' => $id_structure);
|
306 |
$params = array('cs_id_structure' => $id_structure, 'csc_id_structure' => $id_structure, 'csv_id_structure' => $id_structure);
|
303 |
$tables_a_modifier = $this->recupererTablesAModifier($params);
|
307 |
$tables_a_modifier = $this->recupererTablesAModifier($params);
|
304 |
|
308 |
|
305 |
foreach ($tables_a_modifier as $table_id => $table) {
|
309 |
foreach ($tables_a_modifier as $table_id => $table) {
|
306 |
if ($this->avoirEnregistrement($table)) {
|
310 |
if ($this->avoirEnregistrement($table)) {
|
307 |
$resultat = $this->supprimer($table);
|
311 |
$resultat = $this->supprimer($table);
|
308 |
if ($resultat === true) {
|
312 |
if ($resultat === true) {
|
309 |
// Historisation (Ajout des méta-données)
|
313 |
// Historisation (Ajout des méta-données)
|
310 |
$cle = $this->recupererCle($table);
|
314 |
$cle = $this->recupererCle($table);
|
311 |
$this->historiser($table_id, $cle, 'NULL', $id_utilisateur, 3, $id_session);
|
315 |
$this->historiser($table_id, $cle, 'NULL', $id_utilisateur, 3, $id_session);
|
312 |
}
|
316 |
}
|
313 |
}
|
317 |
}
|
314 |
}
|
318 |
}
|
315 |
} else {
|
319 |
} else {
|
316 |
$this->messages[] = "La structure '$id_structure' ne peut pas être supprimée car elle possède des collections liées.";
|
320 |
$this->messages[] = "La structure '$id_structure' ne peut pas être supprimée car elle possède des collections liées.";
|
317 |
}
|
321 |
}
|
318 |
}
|
322 |
}
|
319 |
}
|
323 |
}
|
320 |
} catch (PDOException $e) {
|
324 |
} catch (PDOException $e) {
|
Line 321... |
Line 325... |
321 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
|
325 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
|
322 |
}
|
326 |
}
|
323 |
}
|
327 |
}
|
Line 324... |
Line 328... |
324 |
}
|
328 |
}
|
325 |
|
329 |
|
326 |
// Envoie sur la sortie standard
|
330 |
// Envoie sur la sortie standard
|
327 |
$this->envoyer();
|
331 |
$this->envoyer();
|
328 |
}
|
332 |
}
|
329 |
|
333 |
|
330 |
private function verifierPresenceCollection($id_structure) {
|
334 |
private function verifierPresenceCollection($id_structure) {
|
331 |
$requete = 'SELECT COUNT(cc_id_collection) AS nbre_collection '.
|
335 |
$requete = 'SELECT COUNT(cc_id_collection) AS nbre_collection '.
|
Line 332... |
Line 336... |
332 |
'FROM coel_collection '.
|
336 |
'FROM coel_collection '.
|
333 |
"WHERE cc_ce_structure = '$id_structure' ".
|
337 |
"WHERE cc_ce_structure = '$id_structure' ".
|