/** * 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; }
/** * Sauvegarde en base le lien entre vedette et objet * @param vedette_composee $vedette Vedette liée * @param int $object_id Identifiant en base de l'objet * @param int $object_type Type de l'objet */ public static function save_vedette_link(vedette_composee $vedette, $object_id, $object_type) { global $dbh; $query = "insert into vedette_link (num_vedette, num_object, type_object) values (" . $vedette->get_id() . ", " . $object_id . ", " . $object_type . ")"; pmb_mysql_query($query, $dbh); }
function update_vedette($data, $id, $type) { if ($data["elements"]) { $vedette_composee = new vedette_composee($data["id"], 'tu_authors'); if ($data["value"]) { $vedette_composee->set_label($data["value"]); } // On commence par réinitialiser le tableau des éléments de la vedette composée $vedette_composee->reset_elements(); // On remplit le tableau des éléments de la vedette composée $vedette_composee_id = 0; $tosave = false; foreach ($data["elements"] as $subdivision => $elements) { if ($elements["elements_order"] !== "") { $elements_order = explode(",", $elements["elements_order"]); foreach ($elements_order as $position => $num_element) { if ($elements[$num_element]["id"] && $elements[$num_element]["label"]) { $tosave = true; $velement = $elements[$num_element]["type"]; if (strpos($velement, "vedette_ontologies") === 0) { $velement = "vedette_ontologies"; } $available_field_class_name = $vedette_composee->get_at_available_field_class_name($velement); if ($available_field_class_name['params']) { $vedette_element = new $velement($available_field_class_name['params'], $available_field_class_name["num"], $elements[$num_element]["id"], $elements[$num_element]["label"]); } else { $vedette_element = new $velement($available_field_class_name["num"], $elements[$num_element]["id"], $elements[$num_element]["label"]); } $vedette_composee->add_element($vedette_element, $subdivision, $position); } } } } if ($tosave) { $vedette_composee_id = $vedette_composee->save(); } } if ($vedette_composee_id) { vedette_link::save_vedette_link($vedette_composee, $id, $type); } }
function update($value) { global $dbh; global $msg; global $include_path; global $thesaurus_concepts_active; global $authority_statut; if (!$value) { return false; } // nettoyage de la chaîne en entrée $value = clean_string($value); $requete = 'SET serie_name="' . $value . '", '; $requete .= 'serie_index=" ' . strip_empty_words($value) . '" '; if ($this->s_id) { // update $requete = 'UPDATE series ' . $requete; $requete .= ' WHERE serie_id=' . $this->s_id . ' LIMIT 1;'; if (pmb_mysql_query($requete, $dbh)) { $rqt_notice = "select notice_id,tit1,tit2,tit3,tit4 from notices where tparent_id=" . $this->s_id; $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); } $aut_link = new aut_link(AUT_TABLE_SERIES, $this->s_id); $aut_link->save_form(); $aut_pperso = new aut_pperso("serie", $this->s_id); $aut_pperso->save_form(); audit::insert_modif(AUDIT_SERIE, $this->s_id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[337], $msg[341]); return FALSE; } } else { // création : s'assurer que le titre n'existe pas déjà $dummy = "SELECT * FROM series WHERE serie_name REGEXP '^{$value}\$' LIMIT 1 "; $check = pmb_mysql_query($dummy, $dbh); if (pmb_mysql_num_rows($check)) { require_once "{$include_path}/user_error.inc.php"; warning($msg[336], $msg[340]); return FALSE; } $requete = 'INSERT INTO series ' . $requete . ';'; if (pmb_mysql_query($requete, $dbh)) { $this->s_id = pmb_mysql_insert_id(); $aut_link = new aut_link(AUT_TABLE_SERIES, $this->s_id); $aut_link->save_form(); $aut_pperso = new aut_pperso("serie", $this->s_id); $aut_pperso->save_form(); audit::insert_creation(AUDIT_SERIE, $this->s_id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[336], $msg[342]); return FALSE; } } //update authority informations $authority = new authority(0, $this->s_id, AUT_TABLE_SERIES); $authority->set_num_statut($authority_statut); $authority->update(); // Indexation concepts if ($thesaurus_concepts_active == 1) { $index_concept = new index_concept($this->s_id, TYPE_SERIE); $index_concept->save(); } // Mise à jour des vedettes composées contenant cette autorité vedette_composee::update_vedettes_built_with_element($this->s_id, "serie"); serie::update_index($this->s_id); return TRUE; }
function analysis_form($notice_type = false) { global $style; global $msg; global $pdeptab; global $analysis_top_form; global $fonction_auteur; global $charset; global $include_path, $class_path; global $pmb_type_audit, $select_categ_prop; global $value_deflt_fonction; global $value_deflt_lang, $value_deflt_relation_analysis; global $thesaurus_mode_pmb, $thesaurus_classement_mode_pmb; global $thesaurus_concepts_active; global $pmb_notices_show_dates; global $thesaurus_categories_affichage_ordre; global $pmb_authors_qualification; require_once "{$class_path}/author.class.php"; require_once $class_path . "/index_concept.class.php"; $fonction = new marc_list('function'); // inclusion de la feuille de style des expandables print $style; // mise à jour des flags de niveau hiérarchique $select_doc = new marc_select('doctype', 'typdoc', $this->analysis_typdoc, "get_pos(); initIt(); ajax_parse_dom();"); $analysis_top_form = str_replace('!!doc_type!!', $select_doc->display, $analysis_top_form); //$analysis_top_form = str_replace('!!doc_type!!', $this->analysis_typdoc, $analysis_top_form); $analysis_top_form = str_replace('!!b_level!!', $this->analysis_biblio_level, $analysis_top_form); $analysis_top_form = str_replace('!!h_level!!', $this->analysis_hierar_level, $analysis_top_form); $analysis_top_form = str_replace('!!id!!', $this->serial_id, $analysis_top_form); // mise à jour de l'onglet 0 $pdeptab[0] = str_replace('!!tit1!!', htmlentities($this->analysis_tit1, ENT_QUOTES, $charset), $pdeptab[0]); $pdeptab[0] = str_replace('!!tit2!!', htmlentities($this->analysis_tit2, ENT_QUOTES, $charset), $pdeptab[0]); $pdeptab[0] = str_replace('!!tit3!!', htmlentities($this->analysis_tit3, ENT_QUOTES, $charset), $pdeptab[0]); $pdeptab[0] = str_replace('!!tit4!!', htmlentities($this->analysis_tit4, ENT_QUOTES, $charset), $pdeptab[0]); $analysis_top_form = str_replace('!!tab0!!', $pdeptab[0], $analysis_top_form); // initialisation avec les paramètres du user : if (!$this->analysis_langues) { global $value_deflt_lang; if ($value_deflt_lang) { $lang = new marc_list('lang'); $this->analysis_langues[] = array('lang_code' => $value_deflt_lang, 'langue' => $lang->table[$value_deflt_lang]); } } // mise à jour de l'onglet 1 // constitution de la mention de responsabilité //$this->responsabilites $as = array_search("0", $this->responsabilites_dep["responsabilites"]); if ($as !== FALSE && $as !== NULL) { $auteur_0 = $this->responsabilites_dep["auteurs"][$as]; $auteur = new auteur($auteur_0["id"]); } if ($value_deflt_fonction && $auteur_0["id"] == 0) { $auteur_0["fonction"] = $value_deflt_fonction; } if ($pmb_authors_qualification) { $vedette_ui = new vedette_ui(new vedette_composee(vedette_composee::get_vedette_id_from_object($auteur_0["id_responsability"], TYPE_NOTICE_RESPONSABILITY_PRINCIPAL), 'analysis_authors')); $pdeptab[1] = str_replace('!!vedette_author!!', $vedette_ui->get_form('role', 0, 'notice'), $pdeptab[1]); } else { $pdeptab[1] = str_replace('!!vedette_author!!', '', $pdeptab[1]); } $pdeptab[1] = str_replace('!!iaut!!', 0, $pdeptab[1]); $pdeptab[1] = str_replace('!!aut0_id!!', $auteur_0["id"], $pdeptab[1]); $pdeptab[1] = str_replace('!!aut0!!', htmlentities($auteur->display, ENT_QUOTES, $charset), $pdeptab[1]); $pdeptab[1] = str_replace('!!f0_code!!', $auteur_0["fonction"], $pdeptab[1]); $pdeptab[1] = str_replace('!!f0!!', $fonction->table[$auteur_0["fonction"]], $pdeptab[1]); $as = array_keys($this->responsabilites_dep["responsabilites"], "1"); $max_aut1 = count($as); if ($max_aut1 == 0) { $max_aut1 = 1; } for ($i = 0; $i < $max_aut1; $i++) { $indice = $as[$i]; $auteur_1 = $this->responsabilites_dep["auteurs"][$indice]; $auteur = new auteur($auteur_1["id"]); if ($value_deflt_fonction && $auteur_1["id"] == 0 && $i == 0) { $auteur_1["fonction"] = $value_deflt_fonction; } $ptab_aut_autres = $pdeptab[11]; if ($i) { $ptab_aut_autres = str_replace('!!bouton_add_display!!', 'display:none', $ptab_aut_autres); } else { $ptab_aut_autres = str_replace('!!bouton_add_display!!', '', $ptab_aut_autres); } if ($pmb_authors_qualification) { $vedette_ui = new vedette_ui(new vedette_composee(vedette_composee::get_vedette_id_from_object($auteur_1["id_responsability"], TYPE_NOTICE_RESPONSABILITY_AUTRE), 'analysis_authors')); $ptab_aut_autres = str_replace('!!vedette_author!!', $vedette_ui->get_form('role_autre', $i, 'notice', '', 0), $ptab_aut_autres); } else { $ptab_aut_autres = str_replace('!!vedette_author!!', '', $ptab_aut_autres); } $ptab_aut_autres = str_replace('!!iaut!!', $i, $ptab_aut_autres); $ptab_aut_autres = str_replace('!!aut1_id!!', $auteur_1["id"], $ptab_aut_autres); $ptab_aut_autres = str_replace('!!aut1!!', htmlentities($auteur->display, ENT_QUOTES, $charset), $ptab_aut_autres); $ptab_aut_autres = str_replace('!!f1_code!!', $auteur_1["fonction"], $ptab_aut_autres); $ptab_aut_autres = str_replace('!!f1!!', $fonction->table[$auteur_1["fonction"]], $ptab_aut_autres); $autres_auteurs .= $ptab_aut_autres; } $pdeptab[1] = str_replace('!!max_aut1!!', $max_aut1, $pdeptab[1]); $as = array_keys($this->responsabilites_dep["responsabilites"], "2"); $max_aut2 = count($as); if ($max_aut2 == 0) { $max_aut2 = 1; } for ($i = 0; $i < $max_aut2; $i++) { $indice = $as[$i]; $auteur_2 = $this->responsabilites_dep["auteurs"][$indice]; $auteur = new auteur($auteur_2["id"]); if ($value_deflt_fonction && $auteur_2["id"] == 0 && $i == 0) { $auteur_2["fonction"] = $value_deflt_fonction; } $ptab_aut_autres = $pdeptab[12]; if ($i) { $ptab_aut_autres = str_replace('!!bouton_add_display!!', 'display:none', $ptab_aut_autres); } else { $ptab_aut_autres = str_replace('!!bouton_add_display!!', '', $ptab_aut_autres); } if ($pmb_authors_qualification) { $vedette_ui = new vedette_ui(new vedette_composee(vedette_composee::get_vedette_id_from_object($auteur_2["id_responsability"], TYPE_NOTICE_RESPONSABILITY_SECONDAIRE), 'analysis_authors')); $ptab_aut_autres = str_replace('!!vedette_author!!', $vedette_ui->get_form('role_secondaire', $i, 'notice', '', 0), $ptab_aut_autres); } else { $ptab_aut_autres = str_replace('!!vedette_author!!', '', $ptab_aut_autres); } $ptab_aut_autres = str_replace('!!iaut!!', $i, $ptab_aut_autres); $ptab_aut_autres = str_replace('!!aut2_id!!', $auteur_2["id"], $ptab_aut_autres); $ptab_aut_autres = str_replace('!!aut2!!', htmlentities($auteur->display, ENT_QUOTES, $charset), $ptab_aut_autres); $ptab_aut_autres = str_replace('!!f2_code!!', $auteur_2["fonction"], $ptab_aut_autres); $ptab_aut_autres = str_replace('!!f2!!', $fonction->table[$auteur_2["fonction"]], $ptab_aut_autres); $auteurs_secondaires .= $ptab_aut_autres; } $pdeptab[1] = str_replace('!!max_aut2!!', $max_aut2, $pdeptab[1]); $pdeptab[1] = str_replace('!!autres_auteurs!!', $autres_auteurs, $pdeptab[1]); $pdeptab[1] = str_replace('!!auteurs_secondaires!!', $auteurs_secondaires, $pdeptab[1]); $analysis_top_form = str_replace('!!tab1!!', $pdeptab[1], $analysis_top_form); // mise à jour de l'onglet 2 $pdeptab[2] = str_replace('!!pages!!', htmlentities($this->analysis_pages, ENT_QUOTES, $charset), $pdeptab[2]); $analysis_top_form = str_replace('!!tab2!!', $pdeptab[2], $analysis_top_form); // mise à jour de l'onglet 3 (notes) $pdeptab[3] = str_replace('!!n_gen!!', htmlentities($this->analysis_n_gen, ENT_QUOTES, $charset), $pdeptab[3]); $pdeptab[3] = str_replace('!!n_contenu!!', htmlentities($this->analysis_n_contenu, ENT_QUOTES, $charset), $pdeptab[3]); $pdeptab[3] = str_replace('!!n_resume!!', htmlentities($this->analysis_n_resume, ENT_QUOTES, $charset), $pdeptab[3]); $analysis_top_form = str_replace('!!tab3!!', $pdeptab[3], $analysis_top_form); // mise à jour de l'onglet 4 // catégories //tri ? if ($thesaurus_categories_affichage_ordre == 0 && count($this->analysis_categories)) { $tmp = array(); foreach ($this->analysis_categories as $key => $value) { $tmp[$key] = strip_tags($value['categ_libelle']); } $tmp = array_map("convert_diacrit", $tmp); //On enlève les accents $tmp = array_map("strtoupper", $tmp); //On met en majuscule asort($tmp); //Tri sur les valeurs en majuscule sans accent foreach ($tmp as $key => $value) { $tmp[$key] = $this->analysis_categories[$key]; //On reprend les bons couples } $this->analysis_categories = array_values($tmp); } if (sizeof($this->analysis_categories) == 0) { $max_categ = 1; } else { $max_categ = sizeof($this->analysis_categories); } $tab_categ_order = ""; for ($i = 0; $i < $max_categ; $i++) { $categ_id = $this->analysis_categories[$i]["categ_id"]; $categ = new category($categ_id); if ($i == 0) { $ptab_categ = str_replace('!!icateg!!', $i, $pdeptab[40]); } else { $ptab_categ = str_replace('!!icateg!!', $i, $pdeptab[401]); } if ($thesaurus_mode_pmb && $categ_id) { $nom_thesaurus = '[' . thesaurus::getLibelle($categ->thes->id_thesaurus) . '] '; } else { $nom_thesaurus = ''; } $ptab_categ = str_replace('!!categ_id!!', $categ_id, $ptab_categ); $ptab_categ = str_replace('!!categ_libelle!!', htmlentities($nom_thesaurus . $categ->catalog_form, ENT_QUOTES, $charset), $ptab_categ); $categ_repetables .= $ptab_categ; if (sizeof($this->analysis_categories) > 0) { if ($tab_categ_order != "") { $tab_categ_order .= ","; } $tab_categ_order .= $i; } } $pdeptab[4] = str_replace('!!max_categ!!', $max_categ, $pdeptab[4]); $pdeptab[4] = str_replace('!!categories_repetables!!', $categ_repetables, $pdeptab[4]); $pdeptab[4] = str_replace('!!tab_categ_order!!', $tab_categ_order, $pdeptab[4]); // Concepts if ($thesaurus_concepts_active == 1) { $index_concept = new index_concept($this->analysis_id, TYPE_NOTICE); $pdeptab[4] = str_replace('!!concept_form!!', $index_concept->get_form('notice'), $pdeptab[4]); } else { $pdeptab[4] = str_replace('!!concept_form!!', "", $pdeptab[4]); } // indexation interne $pdeptab[4] = str_replace('!!indexint_id!!', $this->analysis_indexint, $pdeptab[4]); $pdeptab[4] = str_replace('!!indexint!!', htmlentities($this->analysis_indexint_lib, ENT_QUOTES, $charset), $pdeptab[4]); if ($this->indexint) { $indexint = new indexint($this->indexint); if ($indexint->comment) { $disp_indexint = $indexint->name . " - " . $indexint->comment; } else { $disp_indexint = $indexint->name; } if ($thesaurus_classement_mode_pmb) { // plusieurs classements/indexations décimales autorisés en parametrage if ($indexint->name_pclass) { $disp_indexint = "[" . $indexint->name_pclass . "] " . $disp_indexint; } } $pdeptab[4] = str_replace('!!indexint!!', htmlentities($disp_indexint, ENT_QUOTES, $charset), $pdeptab[4]); $pdeptab[4] = str_replace('!!num_pclass!!', $indexint->id_pclass, $pdeptab[4]); } else { $pdeptab[4] = str_replace('!!indexint!!', '', $pdeptab[4]); $pdeptab[4] = str_replace('!!num_pclass!!', '', $pdeptab[4]); } // indexation libre $pdeptab[4] = str_replace('!!f_indexation!!', htmlentities($this->analysis_index_l, ENT_QUOTES, $charset), $pdeptab[4]); global $pmb_keyword_sep; $sep = "'{$pmb_keyword_sep}'"; if (!$pmb_keyword_sep) { $sep = "' '"; } if (ord($pmb_keyword_sep) == 0xa || ord($pmb_keyword_sep) == 0xd) { $sep = $msg['catalogue_saut_de_ligne']; } $pdeptab[4] = str_replace("!!sep!!", htmlentities($sep, ENT_QUOTES, $charset), $pdeptab[4]); $analysis_top_form = str_replace('!!tab4!!', $pdeptab[4], $analysis_top_form); // mise à jour de l'onglet 5 : Langues // langues répétables if (sizeof($this->analysis_langues) == 0) { $max_lang = 1; } else { $max_lang = sizeof($this->analysis_langues); } for ($i = 0; $i < $max_lang; $i++) { if ($i) { $ptab_lang = str_replace('!!ilang!!', $i, $pdeptab[501]); } else { $ptab_lang = str_replace('!!ilang!!', $i, $pdeptab[50]); } if (sizeof($this->analysis_langues) == 0) { $ptab_lang = str_replace('!!lang_code!!', '', $ptab_lang); $ptab_lang = str_replace('!!lang!!', '', $ptab_lang); } else { $ptab_lang = str_replace('!!lang_code!!', $this->analysis_langues[$i]["lang_code"], $ptab_lang); $ptab_lang = str_replace('!!lang!!', htmlentities($this->analysis_langues[$i]["langue"], ENT_QUOTES, $charset), $ptab_lang); } $lang_repetables .= $ptab_lang; } $pdeptab[5] = str_replace('!!max_lang!!', $max_lang, $pdeptab[5]); $pdeptab[5] = str_replace('!!langues_repetables!!', $lang_repetables, $pdeptab[5]); // langues originales répétables if (sizeof($this->analysis_languesorg) == 0) { $max_langorg = 1; } else { $max_langorg = sizeof($this->analysis_languesorg); } for ($i = 0; $i < $max_langorg; $i++) { if ($i) { $ptab_lang = str_replace('!!ilangorg!!', $i, $pdeptab[511]); } else { $ptab_lang = str_replace('!!ilangorg!!', $i, $pdeptab[51]); } if (sizeof($this->analysis_languesorg) == 0) { $ptab_lang = str_replace('!!langorg_code!!', '', $ptab_lang); $ptab_lang = str_replace('!!langorg!!', '', $ptab_lang); } else { $ptab_lang = str_replace('!!langorg_code!!', $this->analysis_languesorg[$i]["lang_code"], $ptab_lang); $ptab_lang = str_replace('!!langorg!!', htmlentities($this->analysis_languesorg[$i]["langue"], ENT_QUOTES, $charset), $ptab_lang); } $langorg_repetables .= $ptab_lang; } $pdeptab[5] = str_replace('!!max_langorg!!', $max_langorg, $pdeptab[5]); $pdeptab[5] = str_replace('!!languesorg_repetables!!', $langorg_repetables, $pdeptab[5]); $analysis_top_form = str_replace('!!tab5!!', $pdeptab[5], $analysis_top_form); // mise à jour de l'onglet 6 global $pmb_curl_timeout; $pdeptab[6] = str_replace('!!lien!!', htmlentities($this->analysis_lien, ENT_QUOTES, $charset), $pdeptab[6]); $pdeptab[6] = str_replace('!!eformat!!', htmlentities($this->analysis_eformat, ENT_QUOTES, $charset), $pdeptab[6]); $pdeptab[6] = str_replace('!!pmb_curl_timeout!!', $pmb_curl_timeout, $pdeptab[6]); $analysis_top_form = str_replace('!!tab6!!', $pdeptab[6], $analysis_top_form); //Mise à jour de l'onglet 7 $p_perso = new parametres_perso("notices"); if (!$p_perso->no_special_fields) { // si on duplique, construire le formulaire avec les donnees de la notice d'origine if ($this->duplicate_from_id) { $perso_ = $p_perso->show_editable_fields($this->duplicate_from_id); } else { $perso_ = $p_perso->show_editable_fields($this->analysis_id); } $perso = ""; for ($i = 0; $i < count($perso_["FIELDS"]); $i++) { $p = $perso_["FIELDS"][$i]; $perso .= "<div id='move_" . $p["NAME"] . "' movable='yes' title=\"" . htmlentities($p["TITRE"], ENT_QUOTES, $charset) . "\">\n\t\t\t\t\t\t<div class='row'><label for='" . $p["NAME"] . "' class='etiquette'>" . $p["TITRE"] . "</label>" . $p["COMMENT_DISPLAY"] . "</div>\n\t\t\t\t\t\t<div class='row'>" . $p["AFF"] . "</div>\n\t\t\t\t\t\t</div>"; } $perso .= $perso_["CHECK_SCRIPTS"]; $pdeptab[7] = str_replace("!!champs_perso!!", $perso, $pdeptab[7]); } else { $pdeptab[7] = "\n<script>function check_form() { return true; }</script>\n"; } $analysis_top_form = str_replace('!!tab7!!', $pdeptab[7], $analysis_top_form); //Liens vers d'autres notices $string_relations = ""; $n_rel = 0; foreach ($this->notice_link as $direction => $relations) { foreach ($relations as $relation) { //Selection du template if ($n_rel == 0) { $pattern_rel = $pdeptab[130]; } else { $pattern_rel = $pdeptab[131]; } //Construction du textbox $pattern_rel = str_replace("!!notice_relations_id!!", $relation['id_notice'], $pattern_rel); $pattern_rel = str_replace("!!notice_relations_libelle!!", htmlentities($relation['title_notice'], ENT_QUOTES, $charset), $pattern_rel); $pattern_rel = str_replace("!!notice_relations_rank!!", $relation['rank'], $pattern_rel); $pattern_rel = str_replace("!!n_rel!!", $n_rel, $pattern_rel); //Construction du combobox de type de lien $pattern_rel = str_replace("!!f_notice_type_relations_name!!", "f_rel_type_{$n_rel}", $pattern_rel); //Recuperation des types de relation $liste_type_relation_up = new marc_list("relationtypeup"); $liste_type_relation_down = new marc_list("relationtypedown"); $liste_type_relation_both = array(); $corresp_relation_up_down = array(); foreach ($liste_type_relation_up->table as $key_up => $val_up) { foreach ($liste_type_relation_down->table as $key_down => $val_down) { if ($val_up == $val_down) { $liste_type_relation_both['down'][$key_down] = $val_down; $liste_type_relation_both['up'][$key_up] = $val_up; $corresp_relation_up_down[$key_up] = $key_down; unset($liste_type_relation_down->table[$key_down]); unset($liste_type_relation_up->table[$key_up]); } } } $opts = ''; foreach ($liste_type_relation_up->table as $key => $val) { if (preg_match('/^' . $key . '/', $relation['relation_type']) && $direction == 'up') { $opts .= '<option style="color:#000000" value="' . $key . '-up" selected="selected" >' . $val . '</option>'; } else { $opts .= '<option style="color:#000000" value="' . $key . '-up">' . $val . '</option>'; } } $pattern_rel = str_replace("!!f_notice_type_relations_up!!", $opts, $pattern_rel); $opts = ''; foreach ($liste_type_relation_down->table as $key => $val) { if (preg_match('/^' . $key . '/', $relation['relation_type']) && $direction == 'down') { $opts .= '<option style="color:#000000" value="' . $key . '-down" selected="selected" >' . $val . '</option>'; } else { $opts .= '<option style="color:#000000" value="' . $key . '-down">' . $val . '</option>'; } } $pattern_rel = str_replace("!!f_notice_type_relations_down!!", $opts, $pattern_rel); $opts = ''; if (array_key_exists($relation['relation_type'], $liste_type_relation_both['up']) || array_key_exists($relation['relation_type'], $liste_type_relation_both['down'])) { $opts .= '<option style="color:#000000" value="' . $relation['relation_type'] . '-' . $direction . '" selected="selected" >' . $liste_type_relation_both[$direction][$relation['relation_type']] . '</option>'; if ($direction == "up") { $notDirection = "down"; } else { $notDirection = "up"; $corresp_relation_up_down = array_flip($corresp_relation_up_down); } $notRelationType = $corresp_relation_up_down[$relation['relation_type']]; unset($liste_type_relation_both[$direction][$relation['relation_type']]); unset($liste_type_relation_both[$notDirection][$notRelationType]); } foreach ($liste_type_relation_both['down'] as $key => $val) { $opts .= '<option style="color:#000000" value="' . $key . '-down">' . $val . '</option>'; } $pattern_rel = str_replace("!!f_notice_type_relations_both!!", $opts, $pattern_rel); $string_relations .= $pattern_rel; $n_rel++; } } if (!$n_rel) { $pattern_rel = $pdeptab[130]; $pattern_rel = str_replace("!!notice_relations_id!!", "", $pattern_rel); $pattern_rel = str_replace("!!notice_relations_libelle!!", "", $pattern_rel); $pattern_rel = str_replace("!!notice_relations_rank!!", "0", $pattern_rel); $pattern_rel = str_replace("!!n_rel!!", $n_rel, $pattern_rel); $pattern_rel = str_replace("!!f_notice_type_relations_name!!", "f_rel_type_0", $pattern_rel); //Recuperation des types de relation $liste_type_relation_up = new marc_list("relationtypeup"); $liste_type_relation_down = new marc_list("relationtypedown"); $liste_type_relation_both = array(); foreach ($liste_type_relation_up->table as $key_up => $val_up) { foreach ($liste_type_relation_down->table as $key_down => $val_down) { if ($val_up == $val_down) { $liste_type_relation_both[$key_down] = $val_down; unset($liste_type_relation_down->table[$key_down]); unset($liste_type_relation_up->table[$key_up]); } } } $opts = ''; foreach ($liste_type_relation_up->table as $key => $val) { if ($key . '-up' == $value_deflt_relation_analysis) { $opts .= '<option style="color:#000000" value="' . $key . '-up" selected="selected" >' . $val . '</option>'; } else { $opts .= '<option style="color:#000000" value="' . $key . '-up">' . $val . '</option>'; } } $pattern_rel = str_replace("!!f_notice_type_relations_up!!", $opts, $pattern_rel); $opts = ''; foreach ($liste_type_relation_down->table as $key => $val) { if ($key . '-down' == $value_deflt_relation_analysis) { $opts .= '<option style="color:#000000" value="' . $key . '-down" selected="selected" >' . $val . '</option>'; } else { $opts .= '<option style="color:#000000" value="' . $key . '-down">' . $val . '</option>'; } } $pattern_rel = str_replace("!!f_notice_type_relations_down!!", $opts, $pattern_rel); $opts = ''; foreach ($liste_type_relation_both as $key => $val) { if ($key . '-down' == $value_deflt_relation_analysis) { $opts .= '<option style="color:#000000" value="' . $key . '-down" selected="selected" >' . $val . '</option>'; } else { $opts .= '<option style="color:#000000" value="' . $key . '-down">' . $val . '</option>'; } } $pattern_rel = str_replace("!!f_notice_type_relations_both!!", $opts, $pattern_rel); $string_relations .= $pattern_rel; $n_rel++; } //Type de relation par défaut $pdeptab[13] = str_replace("!!value_deflt_relation!!", $value_deflt_relation_analysis, $pdeptab[13]); //Nombre de relations $pdeptab[13] = str_replace("!!max_rel!!", $n_rel, $pdeptab[13]); //Liens multiples $pdeptab[13] = str_replace("!!notice_relations!!", $string_relations, $pdeptab[13]); $analysis_top_form = str_replace('!!tab13!!', $pdeptab[13], $analysis_top_form); // champs de gestion $select_statut = gen_liste_multiple("select id_notice_statut, gestion_libelle from notice_statut order by 2", "id_notice_statut", "gestion_libelle", "id_notice_statut", "form_notice_statut", "", $this->analysis_statut, "", "", "", "", 0); $pdeptab[8] = str_replace('!!notice_statut!!', $select_statut, $pdeptab[8]); $pdeptab[8] = str_replace('!!commentaire_gestion!!', htmlentities($this->analysis_commentaire_gestion, ENT_QUOTES, $charset), $pdeptab[8]); $pdeptab[8] = str_replace('!!thumbnail_url!!', htmlentities($this->analysis_thumbnail_url, ENT_QUOTES, $charset), $pdeptab[8]); if ($this->analysis_is_new) { $pdeptab[8] = str_replace('!!checked_yes!!', "checked", $pdeptab[8]); $pdeptab[8] = str_replace('!!checked_no!!', "", $pdeptab[8]); } else { $pdeptab[8] = str_replace('!!checked_no!!', "checked", $pdeptab[8]); $pdeptab[8] = str_replace('!!checked_yes!!', "", $pdeptab[8]); } global $pmb_notice_img_folder_id; $message_folder = ""; if ($pmb_notice_img_folder_id) { $req = "select repertoire_path from upload_repertoire where repertoire_id ='" . $pmb_notice_img_folder_id . "'"; $res = pmb_mysql_query($req); if (pmb_mysql_num_rows($res)) { $rep = pmb_mysql_fetch_object($res); if (!is_dir($rep->repertoire_path)) { $notice_img_folder_error = 1; } } else { $notice_img_folder_error = 1; } if ($notice_img_folder_error) { if (SESSrights & ADMINISTRATION_AUTH) { $requete = "select * from parametres where gestion=0 and type_param='pmb' and sstype_param='notice_img_folder_id' "; $res = pmb_mysql_query($requete); $i = 0; if ($param = pmb_mysql_fetch_object($res)) { $message_folder = " <a class='erreur' href='./admin.php?categ=param&action=modif&id_param=" . $param->id_param . "' >" . $msg['notice_img_folder_admin_no_access'] . "</a> "; } } else { $message_folder = $msg['notice_img_folder_no_access']; } } } $pdeptab[8] = str_replace('!!message_folder!!', $message_folder, $pdeptab[8]); if ($this->analysis_id && $pmb_notices_show_dates) { $create_date = new DateTime($this->create_date); $update_date = new DateTime($this->update_date); $dates_notices = "<br>\n\t\t\t\t\t\t<label for='notice_date_crea' class='etiquette'>" . $msg["noti_crea_date"] . "</label> " . $create_date->format('d/m/Y H:i:s') . "\n\t\t\t \t\t<br>\n\t\t\t \t\t<label for='notice_date_mod' class='etiquette'>" . $msg["noti_mod_date"] . "</label> " . $update_date->format('d/m/Y H:i:s'); $pdeptab[8] = str_replace('!!dates_notice!!', $dates_notices, $pdeptab[8]); } else { $pdeptab[8] = str_replace('!!dates_notice!!', "", $pdeptab[8]); } //affichage des formulaires des droits d'acces $rights_form = $this->get_rights_form(); $pdeptab[8] = str_replace('<!-- rights_form -->', $rights_form, $pdeptab[8]); global $lang, $xmlta_indexation_lang; $user_lang = $this->analysis_indexation_lang; if (!$user_lang) { $user_lang = $xmlta_indexation_lang; } $langues = new XMLlist("{$include_path}/messages/languages.xml"); $langues->analyser(); $clang = $langues->table; $combo = "<select name='indexation_lang' id='indexation_lang' class='saisie-20em' >"; if (!$user_lang) { $combo .= "<option value='' selected>--</option>"; } else { $combo .= "<option value='' >--</option>"; } while (list($cle, $value) = each($clang)) { // arabe seulement si on est en utf-8 if ($charset != 'utf-8' and $user_lang != 'ar' or $charset == 'utf-8') { if (strcmp($cle, $user_lang) != 0) { $combo .= "<option value='{$cle}'>{$value} ({$cle})</option>"; } else { $combo .= "<option value='{$cle}' selected>{$value} ({$cle})</option>"; } } } $combo .= "</select>"; $pdeptab[8] = str_replace('!!indexation_lang!!', $combo, $pdeptab[8]); $analysis_top_form = str_replace('!!tab8!!', $pdeptab[8], $analysis_top_form); // autorité personnalisées $authperso = new authperso_notice($this->analysis_id); $authperso_tpl = $authperso->get_form(); $analysis_top_form = str_replace('!!authperso!!', $authperso_tpl, $analysis_top_form); // map global $pmb_map_activate; if ($pmb_map_activate) { $map_edition = new map_edition_controler(TYPE_RECORD, $this->analysis_id); $map_form = $map_edition->get_form(); $map_info = new map_info($this->analysis_id); $map_form_info = $map_info->get_form(); $map_notice_form = $pdeptab[14]; $map_notice_form = str_replace('!!notice_map!!', $map_form . $map_form_info, $map_notice_form); $analysis_top_form = str_replace('!!tab14!!', $map_notice_form, $analysis_top_form); } else { $analysis_top_form = str_replace('!!tab14!!', "", $analysis_top_form); } // définition de la page cible du form $analysis_top_form = str_replace('!!action!!', $this->action, $analysis_top_form); // mise à jour du type de document $analysis_top_form = str_replace('!!doc_type!!', $this->analysis_typdoc, $analysis_top_form); // Ajout des localisations pour édition $select_loc = ""; global $PMBuserid, $pmb_form_editables; if ($PMBuserid == 1 && $pmb_form_editables == 1) { $req_loc = "select idlocation,location_libelle from docs_location"; $res_loc = pmb_mysql_query($req_loc); if (pmb_mysql_num_rows($res_loc) > 1) { $select_loc = "<select name='grille_location' id='grille_location' style='display:none' onChange=\"get_pos();initIt(); if (inedit) move_parse_dom(relative);\">\n"; $select_loc .= "<option value='0'>" . $msg['notice_grille_all_location'] . "</option>\n"; while ($r = pmb_mysql_fetch_object($res_loc)) { $select_loc .= "<option value='" . $r->idlocation . "'>" . $r->location_libelle . "</option>\n"; } $select_loc .= "</select>\n"; } } $analysis_top_form = str_replace("!!location!!", $select_loc, $analysis_top_form); // affichage du lien pour suppression if ($this->analysis_id) { $link_supp = "\n\t\t\t\t<script type=\"text/javascript\">\n\t\t\t\t\t<!--\n\t\t\t\t\tfunction confirmation_delete() {\n\t\t\t\t\tresult = confirm(\"{$msg['confirm_suppr']} ?\");\n\t\t\t\t\tif(result) {\n\t\t\t\t\t\tunload_off();\n\t\t\t\t\t\tdocument.location = './catalog.php?categ=serials&sub=analysis&action=delete&bul_id=!!bul_id!!&analysis_id=!!analysis_id!!';\t\t\t\t\n\t\t\t\t\t}\t\n\t\t\t\t}\n\t\t\t\t\t-->\n\t\t\t\t</script>\n\t\t\t\t<input type='button' class='bouton' value=\"{$msg[63]}\" onClick=\"confirmation_delete();\"> "; $form_titre = $msg[4023]; if ($pmb_type_audit) { $link_audit = "<input class='bouton' type='button' onClick=\"openPopUp('./audit.php?type_obj=1&object_id={$this->analysis_id}', 'audit_popup', 700, 500, -2, -2, '{$select_categ_prop}')\" title='{$msg['audit_button']}' value='{$msg['audit_button']}' />"; } else { $link_audit = ""; } $link_duplicate = "<input type='button' class='bouton' value='" . $msg["analysis_duplicate_bouton"] . "' onclick='document.location=\"./catalog.php?categ=serials&sub=analysis&action=analysis_duplicate&bul_id={$this->id_bulletinage}&analysis_id={$this->analysis_id}\"' />"; $link_move = "<input type='button' class='bouton' value='" . $msg["analysis_move_bouton"] . "' onclick='document.location=\"./catalog.php?categ=serials&sub=analysis&action=analysis_move&bul_id={$this->id_bulletinage}&analysis_id=" . $this->analysis_id . "\"' />"; } else { $link_supp = ""; $form_titre = $msg[4022]; $link_audit = ""; $link_duplicate = ""; $link_move = ""; } $analysis_top_form = str_replace('!!link_supp!!', $link_supp, $analysis_top_form); $analysis_top_form = str_replace('!!form_title!!', $form_titre, $analysis_top_form); // mise à jour des infos du dépouillement $analysis_top_form = str_replace('!!bul_id!!', $this->id_bulletinage, $analysis_top_form); $analysis_top_form = str_replace('!!analysis_id!!', $this->analysis_id, $analysis_top_form); $analysis_top_form = str_replace('!!link_audit!!', $link_audit, $analysis_top_form); $analysis_top_form = str_replace('!!link_duplicate!!', $link_duplicate, $analysis_top_form); $analysis_top_form = str_replace('!!link_move!!', $link_move, $analysis_top_form); $analysis_top_form = str_replace('!!notice_id_no_replace!!', $this->analysis_id, $analysis_top_form); if ($notice_type) { global $analysis_type_form; $date_clic = "onClick=\"openPopUp('./select.php?what=calendrier&caller=notice&date_caller=¶m1=f_bull_new_date¶m2=date_date_lib&auto_submit=NO&date_anterieure=YES', 'date_date', 250, 300, -2, -2, 'toolbar=no, dependent=yes, resizable=yes')\" "; $date_date = "<input type='hidden' id='f_bull_new_date' name='f_bull_new_date' value='' />\n\t\t\t\t<input class='saisie-10em' type='text' name='date_date_lib' value='' />\n\t\t\t\t<input class='bouton' type='button' name='date_date_lib_bouton' value='" . $msg["bouton_calendrier"] . "' " . $date_clic . " />"; $analysis_type_form = str_replace("!!date_date!!", $date_date, $analysis_type_form); $analysis_type_form = str_replace("!!perio_type_new!!", "checked", $analysis_type_form); $analysis_type_form = str_replace("!!bull_type_new!!", "checked", $analysis_type_form); $analysis_type_form = str_replace("!!perio_type_use_existing!!", "", $analysis_type_form); $analysis_type_form = str_replace("!!bull_type_use_existing!!", "", $analysis_type_form); $analysis_top_form = str_replace("!!type_catal!!", $analysis_type_form, $analysis_top_form); return $analysis_top_form; } else { $analysis_top_form = str_replace("!!type_catal!!", "", $analysis_top_form); } return $analysis_top_form; }
function update($value) { global $dbh; global $msg; global $include_path; global $pmb_synchro_rdf; global $thesaurus_concepts_active, $max_aut0; if (!$value['name']) { return false; } // nettoyage des chaînes en entrée $value['name'] = clean_string($value['name']); $value['num_author'] = clean_string($value['num_author']); $value['form'] = clean_string($value['form']); $value['form_selector'] = clean_string($value['form_selector']); $value['date'] = clean_string($value['date']); $value['subject'] = clean_string($value['subject']); $value['place'] = clean_string($value['place']); $value['history'] = clean_string($value['history']); $value['characteristic'] = clean_string($value['characteristic']); $value['intended_termination'] = clean_string($value['intended_termination']); $value['intended_audience'] = clean_string($value['intended_audience']); $value['context'] = clean_string($value['context']); $value['equinox'] = clean_string($value['equinox']); $value['coordinates'] = clean_string($value['coordinates']); $value['tonalite'] = clean_string($value['tonalite']); $value['tonalite_selector'] = clean_string($value['tonalite_selector']); $value['comment'] = clean_string($value['comment']); $titre = titre_uniforme::import_tu_exist($value, 1, $this->id); if ($titre) { require_once "{$include_path}/user_error.inc.php"; warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_doublon_erreur"]); return FALSE; } $tu_auteur = new auteur($value['num_author']); if (!$tu_auteur->id) { $value['num_author'] = 0; } else { $value['num_author'] = $tu_auteur->id; } $flag_index = 0; $requete = "SET "; $requete .= "tu_name='" . $value["name"] . "', "; $requete .= "tu_num_author='" . $value['num_author'] . "', "; $requete .= "tu_forme='" . $value["form"] . "', "; $requete .= "tu_forme_marclist='" . $value["form_selector"] . "', "; $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 .= "tu_tonalite='" . $value["tonalite"] . "', "; $requete .= "tu_tonalite_marclist='" . $value["tonalite_selector"] . "', "; $requete .= "tu_comment='" . $value["comment"] . "', "; $requete .= "tu_import_denied='" . $value["import_denied"] . "'"; if ($this->id) { // update $requete = 'UPDATE titres_uniformes ' . $requete; $requete .= ' WHERE tu_id=' . $this->id . ' ;'; if (pmb_mysql_query($requete, $dbh)) { $flag_index = 1; } else { require_once "{$include_path}/user_error.inc.php"; warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_modif_erreur"]); return FALSE; } audit::insert_modif(AUDIT_TITRE_UNIFORME, $this->id); } else { // creation $requete = 'INSERT INTO titres_uniformes ' . $requete . ' '; $result = pmb_mysql_query($requete, $dbh); if ($result) { $this->id = pmb_mysql_insert_id(); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_creation_erreur"]); return FALSE; } audit::insert_creation(AUDIT_TITRE_UNIFORME, $this->id); } // auteurs for ($i = 0; $i < $max_aut0; $i++) { eval("global \$f_aut0_id{$i}; \$var_autid=\$f_aut0_id{$i};"); eval("global \$f_f0_code{$i}; \$var_autfonc=\$f_f0_code{$i};"); $f_aut[] = array('id' => $var_autid, 'fonction' => $var_autfonc, 'type' => '0', 'ordre' => $i); } // traitement des auteurs $rqt_del = "delete from responsability_tu where responsability_tu_num='" . $this->id . "' "; $res_del = pmb_mysql_query($rqt_del); $rqt_ins = "INSERT INTO responsability_tu (responsability_tu_author_num, responsability_tu_num, responsability_tu_fonction, responsability_tu_type, responsability_tu_ordre) VALUES "; $i = 0; while ($i <= count($f_aut) - 1) { $id_aut = $f_aut[$i]['id']; if ($id_aut) { $fonc_aut = $f_aut[$i]['fonction']; $type_aut = $f_aut[$i]['type']; $ordre_aut = $f_aut[$i]['ordre']; $rqt = $rqt_ins . " ('{$id_aut}','" . $this->id . "','{$fonc_aut}','{$type_aut}', {$ordre_aut}) "; $res_ins = @pmb_mysql_query($rqt); } $i++; } $aut_link = new aut_link(AUT_TABLE_TITRES_UNIFORMES, $this->id); $aut_link->save_form(); $aut_pperso = new aut_pperso("tu", $this->id); $aut_pperso->save_form(); // Indexation concepts if ($thesaurus_concepts_active == 1) { $index_concept = new index_concept($this->id, TYPE_TITRE_UNIFORME); $index_concept->save(); } // Mise à jour des vedettes composées contenant cette autorité vedette_composee::update_vedettes_built_with_element($this->id, "titre_uniforme"); // Gestion des champ 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); // 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='{$this->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\tref_num_tu='{$this->id}',\n\t\tref_name='" . $value['ref'][$i] . "',\n\t\tref_ordre='{$i}' "; pmb_mysql_query($requete, $dbh); } // Subdivison de forme for ($i = 0; $i < count($value['subdiv']); $i++) { $requete = "INSERT INTO tu_subdiv SET\n\t\tsubdiv_num_tu='{$this->id}',\n\t\tsubdiv_name='" . $value['subdiv'][$i] . "',\n\t\tsubdiv_ordre='{$i}' "; pmb_mysql_query($requete, $dbh); } // mise à jour du champ index du titre uniforme if ($this->id) { titre_uniforme::update_index_tu($this->id); } // réindexation de la notice if ($flag_index) { titre_uniforme::update_index($this->id); } //Enrichissement if ($this->id && $opac_enrichment_bnf_sparql) { titre_uniforme::tu_enrichment($this->id); } //mise à jour de l'oeuvre rdf if ($flag_index && $pmb_synchro_rdf) { $synchro_rdf = new synchro_rdf(); $synchro_rdf->updateAuthority($this->id, 'oeuvre'); } return TRUE; }
function update($value, $force = false) { global $dbh; global $msg, $charset; global $include_path; global $pmb_synchro_rdf; global $thesaurus_concepts_active; global $opac_enrichment_bnf_sparql; if (!$value['name']) { return false; } // nettoyage des chaînes en entrée $value['name'] = clean_string($value['name']); $value['rejete'] = clean_string($value['rejete']); $value['date'] = clean_string($value['date']); $value['lieu'] = clean_string($value['lieu']); $value['ville'] = clean_string($value['ville']); $value['pays'] = clean_string($value['pays']); $value['subdivision'] = clean_string($value['subdivision']); $value['numero'] = clean_string($value['numero']); if (!$force) { if ($this->id) { // s'assurer que l'auteur n'existe pas déjà switch ($value['type']) { case 71: // Collectivité $and_dedoublonnage = " and author_subdivision ='" . $value['subdivision'] . "' and author_lieu='" . $value['lieu'] . "' and author_ville = '" . $value['ville'] . "' and author_pays = '" . $value['pays'] . "' and author_numero ='" . $value['numero'] . "' "; break; case 72: // Congrès $and_dedoublonnage = " and author_subdivision ='" . $value['subdivision'] . "' and author_lieu='" . $value['lieu'] . "' and author_ville = '" . $value['ville'] . "' and author_pays = '" . $value['pays'] . "' and author_numero ='" . $value['numero'] . "' "; break; default: $and_dedoublonnage = ''; break; } $dummy = "SELECT * FROM authors WHERE author_type='" . $value['type'] . "' AND author_name='" . $value['name'] . "'"; $dummy .= " AND author_rejete='" . $value['rejete'] . "' "; $dummy .= "AND author_date='" . $value[date] . "' and author_id!='" . $this->id . "' {$and_dedoublonnage} "; $check = pmb_mysql_query($dummy, $dbh); if (pmb_mysql_num_rows($check)) { $auteur_exists = new auteur(pmb_mysql_result($check, 0, "author_id")); require_once "{$include_path}/user_error.inc.php"; warning($msg[200], htmlentities($msg[220] . " -> " . $auteur_exists->display, ENT_QUOTES, $charset)); return FALSE; } } else { // s'assurer que l'auteur n'existe pas déjà if ($id_auteur_exists = auteur::check_if_exists($value)) { $auteur_exists = new auteur($id_auteur_exists); require_once "{$include_path}/user_error.inc.php"; warning($msg[200], htmlentities($msg[220] . " -> " . $auteur_exists->display, ENT_QUOTES, $charset)); return FALSE; } } // s'assurer que la forme_retenue ne pointe pas dans les deux sens if ($this->id) { $dummy = "SELECT * FROM authors WHERE author_id='" . $value[voir_id] . "' and author_see='" . $this->id . "'"; $check = pmb_mysql_query($dummy, $dbh); if (pmb_mysql_num_rows($check)) { require_once "{$include_path}/user_error.inc.php"; warning($msg[200], htmlentities($msg['author_forme_retenue_error'] . " -> " . $this->display, ENT_QUOTES, $charset)); return FALSE; } } } $requete = "SET author_type='{$value['type']}', "; $requete .= "author_name='{$value['name']}', "; $requete .= "author_rejete='{$value['rejete']}', "; $requete .= "author_date='{$value['date']}', "; $requete .= "author_lieu='" . $value["lieu"] . "', "; $requete .= "author_ville='" . $value["ville"] . "', "; $requete .= "author_pays='" . $value["pays"] . "', "; $requete .= "author_subdivision='" . $value["subdivision"] . "', "; $requete .= "author_numero='" . $value["numero"] . "', "; $requete .= "author_web='{$value['author_web']}', "; $requete .= "author_see='{$value['voir_id']}', "; $requete .= "author_comment='{$value['author_comment']}', "; $word_to_index = $value["name"] . " " . $value["rejete"] . " " . $value["lieu"] . " " . $value["ville"] . " " . $value["pays"] . " " . $value["numero"] . " " . $value["subdivision"]; if ($value['type'] == 72) { $word_to_index .= " " . $value["date"]; } $requete .= "index_author=' " . strip_empty_chars($word_to_index) . " ',"; $requete .= "author_import_denied= " . ($value['import_denied'] ? 1 : 0); if ($this->id) { audit::insert_modif(AUDIT_AUTHOR, $this->id); // update // on checke s'il n'y a pas un renvoi circulaire if ($this->id == $value['voir_id']) { require_once "{$include_path}/user_error.inc.php"; warning($msg[199], htmlentities($msg[222] . " -> " . $this->display, ENT_QUOTES, $charset)); return FALSE; } $requete = 'UPDATE authors ' . $requete; $requete .= ' WHERE author_id=' . $this->id . ' ;'; if (pmb_mysql_query($requete, $dbh)) { // liens entre autorités $aut_link = new aut_link(AUT_TABLE_AUTHORS, $this->id); $aut_link->save_form(); $aut_pperso = new aut_pperso("author", $this->id); $aut_pperso->save_form(); auteur::update_index($this->id); // mise à jour de l'auteur dans la base rdf if ($pmb_synchro_rdf) { $synchro_rdf = new synchro_rdf(); $synchro_rdf->updateAuthority($this->id, 'auteur'); } // ////////////////////////modif de l'update/////////////////////////////// $query = "select 1 from authors where (author_enrichment_last_update < now()-interval '0' day) and author_id={$this->id}"; $result = pmb_mysql_query($query, $dbh); if ($opac_enrichment_bnf_sparql && pmb_mysql_num_rows($result)) { auteur::author_enrichment($this->id); } // //////////////////////////////////////////////////////////////////////// } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[199], htmlentities($msg[208] . " -> " . $this->display, ENT_QUOTES, $charset)); return FALSE; } } else { // creation $requete = 'INSERT INTO authors ' . $requete . ' '; if (pmb_mysql_query($requete, $dbh)) { $this->id = pmb_mysql_insert_id(); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_AUTHORS, $this->id); $aut_link->save_form(); $aut_pperso = new aut_pperso("author", $this->id); $aut_pperso->save_form(); audit::insert_creation(AUDIT_AUTHOR, $this->id); // ajout des enrichissements si activés if ($opac_enrichment_bnf_sparql) { auteur::author_enrichment($this->id); } } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[200], htmlentities($msg[221] . " -> " . $requete, ENT_QUOTES, $charset)); return FALSE; } } // Indexation concepts if ($thesaurus_concepts_active == 1) { $index_concept = new index_concept($this->id, TYPE_AUTHOR); $index_concept->save(); } // Mise à jour des vedettes composées contenant cette autorité vedette_composee::update_vedettes_built_with_element($this->id, "author"); return TRUE; }
function update($value, $force_creation = false) { global $dbh; global $msg, $charset; global $include_path; global $thesaurus_concepts_active; // nettoyage des valeurs en entrée $value['name'] = clean_string($value['name']); $value['issn'] = clean_string($value['issn']); if (!$value['parent']) { if ($value['publisher']) { //on les a, on crée l'éditeur $value['publisher'] = stripslashes_array($value['publisher']); //La fonction d'import fait les addslashes contrairement à l'update $value['parent'] = editeur::import($value['publisher']); } } if (!$value['name'] || !$value['parent']) { return false; } // construction de la requête $requete = 'SET collection_name="' . $value['name'] . '", '; $requete .= 'collection_parent="' . $value['parent'] . '", '; $requete .= 'collection_issn="' . $value['issn'] . '", '; $requete .= 'collection_web="' . $value['collection_web'] . '", '; $requete .= 'collection_comment="' . $value['comment'] . '", '; $requete .= 'index_coll=" ' . strip_empty_words($value['name']) . ' ' . strip_empty_words($value['issn']) . ' "'; if ($this->id) { // update $requete = 'UPDATE collections ' . $requete; $requete .= ' WHERE collection_id=' . $this->id . ' ;'; if (pmb_mysql_query($requete, $dbh)) { $requete = "update notices set ed1_id='" . $value[parent] . "' WHERE coll_id='" . $this->id . "' "; $res = pmb_mysql_query($requete, $dbh); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_COLLECTIONS, $this->id); $aut_link->save_form(); $aut_pperso = new aut_pperso("collection", $this->id); $aut_pperso->save_form(); audit::insert_modif(AUDIT_COLLECTION, $this->id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[167], htmlentities($msg[169] . " -> " . $this->display, ENT_QUOTES, $charset)); return FALSE; } } else { if (!$force_creation) { // création : s'assurer que la collection n'existe pas déjà if ($id_collection_exists = collection::check_if_exists($value)) { $collection_exists = new collection($id_collection_exists); require_once "{$include_path}/user_error.inc.php"; warning($msg[167], htmlentities($msg[171] . " -> " . $collection_exists->display, ENT_QUOTES, $charset)); return FALSE; } } $requete = 'INSERT INTO collections ' . $requete . ';'; if (pmb_mysql_query($requete, $dbh)) { $this->id = pmb_mysql_insert_id(); // liens entre autorités $aut_link = new aut_link(AUT_TABLE_COLLECTIONS, $this->id); $aut_link->save_form(); audit::insert_creation(AUDIT_COLLECTION, $this->id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[167], htmlentities($msg[170] . " -> " . $requete, ENT_QUOTES, $charset)); return FALSE; } } // Indexation concepts if ($thesaurus_concepts_active == 1) { $index_concept = new index_concept($this->id, TYPE_COLLECTION); $index_concept->save(); } // Mise à jour des vedettes composées contenant cette autorité vedette_composee::update_vedettes_built_with_element($this->id, "collection"); if ($value['subcollections']) { for ($i = 0; $i < count($value['subcollections']); $i++) { $subcoll = stripslashes_array($value['subcollections'][$i]); //La fonction d'import fait les addslashes contrairement à l'update $subcoll['coll_parent'] = $this->id; subcollection::import($subcoll); } } //update authority informations $authority = new authority(0, $this->id, AUT_TABLE_COLLECTIONS); $authority->set_num_statut($value['statut']); $authority->update(); collection::update_index($this->id); return true; }
/** * 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; }
/** * Retourne un tableau des identifiants des vedettes contenant l'élément * @param int $element_id Identifiant en base de l'élément * @param string $element_type Type de l'élément * * @return array Tableau des identifiants des vedettes */ public static function get_vedettes_built_with_element($element_id, $element_type) { global $dbh; $vedettes_id = array(); $query = "select distinct grammar from vedette"; $result = pmb_mysql_query($query, $dbh); if ($result && pmb_mysql_num_rows($result)) { while ($row = pmb_mysql_fetch_object($result)) { $vedette = new vedette_composee(0, $row->grammar); // On récupère l'identifiant lié au type d'élément foreach ($vedette->get_available_fields() as $key => $field) { if ($field["type"] == $element_type) { $element_type_num = $field["num"]; break; } } // On va chercher en base les vedettes contenant cet élément $query = "select distinct num_vedette from vedette_object inner join vedette on num_vedette = id_vedette where object_id = " . $element_id . " and object_type = " . $element_type_num . " and grammar = " . $row->grammar; $result2 = pmb_mysql_query($query, $dbh); if ($result2 && pmb_mysql_num_rows($result2)) { while ($row2 = pmb_mysql_fetch_object($result2)) { $vedettes_id[] = $row2->num_vedette; } } } } return $vedettes_id; }
protected function proceed_save($list = true) { $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 { vedette_composee::update_vedettes_built_with_element(onto_common_uri::get_id($this->item->get_uri()), "ontology" . $this->params->ontology_id); if ($list) { $this->proceed_list(); } } }
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 update($value, $force_creation = false) { global $dbh; global $msg, $charset; global $include_path; global $thesaurus_concepts_active; //si on a pas d'id, on peut avoir les infos de la collection if (!$value['parent']) { if ($value['collection']) { //on les a, on crée l'éditeur $value['collection'] = stripslashes_array($value['collection']); //La fonction d'import fait les addslashes contrairement à l'update $value['parent'] = collection::import($value['collection']); } } if (!$value['name'] || !$value['parent']) { return false; } // nettoyage des valeurs en entrée $value['name'] = clean_string($value['name']); // construction de la requête $requete = "SET sub_coll_name='{$value['name']}', "; $requete .= "sub_coll_parent='{$value['parent']}', "; $requete .= "sub_coll_issn='{$value['issn']}', "; $requete .= "subcollection_web='{$value['subcollection_web']}', "; $requete .= "subcollection_comment='{$value['comment']}', "; $requete .= "index_sub_coll=' " . strip_empty_words($value[name]) . " " . strip_empty_words($value["issn"]) . " '"; if ($this->id) { // update $requete = 'UPDATE sub_collections ' . $requete; $requete .= ' WHERE sub_coll_id=' . $this->id . ' '; if (pmb_mysql_query($requete, $dbh)) { $requete = "select collection_parent from collections WHERE collection_id='" . $value[parent] . "' "; $res = pmb_mysql_query($requete, $dbh); $ed_parent = pmb_mysql_result($res, 0, 0); $requete = "update notices set ed1_id='{$ed_parent}', coll_id='" . $value[parent] . "' WHERE subcoll_id='" . $this->id . "' "; $res = pmb_mysql_query($requete, $dbh); $aut_link = new aut_link(AUT_TABLE_SUB_COLLECTIONS, $this->id); $aut_link->save_form(); $aut_pperso = new aut_pperso("subcollection", $this->id); $aut_pperso->save_form(); audit::insert_modif(AUDIT_SUB_COLLECTION, $this->id); subcollection::update_index($this->id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[178], htmlentities($msg[182] . " -> " . $this->display, ENT_QUOTES, $charset)); return FALSE; } } else { if (!$force_creation) { // création : s'assurer que la sous-collection n'existe pas déjà if ($id_subcollection_exists = subcollection::check_if_exists($value)) { $subcollection_exists = new subcollection($id_subcollection_exists); require_once "{$include_path}/user_error.inc.php"; warning($msg[177], htmlentities($msg[219] . " -> " . $subcollection_exists->display, ENT_QUOTES, $charset)); return FALSE; } } $requete = 'INSERT INTO sub_collections ' . $requete . ';'; if (pmb_mysql_query($requete, $dbh)) { $this->id = pmb_mysql_insert_id(); $aut_link = new aut_link(AUT_TABLE_SUB_COLLECTIONS, $this->id); $aut_link->save_form(); $aut_pperso = new aut_pperso("subcollection", $this->id); $aut_pperso->save_form(); audit::insert_creation(AUDIT_SUB_COLLECTION, $this->id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[177], htmlentities($msg[182] . " -> " . $requete, ENT_QUOTES, $charset)); return FALSE; } } // Indexation concepts if ($thesaurus_concepts_active == 1) { $index_concept = new index_concept($this->id, TYPE_SUBCOLLECTION); $index_concept->save(); } // Mise à jour des vedettes composées contenant cette autorité vedette_composee::update_vedettes_built_with_element($this->id, "subcollection"); return TRUE; }
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 save() { global $dbh; global $msg; $no = new noeuds($this->num_noeud); $num_thesaurus = $no->num_thesaurus; //On teste si la categorie existe à ce niveau //$categ_exist = $this->searchLibelle($this->libelle_categorie,$num_thesaurus,$this->langue,$no->num_parent); //if ($categ_exist != 0) { //require_once("$include_path/user_error.inc.php"); //warning($msg['create_category'],$msg['create_category_double']); //on supprime les relations dans la base //$this->delete($this->num_noeud,$this->langue); //$no->delete($this->num_noeud); //return FALSE; //} else { $q = "update categories set "; $q .= "num_thesaurus = '" . $num_thesaurus . "', "; $q .= "libelle_categorie = '" . addslashes($this->libelle_categorie) . "', "; $q .= "note_application = '" . addslashes($this->note_application) . "', "; $q .= "comment_public = '" . addslashes($this->comment_public) . "', "; $q .= "comment_voir = '" . addslashes($this->comment_voir) . "', "; $q .= "index_categorie = ' " . addslashes(strip_empty_words($this->libelle_categorie, $this->langue)) . " ' "; $q .= "where num_noeud = '" . $this->num_noeud . "' and langue = '" . $this->langue . "' "; $r = pmb_mysql_query($q, $dbh); categories::update_index($this->num_noeud); $this->update_index_path_word(); // Mise à jour des vedettes composées contenant cette autorité vedette_composee::update_vedettes_built_with_element($this->num_noeud, "category"); //} }
public static function get_values_from_form($instance_name, $property, $uri_item) { $datatypes = array(); $var_name = $instance_name . "_" . $property->pmb_name; global ${$var_name}; if (${$var_name} && count(${$var_name})) { global ${$var_name . "_is_composed"}; if (!${$var_name . "_is_composed"}) { // Ce n'est pas une vedette composée //On va supprimer une éventuelle vedette précédente global ${$var_name . "_composed"}; foreach (${$var_name . "_composed"} as $order => $data) { if ($data["id"]) { $vedette_composee = new vedette_composee($data["id"]); $vedette_composee->delete(); } } // On va chercher les valeurs actuelles foreach (${$var_name} as $order => $data) { $data = stripslashes_array($data); if ($data["value"]) { $data_properties = array(); if ($data["lang"]) { $data_properties["lang"] = $data["lang"]; } if ($data["type"] == "http://www.w3.org/2000/01/rdf-schema#Literal") { $data_properties["type"] = "literal"; } else { $data_properties["type"] = "uri"; } if ($data["display_label"]) { $data_properties["display_label"] = $data["display_label"]; } $class_name = get_called_class(); $datatypes[$property->uri][] = new $class_name($data["value"], $data["type"], $data_properties); } } } else { // C'est une vedette composée global ${$var_name . "_composed"}; foreach (${$var_name . "_composed"} as $order => $data) { $data = stripslashes_array($data); if ($data["elements"]) { $vedette_composee = new vedette_composee($data["id"]); if ($data["value"]) { $vedette_composee->set_label($data["value"]); } // On commence par réinitialiser le tableau des éléments de la vedette composée $vedette_composee->reset_elements(); // On remplit le tableau des éléments de la vedette composée foreach ($data["elements"] as $subdivision => $elements) { if ($elements["elements_order"] !== "") { $elements_order = explode(",", $elements["elements_order"]); foreach ($elements_order as $position => $num_element) { if ($elements[$num_element]["id"] && $elements[$num_element]["label"]) { $velement = $elements[$num_element]["type"]; $available_field_class_name = $vedette_composee->get_at_available_field_class_name($velement); if ($available_field_class_name['params']) { $vedette_element = new $velement($available_field_class_name['params'], $available_field_class_name["num"], $elements[$num_element]["id"], $elements[$num_element]["label"]); } else { $vedette_element = new $velement($available_field_class_name["num"], $elements[$num_element]["id"], $elements[$num_element]["label"]); } $vedette_composee->add_element($vedette_element, $subdivision, $position); } } } } $vedette_composee_id = $vedette_composee->save(); } if ($vedette_composee_id) { vedette_link::save_vedette_link($vedette_composee, onto_common_uri::get_id($uri_item), TYPE_CONCEPT_PREFLABEL); if ($data["value"]) { $data_properties = array(); if ($data["type"] == "http://www.w3.org/2000/01/rdf-schema#Literal") { $data_properties["type"] = "literal"; } else { $data_properties["type"] = "uri"; } $class_name = get_called_class(); $datatypes[$property->uri][] = new $class_name($data["value"], $data["type"], $data_properties); } } } } } return $datatypes; }
function update($value) { global $dbh; global $msg; global $include_path; global $pmb_synchro_rdf; global $thesaurus_concepts_active; if (!$value['name']) { return false; } // nettoyage des valeurs en entree $value[name] = clean_string($value[name]); $value[adr1] = clean_string($value[adr1]); $value[adr2] = clean_string($value[adr2]); $value[cp] = clean_string($value[cp]); $value[ville] = clean_string($value[ville]); $value[pays] = clean_string($value[pays]); $value[web] = clean_string($value[web]); // construction de la requete $requete = "SET ed_name='{$value['name']}', "; $requete .= "ed_adr1='{$value['adr1']}', "; $requete .= "ed_adr2='{$value['adr2']}', "; $requete .= "ed_cp='{$value['cp']}', "; $requete .= "ed_ville='{$value['ville']}', "; $requete .= "ed_pays='{$value['pays']}', "; $requete .= "ed_web='{$value['web']}', "; $requete .= "ed_comment='{$value['ed_comment']}', "; $requete .= "index_publisher=' " . strip_empty_chars($value[name] . " " . $value[ville] . " " . $value[pays]) . " '"; if ($this->id) { // update $requete = 'UPDATE publishers ' . $requete; $requete .= ' WHERE ed_id=' . $this->id . ' LIMIT 1;'; if (pmb_mysql_query($requete, $dbh)) { $aut_link = new aut_link(AUT_TABLE_PUBLISHERS, $this->id); $aut_link->save_form(); $aut_pperso = new aut_pperso("publisher", $this->id); $aut_pperso->save_form(); editeur::update_index($this->id); audit::insert_modif(AUDIT_PUBLISHER, $this->id); //mise à jour de l'éditeur dans la base rdf if ($pmb_synchro_rdf) { $synchro_rdf = new synchro_rdf(); $synchro_rdf->updateAuthority($this->id, 'editeur'); } } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[145], $msg[150]); return FALSE; } } else { // s'assurer que l'editeur n'existe pas deja // on teste sur le nom et la ville seulement. voir a l'usage si necessaire de tester plus if (editeur::check_if_exists($value)) { require_once "{$include_path}/user_error.inc.php"; warning($msg[145], $msg[149] . " ({$value['name']})."); return FALSE; } $requete = 'INSERT INTO publishers ' . $requete . ';'; if (pmb_mysql_query($requete, $dbh)) { $this->id = pmb_mysql_insert_id(); $aut_link = new aut_link(AUT_TABLE_PUBLISHERS, $this->id); $aut_link->save_form(); $aut_pperso = new aut_pperso("publisher", $this->id); $aut_pperso->save_form(); audit::insert_creation(AUDIT_PUBLISHER, $this->id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[145], $msg[151]); return FALSE; } } if ($thesaurus_concepts_active == 1) { $index_concept = new index_concept($this->id, TYPE_PUBLISHER); $index_concept->save(); } // Mise à jour des vedettes composées contenant cette autorité vedette_composee::update_vedettes_built_with_element($this->id, "publisher"); return TRUE; }
function update($nom, $comment, $id_pclass = 0) { global $dbh; global $msg; global $include_path; global $thesaurus_classement_mode_pmb, $thesaurus_classement_defaut; global $thesaurus_concepts_active; if (!$nom) { return false; } // nettoyage de la chaîne en entrée $nom = clean_string($nom); if ($thesaurus_classement_mode_pmb == 0 || $id_pclass == 0) { $id_pclass = $thesaurus_classement_defaut; } $requete = "SET indexint_name='{$nom}', "; $requete .= "indexint_comment='{$comment}', "; $requete .= "num_pclass='{$id_pclass}', "; $requete .= "index_indexint=' " . strip_empty_words($nom . " " . $comment) . " '"; if ($this->indexint_id) { // update $requete = 'UPDATE indexint ' . $requete; $requete .= ' WHERE indexint_id=' . $this->indexint_id . ' LIMIT 1;'; if (pmb_mysql_query($requete, $dbh)) { $aut_link = new aut_link(AUT_TABLE_INDEXINT, $this->indexint_id); $aut_link->save_form(); $aut_pperso = new aut_pperso("indexint", $this->indexint_id); $aut_pperso->save_form(); indexint::update_index($this->indexint_id); audit::insert_modif(AUDIT_INDEXINT, $this->indexint_id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[indexint_update], $msg[indexint_unable]); return FALSE; } } else { // création : s'assurer que le nom n'existe pas déjà $dummy = "SELECT * FROM indexint WHERE indexint_name = '" . $nom . "' and num_pclass='" . $id_pclass . "' LIMIT 1 "; $check = pmb_mysql_query($dummy, $dbh); if (pmb_mysql_num_rows($check)) { require_once "{$include_path}/user_error.inc.php"; warning($msg[indexint_create], $msg[indexint_exists]); return FALSE; } $requete = 'INSERT INTO indexint ' . $requete . ';'; if (pmb_mysql_query($requete, $dbh)) { $this->indexint_id = pmb_mysql_insert_id(); $aut_link = new aut_link(AUT_TABLE_INDEXINT, $this->indexint_id); $aut_link->save_form(); $aut_pperso = new aut_pperso("indexint", $this->indexint_id); $aut_pperso->save_form(); audit::insert_creation(AUDIT_INDEXINT, $this->indexint_id); } else { require_once "{$include_path}/user_error.inc.php"; warning($msg[indexint_create], $msg[indexint_unable_create]); return FALSE; } } // Indexation concepts if ($thesaurus_concepts_active == 1) { $index_concept = new index_concept($this->indexint_id, TYPE_INDEXINT); $index_concept->save(); } // Mise à jour des vedettes composées contenant cette autorité vedette_composee::update_vedettes_built_with_element($this->indexint_id, "indexint"); return TRUE; }
/** * 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; }