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,6 → 166,8 |
$this->messages[] = "Aucun enregistrement n'a été supprimé."; |
} else { |
foreach ($identifiants as $id_publication) { |
// 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); |
|
181,6 → 183,7 |
} |
} |
} |
} |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
} |
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); |
} |
} |
?> |