AUT_TABLE_AUTHORS, TYPE_CATEGORY => AUT_TABLE_CATEG, TYPE_PUBLISHER => AUT_TABLE_PUBLISHERS, TYPE_COLLECTION => AUT_TABLE_COLLECTIONS, TYPE_SUBCOLLECTION => AUT_TABLE_SUB_COLLECTIONS, TYPE_SERIE => AUT_TABLE_SERIES, TYPE_TITRE_UNIFORME => AUT_TABLE_TITRES_UNIFORMES, TYPE_INDEXINT => AUT_TABLE_INDEXINT, TYPE_AUTHPERSO => AUT_TABLE_AUTHPERSO, TYPE_CONCEPT => AUT_TABLE_CONCEPT, ); public function __construct($id=0, $num_object=0, $type_object=0){ $this->id = intval($id); $this->num_object = intval($num_object); $this->type_object = intval($type_object); $this->get_datas(); $this->table_tempo = 'pperso_authorities'.md5(microtime(true)); $this->uid = 'authority_'.md5(microtime(true)); } public function get_datas() { if(!$this->id && $this->num_object && $this->type_object) { $query = "select id_authority, num_statut, authorities_statut_label, authorities_statut_class_html, thumbnail_url from authorities join authorities_statuts on authorities_statuts.id_authorities_statut = authorities.num_statut where num_object=".$this->num_object." and type_object=".$this->type_object; $result = pmb_mysql_query($query); if($result) { if(pmb_mysql_num_rows($result)) { $row = pmb_mysql_fetch_object($result); $this->id = $row->id_authority; $this->num_statut = $row->num_statut; $this->statut_label = $row->authorities_statut_label; $this->statut_class_html = $row->authorities_statut_class_html; $this->thumbnail_url = $row->thumbnail_url; } else { $query = "insert into authorities(id_authority, num_object, type_object) values (0, ".$this->num_object.", ".$this->type_object.")"; pmb_mysql_query($query); $this->id = pmb_mysql_insert_id(); $this->num_statut = 1; $this->statut_label = ''; $this->statut_class_html = 'statutnot1'; } } } else if ($this->id) { $query = "select num_object, type_object, num_statut, authorities_statut_label, authorities_statut_class_html, thumbnail_url from authorities join authorities_statuts on authorities_statuts.id_authorities_statut = authorities.num_statut where id_authority=".$this->id; $result = pmb_mysql_query($query); if($result && pmb_mysql_num_rows($result)) { $row = pmb_mysql_fetch_object($result); $this->num_object = $row->num_object; $this->type_object = $row->type_object; $this->num_statut = $row->num_statut; $this->statut_label = $row->authorities_statut_label; $this->statut_class_html = $row->authorities_statut_class_html; $this->thumbnail_url = $row->thumbnail_url; } } } public function get_id() { return $this->id; } public function get_num_object() { return $this->num_object; } public function get_num_statut() { return $this->num_statut; } public function get_statut_label() { return $this->statut_label; } public function get_statut_class_html() { return $this->statut_class_html; } public function get_display_statut_class_html() { global $charset; return "id."'); z.style.display=''; \" onmouseout=\"z=document.getElementById('zoom_statut".$this->id."'); z.style.display='none'; \"> "; } public function set_num_statut($num_statut) { $num_statut += 0; if(!$num_statut){ $num_statut = 1; }else{ $query = "select id_authorities_statut from authorities_statuts where id_authorities_statut=".$num_statut; $result = pmb_mysql_query($query); if(!pmb_mysql_num_rows($result)){ $num_statut = 1; } } $this->num_statut = $num_statut; } public function update() { global $msg; if($this->num_object && $this->type_object) { $query = "update authorities set num_statut='".$this->num_statut."', thumbnail_url = '".addslashes($this->thumbnail_url)."' where num_object=".$this->num_object." and type_object=".$this->type_object; $result = pmb_mysql_query($query); if($result) { return true; } else { return false; } } } public function get_type_object() { return $this->type_object; } public function get_string_type_object() { if (!$this->string_type_object) { $this->string_type_object = static::aut_const_to_string($this->type_object); } return $this->string_type_object; } public function get_type_const() { return static::aut_const_to_type_const($this->type_object); } public static function aut_const_to_string($aut_const){ switch ($aut_const) { case AUT_TABLE_AUTHORS : return 'author'; case AUT_TABLE_CATEG : return 'category'; case AUT_TABLE_PUBLISHERS : return 'publisher'; case AUT_TABLE_COLLECTIONS : return 'collection'; case AUT_TABLE_SUB_COLLECTIONS : return 'subcollection'; case AUT_TABLE_SERIES : return 'serie'; case AUT_TABLE_TITRES_UNIFORMES : return 'titre_uniforme'; case AUT_TABLE_INDEXINT : return 'indexint'; case AUT_TABLE_CONCEPT : return 'concept'; case AUT_TABLE_AUTHPERSO : return 'authperso'; } } public static function aut_const_to_type_const($aut_const){ switch ($aut_const) { case AUT_TABLE_AUTHORS : return TYPE_AUTHOR; case AUT_TABLE_CATEG : return TYPE_CATEGORY; case AUT_TABLE_PUBLISHERS : return TYPE_PUBLISHER; case AUT_TABLE_COLLECTIONS : return TYPE_COLLECTION; case AUT_TABLE_SUB_COLLECTIONS : return TYPE_SUBCOLLECTION; case AUT_TABLE_SERIES : return TYPE_SERIE; case AUT_TABLE_TITRES_UNIFORMES : return TYPE_TITRE_UNIFORME; case AUT_TABLE_INDEXINT : return TYPE_INDEXINT; case AUT_TABLE_CONCEPT : return TYPE_CONCEPT; case AUT_TABLE_AUTHPERSO : return TYPE_AUTHPERSO; } } public function delete() { //Suppression de cet item dans les paniers $authorities_caddie = new authorities_caddie(); $authorities_caddie->del_item_all_caddies($this->id, $this->type_object); //Suppression de la vignette de l'autorité si il y en a une d'uploadée thumbnail::delete($this->id, 'authority'); if ($this->get_prefix_for_pperso() != "authperso") { $query = "DELETE FROM " . $this->get_prefix_for_pperso() . "_custom_values where " . $this->get_prefix_for_pperso() ."_custom_origine=" . $this->num_object; pmb_mysql_query($query); $query = "DELETE FROM " . $this->get_prefix_for_pperso() . "_custom_dates where " . $this->get_prefix_for_pperso() ."_custom_origine=" . $this->num_object; pmb_mysql_query($query); } $query = "delete from authorities where num_object=".$this->num_object." and type_object=".$this->type_object; $result = pmb_mysql_query($query); if($result) { return true; } else { return false; } } public function get_object_instance($params = array()) { return authorities_collection::get_authority($this->type_object, $this->num_object, $params); } public function __get($name) { $return = $this->look_for_attribute_in_class($this, $name); if (!$return) { $return = $this->look_for_attribute_in_class($this->get_object_instance(), $name); } return $return; } public function lookup($name,$context) { $value = null; if(strpos($name,":authority.")!==false){ $property = str_replace(":authority.","",$name); $value = $this->generic_lookup($this, $property); if(!$value){ $value = $this->generic_lookup($this->get_object_instance(), $property); } } else if (strpos($name,":aut_link.")!==false){ $this->init_autlink_class(); $property = str_replace(":aut_link.","",$name); $value = $this->generic_lookup($this->autlink_class, $property); } else { $attributes = explode('.', $name); // On regarde si on a directement une instance d'objet, dans le cas des boucles for if (is_object($obj = $context->getVariable(substr($attributes[0], 1))) && (count($attributes) > 1)) { $value = $obj; $property = str_replace($attributes[0].'.', '', $name); $value = $this->generic_lookup($value, $property); } } if(!$value){ $value = null; } return $value; } private function generic_lookup($obj,$property){ $attributes = explode(".",$property); for($i=0 ; $ilook_for_attribute_in_class($obj, $attributes[$i]); } else{ $obj = null; break; } } return $obj; } private function look_for_attribute_in_class($class, $attribute, $parameters = array()) { if (is_object($class) && isset($class->{$attribute})) { return $class->{$attribute}; } else if (method_exists($class, $attribute)) { return call_user_func_array(array($class, $attribute), $parameters); } else if (method_exists($class, "get_".$attribute)) { return call_user_func_array(array($class, "get_".$attribute), $parameters); } else if (method_exists($class, "is_".$attribute)) { return call_user_func_array(array($class, "is_".$attribute), $parameters); } return null; } public function render($context=array()){ $template_path = "./includes/templates/authorities/".$this->get_string_type_object().".html"; if(file_exists("./includes/templates/authorities/".$this->get_string_type_object()."_subst.html")){ $template_path = "./includes/templates/authorities/".$this->get_string_type_object()."_subst.html"; } if(file_exists($template_path)){ $h2o = new H2o($template_path); switch ($this->type_object) { case AUT_TABLE_TITRES_UNIFORMES: case AUT_TABLE_COLLECTIONS: case AUT_TABLE_SUB_COLLECTIONS: $this->comment = format_value_nl2br($this->comment); break; case AUT_TABLE_AUTHORS: $this->author_comment = format_value_nl2br($this->author_comment); break; case AUT_TABLE_CATEG: $this->commentaire = format_value_nl2br($this->commentaire); break; case AUT_TABLE_PUBLISHERS: $this->ed_comment = format_value_nl2br($this->ed_comment); break; } $h2o->addLookup(array($this,"lookup")); $this->init_autlink_class(); $h2o->set('aut_link', $this->autlink_class); echo $h2o->render($context); } } /** * Retourn la classe d'affichage des éléments des onglets * @return elements_list_ui */ public function get_authority_list_ui(){ global $quoi; if(!$this->authority_list_ui){ $tab = null; foreach($this->authority_tabs->get_tabs() as $current_tab){ if (!$tab && $current_tab->get_nb_results()) { $tab = $current_tab; } if(($current_tab->get_name() == $quoi) && $current_tab->get_nb_results()){ $tab = $current_tab; break; } } if ($tab) { $quoi = $tab->get_name(); switch($tab->get_content_type()){ case 'records': $this->authority_list_ui = new elements_records_list_ui($tab->get_contents(), $tab->get_nb_results(), $tab->is_mixed(), $tab->get_groups(), $tab->get_nb_filtered_results()); break; case 'authorities': $this->authority_list_ui = new elements_authorities_list_ui($tab->get_contents(), $tab->get_nb_results(), $tab->is_mixed(), $tab->get_groups(), $tab->get_nb_filtered_results()); break; case 'docnums': $this->authority_list_ui = new elements_docnums_list_ui($tab->get_contents(), $tab->get_nb_results(), $tab->is_mixed(), $tab->get_groups(), $tab->get_nb_filtered_results()); break; case 'sections': $this->authority_list_ui = new elements_cms_editorial_sections_list_ui($tab->get_contents(), $tab->get_nb_results(), $tab->is_mixed(), $tab->get_groups(), $tab->get_nb_filtered_results()); break; case 'articles': $this->authority_list_ui = new elements_cms_editorial_articles_list_ui($tab->get_contents(), $tab->get_nb_results(), $tab->is_mixed(), $tab->get_groups(), $tab->get_nb_filtered_results()); break; case 'graph': $this->authority_list_ui = new elements_graph_ui($tab->get_contents(), $tab->get_nb_results(), $tab->is_mixed()); break; case 'expl': $this->authority_list_ui = new elements_expl_list_ui($tab->get_contents(), $tab->get_nb_results(), $tab->is_mixed()); break; } } } return $this->authority_list_ui; } public function init_autlink_class(){ if(!$this->autlink_class){ if ($this->type_object == AUT_TABLE_AUTHPERSO) { $query = "select authperso_authority_authperso_num from authperso_authorities where id_authperso_authority= ".$this->num_object; $result = pmb_mysql_query($query); if($result && pmb_mysql_num_rows($result)){ $row = pmb_mysql_fetch_object($result); $this->autlink_class = new aut_link($row->authperso_authority_authperso_num+1000, $this->num_object); } } else { $this->autlink_class = new aut_link($this->type_object, $this->num_object); } } return $this->autlink_class; } public function get_indexing_concepts(){ $concepts_list = new skos_concepts_list(); switch($this->type_object){ case AUT_TABLE_AUTHORS : if ($concepts_list->set_concepts_from_object(TYPE_AUTHOR, $this->num_object)) { return $concepts_list->get_concepts(); } break; case AUT_TABLE_PUBLISHERS : if ($concepts_list->set_concepts_from_object(TYPE_PUBLISHER, $this->num_object)) { return $concepts_list->get_concepts(); } break; case AUT_TABLE_COLLECTIONS : if ($concepts_list->set_concepts_from_object(TYPE_COLLECTION, $this->num_object)) { return $concepts_list->get_concepts(); } break; case AUT_TABLE_SUB_COLLECTIONS : if ($concepts_list->set_concepts_from_object(TYPE_SUBCOLLECTION, $this->num_object)) { return $concepts_list->get_concepts(); } break; case AUT_TABLE_SERIES : if ($concepts_list->set_concepts_from_object(TYPE_SERIE, $this->num_object)) { return $concepts_list->get_concepts(); } break; case AUT_TABLE_INDEXINT : if ($concepts_list->set_concepts_from_object(TYPE_INDEXINT, $this->num_object)) { return $concepts_list->get_concepts(); } break; case AUT_TABLE_TITRES_UNIFORMES : if ($concepts_list->set_concepts_from_object(TYPE_TITRE_UNIFORME, $this->num_object)) { return $concepts_list->get_concepts(); } break; case AUT_TABLE_CATEG : if ($concepts_list->set_concepts_from_object(TYPE_CATEGORY, $this->num_object)) { return $concepts_list->get_concepts(); } break; case AUT_TABLE_AUTHPERSO : if ($concepts_list->set_concepts_from_object(TYPE_AUTHPERSO, $this->num_object)) { return $concepts_list->get_concepts(); } break; } return null; } public function set_authority_tabs($authority_tabs) { $this->authority_tabs = $authority_tabs; } public function get_authority_tabs() { return $this->authority_tabs; } public function get_type_label(){ if (!$this->type_label) { if ($this->get_type_object() != AUT_TABLE_AUTHPERSO) { $this->type_label = self::get_type_label_from_type_id($this->get_type_object()); }elseif($this->get_type_object() == AUT_TABLE_AUTHPERSO) { $auth_datas = $this->get_object_instance()->get_data(); $this->type_label = $auth_datas['authperso']['name']; } else { $auth_datas = $this->get_object_instance()->get_data(); $this->type_label = $auth_datas['name']; } } return $this->type_label; } public static function get_type_label_from_type_id($type_id) { global $msg; $type_id = (int) $type_id; switch($type_id) { case AUT_TABLE_AUTHORS : return $msg['isbd_author']; case AUT_TABLE_PUBLISHERS : return $msg['isbd_editeur']; case AUT_TABLE_COLLECTIONS : return $msg['isbd_collection']; case AUT_TABLE_SUB_COLLECTIONS : return $msg['isbd_subcollection']; case AUT_TABLE_SERIES : return $msg['isbd_serie']; case AUT_TABLE_INDEXINT : return $msg['isbd_indexint']; case AUT_TABLE_TITRES_UNIFORMES : return $msg['isbd_titre_uniforme']; case AUT_TABLE_CATEG : return $msg['isbd_categories']; case AUT_TABLE_CONCEPT : return $msg['concept_menu']; case AUT_TABLE_AUTHPERSO : return $msg['notice_authperso']; default: return ''; } } public function build_isbd_entry_lien_gestion() { switch ($this->type_object) { case AUT_TABLE_AUTHORS : $sub_val = 'author'; break; case AUT_TABLE_CATEG : $sub_val = 'category'; break; case AUT_TABLE_PUBLISHERS : $sub_val = 'publisher'; break; case AUT_TABLE_COLLECTIONS : $sub_val = 'collection'; break; case AUT_TABLE_SUB_COLLECTIONS : $sub_val = 'subcollection'; break; case AUT_TABLE_SERIES : $sub_val = 'serie'; break; case AUT_TABLE_INDEXINT : $sub_val = 'indexint'; break; case AUT_TABLE_TITRES_UNIFORMES : $sub_val = 'titre_uniforme'; break; case AUT_TABLE_CONCEPT : $sub_val = 'concept'; break; case AUT_TABLE_AUTHPERSO : $sub_val = 'authperso'; break; default : return ''; } // construit le lien si l'utilisateur à accès aux autorités if (SESSrights & AUTORITES_AUTH) { return "" . $this->get_isbd() .""; } else { return $this->get_isbd(); } } public function get_aut_link() { return $this->init_autlink_class(); } /** * Retourne les paramètres persos * @return array */ public function get_p_perso() { if (!$this->p_perso) { $this->p_perso = array(); if ($this->get_prefix_for_pperso() == "authperso") { $query = "select authperso_authority_authperso_num from authperso_authorities where id_authperso_authority='" . $this->num_object . "' "; $result = pmb_mysql_query($query); if (!pmb_mysql_num_rows($result)) return array(); $r = pmb_mysql_fetch_object($result); $parametres_perso = new custom_parametres_perso("authperso","authperso",$r->authperso_authority_authperso_num); } else { $parametres_perso = new parametres_perso($this->get_prefix_for_pperso()); } $ppersos = $parametres_perso->show_fields($this->num_object); if(isset($ppersos['FIELDS']) && is_array($ppersos['FIELDS'])){ foreach ($ppersos['FIELDS'] as $pperso) { if ($pperso["TYPE"] !== 'html') { $pperso['AFF'] = nl2br($pperso["AFF"]); } $this->p_perso[$pperso['NAME']] = $pperso; } } } return $this->p_perso; } public function get_prefix_for_pperso(){ switch($this->get_type_object()){ case AUT_TABLE_CATEG: return 'categ'; case AUT_TABLE_TITRES_UNIFORMES: return 'tu'; case AUT_TABLE_CONCEPT: return 'skos'; default : return $this->get_string_type_object(); } } public function get_audit_type() { if (!$this->audit_type) { switch ($this->type_object) { case AUT_TABLE_AUTHORS : $this->audit_type = AUDIT_AUTHOR; break; case AUT_TABLE_CATEG : $this->audit_type = AUDIT_CATEG; break; case AUT_TABLE_PUBLISHERS : $this->audit_type = AUDIT_PUBLISHER; break; case AUT_TABLE_COLLECTIONS : $this->audit_type = AUDIT_COLLECTION; break; case AUT_TABLE_SUB_COLLECTIONS : $this->audit_type = AUDIT_SUB_COLLECTION; break; case AUT_TABLE_SERIES : $this->audit_type = AUDIT_SERIE; break; case AUT_TABLE_TITRES_UNIFORMES : $this->audit_type = AUDIT_TITRE_UNIFORME; break; case AUT_TABLE_INDEXINT : $this->audit_type = AUDIT_INDEXINT; break; case AUT_TABLE_CONCEPT : $this->audit_type = AUDIT_CONCEPT; break; case AUT_TABLE_AUTHPERSO : $req="select authperso_authority_authperso_num from authperso_authorities,authperso where id_authperso=authperso_authority_authperso_num and id_authperso_authority=". $this->num_object; $res = pmb_mysql_query($req); if(($r=pmb_mysql_fetch_object($res))) { $this->audit_type=($r->authperso_authority_authperso_num + 1000); } break; } } return $this->audit_type; } public function get_special() { global $include_path; $special_file = $include_path.'/templates/authorities/special/authority_special.class.php'; if (file_exists($special_file)) { require_once($special_file); return new authority_special($this); } return null; } public function get_mapping_profiles(){ $returnedDatas = array(); switch($this->type_object){ case AUT_TABLE_AUTHORS : break; case AUT_TABLE_CATEG : break; case AUT_TABLE_PUBLISHERS : break; case AUT_TABLE_COLLECTIONS : break; case AUT_TABLE_SUB_COLLECTIONS : break; case AUT_TABLE_SERIES : break; case AUT_TABLE_TITRES_UNIFORMES : $mapper = form_mapper::getMapper('tu'); break; case AUT_TABLE_INDEXINT : break; case AUT_TABLE_CONCEPT : break; case AUT_TABLE_AUTHPERSO : break; } if($mapper){ $mapper->setId($this->num_object); $destinations = $mapper->getDestinations(); foreach($destinations as $dest){ $profile = $mapper->getProfiles($dest); if($profile){ $returnedDatas[] = $profile; } } } return $returnedDatas; } /** * 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_type_const()); foreach($vedette_composee_found as $vedette_id){ // toutes les vedettes composées ne sont pas des concepts if($concepts_id = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_CONCEPT_PREFLABEL)) { $this->concepts_ids[] = $concepts_id; } } } return $this->concepts_ids; } /** * Renvoie le tableau des identifiants de notices utilisant cette autorité comme vedette * @return array */ public function get_records_ids() { if (!isset($this->records_ids)) { $this->records_ids = array(); $vedette_composee_found = vedette_composee::get_vedettes_built_with_element($this->get_num_object(), $this->get_type_const()); foreach($vedette_composee_found as $vedette_id){ if($record_id = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_NOTICE_RESPONSABILITY_PRINCIPAL)) { $this->records_ids[] = $record_id; } if($record_id = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_NOTICE_RESPONSABILITY_AUTRE)) { $this->records_ids[] = $record_id; } if($record_id = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_NOTICE_RESPONSABILITY_SECONDAIRE)) { $this->records_ids[] = $record_id; } } $this->records_ids = array_unique($this->records_ids); } return $this->records_ids; } /** * Renvoie le tableau des identifiants d'oeuvres utilisant cette autorité comme vedette * @return array */ public function get_tus_ids() { if (!isset($this->tus_ids)) { $this->tus_ids = array(); $vedette_composee_found = vedette_composee::get_vedettes_built_with_element($this->get_num_object(), $this->get_type_const()); foreach($vedette_composee_found as $vedette_id){ if($tu_id = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_TU_RESPONSABILITY)) { $this->tus_ids[] = $tu_id; } if($tu_id = vedette_composee::get_object_id_from_vedette_id($vedette_id, TYPE_TU_RESPONSABILITY_INTERPRETER)) { $this->tus_ids[] = $tu_id; } } $this->tus_ids = array_unique($this->tus_ids); } return $this->tus_ids; } public function get_type_icon() { if (!isset($this->type_icon)) { $auth_type = $this->get_string_type_object(); switch ($auth_type) { case 'author' : $author_type = $this->get_object_instance()->type; if (!empty($author_type)) { $this->type_icon = get_url_icon('authorities/'.$auth_type.'_'.$author_type.'_icon.png'); break; } $this->type_icon = get_url_icon('authorities/'.$auth_type.'_icon.png'); break; case 'titre_uniforme' : // stocker comme ça ou juste les propriétés qui nous intéressent ? qu'est-ce qui est le plus performant? $tu_type = $this->object_instance->oeuvre_type; $tu_nature = $this->object_instance->oeuvre_nature; if (!empty($tu_type) && !empty($tu_nature)) { $this->type_icon = get_url_icon('authorities/tu_'.$tu_nature.'_'.$tu_type.'_icon.png'); break; } $this->type_icon = get_url_icon('authorities/'.$auth_type.'_icon.png'); break; default : $this->type_icon = get_url_icon('authorities/'.$auth_type.'_icon.png'); break; } if (empty($this->type_icon)) { $this->type_icon = get_url_icon('authorities/'.$auth_type.'_icon.png'); } } return $this->type_icon; } public static function get_indexation_directory($const) { $indexation_directory = ""; switch ($const) { case AUT_TABLE_AUTHORS : $indexation_directory = "authors"; break; case AUT_TABLE_CATEG : $indexation_directory = "categories"; break; case AUT_TABLE_PUBLISHERS : $indexation_directory = "publishers"; break; case AUT_TABLE_COLLECTIONS : $indexation_directory = "collections"; break; case AUT_TABLE_SUB_COLLECTIONS : $indexation_directory = "subcollections"; break; case AUT_TABLE_SERIES : $indexation_directory = "series"; break; case AUT_TABLE_TITRES_UNIFORMES : $indexation_directory = "titres_uniformes"; break; case AUT_TABLE_INDEXINT : $indexation_directory = "indexint"; break; case AUT_TABLE_CONCEPT : $indexation_directory = "concepts"; break; case AUT_TABLE_AUTHPERSO : $indexation_directory = "authperso"; break; } return $indexation_directory; } public function get_used_in_pperso_authorities() { if (!isset($this->used_in_pperso_authorities)) { $this->used_in_pperso_authorities=aut_pperso::get_used($this->type_object, $this->num_object,$this->table_tempo); } return $this->used_in_pperso_authorities; } public function get_used_in_pperso_authorities_ids($prefix) { switch($prefix){ case 'article':$type_object=20; break; case 'section':$type_object=21; break; case 'notices': $type_object=50; break; case 'author': $type_object=AUT_TABLE_AUTHORS; break; case 'authperso': $type_object=AUT_TABLE_AUTHPERSO; break; case 'categ': $type_object=AUT_TABLE_CATEG; break; case 'collection': $type_object=AUT_TABLE_COLLECTIONS; break; case 'indexint': $type_object=AUT_TABLE_INDEXINT; break; case 'publisher': $type_object=AUT_TABLE_PUBLISHERS; break; case 'serie': $type_object=AUT_TABLE_SERIES; break; case 'subcollection': $type_object=AUT_TABLE_SUB_COLLECTIONS; break; case 'tu': $type_object=AUT_TABLE_TITRES_UNIFORMES; break; default: return array(); } $ids=array(); $query= "SELECT distinct id from ".$this->table_tempo." where type_object = '".$type_object."' order by id"; $result = pmb_mysql_query($query); if(pmb_mysql_num_rows($result)){ while($row = pmb_mysql_fetch_object($result)){ $ids[]=$row->id; } } return $ids; } public static function get_const_type_object($string_type_object) { switch ($string_type_object) { case 'author': return AUT_TABLE_AUTHORS; case 'category': return AUT_TABLE_CATEG; case 'publisher' : return AUT_TABLE_PUBLISHERS; case 'collection' : return AUT_TABLE_COLLECTIONS; case 'subcollection' : return AUT_TABLE_SUB_COLLECTIONS; case 'serie': return AUT_TABLE_SERIES; case 'titre_uniforme' : return AUT_TABLE_TITRES_UNIFORMES; case 'indexint' : return AUT_TABLE_INDEXINT; case 'concept' : return AUT_TABLE_CONCEPT; case 'authperso' : return AUT_TABLE_AUTHPERSO; } } public function get_vedette_type(){ if (!$this->vedette_type) { switch ($this->type_object) { case AUT_TABLE_AUTHORS : $this->vedette_type = TYPE_AUTHOR; break; case AUT_TABLE_CATEG : $this->vedette_type = TYPE_CATEGORY; break; case AUT_TABLE_PUBLISHERS : $this->vedette_type = TYPE_PUBLISHER; break; case AUT_TABLE_COLLECTIONS : $this->vedette_type = TYPE_COLLECTION; break; case AUT_TABLE_SUB_COLLECTIONS : $this->vedette_type = TYPE_SUBCOLLECTION; break; case AUT_TABLE_SERIES : $this->vedette_type = TYPE_SERIE; break; case AUT_TABLE_TITRES_UNIFORMES : $this->vedette_type = TYPE_TITRE_UNIFORME; break; case AUT_TABLE_INDEXINT : $this->vedette_type = TYPE_INDEXINT; break; case AUT_TABLE_CONCEPT : $this->vedette_type = TYPE_CONCEPT_PREFLABEL; break; case AUT_TABLE_AUTHPERSO : $this->vedette_type = TYPE_AUTHPERSO; break; } } return $this->vedette_type; } public function get_uid() { return $this->uid; } public function get_authority_link(){ return './autorites.php?categ=see&sub='.$this->get_string_type_object().'&id='.$this->get_num_object(); } public function get_entity_type(){ return 'authority'; } public function get_caddie() { global $msg; $cart_click = "onClick=\"openPopUp('./cart.php?object_type=".authorities_caddie::get_type_from_const($this->type_object)."&item=".$this->get_id()."', 'cart')\""; $cart_over_out = "onMouseOver=\"show_div_access_carts(event,".$this->get_id().", '".authorities_caddie::get_type_from_const($this->get_type_object())."');\" onMouseOut=\"set_flag_info_div(false);\""; return "basket"; } public function get_thumbnail_url() { return $this->thumbnail_url; } public function set_thumbnail_url($thumbnail_url) { $uploaded_thumbnail_url = thumbnail::create($this->get_id(), 'authority'); if($uploaded_thumbnail_url) { $this->thumbnail_url = $uploaded_thumbnail_url; } else { $this->thumbnail_url = $thumbnail_url; } } public function get_thumbnail() { return thumbnail::get_image('', $this->thumbnail_url); } public function get_icon_pointe_in_cart() { return $this->icon_pointe_in_cart; } public function set_icon_pointe_in_cart($icon_pointe_in_cart) { $this->icon_pointe_in_cart = $icon_pointe_in_cart; } public function get_icon_del_in_cart() { return $this->icon_del_in_cart; } public function set_icon_del_in_cart($icon_del_in_cart) { $this->icon_del_in_cart = $icon_del_in_cart; } public static function prefix_var_tree($tree,$prefix){ for($i=0 ; $i "id", 'desc' => $msg['1601'] ); $main_fields[] = array( 'var' => "num_object", 'desc' => $msg['cms_authority_format_data_db_id'] ); $main_fields[] = array( 'var' => "statut", 'desc' => $msg['authorities_statut_label'] ); $main_fields[] = array( 'var' => "thumbnail_url", 'desc' => $msg['notice_thumbnail_url'] ); // $main_fields[] = array( // 'var' => "thumbnail", // 'desc' => $msg[''] // ); //CP $type_object = $this->get_string_type_object(); switch ($type_object) { case 'titre_uniforme' : $parametres_perso = new parametres_perso('tu'); break; case 'category' : $parametres_perso = new parametres_perso('categ'); break; case 'authperso' : global $num_page; $frbr_page = new frbr_page($num_page); $parametres_perso = new custom_parametres_perso("authperso","authperso", $frbr_page->get_parameter_value('authperso')); break; default : $parametres_perso = new parametres_perso($type_object); break; } $main_fields[] = array( 'var' => "customs", 'desc' => $msg['authority_champs_perso'], 'children' => authority::prefix_var_tree($parametres_perso->get_format_data_structure(),"customs") ); $main_fields[] = array( 'var' => "concepts", 'desc' => $msg['ontology_skos_concept'], 'children' => authority::prefix_var_tree(skos_concept::get_format_data_structure(),"concepts[i]") ); //TODO Autorités liées //TODO Notices liées return $main_fields; } public function format_datas(){ $formatted_data = array( 'id' => $this->get_id(), 'num_object' => $this->get_num_object(), 'statut' => $this->get_statut_label(), 'thumbnail_url' => $this->get_thumbnail_url(), 'thumbnail' => $this->get_thumbnail() ); //CP $type_object = $this->get_string_type_object(); switch ($type_object) { case 'titre_uniforme' : $parametres_perso = new parametres_perso('tu'); break; case 'category' : $parametres_perso = new parametres_perso('categ'); break; case 'authperso' : $parametres_perso = new custom_parametres_perso("authperso","authperso", $this->get_object_instance()->info['authperso_num']); break; default : $parametres_perso = new parametres_perso($type_object); break; } $formatted_data['customs'] = $parametres_perso->get_out_values($this->get_num_object()); $skos_concept = new skos_concept($this->get_num_object()); $formatted_data['concepts'] = $skos_concept->format_datas(); //TODO Autorités liées //TODO Notices liées return $formatted_data; } public static function update_records_index($query, $datatype = 'all') { global $include_path; $notices_ids = array(); $found = pmb_mysql_query($query); while (($mesNotices = pmb_mysql_fetch_object($found))) { $notices_ids[] = $mesNotices->notice_id; } if (count($notices_ids)) { foreach ($notices_ids as $notice_id) { indexation_stack::push($notice_id, TYPE_NOTICE, $datatype); //-------------------INI 13/04/2022 LLIUREX Temp solution to fix bug in indexation------------------- notice::majNoticesGlobalIndex($notice_id); notice::majNoticesMotsGlobalIndex($notice_id, $datatype); //------------------FIN 13/04/2022----------------------------------------------------------------------------------- } } } public function get_isbd() { global $msg, $include_path; if (!empty($this->isbd)) { return $this->isbd; } $this->isbd = $this->get_object_instance()->get_isbd(); $template_path = ''; if (file_exists($include_path.'/templates/authorities/isbd/'.$this->get_string_type_object().'.html')) { $template_path = $include_path.'/templates/authorities/isbd/'.$this->get_string_type_object().'.html'; } if (file_exists($include_path.'/templates/authorities/isbd/'.$this->get_string_type_object().'_subst.html')) { $template_path = $include_path.'/templates/authorities/isbd/'.$this->get_string_type_object().'_subst.html'; } if($template_path){ $h2o = H2o_collection::get_instance($template_path); $isbd = $h2o->render(array('authority' => $this)); $this->isbd = trim(str_replace(array("\n", "\t", "\r"), '', strip_tags($isbd))); } return $this->isbd; } public function get_detail() { global $msg, $include_path; if (isset($this->detail)) { return $this->detail; } $this->detail = ''; $template_path = ''; if (file_exists($include_path.'/templates/authorities/detail/'.$this->get_string_type_object().'.html')) { $template_path = $include_path.'/templates/authorities/detail/'.$this->get_string_type_object().'.html'; } if (file_exists($include_path.'/templates/authorities/detail/'.$this->get_string_type_object().'_subst.html')) { $template_path = $include_path.'/templates/authorities/detail/'.$this->get_string_type_object().'_subst.html'; } if($template_path){ $h2o = H2o_collection::get_instance($template_path); $this->detail = $h2o->render(array('element' => $this)); } return $this->detail; } protected function get_hidden_values_already_exist() { $hidden_values = ''; //champs perso $param_perso = new parametres_perso($this->get_prefix_for_pperso()); foreach($param_perso->get_t_fields() as $field) { $hidden_values .= $this->put_global_in_hidden_field($field['NAME']); } return $hidden_values; } public function get_display_forcing_button($label='') { global $charset; return ""; } public function get_display_authority_already_exist($error_title, $error_message, $values=array()) { global $current_module, $charset; $display = "
".htmlentities($error_title, ENT_QUOTES, $charset)."
".htmlentities($error_message, ENT_QUOTES, $charset)."
".$this->get_hidden_values_already_exist()." !!hidden_specific_values!! !!forcing_button!!
"; $this->init_autlink_class(); $display .= "
".$this->autlink_class->get_hidden_values_already_exist()."
"; $display .= "
"; return $display; } public function put_global_in_hidden_field($global_name) { global ${$global_name}; $global_var = ${$global_name}; $hidden_global_field = $this->create_hidden_field($global_name, $global_var); return $hidden_global_field; } public function create_hidden_field($name, $var) { global $charset; $html = ""; if (is_array($var)) { foreach($var as $key => $value) { $html .= $this->create_hidden_field($name."[".$key."]", $value); } } else { $html .= ""; } return $html; } public function get_context_parameters() { return $this->context_parameters; } public function set_context_parameters($context_parameters=array()) { $this->context_parameters = $context_parameters; } public function add_context_parameter($key, $value) { $this->context_parameters[$key] = $value; } public function delete_context_parameter($key) { unset($this->context_parameters[$key]); } /** * Retourne le type de vedette selon le type */ public function get_vedette_class(){ $this->get_vedette_type(); switch ($this->vedette_type) { case TYPE_AUTHOR : return 'vedette_authors'; case TYPE_CATEGORY : return 'vedette_categories'; case TYPE_PUBLISHER : return 'vedette_publishers'; case TYPE_COLLECTION : return 'vedette_collections'; case TYPE_SUBCOLLECTION : return 'vedette_subcollections'; case TYPE_SERIE : return 'vedette_series'; case TYPE_TITRE_UNIFORME : return 'vedette_titres_uniformes'; case TYPE_INDEXINT : return 'vedette_indexint'; case TYPE_CONCEPT_PREFLABEL: return 'vedette_concepts'; case TYPE_AUTHPERSO : return 'vedette_authpersos'; } } public static function get_authority_id_from_entity($id, $type) { $query = "SELECT id_authority FROM authorities WHERE num_object = '".$id."' AND type_object = '".$type."'"; $result = pmb_mysql_query($query); if(pmb_mysql_num_rows($result)) { $row = pmb_mysql_fetch_assoc($result); return $row['id_authority']; } return 0; } public function get_detail_tooltip($target_node_id) { $html = ' '; return $html; } public function get_linked_concepts_id() { $index_concept = new index_concept($this->num_object, $this->get_vedette_type()); return $index_concept->get_concepts_id(); } public function get_linked_entities_id($type, $property = '', $arguments = array()) { $entities_linked = array(); switch ($type) { case TYPE_NOTICE : if ($property) { $linked_records_id = $this->look_for_attribute_in_class($this->get_object_instance(), $property, $arguments); if (is_array($linked_records_id)) { foreach ($linked_records_id as $id) { $entities_linked[]= array( 'id' => $id, 'link_type' => array(), ); } } } break; case TYPE_CONCEPT : $concepts_id = $this->get_linked_concepts_id(); foreach ($concepts_id as $id) { $entities_linked[]= array( 'id' => authority::get_authority_id_from_entity($id, AUT_TABLE_CONCEPT), 'link_type' => array(), ); } break; default : if ($property) { $entities_id = $this->look_for_attribute_in_class($this->get_object_instance(), $property, $arguments); if (is_array($entities_id)) {//plusieurs entites liees foreach ($entities_id as $entity) { if (is_array($entity)) { $entities_linked[]= array( 'id' => authority::get_authority_id_from_entity($entity['id'], static::$type_table[$type]), 'link_type' => $entity['link_type'], ); } else { $entities_linked[]= array( 'id' => authority::get_authority_id_from_entity($entity, static::$type_table[$type]), 'link_type' => array(), ); } } } elseif ($entities_id) { //une seule entite liee $entities_linked[]= array( 'id' => authority::get_authority_id_from_entity($entities_id, static::$type_table[$type]), 'link_type' => array(), ); } } break; } return $entities_linked; } public static function get_properties($type, $prefix){ if(!isset(self::$properties[$type])){ static::$properties[$type] = array(); $authority_props = array_keys(get_class_vars('authority')); $sub_class = static::get_class_name_from_type($type); $sub_class_props = array_keys(get_class_vars($sub_class)); $authority_methods = get_class_methods('authority'); $sub_class_methods = get_class_methods($sub_class); $authority_methods = static::get_getters($authority_methods); $sub_class_methods = static::get_getters($sub_class_methods); $properties = array_unique(array_merge($authority_props, $sub_class_props, $authority_methods, $sub_class_methods)); sort($properties); $final_properties = array(); foreach($properties as $property){ /** * TODO: ajouter un message cohérent en fonction de la propriété */ if($property != "properties"){ $final_properties[] = array( 'var' => $prefix.'.'.$property, 'desc' => 'aut_'.$property ); if($property == "p_perso"){ $custom_fields = static::get_opac_displayable_custom_fields($type); $custom_fields_props = array(); foreach($custom_fields as $field){ $custom_fields_props[] = array( 'var' => $prefix.'.'.$property.'.'.$field['NAME'], 'desc' => $field['TITRE'] ); } $final_properties[count($final_properties)-1]['children'] = $custom_fields_props; } } } self::$properties[$type] = $final_properties; } return self::$properties[$type]; } public static function get_getters($methods_list = array()){ $getters = array(); foreach($methods_list as $method){ if((strpos($method, 'get') === 0) || (strpos($method, 'is') === 0)){ $getters[] = preg_replace('/get_|get/', '', $method); } } return $getters; } public static function get_opac_displayable_custom_fields($type){ if (!isset(static::$custom_fields[$type])) { static::$custom_fields[$type] = array(); $prefix = static::aut_const_to_string($type); if($prefix == "titre_uniforme"){ $prefix = "tu"; }else if($prefix == "category"){ $prefix = "categ"; } $parametres_perso = new parametres_perso($prefix); $fields = $parametres_perso->get_t_fields(); foreach($fields as $field){ if($field['OPAC_SHOW']){ static::$custom_fields[$type][] = $field; } } } return static::$custom_fields[$type]; } public static function get_class_name_from_type($type){ switch($type){ case AUT_TABLE_AUTHORS : return 'auteur'; case AUT_TABLE_CATEG : return 'category'; case AUT_TABLE_PUBLISHERS : return 'editeur'; case AUT_TABLE_COLLECTIONS : return 'collection'; case AUT_TABLE_SUB_COLLECTIONS : return 'subcollection'; case AUT_TABLE_SERIES : return 'serie'; case AUT_TABLE_INDEXINT : return 'indexint'; case AUT_TABLE_TITRES_UNIFORMES : return 'titre_uniforme'; case AUT_TABLE_CONCEPT : return 'skos_concept'; case AUT_TABLE_INDEX_CONCEPT : return 'concept'; case AUT_TABLE_AUTHPERSO : return 'authperso_authority'; default : return ''; } } }