static function import($data)
 {
     // cette méthode prend en entrée un tableau constitué des informations éditeurs suivantes :
     //	$data['name'] 	Nom de la collection
     //	$data['parent']	id de l'éditeur parent de la collection
     //	$data['issn']	numéro ISSN de la collection
     global $dbh;
     // check sur le type de  la variable passée en paramètre
     if (!sizeof($data) || !is_array($data)) {
         // si ce n'est pas un tableau ou un tableau vide, on retourne 0
         return 0;
     }
     // check sur les éléments du tableau (data['name'] est requis).
     $long_maxi_name = pmb_mysql_field_len(pmb_mysql_query("SELECT collection_name FROM collections limit 1"), 0);
     $data['name'] = rtrim(substr(preg_replace('/\\[|\\]/', '', rtrim(ltrim($data['name']))), 0, $long_maxi_name));
     //si on a pas d'id, on peut avoir les infos de l'éditeur
     if (!$data['parent']) {
         if ($data['publisher']) {
             //on les a, on crée l'éditeur
             $data['parent'] = editeur::import($data['publisher']);
         }
     }
     if ($data['name'] == "" || $data['parent'] == 0) {
         /* il nous faut impérativement un éditeur */
         return 0;
     }
     // préparation de la requête
     $key0 = addslashes($data['name']);
     $key1 = $data['parent'];
     $key2 = addslashes($data['issn']);
     /* vérification que l'éditeur existe bien ! */
     $query = "SELECT ed_id FROM publishers WHERE ed_id='{$key1}' LIMIT 1 ";
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't SELECT publishers " . $query);
     }
     if (pmb_mysql_num_rows($result) == 0) {
         return 0;
     }
     /* vérification que la collection existe */
     $query = "SELECT collection_id FROM collections WHERE collection_name='{$key0}' AND collection_parent='{$key1}' LIMIT 1 ";
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't SELECT collections " . $query);
     }
     $collection = pmb_mysql_fetch_object($result);
     /* la collection existe, on retourne l'ID */
     if ($collection->collection_id) {
         return $collection->collection_id;
     }
     // id non-récupérée, il faut créer la forme.
     $query = 'INSERT INTO collections SET collection_name="' . $key0 . '", ';
     $query .= 'collection_parent="' . $key1 . '", ';
     $query .= 'collection_issn="' . $key2 . '", ';
     $query .= 'index_coll=" ' . strip_empty_words($key0) . ' ' . strip_empty_words($key2) . ' ", ';
     $query .= 'collection_comment = "' . addslashes($data['comment']) . '" ';
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't INSERT into database");
     }
     $id = pmb_mysql_insert_id($dbh);
     if ($data['subcollections']) {
         for ($i = 0; $i < count($data['subcollections']); $i++) {
             $subcoll = $data['subcollections'][$i];
             $subcoll['coll_parent'] = $id;
             subcollection::import($subcoll);
         }
     }
     audit::insert_creation(AUDIT_COLLECTION, $id);
     //update authority informations
     $authority = new authority(0, $id, AUT_TABLE_COLLECTIONS);
     $authority->set_num_statut($data['statut']);
     $authority->update();
     collection::update_index($id);
     return $id;
 }
 function update_from_form($id = 0)
 {
     global $dbh;
     global $thesaurus_concepts_active;
     global $authority_statut;
     $id += 0;
     if (!$id) {
         $requete = "insert into authperso_authorities set authperso_authority_authperso_num=" . $this->id;
         pmb_mysql_query($requete);
         $id = pmb_mysql_insert_id($dbh);
         audit::insert_creation($this->id + 1000, $id);
     } else {
         audit::insert_modif($this->id + 1000, $id);
     }
     if (!$id) {
         return;
     }
     //update authority informations
     $authority = new authority(0, $id, AUT_TABLE_AUTHPERSO);
     $authority->set_num_statut($authority_statut);
     $authority->update();
     $p_perso = new custom_parametres_perso("authperso", "authperso", $this->id);
     $p_perso->rec_fields_perso($id);
     $aut_link = new aut_link($this->id + 1000, $id);
     $aut_link->save_form();
     // Indexation concepts
     if ($thesaurus_concepts_active == 1) {
         $index_concept = new index_concept($id, TYPE_AUTHPERSO);
         $index_concept->save();
     }
     $this->update_global_index($id);
 }
 static function import($value, $from_form = 0)
 {
     global $dbh;
     // Si vide on sort
     if (trim($value['name']) == '') {
         return FALSE;
     }
     if (!$from_form) {
         $value['name'] = addslashes($value['name']);
         $value['num_author'] = addslashes($value['num_author']);
         $value['form'] = addslashes($value['form']);
         $value['date'] = addslashes($value['date']);
         $value['subject'] = addslashes($value['subject']);
         $value['place'] = addslashes($value['place']);
         $value['history'] = addslashes($value['history']);
         $value['characteristic'] = addslashes($value['characteristic']);
         $value['intended_termination'] = addslashes($value['intended_termination']);
         $value['intended_audience'] = addslashes($value['intended_audience']);
         $value['context'] = addslashes($value['context']);
         $value['equinox'] = addslashes($value['equinox']);
         $value['coordinates'] = addslashes($value['coordinates']);
         $value['tonalite'] = addslashes($value['tonalite']);
         $value['comment'] = addslashes($value['comment']);
         $value['databnf_uri'] = addslashes($value['databnf_uri']);
         for ($i = 0; $i < count($value['distrib']); $i++) {
             $value['distrib'][$i] = addslashes($value['distrib'][$i]);
         }
         for ($i = 0; $i < count($value['ref']); $i++) {
             $value['ref'][$i] = addslashes($value['ref'][$i]);
         }
         for ($i = 0; $i < count($value['subdiv']); $i++) {
             $value['subdiv'][$i] = addslashes($value['subdiv'][$i]);
         }
         for ($i = 0; $i < count($value['authors']); $i++) {
             // les champs auteurs sont addslashes dans import auteur
             $value['authors'][$i]['type'] = addslashes($value['authors'][$i]['type']);
             $value['authors'][$i]['fonction'] = addslashes($value['authors'][$i]['fonction']);
         }
     }
     $marc_key = new marc_list("music_key");
     $marc_form = new marc_list("music_form");
     $flag_form = false;
     $flag_key = false;
     foreach ($marc_form->table as $value_form => $libelle_form) {
         if ($value_form == $value['form']) {
             $flag_form = true;
         }
     }
     foreach ($marc_key->table as $value_key => $libelle_key) {
         if ($value_key == $value['tonalite']) {
             $flag_key = true;
         }
     }
     if (count($value['authors'])) {
         for ($i = 0; $i < count($value['authors']); $i++) {
             if ($value['authors'][$i]['id']) {
                 $tu_auteur = new auteur($value['authors'][$i]['id']);
                 if (!$tu_auteur->id) {
                     // id non valide
                     $value['authors'][$i]['id'] = 0;
                 }
             }
             if (!$value['authors'][$i]['id']) {
                 // création ou déjà existant. auteur::import addslashes les champs
                 $value['authors'][$i]['id'] = auteur::import($value['authors'][$i]);
             }
         }
     }
     // $value déjà addslashes plus haut -> 1
     $titre = titre_uniforme::import_tu_exist($value, 1);
     if ($titre) {
         return $titre;
     }
     $requete = "INSERT INTO titres_uniformes SET ";
     $requete .= "tu_name='" . $value["name"] . "', ";
     $requete .= "tu_num_author='" . $value["num_author"] . "', ";
     $requete .= (!$flag_form ? "tu_forme='" : "tu_forme_marclist='") . $value['form'] . "', ";
     $requete .= "tu_date='" . $value["date"] . "', ";
     $requete .= "tu_sujet='" . $value["subject"] . "', ";
     $requete .= "tu_lieu='" . $value["place"] . "', ";
     $requete .= "tu_histoire='" . $value["history"] . "', ";
     $requete .= "tu_caracteristique='" . $value["characteristic"] . "', ";
     $requete .= "tu_completude='" . $value["intended_termination"] . "', ";
     $requete .= "tu_public='" . $value["intended_audience"] . "', ";
     $requete .= "tu_contexte='" . $value["context"] . "', ";
     $requete .= "tu_equinoxe='" . $value["equinox"] . "', ";
     $requete .= "tu_coordonnees='" . $value["coordinates"] . "', ";
     $requete .= (!$flag_key ? "tu_tonalite='" : "tu_tonalite_marclist='") . $value['tonalite'] . "', ";
     $requete .= "tu_comment='" . $value["comment"] . "', ";
     $requete .= "tu_databnf_uri='" . $value["databnf_uri"] . "' ";
     // insertion du titre uniforme	et mise à jour de l'index tu
     if (pmb_mysql_query($requete, $dbh)) {
         $tu_id = pmb_mysql_insert_id();
     } else {
         return FALSE;
     }
     if (count($value['authors'])) {
         $ordre = 0;
         $rqt_ins = "INSERT INTO responsability_tu (responsability_tu_author_num, responsability_tu_num, responsability_tu_fonction, responsability_tu_type, responsability_tu_ordre) VALUES ";
         foreach ($value['authors'] as $author) {
             if ($author['id']) {
                 $rqt = $rqt_ins . " ('" . $author['id'] . "','" . $tu_id . "','" . $author['fonction'] . "','" . $author['type'] . "', {$ordre}) ";
                 $res_ins = @pmb_mysql_query($rqt);
                 $ordre++;
             }
         }
     }
     // Distribution instrumentale et vocale (pour la musique)
     for ($i = 0; $i < count($value['distrib']); $i++) {
         $requete = "INSERT INTO tu_distrib SET\n\t\t\tdistrib_num_tu='{$tu_id}',\n\t\t\tdistrib_name='" . $value['distrib'][$i] . "',\n\t\t\tdistrib_ordre='{$i}' ";
         pmb_mysql_query($requete, $dbh);
     }
     // Référence numérique (pour la musique)
     for ($i = 0; $i < count($value['ref']); $i++) {
         $requete = "INSERT INTO tu_ref SET\n\t\t\tref_num_tu='{$tu_id}',\n\t\t\tref_name='" . $value['ref'][$i] . "',\n\t\t\tref_ordre='{$i}' ";
         pmb_mysql_query($requete, $dbh);
     }
     // Subdivision de forme
     for ($i = 0; $i < count($value['subdiv']); $i++) {
         $requete = "INSERT INTO tu_subdiv SET\n\t\t\tsubdiv_num_tu='{$tu_id}',\n\t\t\tsubdiv_name='" . $value['subdiv'][$i] . "',\n\t\t\tsubdiv_ordre='{$i}' ";
         pmb_mysql_query($requete, $dbh);
     }
     audit::insert_creation(AUDIT_TITRE_UNIFORME, $tu_id);
     //update authority informations
     $authority = new authority(0, $tu_id, AUT_TABLE_TITRES_UNIFORMES);
     $authority->set_num_statut($value["statut"]);
     $authority->update();
     // mise à jour du champ index du titre uniforme
     if ($tu_id) {
         titre_uniforme::update_index_tu($tu_id);
         titre_uniforme::tu_enrichment($tu_id);
     }
     return $tu_id;
 }
