Пример #1
0
 function replace($id, $by, $link_save = 0)
 {
     global $msg;
     global $dbh;
     global $pmb_synchro_rdf;
     if ($id == $by || !$id || !$by) {
         return $msg[223];
     }
     $aut_link = new aut_link($this->id + 1000, $id);
     // "Conserver les liens entre autorités" est demandé
     if ($link_save) {
         // liens entre autorités
         $aut_link->add_link_to($this->id + 1000, $by);
     }
     $aut_link->delete();
     // remplacement dans les notices
     $requete = "UPDATE notices_authperso SET notice_authperso_authority_num='{$by}' WHERE notice_authperso_authority_num='{$id}' ";
     @pmb_mysql_query($requete, $dbh);
     // effacement de
     $this->delete($id);
     // effacement de l'identifiant unique d'autorité
     $authority = new authority(0, $id, AUT_TABLE_AUTHPERSO);
     $authority->delete();
     $this->update_global_index($by);
 }
Пример #2
0
 function replace($by, $link_save)
 {
     global $msg;
     global $dbh;
     if (!$by) {
         // pas de valeur de remplacement !!!
         return "serious error occured, please contact admin...";
     }
     if ($this->indexint_id == $by || !$this->indexint_id) {
         // impossible de remplacer une autorité par elle-même
         return $msg[indexint_self];
     }
     $aut_link = new aut_link(AUT_TABLE_INDEXINT, $this->indexint_id);
     // "Conserver les liens entre autorités" est demandé
     if ($link_save) {
         // liens entre autorités
         $aut_link->add_link_to(AUT_TABLE_INDEXINT, $by);
     }
     $aut_link->delete();
     // a) remplacement dans les notices
     $requete = "UPDATE notices SET indexint={$by} WHERE indexint='" . $this->indexint_id . "' ";
     $res = pmb_mysql_query($requete, $dbh);
     // b) suppression de l'indexation à remplacer
     $requete = "DELETE FROM indexint WHERE indexint_id=" . $this->indexint_id;
     $res = pmb_mysql_query($requete, $dbh);
     audit::delete_audit(AUDIT_INDEXINT, $this->indexint_id);
     indexint::update_index($by);
     return FALSE;
 }
