/**
  * 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;
 }
Example #2
0
 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;
 }
Example #6
0
 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]}";
     }
 }
Example #7
0
 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]}";
     }
 }
Example #8
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;
 }
 /**
  * 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;
 }
Example #10
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()));
     }
 }
Example #11
0
 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;
 }