Example #4
0
 function save()
 {
     global $dbh;
     if (!$this->num_thesaurus) {
         die('Erreur de création noeud');
     }
     if ($this->id_noeud) {
         //Mise à jour noeud
         $q = 'update noeuds set autorite =\'' . addslashes($this->autorite) . '\', ';
         $q .= 'num_parent = \'' . $this->num_parent . '\', num_renvoi_voir = \'' . $this->num_renvoi_voir . '\', ';
         $q .= 'visible = \'' . $this->visible . '\', num_thesaurus = \'' . $this->num_thesaurus . '\', ';
         $q .= 'authority_import_denied = \'' . $this->authority_import_denied . '\', not_use_in_indexation = \'' . $this->not_use_in_indexation . '\' ';
         $q .= 'where id_noeud = \'' . $this->id_noeud . '\' ';
         pmb_mysql_query($q, $dbh);
         audit::insert_modif(AUDIT_CATEG, $this->id_noeud);
     } else {
         $q = 'insert into noeuds set autorite = \'' . addslashes($this->autorite) . '\', ';
         $q .= 'num_parent = \'' . $this->num_parent . '\', num_renvoi_voir = \'' . $this->num_renvoi_voir . '\', ';
         $q .= 'visible = \'' . $this->visible . '\', num_thesaurus = \'' . $this->num_thesaurus . '\', ';
         $q .= 'authority_import_denied = \'' . $this->authority_import_denied . '\', not_use_in_indexation = \'' . $this->not_use_in_indexation . '\' ';
         pmb_mysql_query($q, $dbh);
         $this->id_noeud = pmb_mysql_insert_id($dbh);
         audit::insert_creation(AUDIT_CATEG, $this->id_noeud);
     }
     //update authority informations
     $authority = new authority(0, $this->id_noeud, AUT_TABLE_CATEG);
     $authority->set_num_statut($this->num_statut);
     $authority->update();
     // Mis à jour du path de lui-meme, et de tous les fils
     $thes = thesaurus::getByEltId($this->id_noeud);
     $id_top = $thes->num_noeud_racine;
     $path = '';
     $id_tmp = $this->id_noeud;
     while (true) {
         $q = "select num_parent from noeuds where id_noeud = '" . $id_tmp . "' limit 1";
         $r = pmb_mysql_query($q, $dbh);
         $id_tmp = $id_cur = pmb_mysql_result($r, 0, 0);
         if (!$id_cur || $id_cur == $id_top) {
             break;
         }
         if ($path) {
             $path = '/' . $path;
         }
         $path = $id_tmp . $path;
     }
     noeuds::process_categ_path($this->id_noeud, $path);
 }