Пример #3
0
 function replace($by = 0, $link_save = 0)
 {
     global $msg, $dbh;
     global $pmb_synchro_rdf;
     if ($this->id_noeud == $by || !$this->id_noeud || !$by) {
         return $msg["categ_imposible_remplace_elle_meme"];
     }
     $aut_link = new aut_link(AUT_TABLE_CATEG, $this->id_noeud);
     // "Conserver les liens entre autorités" est demandé
     if ($link_save) {
         // liens entre autorités
         $aut_link->add_link_to(AUT_TABLE_CATEG, $by);
     }
     $aut_link->delete();
     //synchro_rdf : on empile les noeuds impactés pour les traiter plus loin
     if ($pmb_synchro_rdf) {
         $arrayIdImpactes = array();
         $arrayThesImpactes = array();
         $thes = thesaurus::getByEltId($this->id_noeud);
         $arrayThesImpactes[] = $thes->id_thesaurus;
         //parent
         if ($this->num_parent != $thes->num_noeud_racine) {
             $arrayIdImpactes[] = $this->num_parent;
         }
         //enfants
         $res = noeuds::listChilds($this->id_noeud, 1);
         if (pmb_mysql_num_rows($res)) {
             while ($row = pmb_mysql_fetch_array($res)) {
                 $arrayIdImpactes[] = $row[0];
             }
         }
         //renvoi_voir
         if ($this->num_renvoi_voir) {
             $arrayIdImpactes[] = $this->num_renvoi_voir;
         }
     }
     $noeuds_a_garder = new noeuds($by);
     //Si les noeuds sont du même thésaurus
     if ($noeuds_a_garder->num_thesaurus == $this->num_thesaurus) {
         //On déplace les catégories qui renvoi vers l'ancien noeuds pour qu'elle renvoie vers le nouveau
         if (noeuds::isTarget($this->id_noeud)) {
             $requete = "UPDATE noeuds SET num_renvoi_voir='" . $by . "' WHERE num_renvoi_voir='" . $this->id_noeud . "' and id_noeud!='" . $by . "' ";
             @pmb_mysql_query($requete, $dbh);
         }
         //On garde les liens voir_aussi
         $requete = "UPDATE ignore voir_aussi SET num_noeud_orig='" . $by . "' WHERE num_noeud_orig='" . $this->id_noeud . "' and num_noeud_dest!='" . $by . "' ";
         @pmb_mysql_query($requete, $dbh);
         $requete = "UPDATE ignore voir_aussi SET num_noeud_dest='" . $by . "' WHERE num_noeud_dest='" . $this->id_noeud . "' and num_noeud_orig!='" . $by . "'";
         @pmb_mysql_query($requete, $dbh);
     }
     if (noeuds::isTarget($this->id_noeud)) {
         //Si le noeuds à supprimé est utilisé pour des renvois et qu'il reste des liens on les supprime
         //On supprime les renvoies
         $requete = "UPDATE noeuds SET num_renvoi_voir='0' WHERE num_renvoi_voir='" . $this->id_noeud . "'";
         @pmb_mysql_query($requete, $dbh);
     }
     //On déplace les notices liées
     $requete = "UPDATE ignore notices_categories SET num_noeud='" . $by . "' where num_noeud = '" . $this->id_noeud . "' ";
     @pmb_mysql_query($requete, $dbh);
     //nettoyage d'autorities_sources
     $query = "select * from authorities_sources where num_authority = " . $this->id_noeud . " and authority_type = 'category'";
     $result = pmb_mysql_query($query);
     if (pmb_mysql_num_rows($result)) {
         while ($row = pmb_mysql_fetch_object($result)) {
             if ($row->authority_favorite == 1) {
                 //on suprime les références si l'autorité a été importée...
                 $query = "delete from notices_authorities_sources where num_authority_source = " . $row->id_authority_source;
                 pmb_mysql_result($query);
                 $query = "delete from authorities_sources where id_authority_source = " . $row->id_authority_source;
                 pmb_mysql_result($query);
             } else {
                 //on fait suivre le reste
                 $query = "update authorities_sources set num_authority = " . $by . " where num_authority_source = " . $row->id_authority_source;
                 pmb_mysql_query($query);
             }
         }
     }
     //On supprime le noeuds
     $this->delete();
     // effacement de l'identifiant unique d'autorité
     $authority = new authority(0, $this->id_noeud, AUT_TABLE_CATEG);
     $authority->delete();
     //synchro_rdf
     if ($pmb_synchro_rdf) {
         //on ajoute les noeuds impactés par le $by
         $thesBy = thesaurus::getByEltId($by);
         if (!in_array($thesBy->id_thesaurus, $arrayThesImpactes)) {
             $arrayThesImpactes[] = $thesBy->id_thesaurus;
         }
         $arrayIdImpactes[] = $by;
         //parent
         if ($noeuds_a_garder->num_parent != $thesBy->num_noeud_racine) {
             $arrayIdImpactes[] = $noeuds_a_garder->num_parent;
         }
         //enfants
         $res = noeuds::listChilds($noeuds_a_garder->id_noeud, 1);
         if (pmb_mysql_num_rows($res)) {
             while ($row = pmb_mysql_fetch_array($res)) {
                 $arrayIdImpactes[] = $row[0];
             }
         }
         //renvoi_voir
         if ($noeuds_a_garder->num_renvoi_voir) {
             $arrayIdImpactes[] = $noeuds_a_garder->num_renvoi_voir;
         }
         //On met le tout à jour
         $synchro_rdf = new synchro_rdf();
         $synchro_rdf->delConcept($this->id_noeud);
         if (count($arrayIdImpactes)) {
             foreach ($arrayIdImpactes as $idNoeud) {
                 $synchro_rdf->delConcept($idNoeud);
                 $synchro_rdf->storeConcept($idNoeud);
             }
         }
         if (count($arrayThesImpactes)) {
             foreach ($arrayThesImpactes as $idThes) {
                 $synchro_rdf->updateAuthority($idThes, 'thesaurus');
             }
         }
     }
     return "";
 }
