Пример #1
0
 function delete()
 {
     global $dbh;
     global $msg;
     if (!$this->id) {
         // impossible d'accéder à cette notice auteur
         return $msg[403];
     }
     // effacement dans les notices
     // récupération du nombre de notices affectées
     $requete = "SELECT count(1) FROM responsability WHERE ";
     $requete .= "responsability_author='{$this->id}' ";
     $res = pmb_mysql_query($requete, $dbh);
     $nbr_lignes = pmb_mysql_result($res, 0, 0);
     if ($nbr_lignes) {
         // Cet auteur est utilisé dans des notices, impossible de le supprimer
         return '<strong>' . $this->display . "</strong><br />{$msg[402]}";
     }
     // effacement dans les titres uniformes
     // récupération du nombre de titres affectées
     $requete = "SELECT count(1) FROM responsability_tu WHERE ";
     $requete .= "responsability_tu_author_num='{$this->id}' ";
     $res = pmb_mysql_query($requete, $dbh);
     $nbr_lignes = pmb_mysql_result($res, 0, 0);
     if ($nbr_lignes) {
         // Cet auteur est utilisé dans des tirres uniformes, impossible de le supprimer
         return '<strong>' . $this->display . "</strong><br />{$msg[tu_dont_del_author]}";
     }
     $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->id, "author");
     if (count($attached_vedettes)) {
         // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer
         return '<strong>' . $this->display . "</strong><br />" . $msg["vedette_dont_del_autority"];
     }
     // liens entre autorités
     $aut_link = new aut_link(AUT_TABLE_AUTHORS, $this->id);
     $aut_link->delete();
     $aut_pperso = new aut_pperso("author", $this->id);
     $aut_pperso->delete();
     // nettoyage indexation concepts
     $index_concept = new index_concept($this->id, TYPE_AUTHOR);
     $index_concept->delete();
     // suppression dans la table de stockage des numéros d'autorités...
     auteur::delete_autority_sources($this->id);
     // on supprime automatiquement les formes rejetes
     $query = "select author_id from authors where author_see = " . $this->id;
     $result = pmb_mysql_query($query);
     if (pmb_mysql_num_rows($result)) {
         while ($row = pmb_mysql_fetch_object($result)) {
             // on regarde si cette forme est utilisée...
             $query2 = "select count(responsability_author) from responsability where responsability_author =" . $row->author_id;
             $result2 = pmb_mysql_query($query2);
             $query3 = "select count(responsability_tu_author_num) from responsability_tu where responsability_tu_author_num =" . $row->author_id;
             $result3 = pmb_mysql_query($query3);
             $rejete = new auteur($row->author_id);
             // elle est utilisée donc on nettoie juste la référence
             if (pmb_mysql_num_rows($result2) || pmb_mysql_num_rows($result3)) {
                 pmb_mysql_query("update authors set author_see= 0  where author_id = " . $row->author_id);
             } else {
                 // sinon, on supprime...
                 $rejete->delete();
             }
         }
     }
     audit::delete_audit(AUDIT_AUTHOR, $this->id);
     // effacement dans l'entrepot rdf
     auteur::delete_enrichment($id);
     // effacement dans la table des auteurs
     $requete = "DELETE FROM authors WHERE author_id='{$this->id}' ";
     pmb_mysql_query($requete, $dbh);
     return false;
 }
Пример #2
0
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: aut_pass1.inc.php,v 1.16 2013-03-20 18:21:23 mbertin Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
require_once "{$class_path}/author.class.php";
// la taille d'un paquet de notices
$lot = AUTHOR_PAQUET_SIZE;
// defini dans ./params.inc.php
// taille de la jauge pour affichage
$jauge_size = GAUGE_SIZE;
// initialisation de la borne de départ
if (!isset($start)) {
    $start = 0;
}
$v_state = urldecode($v_state);
print "<br /><br /><h2 align='center'>" . htmlentities($msg["nettoyage_suppr_auteurs"], ENT_QUOTES, $charset) . "</h2>";
$res = mysql_query("SELECT author_id from authors left join responsability on responsability_author=author_id where responsability_author is null and author_see=0 ");
$affected = 0;
if ($affected = mysql_num_rows($res)) {
    while ($ligne = mysql_fetch_object($res)) {
        $auteur = new auteur($ligne->author_id);
        $auteur->delete();
    }
}
//Nettoyage des informations d'autorités pour les sous collections
auteur::delete_autority_sources();
// mise à jour de l'affichage de la jauge
print "<table border='0' align='center' width='{$table_size}' cellpadding='0'><tr><td class='jauge'>\n    \t<img src='../../images/jauge.png' width='{$jauge_size}' height='16'></td></tr></table>\n   \t\t<div align='center'>100%</div>";
print "\n\t<form class='form-{$current_module}' name='process_state' action='./clean.php' method='post'>\n\t\t<input type='hidden' name='v_state' value=\"{$v_state}\">\n\t\t<input type='hidden' name='spec' value=\"{$spec}\">\n\t\t<input type='hidden' name='affected' value=\"{$affected}\">\n\t\t<input type='hidden' name='pass2' value=\"1\">\t\t\t\n\t\t</form>\n\t<script type=\"text/javascript\"><!--\n\t\tdocument.forms['process_state'].submit();\n\t\t-->\n\t\t</script>";