Example #5
0
 static function import($title, $statut = 1)
 {
     global $dbh;
     // check sur la variable passée en paramètre
     if (!$title) {
         return 0;
     }
     // tentative de récupérer l'id associée dans la base (implique que l'autorité existe)
     // préparation de la requête
     $key = addslashes($title);
     $query = "SELECT serie_id FROM series WHERE serie_name='" . rtrim(substr($key, 0, 255)) . "' LIMIT 1 ";
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't SELECT series " . $query);
     }
     // résultat
     // récupération du résultat de la recherche
     $tserie = pmb_mysql_fetch_object($result);
     // du résultat et récupération éventuelle de l'id
     if ($tserie->serie_id) {
         return $tserie->serie_id;
     }
     // id non-récupérée, il faut créer la forme.
     $index = addslashes(strip_empty_words($title));
     $query = 'INSERT INTO series SET serie_name="' . $key . '", serie_index=" ' . $index . ' "';
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't INSERT into series" . $query);
     }
     $id = pmb_mysql_insert_id($dbh);
     audit::insert_creation(AUDIT_SERIE, $id);
     //update authority informations
     $authority = new authority(0, $id, AUT_TABLE_SERIES);
     $authority->set_num_statut($statut);
     $authority->update();
     serie::update_index($id);
     return $id;
 }