Пример #4
0
 function replace($by, $link_save = 0)
 {
     global $msg;
     global $dbh;
     if (!$by) {
         // pas de valeur de remplacement !!!
         return "serious error occured, please contact admin...";
     }
     if ($this->id == $by || !$this->id) {
         // impossible de remplacer une collection par elle-même
         return $msg[226];
     }
     // a) remplacement dans les notices
     // on obtient les infos de la nouvelle collection
     $n_collection = new collection($by);
     if (!$n_collection->parent) {
         // la nouvelle collection est foireuse
         return $msg[406];
     }
     $aut_link = new aut_link(AUT_TABLE_COLLECTIONS, $this->id);
     // "Conserver les liens entre autorités" est demandé
     if ($link_save) {
         // liens entre autorités
         $aut_link->add_link_to(AUT_TABLE_COLLECTIONS, $by);
     }
     $aut_link->delete();
     $requete = "UPDATE notices SET ed1_id=" . $n_collection->parent . ", coll_id={$by} WHERE coll_id=" . $this->id;
     $res = pmb_mysql_query($requete, $dbh);
     // b) remplacement dans la table des sous-collections
     $requete = "UPDATE sub_collections SET sub_coll_parent={$by} WHERE sub_coll_parent=" . $this->id;
     $res = pmb_mysql_query($requete, $dbh);
     // c) suppression de la collection
     $requete = "DELETE FROM collections WHERE collection_id=" . $this->id;
     $res = pmb_mysql_query($requete, $dbh);
     //nettoyage d'autorities_sources
     $query = "select * from authorities_sources where num_authority = " . $this->id . " and authority_type = 'collection'";
     $result = pmb_mysql_query($query);
     if (pmb_mysql_num_rows($result)) {
         while ($row = pmb_mysql_fetch_object($result)) {
             if ($row->authority_favorite == 1) {
                 //on suprime les références si l'autorité a été importée...
                 $query = "delete from notices_authorities_sources where num_authority_source = " . $row->id_authority_source;
                 pmb_mysql_result($query);
                 $query = "delete from authorities_sources where id_authority_source = " . $row->id_authority_source;
                 pmb_mysql_result($query);
             } else {
                 //on fait suivre le reste
                 $query = "update authorities_sources set num_authority = " . $by . " where num_authority_source = " . $row->id_authority_source;
                 pmb_mysql_query($query);
             }
         }
     }
     audit::delete_audit(AUDIT_COLLECTION, $this->id);
     // nettoyage indexation
     indexation_authority::delete_all_index($this->id, "authorities", "id_authority", AUT_TABLE_COLLECTIONS);
     // effacement de l'identifiant unique d'autorité
     $authority = new authority(0, $this->id, AUT_TABLE_COLLECTIONS);
     $authority->delete();
     collection::update_index($by);
     return TRUE;
 }
 function replace($by, $link_save)
 {
     global $msg;
     global $dbh;
     global $pmb_synchro_rdf;
     if ($this->id == $by || !$this->id) {
         return $msg[223];
     }
     $aut_link = new aut_link(AUT_TABLE_TITRES_UNIFORMES, $this->id);
     // "Conserver les liens entre autorités" est demandé
     if ($link_save) {
         // liens entre autorités
         $aut_link->add_link_to(AUT_TABLE_TITRES_UNIFORMES, $by);
     }
     $aut_link->delete();
     // remplacement dans les responsabilités
     $requete = "UPDATE notices_titres_uniformes SET ntu_num_tu='{$by}' WHERE ntu_num_tu='{$this->id}' ";
     @pmb_mysql_query($requete, $dbh);
     $requete = "UPDATE responsability_tu set responsability_tu_num ='{$by}' where responsability_tu_num='" . $this->id . "' ";
     @pmb_mysql_query($requete);
     // effacement dans la table des titres_uniformes
     $requete = "DELETE FROM titres_uniformes WHERE tu_id='{$this->id}' ";
     pmb_mysql_query($requete, $dbh);
     // delete les champs répétables
     $requete = "DELETE FROM tu_distrib WHERE distrib_num_tu='{$this->id}' ";
     pmb_mysql_query($requete, $dbh);
     $requete = "DELETE FROM tu_ref WHERE ref_num_tu='{$this->id}' ";
     pmb_mysql_query($requete, $dbh);
     $requete = "DELETE FROM tu_subdiv WHERE subdiv_num_tu='{$this->id}' ";
     pmb_mysql_query($requete, $dbh);
     //nettoyage d'autorities_sources
     $query = "select * from authorities_sources where num_authority = " . $this->id . " and authority_type = 'uniform_title'";
     $result = pmb_mysql_query($query);
     if (pmb_mysql_num_rows($result)) {
         while ($row = pmb_mysql_fetch_object($result)) {
             if ($row->authority_favorite == 1) {
                 //on suprime les références si l'autorité a été importée...
                 $query = "delete from notices_authorities_sources where num_authority_source = " . $row->id_authority_source;
                 pmb_mysql_result($query);
                 $query = "delete from authorities_sources where id_authority_source = " . $row->id_authority_source;
                 pmb_mysql_result($query);
             } else {
                 //on fait suivre le reste
                 $query = "update authorities_sources set num_authority = " . $by . " where num_authority_source = " . $row->id_authority_source;
                 pmb_mysql_query($query);
             }
         }
     }
     audit::delete_audit(AUDIT_TITRE_UNIFORME, $this->id);
     // nettoyage indexation
     indexation_authority::delete_all_index($this->id, "authorities", "id_authority", AUT_TABLE_TITRES_UNIFORMES);
     // effacement de l'identifiant unique d'autorité
     $authority = new authority(0, $this->id, AUT_TABLE_TITRES_UNIFORMES);
     $authority->delete();
     titre_uniforme::update_index($by);
     //mise à jour de l'oeuvre rdf
     if ($pmb_synchro_rdf) {
         $synchro_rdf = new synchro_rdf();
         $synchro_rdf->replaceAuthority($this->id, $by, 'oeuvre');
     }
     return FALSE;
 }
