Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1497 Rev 1524
Line 146... Line 146...
146
	}
146
	}
Line 147... Line 147...
147
 
147
 
148
	/**
148
	/**
149
	 * Méthode appelée pour supprimer un élément
149
	 * Méthode appelée pour supprimer un élément
150
	 */
150
	 */
151
	public function deleteElement($uid) {
151
	public function deleteElement($params_url) {
152
		// Vérification de la présence des id passés par l'url
152
		// Vérification de la présence des id passés par l'url
153
		if (!isset($uid[0]) || !isset($uid[1])) {
153
		if (!isset($params_url[0]) || !isset($params_url[1])) {
154
				$this->messages[] = "Identifiant de publication ou d'utilisateur manquant. Vous ne devriez pas avoir accès à ce service.";
154
				$this->messages[] = "Identifiant de publication ou d'utilisateur manquant. Vous ne devriez pas avoir accès à ce service.";
155
		} else {
155
		} else {
156
			// Identification de l'utilisateur
156
			// Identification de l'utilisateur
Line 157... Line 157...
157
			list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
157
			list($id_utilisateur, $id_session) = $this->getIdentification($params_url[0]);
158
 
158
 
159
			// Contrôle du non détournement de l'utilisateur
159
			// Contrôle du non détournement de l'utilisateur
160
			if ($this->etreAutorise($id_utilisateur)) {
160
			if ($this->etreAutorise($id_utilisateur)) {
Line 161... Line 161...
161
				// Récupération des id passés par l'url
161
				// Récupération des id passés par l'url
162
				$identifiants = explode(',', rtrim($uid[1], ','));
162
				$identifiants = explode(',', rtrim($params_url[1], ','));
163
 
163
 
164
		   		try {
164
		   		try {
165
		   			if (count($identifiants) == 0) {
165
		   			if (count($identifiants) == 0) {
-
 
166
		   				$this->messages[] = "Aucun enregistrement n'a été supprimé.";
-
 
167
		   			} else {
166
		   				$this->messages[] = "Aucun enregistrement n'a été supprimé.";
168
			   			foreach ($identifiants as $id_publication) {
167
		   			} else {
169
			   				// Vérification de la liaison avec d'autres données et génération des messages d'erreur
168
			   			foreach ($identifiants as $id_publication) {
170
		   					if ($this->verifierPresencePublication($id_publication) === false) {
169
							$params = array('cpu_id_publication' => $id_publication);
171
				   				$params = array('cpu_id_publication' => $id_publication);
170
							$tables_a_modifier = $this->recupererTablesAModifier($params);
172
								$tables_a_modifier = $this->recupererTablesAModifier($params);
171
 
173
	
172
							foreach ($tables_a_modifier as $table_id => $table) {
174
								foreach ($tables_a_modifier as $table_id => $table) {
173
					   			if ($this->avoirEnregistrement($table)) {
175
						   			if ($this->avoirEnregistrement($table)) {
174
					   				$resultat = $this->supprimer($table);
176
						   				$resultat = $this->supprimer($table);
175
									if ($resultat === true) {
177
										if ($resultat === true) {
176
										// Historisation (Ajout des méta-données)
178
											// Historisation (Ajout des méta-données)
-
 
179
											$cle = $this->recupererCle($table);
177
										$cle = $this->recupererCle($table);
180
											$this->historiser($table_id, $cle, 'NULL', $id_utilisateur, 3, $id_session);
178
										$this->historiser($table_id, $cle, 'NULL', $id_utilisateur, 3, $id_session);
181
										}
179
									}
182
						   			}
180
					   			}
183
					   			}
181
				   			}
184
		   					}
182
			   			}
185
			   			}
183
		   			}
186
		   			}
Line 188... Line 191...
188
		}
191
		}
Line 189... Line 192...
189
 
192
 
190
		// Envoie sur la sortie standard
193
		// Envoie sur la sortie standard
191
		$this->envoyer();
194
		$this->envoyer();
-
 
195
	}
-
 
196
	
-
 
197
	private function verifierPresencePublication($id_publication) {
-
 
198
    	$presence = false;
-
 
199
    	$id_publication = $this->bdd->quote($id_publication);
-
 
200
    	if ($presence = $this->verifierPresenceDansPersonne($id_publication)) {
-
 
201
    		$this->messages[] = 'Cette publication ne peut être supprimée car elle est au moins liée à une personne';
-
 
202
    	} else if ($presence = $this->verifierPresenceDansCollection($id_publication)) {
-
 
203
    		$this->messages[] = 'Cette publication ne peut être supprimée car elle est au moins liée à une collection';
-
 
204
    	}
-
 
205
    	return $presence;
-
 
206
    }
-
 
207
    
-
 
208
	private function verifierPresenceDansPersonne($id_publication) {
-
 
209
		$requete = 	'SELECT COUNT(cpuap_id_publication) AS nbre '.
-
 
210
					'FROM coel_publication_a_personne '.
-
 
211
					"WHERE cpuap_id_publication = $id_publication ".
-
 
212
					'	AND cpuap_id_role != 2360 '.// Auteur
-
 
213
					'GROUP BY cpuap_id_publication ';
-
 
214
	   	return $this->contenirDonnees($requete);
-
 
215
	}
-
 
216
	
-
 
217
	private function verifierPresenceDansCollection($id_publication) {
-
 
218
		$requete = 	'SELECT COUNT(ccapu_id_publication) AS nbre '.
-
 
219
					'FROM coel_collection_a_publication '.
-
 
220
					"WHERE ccapu_id_publication = $id_publication ".
-
 
221
					'GROUP BY ccapu_id_publication ';
-
 
222
	   	return $this->contenirDonnees($requete);
192
	}
223
	}
193
}
224
}