Example #6
0
 static function import($data)
 {
     global $dbh;
     // check sur le type de  la variable passee en parametre
     if (!sizeof($data) || !is_array($data)) {
         // si ce n'est pas un tableau ou un tableau vide, on retourne 0
         return 0;
     }
     // tentative de recuperer l'id associee dans la base (implique que l'autorite existe)
     // preparation de la requeªte
     $long_maxi = pmb_mysql_field_len(pmb_mysql_query("SELECT ed_name FROM publishers limit 1"), 0);
     $key = addslashes(rtrim(substr(preg_replace('/\\[|\\]/', '', rtrim(ltrim($data['name']))), 0, $long_maxi)));
     $ville = addslashes(trim($data['ville']));
     $adr = addslashes(trim($data['adr']));
     $adr2 = addslashes(trim($data['adr2']));
     $cp = addslashes(trim($data['cp']));
     $pays = addslashes(trim($data['pays']));
     $web = addslashes(trim($data['web']));
     $ed_comment = addslashes(trim($data['ed_comment']));
     if ($key == "") {
         return 0;
     }
     /* on laisse tomber les editeurs sans nom !!! exact. FL*/
     $query = "SELECT ed_id FROM publishers WHERE ed_name='{$key}' and ed_ville = '{$ville}' ";
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't SELECT publisher " . $query);
     }
     // resultat
     // recuperation du resultat de la recherche
     $tediteur = pmb_mysql_fetch_object($result);
     // et recuperation eventuelle de l'id
     if ($tediteur->ed_id) {
         return $tediteur->ed_id;
     }
     // id non-recuperee, il faut creer la forme.
     $query = 'INSERT INTO publishers SET ed_name="' . $key . '", ed_ville = "' . $ville . '", ed_adr1 = "' . $adr . '", ed_comment="' . $ed_comment . '", ed_adr2="' . $adr2 . '", ed_cp="' . $cp . '", ed_pays="' . $pays . '", ed_web="' . $web . '", index_publisher=" ' . strip_empty_chars($key) . ' " ';
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't INSERT into publisher : " . $query);
     }
     $id = pmb_mysql_insert_id($dbh);
     audit::insert_creation(AUDIT_PUBLISHER, $id);
     //update authority informations
     $authority = new authority(0, $id, AUT_TABLE_PUBLISHERS);
     $authority->set_num_statut($data['statut']);
     $authority->update();
     editeur::update_index($id);
     return $id;
 }
