| 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' ".
|