/** * Retourne les concepts composés qui utilisent un élément * @param int $element_id Identifiant de l'élément * @param string $element_type Type de l'élément (Disponible dans vedette.xml) * @return skos_concept Tableau de concepts composés */ public function set_composed_concepts_built_with_element($element_id, $element_type) { // On va chercher les vedettes construites avec l'élément $vedettes_ids = vedette_composee::get_vedettes_built_with_element($element_id, $element_type); foreach ($vedettes_ids as $vedette_id) { // On va chercher les concepts correspondant à chaque vedette if ($concept_id = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_CONCEPT_PREFLABEL)) { $this->concepts[] = new skos_concept($concept_id); } } if (!count($this->concepts)) { return false; } return true; }
function delete() { global $dbh; global $msg; if (!$this->indexint_id) { // impossible d'accéder à cette indexation return $msg[indexint_unable]; } // récupération du nombre de notices affectées $requete = "SELECT COUNT(1) FROM notices WHERE "; $requete .= "indexint=" . $this->indexint_id; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_result($res, 0, 0); if (!$nbr_lignes) { // On regarde si l'autorité est utilisée dans des vedettes composées $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->indexint_id, "indexint"); if (count($attached_vedettes)) { // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer return '<strong>' . $this->name . "</strong><br />" . $msg["vedette_dont_del_autority"]; } // indexation non-utilisé dans les notices : Suppression OK // effacement dans la table des indexations internes $requete = "DELETE FROM indexint WHERE indexint_id=" . $this->indexint_id; $result = pmb_mysql_query($requete, $dbh); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_INDEXINT, $this->indexint_id); $aut_link->delete(); $aut_pperso = new aut_pperso("indexint", $this->indexint_id); $aut_pperso->delete(); // nettoyage indexation concepts $index_concept = new index_concept($this->indexint_id, TYPE_INDEXINT); $index_concept->delete(); audit::delete_audit(AUDIT_INDEXINT, $this->indexint_id); return false; } else { // Cette indexation est utilisée dans des notices, impossible de la supprimer return '<strong>' . $this->name . "</strong><br />{$msg[indexint_used]}"; } }
function delete() { global $dbh; global $msg; if (!$this->id) { // impossible d'accéder à cette notice de collection return $msg[406]; } // récupération du nombre de notices affectées $requete = "SELECT COUNT(1) FROM notices WHERE "; $requete .= "coll_id={$this->id}"; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_result($res, 0, 0); if (!$nbr_lignes) { // on regarde si la collection a des collections enfants $requete = "SELECT COUNT(1) FROM sub_collections WHERE "; $requete .= "sub_coll_parent=" . $this->id; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_result($res, 0, 0); if (!$nbr_lignes) { // On regarde si l'autorité est utilisée dans des vedettes composées $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->id, "collection"); 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"]; } // effacement dans la table des collections $requete = "DELETE FROM collections WHERE collection_id=" . $this->id; $result = pmb_mysql_query($requete, $dbh); //Import d'autorité collection::delete_autority_sources($this->id); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_COLLECTIONS, $this->id); $aut_link->delete(); $aut_pperso = new aut_pperso("collection", $this->id); $aut_pperso->delete(); // nettoyage indexation concepts $index_concept = new index_concept($this->id, TYPE_COLLECTION); $index_concept->delete(); // 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(); audit::delete_audit(AUDIT_COLLECTION, $this->id); return false; } else { // Cet collection a des sous-collections, impossible de la supprimer return '<strong>' . $this->display . "</strong><br />{$msg[408]}"; } } else { // Cette collection est utilisé dans des notices, impossible de la supprimer return '<strong>' . $this->display . "</strong><br />{$msg[407]}"; } }
require_once "{$class_path}/category.class.php"; require_once "{$class_path}/noeuds.class.php"; require_once $class_path . "/thesaurus.class.php"; require_once $class_path . "/synchro_rdf.class.php"; require_once $class_path . "/vedette/vedette_composee.class.php"; require_once $class_path . "/index_concept.class.php"; if (noeuds::hasChild($id)) { error_message($msg[321], $msg[322], 1, "./autorites.php?categ=categories&id={$id}&sub=categ_form&parent={$parent}"); exit; } elseif (count(noeuds::listTargetsExceptOrphans($id))) { error_message($msg[321], $msg[thes_suppr_impossible_renvoi_voir], 1, "./autorites.php?categ=categories&id={$id}&sub=categ_form&parent={$parent}"); exit; } elseif (noeuds::isProtected($id)) { error_message($msg[321], $msg[thes_suppr_impossible_protege], 1, "./autorites.php?categ=categories&id={$id}&sub=categ_form&parent={$parent}"); exit; } elseif (count(vedette_composee::get_vedettes_built_with_element($id, "category"))) { // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer error_message($msg[321], $msg["vedette_dont_del_autority"], 1); exit; } elseif (noeuds::isUsedInNotices($id)) { if ($forcage == 1) { $tab = unserialize(urldecode($ret_url)); foreach ($tab->GET as $key => $val) { $GLOBALS[$key] = $val; } foreach ($tab->POST as $key => $val) { $GLOBALS[$key] = $val; } //On met à jour le graphe rdf avant de supprimer if ($pmb_synchro_rdf) { $arrayIdImpactes = array();
function delete() { global $dbh; global $msg; if (!$this->id) { // impossible d'accéder à cette notice titre uniforme return $msg[403]; } // effacement dans les notices // récupération du nombre de notices affectées $requete = "SELECT count(1) FROM notices_titres_uniformes WHERE ntu_num_tu='{$this->id}' "; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_result($res, 0, 0); if ($nbr_lignes) { // Ce titre uniforme est utilisé dans des notices, impossible de le supprimer return '<strong>' . $this->display . "</strong><br />{$msg['titre_uniforme_delete']}"; } // On regarde si l'autorité est utilisée dans des vedettes composées $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->id, "titre_uniforme"); 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"]; } // 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); //suppression dans la table de stockage des numéros d'autorités... titre_uniforme::delete_autority_sources($this->id); // Clean des vedettes titre_uniforme::delete_vedette_links($this->id); // suppression des auteurs $rqt_del = "delete from responsability_tu where responsability_tu_num='" . $this->id . "' "; pmb_mysql_query($rqt_del); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_TITRES_UNIFORMES, $this->id); $aut_link->delete(); $aut_pperso = new aut_pperso("tu", $this->id); $aut_pperso->delete(); // nettoyage indexation concepts $index_concept = new index_concept($this->id, TYPE_TITRE_UNIFORME); $index_concept->delete(); // 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(); audit::delete_audit(AUDIT_TITRE_UNIFORME, $this->id); return false; }
function delete() { global $dbh; global $msg; if (!$this->s_id) { // impossible d'accéder à cette notice de titre de série return $msg[409]; } // récupération du nombre de notices affectées $requete = "SELECT COUNT(1) AS qte FROM notices WHERE tparent_id=" . $this->s_id; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_result($res, 0, 0); if (!$nbr_lignes) { // On regarde si l'autorité est utilisée dans des vedettes composées $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->s_id, "serie"); if (count($attached_vedettes)) { // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer return '<strong>' . $this->name . "</strong><br />" . $msg["vedette_dont_del_autority"]; } // titre de série non-utilisé dans des notices : Suppression OK // effacement dans la table des titres de série $requete = "DELETE FROM series WHERE serie_id=" . $this->s_id; $result = pmb_mysql_query($requete, $dbh); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_SERIES, $this->s_id); $aut_link->delete(); $aut_pperso = new aut_pperso("serie", $this->s_id); $aut_pperso->delete(); // nettoyage indexation concepts $index_concept = new index_concept($this->s_id, TYPE_SERIE); $index_concept->delete(); // 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(); audit::delete_audit(AUDIT_SERIE, $this->s_id); return false; } else { // Ce titre de série est utilisé dans des notices, impossible de le supprimer return '<strong>' . $this->name . "</strong><br />{$msg[410]}"; } }
function delete() { global $dbh; global $msg; if (!$this->id) { // impossible d'acceder a cette notice auteur return $msg[403]; } // effacement dans les notices // recuperation du nombre de notices affectees $requete = "SELECT COUNT(1) FROM notices WHERE "; $requete .= "ed1_id={$this->id} OR "; $requete .= "ed2_id={$this->id}"; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_result($res, 0, 0); if (!$nbr_lignes) { // on regarde si l'editeur a des collections enfants $requete = "SELECT COUNT(1) FROM collections WHERE "; $requete .= "collection_parent=" . $this->id; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_result($res, 0, 0); if (!$nbr_lignes) { // On regarde si l'autorité est utilisée dans des vedettes composées $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->id, "publisher"); if (count($attached_vedettes)) { // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer return '<strong>' . $this->name . "</strong><br />" . $msg["vedette_dont_del_autority"]; } // effacement dans la table des editeurs $requete = "DELETE FROM publishers WHERE ed_id=" . $this->id; $result = pmb_mysql_query($requete, $dbh); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_PUBLISHERS, $this->id); $aut_link->delete(); $aut_pperso = new aut_pperso("publisher", $this->id); $aut_pperso->delete(); // nettoyage indexation concepts $index_concept = new index_concept($this->id, TYPE_PUBLISHER); $index_concept->delete(); audit::delete_audit(AUDIT_PUBLISHER, $this->id); return false; } else { // Cet editeur a des collections, impossible de le supprimer return '<strong>' . $this->name . "</strong><br />{$msg[405]}"; } } else { // Cet editeur est utilise dans des notices, impossible de le supprimer return '<strong>' . $this->name . "</strong><br />{$msg[404]}"; } }
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; }
/** * Renvoie le tableau des identifiants de concepts composés utilisant cette autorité * @return array */ public function get_concepts_ids() { if (!isset($this->concepts_ids)) { $this->concepts_ids = array(); $vedette_composee_found = vedette_composee::get_vedettes_built_with_element($this->get_num_object(), $this->get_string_type_object()); foreach ($vedette_composee_found as $vedette_id) { $this->concepts_ids[] = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_CONCEPT_PREFLABEL); } } return $this->concepts_ids; }
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())); } }
function delete() { global $dbh; global $msg; if (!$this->id) { // impossible d'accéder à cette notice de sous-collection return $msg[406]; } // récupération du nombre de notices affectées $requete = "SELECT COUNT(1) FROM notices WHERE "; $requete .= "subcoll_id=" . $this->id; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_result($res, 0, 0); if (!$nbr_lignes) { // On regarde si l'autorité est utilisée dans des vedettes composées $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->id, "subcollection"); 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"]; } // sous collection non-utilisée dans des notices : Suppression OK // effacement dans la table des collections $requete = "DELETE FROM sub_collections WHERE sub_coll_id=" . $this->id; $result = pmb_mysql_query($requete, $dbh); //suppression dans la table de stockage des numéros d'autorités... //Import d'autorité subcollection::delete_autority_sources($this->id); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_SUB_COLLECTIONS, $this->id); $aut_link->delete(); $aut_pperso = new aut_pperso("subcollection", $this->id); $aut_pperso->delete(); // nettoyage indexation concepts $index_concept = new index_concept($this->id, TYPE_SUBCOLLECTION); $index_concept->delete(); audit::delete_audit(AUDIT_SUB_COLLECTION, $this->id); return false; } else { // Cette collection est utilisé dans des notices, impossible de la supprimer return '<strong>' . $this->display . "</strong><br />{$msg[407]}"; } }
/** * Méthode permettant de récupérer les autorités indexées avec un concept utilisant cette autorité * @return authority_tab Onglet */ protected function get_tab_authorities_indexed_with_concept() { global $dbh, $msg; $tab = new elements_list_tab('records_authorities_indexed', $msg['record_tabs_authorities_indexed'], 'authorities'); $types_needed = array(TYPE_AUTHOR, TYPE_CATEGORY, TYPE_PUBLISHER, TYPE_COLLECTION, TYPE_SUBCOLLECTION, TYPE_SERIE, TYPE_TITRE_UNIFORME, TYPE_INDEXINT, TYPE_AUTHPERSO); $vedette_composee_found = vedette_composee::get_vedettes_built_with_element($this->record->id, 'records'); if (count($vedette_composee_found)) { foreach ($vedette_composee_found as $vedette_id) { $concept_ids[] = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_CONCEPT_PREFLABEL); } $query = 'select count(distinct num_object, type_object) from index_concept where num_concept in (' . implode(',', $concept_ids) . ') and type_object in (' . implode(',', $types_needed) . ')'; $nb_results = pmb_mysql_result(pmb_mysql_query($query, $dbh), 0, 0); $tab->set_nb_results($nb_results); if (!$quoi && $nb_results) { // Si $quoi n'est pas valorisé et qu'on a des résultats, on valorise $quoi avec cet onglet $quoi = $tab->get_name(); } if ($nb_results && $quoi == $tab->get_name()) { // On définit les filtres $filter = array('name' => 'records_authorities_indexed_by_types', 'label' => $msg['authority_tabs_common_indexed_authorities_by_types']); $tab->set_filters(array($filter)); $groups = array(); $query = 'select count(distinct num_object) as nb, type_object, id_authperso, authperso_name from index_concept left join authperso_authorities on num_object = id_authperso_authority and type_object = ' . TYPE_AUTHPERSO . ' left join authperso on id_authperso = authperso_authority_authperso_num where num_concept in (' . implode(',', $concept_ids) . ') and type_object in (' . implode(',', $types_needed) . ') group by type_object, id_authperso'; $result = pmb_mysql_query($query, $dbh); if ($result && pmb_mysql_num_rows($result)) { while ($row = pmb_mysql_fetch_object($result)) { if ($row->type_object == TYPE_AUTHPERSO && !isset($groups[1000 + $row->id_authperso])) { $groups[1000 + $row->id_authperso] = array('label' => $row->authperso_name, 'nb_results' => $row->nb); } else { if (!isset($groups[$row->type_object])) { $groups[$row->type_object] = array('label' => authority::get_type_label_from_type_id(index_concept::get_aut_table_type_from_type($row->type_object)), 'nb_results' => $row->nb); } } $nb_results += $row->nb; } } if (count($groups)) { // On trie le tableau uasort($groups, array($this, '_sort_groups_by_label')); $tab->add_groups($filter['name'], array('label' => $filter['label'], 'elements' => $groups)); $filter_values = $tab->get_filter_values($filter['name']); $authpersos_needed = array(); if ($filter_values && count($filter_values)) { $types_needed = array(); foreach ($filter_values as $value) { if ($value > 1000) { if (!in_array(TYPE_AUTHPERSO, $types_needed)) { $types_needed[] = TYPE_AUTHPERSO; } $authpersos_needed[] = $value - 1000; } else { $types_needed[] = $value; } } } $query = 'select SQL_CALC_FOUND_ROWS num_object, type_object, authperso_authority_authperso_num'; $query .= ' from index_concept left join authperso_authorities on num_object = id_authperso_authority and type_object = ' . TYPE_AUTHPERSO; $query .= ' where num_concept in (' . implode(',', $concept_ids) . ') and type_object in (' . implode(',', $types_needed) . ')'; // si on a des filtres sur des authorités persos if (count($authpersos_needed)) { $query .= ' and (authperso_authority_authperso_num is null or authperso_authority_authperso_num in (' . implode(',', $authpersos_needed) . '))'; } $query .= $this->get_authorities_sort(); $query .= $this->get_limit(); // on lance la requête $result = pmb_mysql_query($query, $dbh); $records_ids = array(); if ($result && pmb_mysql_num_rows($result)) { while ($row = pmb_mysql_fetch_object($result)) { $authority = new authority(0, $row->num_object, index_concept::get_aut_table_type_from_type($row->type_object)); $records_ids[] = $authority->get_id(); } } $nb_filtered_results = pmb_mysql_result(pmb_mysql_query('select FOUND_ROWS()'), 0, 0); $tab->set_nb_filtered_results($nb_filtered_results); $tab->set_contents($records_ids); } } } return $tab; }