Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1523 → Rev 1524

/trunk/jrest/services/CoelPublication.php
148,18 → 148,18
/**
* Méthode appelée pour supprimer un élément
*/
public function deleteElement($uid) {
public function deleteElement($params_url) {
// Vérification de la présence des id passés par l'url
if (!isset($uid[0]) || !isset($uid[1])) {
if (!isset($params_url[0]) || !isset($params_url[1])) {
$this->messages[] = "Identifiant de publication ou d'utilisateur manquant. Vous ne devriez pas avoir accès à ce service.";
} else {
// Identification de l'utilisateur
list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
list($id_utilisateur, $id_session) = $this->getIdentification($params_url[0]);
 
// Contrôle du non détournement de l'utilisateur
if ($this->etreAutorise($id_utilisateur)) {
// Récupération des id passés par l'url
$identifiants = explode(',', rtrim($uid[1], ','));
$identifiants = explode(',', rtrim($params_url[1], ','));
 
try {
if (count($identifiants) == 0) {
166,19 → 166,22
$this->messages[] = "Aucun enregistrement n'a été supprimé.";
} else {
foreach ($identifiants as $id_publication) {
$params = array('cpu_id_publication' => $id_publication);
$tables_a_modifier = $this->recupererTablesAModifier($params);
 
foreach ($tables_a_modifier as $table_id => $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);
}
// Vérification de la liaison avec d'autres données et génération des messages d'erreur
if ($this->verifierPresencePublication($id_publication) === false) {
$params = array('cpu_id_publication' => $id_publication);
$tables_a_modifier = $this->recupererTablesAModifier($params);
foreach ($tables_a_modifier as $table_id => $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);
}
}
}
}
}
}
}
} catch (PDOException $e) {
190,5 → 193,33
// Envoie sur la sortie standard
$this->envoyer();
}
private function verifierPresencePublication($id_publication) {
$presence = false;
$id_publication = $this->bdd->quote($id_publication);
if ($presence = $this->verifierPresenceDansPersonne($id_publication)) {
$this->messages[] = 'Cette publication ne peut être supprimée car elle est au moins liée à une personne';
} else if ($presence = $this->verifierPresenceDansCollection($id_publication)) {
$this->messages[] = 'Cette publication ne peut être supprimée car elle est au moins liée à une collection';
}
return $presence;
}
private function verifierPresenceDansPersonne($id_publication) {
$requete = 'SELECT COUNT(cpuap_id_publication) AS nbre '.
'FROM coel_publication_a_personne '.
"WHERE cpuap_id_publication = $id_publication ".
' AND cpuap_id_role != 2360 '.// Auteur
'GROUP BY cpuap_id_publication ';
return $this->contenirDonnees($requete);
}
private function verifierPresenceDansCollection($id_publication) {
$requete = 'SELECT COUNT(ccapu_id_publication) AS nbre '.
'FROM coel_collection_a_publication '.
"WHERE ccapu_id_publication = $id_publication ".
'GROUP BY ccapu_id_publication ';
return $this->contenirDonnees($requete);
}
}
?>