Subversion Repositories eFlore/Applications.coel

Rev

Rev 1651 | Rev 1670 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1651 Rev 1669
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' ".