Example #7
0
 public static function import($data)
 {
     // cette méthode prend en entrée un tableau constitué des informations éditeurs suivantes :
     // $data['type'] type de l'autorité (70 , 71 ou 72)
     // $data['name'] élément d'entrée de l'autorité
     // $data['rejete'] élément rejeté
     // $data['date'] dates de l'autorité
     // $data['lieu'] lieu du congrès 210$e
     // $data['ville'] ville du congrès
     // $data['pays'] pays du congrès
     // $data['subdivision'] 210$b
     // $data['numero'] numero du congrès 210$d
     // $data['voir_id'] id de la forme retenue (sans objet pour l'import de notices)
     // $data['author_comment'] commentaire
     // $data['authority_number'] Numéro d'autortité
     // TODO gestion du dédoublonnage !
     global $dbh;
     global $opac_enrichment_bnf_sparql;
     // check sur le type de la variable passée en paramètre
     if (!sizeof($data) || !is_array($data)) {
         // si ce n'est pas un tableau ou un tableau vide, on retourne 0
         return 0;
     }
     // check sur les éléments du tableau (data['name'] ou data['rejete'] est requis).
     $long_maxi_name = pmb_mysql_field_len(pmb_mysql_query("SELECT author_name FROM authors limit 1"), 0);
     $long_maxi_rejete = pmb_mysql_field_len(pmb_mysql_query("SELECT author_rejete FROM authors limit 1"), 0);
     $data['name'] = rtrim(substr(preg_replace('/\\[|\\]/', '', rtrim(ltrim($data['name']))), 0, $long_maxi_name));
     $data['rejete'] = rtrim(substr(preg_replace('/\\[|\\]/', '', rtrim(ltrim($data['rejete']))), 0, $long_maxi_rejete));
     if (!$data['name'] && !$data['rejete']) {
         return 0;
     }
     // check sur le type d'autorité
     if (!$data['type'] == 70 && !$data['type'] == 71 && !$data['type'] == 72) {
         return 0;
     }
     // tentative de récupérer l'id associée dans la base (implique que l'autorité existe)
     // préparation de la requête
     $key0 = $data['type'];
     $key1 = addslashes($data['name']);
     $key2 = addslashes($data['rejete']);
     $key3 = addslashes($data['date']);
     $key4 = addslashes($data['subdivision']);
     $key5 = addslashes($data['lieu']);
     $key6 = addslashes($data['ville']);
     $key7 = addslashes($data['pays']);
     $key8 = addslashes($data['numero']);
     $data['lieu'] = addslashes($data['lieu']);
     $data['ville'] = addslashes($data['ville']);
     $data['pays'] = addslashes($data['pays']);
     $data['subdivision'] = addslashes($data['subdivision']);
     $data['numero'] = addslashes($data['numero']);
     $data['author_comment'] = addslashes($data['author_comment']);
     $data['author_web'] = addslashes($data['author_web']);
     if (!$data['statut']) {
         $data['statut'] = 1;
     } else {
         $data['statut'] += 0;
     }
     $query = "SELECT author_id FROM authors WHERE author_type='{$key0}' AND author_name='{$key1}' AND author_rejete='{$key2}' AND author_date='{$key3}'";
     if ($data["type"] > 70) {
         $query .= " and author_subdivision='{$key4}' and author_lieu='{$key5}' and author_ville='{$key6}' and author_pays='{$key7}' and author_numero='{$key8}'";
     }
     $query .= " LIMIT 1";
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't SELECT in database");
     }
     // résultat
     // récupération du résultat de la recherche
     $aut = pmb_mysql_fetch_object($result);
     // du résultat et récupération éventuelle de l'id
     if ($aut->author_id) {
         return $aut->author_id;
     }
     // id non-récupérée, il faut créer l'auteur
     $query = 'INSERT INTO authors SET author_type="' . $key0 . '", ';
     $query .= 'author_name="' . $key1 . '", ';
     $query .= 'author_rejete="' . $key2 . '", ';
     $query .= 'author_date="' . $key3 . '", ';
     $query .= 'author_lieu="' . $data['lieu'] . '", ';
     $query .= 'author_ville="' . $data['ville'] . '", ';
     $query .= 'author_pays="' . $data['pays'] . '", ';
     $query .= 'author_subdivision="' . $data['subdivision'] . '", ';
     $query .= 'author_numero="' . $data['numero'] . '", ';
     $query .= 'author_web="' . $data['author_web'] . '", ';
     $query .= 'author_comment="' . $data['author_comment'] . '", ';
     $word_to_index = $key1 . ' ' . $key2 . ' ' . $data['lieu'] . ' ' . $data['ville'] . ' ' . $data['pays'] . ' ' . $data['numero'] . ' ' . $data["subdivision"];
     if ($key0 == "72") {
         $word_to_index .= " " . $key3;
     }
     $query .= 'index_author=" ' . strip_empty_chars($word_to_index) . ' " ';
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't INSERT into table authors :<br /><b>{$query}</b> ");
     }
     $id = pmb_mysql_insert_id($dbh);
     audit::insert_creation(AUDIT_AUTHOR, $id);
     //update authority informations
     $authority = new authority(0, $id, AUT_TABLE_AUTHORS);
     $authority->set_num_statut($data['statut']);
     $authority->update();
     auteur::update_index($id);
     return $id;
 }