Пример #6
0
 function replace($by, $link_save = 0)
 {
     // à compléter
     global $msg;
     global $dbh;
     if (!$by) {
         // pas de valeur de remplacement !!!
         return "serious error occured, please contact admin...";
     }
     if ($this->s_id == $by || !$this->s_id) {
         // impossible de remplacer une autorité par elle-même
         return $msg[411];
     }
     $aut_link = new aut_link(AUT_TABLE_SERIES, $this->s_id);
     // "Conserver les liens entre autorités" est demandé
     if ($link_save) {
         // liens entre autorités
         $aut_link->add_link_to(AUT_TABLE_SERIES, $by);
     }
     $aut_link->delete();
     // a) remplacement dans les notices
     $requete = "UPDATE notices SET tparent_id={$by} WHERE tparent_id=" . $this->s_id;
     $res = pmb_mysql_query($requete, $dbh);
     $rqt_notice = "select notice_id,tit1,tit2,tit3,tit4 from notices where tparent_id=" . $by;
     $r_notice = pmb_mysql_query($rqt_notice);
     while ($r = pmb_mysql_fetch_object($r_notice)) {
         $rq_serie = "update notices, series set notices.index_serie=serie_index, notices.index_wew=concat(serie_name,' ',tit1,' ',tit2,' ',tit3,' ',tit4),notices.index_sew=concat(' ',serie_index,' ','" . addslashes(strip_empty_words($r->tit1 . " " . $r->tit2 . " " . $r->tit3 . " " . $r->tit4)) . "',' ') where notice_id=" . $r->notice_id . " and serie_id=tparent_id";
         pmb_mysql_query($rq_serie);
     }
     // b) suppression du titre de série à remplacer
     $requete = "DELETE FROM series WHERE serie_id=" . $this->s_id;
     $res = pmb_mysql_query($requete, $dbh);
     audit::delete_audit(AUDIT_SERIE, $this->s_id);
     // nettoyage indexation
     indexation_authority::delete_all_index($this->s_id, "authorities", "id_authority", AUT_TABLE_SERIES);
     // effacement de l'identifiant unique d'autorité
     $authority = new authority(0, $this->s_id, AUT_TABLE_SERIES);
     $authority->delete();
     serie::update_index($by);
     return FALSE;
 }
Пример #7
0
 function replace($by, $link_save = 0)
 {
     global $msg;
     global $dbh;
     global $pmb_synchro_rdf;
     if (!$by || !$this->id) {
         // pas de valeur de remplacement !!!
         return "L'identifiant editeur est vide ou l'editeur de remplacement est meme que celui d'origine !";
     }
     if ($this->id == $by) {
         // impossible de remplacer un editeur par lui-meme
         return $msg[228];
     }
     $aut_link = new aut_link(AUT_TABLE_PUBLISHERS, $this->id);
     // "Conserver les liens entre autorités" est demandé
     if ($link_save) {
         // liens entre autorités
         $aut_link->add_link_to(AUT_TABLE_PUBLISHERS, $by);
     }
     $aut_link->delete();
     // a) remplacement dans les notices
     $requete = "UPDATE notices SET ed1_id={$by} WHERE ed1_id=" . $this->id;
     $res = pmb_mysql_query($requete, $dbh);
     $requete = "UPDATE notices SET ed2_id={$by} WHERE ed2_id=" . $this->id;
     $res = pmb_mysql_query($requete, $dbh);
     // b) remplacement dans la table des collections
     $requete = "UPDATE collections SET collection_parent={$by} WHERE collection_parent=" . $this->id;
     $res = pmb_mysql_query($requete, $dbh);
     // c) suppression de l'editeur a remplacer
     $requete = "DELETE FROM publishers WHERE ed_id=" . $this->id;
     $res = pmb_mysql_query($requete, $dbh);
     audit::delete_audit(AUDIT_PUBLISHER, $this->id);
     editeur::update_index($by);
     //mise à jour de l'oeuvre rdf
     if ($pmb_synchro_rdf) {
         $synchro_rdf = new synchro_rdf();
         $synchro_rdf->replaceAuthority($this->id, $by, 'editeur');
     }
     return FALSE;
 }