Example #8
0
 static function import($name, $comment = "", $id_pclassement = "", $statut = 1)
 {
     global $dbh;
     global $pmb_limitation_dewey;
     global $thesaurus_classement_defaut;
     // check sur la variable passée en paramètre
     if (!$name) {
         return 0;
     }
     if ($pmb_limitation_dewey < 0) {
         return 0;
     }
     if ($pmb_limitation_dewey) {
         $name = substr($name, 0, $pmb_limitation_dewey);
     }
     // tentative de récupérer l'id associée dans la base (implique que l'autorité existe)
     // préparation de la requête
     $key = addslashes($name);
     $comment = addslashes($comment);
     if (!$id_pclassement) {
         $num_pclass = $thesaurus_classement_defaut;
     } else {
         $num_pclass = $id_pclassement;
     }
     //On regarde si le plan de classement existe
     $query = "SELECT name_pclass FROM pclassement WHERE id_pclass='" . addslashes($num_pclass) . "' LIMIT 1 ";
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't SELECT pclassement " . $query);
     }
     if (!pmb_mysql_num_rows($result)) {
         //Le plan de classement demandé n'existe pas
         return 0;
         // -> pas d'import
     }
     $query = "SELECT indexint_id FROM indexint WHERE indexint_name='" . rtrim(substr($key, 0, 255)) . "' and num_pclass='{$num_pclass}' LIMIT 1 ";
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't SELECT indexint " . $query);
     }
     // résultat
     // récupération du résultat de la recherche
     $tindexint = pmb_mysql_fetch_object($result);
     // du résultat et récupération éventuelle de l'id
     if ($tindexint->indexint_id) {
         return $tindexint->indexint_id;
     }
     // id non-récupérée >> création
     if (!$id_pclassement) {
         $num_pclass = $thesaurus_classement_defaut;
     } else {
         $num_pclass = $id_pclassement;
     }
     $query = "INSERT INTO indexint SET indexint_name='{$key}', indexint_comment='{$comment}', index_indexint=' " . strip_empty_words($key . " " . $comment) . " ', num_pclass={$num_pclass} ";
     $result = @pmb_mysql_query($query, $dbh);
     if (!$result) {
         die("can't INSERT into indexint " . $query);
     }
     $id = pmb_mysql_insert_id($dbh);
     audit::insert_creation(AUDIT_INDEXINT, $id);
     //update authority informations
     $authority = new authority(0, $id, AUT_TABLE_INDEXINT);
     $authority->set_num_statut($statut);
     $authority->update();
     indexint::update_index($id);
     return $id;
 }
 protected function proceed_save($list = true)
 {
     global $dbh;
     $this->item->get_values_from_form();
     $result = $this->handler->save($this->item);
     if ($result !== true) {
         $ui_class_name = self::resolve_ui_class_name($this->params->sub, $this->handler->get_onto_name());
         $ui_class_name::display_errors($this, $result);
     } else {
         //TODO: reprendre ce hack un peu crade
         //pour faciliter les requetes SPARQL en gestion, on ajoute une propriété qui sort de nulle part... pmb:showInTop si pas de parent dans le schéma
         $query = "select ?scheme ?broader ?broaderScheme where{\n\t\t\t\t\t<" . $this->item->get_uri() . "> rdf:type skos:Concept .\t\n\t\t\t\t\t<" . $this->item->get_uri() . "> skos:inScheme ?scheme .\n\t\t\t\t\toptional {\n\t\t\t\t\t\t<" . $this->item->get_uri() . "> skos:broader ?broader .\n\t\t\t\t\t\t?broader skos:inScheme ?broaderScheme\n\t\t\t\t\t}\n\t\t\t\t} order by ?scheme ?broader";
         $this->handler->data_query($query);
         if ($this->handler->data_num_rows()) {
             $results = $this->handler->data_result();
             $lastScheme = $results[0]->scheme;
             $flag = true;
             foreach ($results as $result) {
                 if ($result->scheme == $result->broaderScheme) {
                     $flag = false;
                 }
                 if ($lastScheme != $result->scheme) {
                     if ($flag) {
                         $query = "insert into <pmb> {<" . $this->item->get_uri() . "> pmb:showInTop <" . $lastScheme . ">}";
                         $this->handler->data_query($query);
                     }
                     $flag = true;
                     $lastScheme = $result->scheme;
                 }
             }
             if ($flag) {
                 $query = "insert into <pmb> {<" . $this->item->get_uri() . "> pmb:showInTop <" . $lastScheme . ">}";
                 $this->handler->data_query($query);
             }
         } else {
             $query = "select * where{\n\t\t\t\t\t<" . $this->item->get_uri() . "> rdf:type skos:Concept .\t\n\t\t\t\t\toptional{\t\t\n\t\t\t\t\t <" . $this->item->get_uri() . "> skos:inScheme ?scheme .\n\t\t\t\t\t} . filter(!bound(?scheme)) .\n\t\t\t\t\t optional {\n\t\t\t\t\t\t<" . $this->item->get_uri() . "> skos:broader ?broader .\n\t\t\t\t\t\t?broader skos:inScheme ?broaderScheme\n\t\t\t\t\t} filter (!bound(?broaderScheme))\n\t\t\t\t} ";
             $this->handler->data_query($query);
             if (!$this->handler->data_num_rows()) {
                 $query = "insert into <pmb> {<" . $this->item->get_uri() . "> pmb:showInTop owl:Nothing}";
                 $this->handler->data_query($query);
             }
         }
         //sauvegarde des autorités liées pour les concepts...
         //Ajout de la sauvegarde du statut si c'est un concept également
         if (get_class($this->item) == "onto_skos_concept_item") {
             global $authority_statut;
             $authority_statut += 0;
             $concept_id = onto_common_uri::get_id($this->item->get_uri());
             $aut_link = new aut_link(AUT_TABLE_CONCEPT, $concept_id);
             $aut_link->save_form();
             //Ajout de la référence dans la table authorities
             $authority = new authority(0, $concept_id, AUT_TABLE_CONCEPT);
             $authority->set_num_statut($authority_statut);
             $authority->update();
         }
         // Mise à jour des vedettes composées contenant cette autorité
         vedette_composee::update_vedettes_built_with_element(onto_common_uri::get_id($this->item->get_uri()), "concept");
         //réindexation des notices indexés avec le concepts
         $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 ($result && pmb_mysql_num_rows($result)) {
             while ($row = pmb_mysql_fetch_object($result)) {
                 notice::majNoticesMotsGlobalIndex($row->num_object, "concept");
             }
         }
     }
     if ($list) {
         $this->proceed_list();
     }
 }