Пример #8
0
 function replace($by, $link_save = 0)
 {
     global $msg;
     global $dbh;
     global $pmb_synchro_rdf;
     if ($this->id == $by || !$this->id) {
         return $msg[223];
     }
     $aut_link = new aut_link(AUT_TABLE_AUTHORS, $this->id);
     // "Conserver les liens entre autorités" est demandé
     if ($link_save) {
         // liens entre autorités
         $aut_link->add_link_to(AUT_TABLE_AUTHORS, $by);
         // Voir aussi
         if ($this->see) {
             $requete = "UPDATE authors SET author_see='" . $this->see . "'  WHERE author_id='{$by}' ";
             @pmb_mysql_query($requete, $dbh);
         }
     }
     $aut_link->delete();
     // remplacement dans les responsabilités
     $requete = "UPDATE responsability SET responsability_author='{$by}' WHERE responsability_author='{$this->id}' ";
     @pmb_mysql_query($requete, $dbh);
     // effacement dans les responsabilités
     $requete = "DELETE FROM responsability WHERE responsability_author='{$this->id}' ";
     @pmb_mysql_query($requete, $dbh);
     // remplacement dans les titres uniformes
     $requete = "UPDATE responsability_tu SET responsability_tu_author_num='{$by}' WHERE responsability_tu_author_num='{$this->id}' ";
     @pmb_mysql_query($requete, $dbh);
     $requete = "DELETE FROM responsability_tu WHERE responsability_tu_author_num='{$this->id}' ";
     @pmb_mysql_query($requete, $dbh);
     // effacement dans la table des auteurs
     $requete = "DELETE FROM authors WHERE author_id='{$this->id}' ";
     pmb_mysql_query($requete, $dbh);
     // nettoyage d'autorities_sources
     $query = "select * from authorities_sources where num_authority = " . $this->id . " and authority_type = 'author'";
     $result = pmb_mysql_query($query);
     if (pmb_mysql_num_rows($result)) {
         while ($row = pmb_mysql_fetch_object($result)) {
             if ($row->authority_favorite == 1) {
                 // on suprime les références si l'autorité a été importée...
                 $query = "delete from notices_authorities_sources where num_authority_source = " . $row->id_authority_source;
                 pmb_mysql_result($query);
                 $query = "delete from authorities_sources where id_authority_source = " . $row->id_authority_source;
                 pmb_mysql_result($query);
             } else {
                 // on fait suivre le reste
                 $query = "update authorities_sources set num_authority = " . $by . " where num_authority_source = " . $row->id_authority_source;
                 pmb_mysql_query($query);
             }
         }
     }
     audit::delete_audit(AUDIT_AUTHOR, $this->id);
     auteur::update_index($by);
     // mise à jour de l'oeuvre rdf
     if ($pmb_synchro_rdf) {
         $synchro_rdf = new synchro_rdf();
         $synchro_rdf->replaceAuthority($this->id, $by, 'auteur');
     }
     return FALSE;
 }
Пример #9
0
 protected function proceed_delete($force_delete = false)
 {
     global $dbh, $msg;
     // On déclare un flag pour savoir si on peut continuer la suppression
     $deletion_allowed = true;
     $message = $this->item->get_label($this->handler->get_display_label($this->handler->get_class_uri($this->params->categ)));
     // on  déjà vérifier l'utilisation dans les notices d'un concept
     $query = "select num_object from index_concept where type_object =1 and num_concept = " . onto_common_uri::get_id($this->item->get_uri());
     $result = pmb_mysql_query($query, $dbh);
     if (pmb_mysql_num_rows($result)) {
         $deletion_allowed = false;
         $message .= "<br/>" . $msg['concept_use_in_notices_cant_delete'];
     }
     // On regarde si l'autorité est utilisée dans des vedettes composées
     $attached_vedettes = vedette_composee::get_vedettes_built_with_element(onto_common_uri::get_id($this->item->get_uri()), "concept");
     if (count($attached_vedettes)) {
         // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer
         $deletion_allowed = false;
         $message .= "<br/>" . $msg['vedette_dont_del_autority'];
     }
     if ($deletion_allowed) {
         // On peut continuer la suppression
         $id_vedette = vedette_link::get_vedette_id_from_object(onto_common_uri::get_id($this->item->get_uri()), TYPE_CONCEPT_PREFLABEL);
         $vedette = new vedette_composee($id_vedette);
         $vedette->delete();
         //suppression des autorités liées...
         // liens entre autorités
         if (get_class($this->item) == "onto_skos_concept_item") {
             $aut_link = new aut_link(AUT_TABLE_CONCEPT, onto_common_uri::get_id($this->item->get_uri()));
             $aut_link->delete();
         }
         parent::proceed_delete($force_delete);
     } else {
         error_message($msg[132], $message, 1, "./autorites.php?categ=concepts&sub=concept&action=edit&id=" . onto_common_uri::get_id($this->item->get_uri()));
     }
 }