table;
}
/**
* Classe qui représente les données d'une notice
* @author apetithomme
*
*/
class record_datas {
/**
* Identifiant de la notice
* @var int
*/
private $id;
/**
*
* @var domain
*/
private $dom_1 = null;
/**
*
* @var domain
*/
private $dom_3 = null;
/**
* Droits d'accès emprunteur/notice
* @var int
*/
private $rights = 0;
/**
* Objet notice fetché en base
* @var stdClass
*/
private $notice;
/**
* Tableau des informations du parent dans le cas d'un article
* @var array
*/
private $parent;
/**
* Carte associée
* @var map_objects_controler
*/
private $map = null;
/**
* Carte associée de localisation des exemplaires
* @var map_objects_controler
*/
private $map_location;
/**
* Info de la carte associée
* @var map_info
*/
private $map_info = null;
/**
* Paramètres persos
* @var parametres_perso
*/
private $p_perso = null;
/**
* Libellé du statut de la notice
* @var string
*/
private $statut_notice = "";
/**
* Visibilité de la notice à tout le monde
* @var int
*/
private $visu_notice = 1;
/**
* Visibilité de la notice aux abonnés uniquement
* @var int
*/
private $visu_notice_abon = 0;
/**
* Visibilité des exemplaires de la notice à tout le monde
* @var int
*/
private $visu_expl = 1;
/**
* Visibilité des exemplaires de la notice aux abonnés uniquement
* @var int
*/
private $visu_expl_abon = 0;
/**
* Visibilité des exemplaires numériques de la notice à tout le monde
* @var int
*/
private $visu_explnum = 1;
/**
* Visibilité des exemplaires numériques de la notice aux abonnés uniquement
* @var int
*/
private $visu_explnum_abon = 0;
/**
* Visibilité du lien de demande de numérisation
* @var int
*/
private $visu_scan_request = 1;
/**
* Visibilité du lien de demande de numérisation aux abonnés uniquement
* @var int
*/
private $visu_scan_request_abon = 0;
/**
* Tableau des auteurs
* @var array
*/
private $responsabilites = array();
/**
* Auteurs principaux
* @var string
*/
private $auteurs_principaux;
/**
* Auteurs auteurs_secondaires
* @var string
*/
private $auteurs_secondaires;
/**
* Catégories
* @var categorie
*/
private $categories;
/**
* Titre uniforme
* @var tu_notice
*/
private $titre_uniforme = null;
/**
* Avis
* @var avis
*/
private $avis = null;
/**
* Langues
* @var array
*/
private $langues = array();
/**
* Nombre de bulletins associés
* @var int
*/
private $nb_bulletins;
/**
* Tableau des bulletins associés
* @var array
*/
private $bulletins = array();
/**
* Tableau de documents numériques associés aux bulletins
* @var array
*/
private $bulletins_docnums;
/**
* Nombre de documents numériques associés aux bulletins
* @var int
*/
private $nb_bulletins_docnums;
/**
* Indique si le pério est ouvert à la recherche
* @var int
*/
private $open_to_search;
/**
* Editeurs
* @var publisher
*/
private $publishers = array();
/**
* Etat de collections
* @var collstate
*/
private $collstate;
/**
* Tous les états de collections
* @var collstate
*/
private $collstate_list;
/**
* Autorisation des avis
* @var int
*/
private $avis_allowed;
/**
* Autorisation des tags
* @var int
*/
private $tag_allowed;
/**
* Autorisation des suggestions
* @var int
*/
private $sugg_allowed;
/**
* Autorisation des listes de lecture
* @var int
*/
private $liste_lecture_allowed;
/**
* Tableau des sources d'enrichissement actives pour cette notice
* @var array
*/
private $enrichment_sources;
/**
* Icone du type de document
* @var string
*/
private $icon_doc;
/**
* Libellé du niveau biblio
* @var string
*/
private $biblio_doc;
/**
* Libellé du type de document
* @var string
*/
private $tdoc;
/**
* Liste de concepts qui indexent la notice
* @var skos_concepts_list
*/
private $concepts_list = null;
/**
* Tableau des mots clés
* @var array
*/
private $mots_cles;
/**
* Indexation décimale
* @var indexint
*/
private $indexint = null;
/**
* Collection
* @var collection
*/
private $collection = null;
/**
* Sous-collection
* @var subcollection
*/
private $subcollection = null;
/**
* Permalink
* @var string
*/
private $permalink;
/**
* Tableau des ids des notices du même auteur
* @var array
*/
private $records_from_same_author;
/**
* Tableau des ids des notices du même éditeur
* @var array
*/
private $records_from_same_publisher;
/**
* Tableau des ids des notices de la même collection
* @var array
*/
private $records_from_same_collection;
/**
* Tableau des ids des notices dans la même série
* @var array
*/
private $records_from_same_serie;
/**
* Tableau des ids des notices avec la même indexation décimale
* @var array
*/
private $records_from_same_indexint;
/**
* Tableau des ids de notices avec des catégories communes
* @var array
*/
private $records_from_same_categories;
/**
* URL vers l'image de la notice
* @var string
*/
private $picture_url;
/**
* Message au survol de l'image de la notice
* @var string
*/
private $picture_title;
/**
* Disponibilité
* @var array
*/
private $availability;
/**
* Paramètres du PNB
* @var array
*/
private $pnb_datas;
/**
* Paramètres de réservation
* @var array
*/
private $resas_datas;
/**
* Données d'exemplaires
* @var array
*/
private $expls_datas;
/**
* Données de série
* @var array
*/
private $serie;
/**
* Tableau des relations parentes
* @var array
*/
private $relations_up;
/**
* Tableau des relations enfants
* @var array
*/
private $relations_down;
/**
* Tableau des relations horizontales
* @var array
*/
private $relations_both;
/**
* Tableau des dépouillements
* @var array
*/
private $articles;
/**
* Données de demandes
* @var array
*/
private $demands_datas;
/**
* Panier autorisé selon paramètres PMB et utilisateur connecté
* @var boolean
*/
private $cart_allow;
/**
* La notice est-elle déjà dans le panier ?
* @var boolean
*/
private $in_cart;
/**
* Informations de documents numériques associés
* @var array
*/
private $explnums_datas;
/**
* Tableau des autorités persos associées à la notice
* @var authority $authpersos
*/
private $authpersos;
/**
* Tableau des autorités persos classées associées à la notice
* @var authority $authpersos
*/
private $authpersos_ranked;
/**
* Tableau des informations externes de la notice
* @var array $external_rec_id
*/
private $external_rec_id;
/**
* Tableau des informations des onglets perso de la notice
* @var array $onglet_perso
*/
private $onglet_perso;
/**
* Informations du périodique
* @var record_datas
*/
private $serial;
/**
* Tableau parametres externes utilisable dans les templates ( issu d'un formulaire par exemple )
* @var array $external_parameters
*/
private $external_parameters;
/**
* Lien vers ressource externe
* @var string $lien
*/
private $lien;
/**
* Infos sur la source de la notice si elle est issue d'un connecteur (recid, connector, source_id et ref)
* @var array
*/
private $source;
/**
* Lien de contribution pour un exemplaire de la notice
* @var string
*/
private $expl_contribution_link;
/**
* Tableau d'oeuvres associees
* @var array
*/
private $works_data;
private static $record_datas_instance = [];
public function __construct($id) {
$this->id = intval($id);
if (!$this->id) return;
$this->fetch_data();
$this->fetch_visibilite();
}
public static function get_instance($id) {
if (!isset(static::$record_datas_instance[$id])) {
static::$record_datas_instance[$id] = new record_datas($id);
}
return static::$record_datas_instance[$id];
}
/**
* Charge les infos présentes en base de données
*/
private function fetch_data() {
if(is_null($this->dom_1)) {
$query = "SELECT notice_id, typdoc, tit1, tit2, tit3, tit4, tparent_id, tnvol, ed1_id, ed2_id, coll_id, subcoll_id, year, nocoll, mention_edition,code, npages, ill, size, accomp, lien, eformat, index_l, indexint, niveau_biblio, niveau_hierar, origine_catalogage, prix, n_gen, n_contenu, n_resume, statut, thumbnail_url, (opac_visible_bulletinage&0x1) as opac_visible_bulletinage, opac_serialcirc_demande, notice_is_new, notice_date_is_new ";
$query.= "FROM notices WHERE notice_id='".$this->id."' ";
} else {
$query = "SELECT notice_id, typdoc, tit1, tit2, tit3, tit4, tparent_id, tnvol, ed1_id, ed2_id, coll_id, subcoll_id, year, nocoll, mention_edition,code, npages, ill, size, accomp, lien, eformat, index_l, indexint, niveau_biblio, niveau_hierar, origine_catalogage, prix, n_gen, n_contenu, n_resume, thumbnail_url, (opac_visible_bulletinage&0x1) as opac_visible_bulletinage, opac_serialcirc_demande, notice_is_new, notice_date_is_new ";
$query.= "FROM notices ";
$query.= "WHERE notice_id='".$this->id."'";
}
$result = pmb_mysql_query($query);
if(pmb_mysql_num_rows($result)) {
$this->notice = pmb_mysql_fetch_object($result);
}
}
/**
* Retourne l'identifiant de la notice
* @return int
*/
public function get_id() {
return $this->id;
}
/**
* Retourne les infos de bulletinage
*
* @return array Informations de bulletinage si applicable, un tableau vide sinon
* $this->parent = array('title', 'id', 'bulletin_id', 'numero', 'date', 'date_date', 'aff_date_date')
*/
public function get_bul_info() {
if (!$this->parent) {
global $msg;
$this->parent = array();
$query = "";
if ($this->notice->niveau_hierar == 2) {
if ($this->notice->niveau_biblio == 'a') {
// récupération des données du bulletin et de la notice apparentée
$query = "SELECT b.tit1,b.notice_id,a.*,c.*, date_format(date_date, '".$msg["format_date"]."') as aff_date_date ";
$query .= "from analysis a, notices b, bulletins c";
$query .= " WHERE a.analysis_notice=".$this->id;
$query .= " AND c.bulletin_id=a.analysis_bulletin";
$query .= " AND c.bulletin_notice=b.notice_id";
$query .= " LIMIT 1";
} elseif ($this->notice->niveau_biblio == 'b') {
// récupération des données du bulletin et de la notice apparentée
$query = "SELECT tit1,notice_id,b.*, date_format(date_date, '".$msg["format_date"]."') as aff_date_date ";
$query .= "from bulletins b, notices";
$query .= " WHERE num_notice=$this->id ";
$query .= " AND bulletin_notice=notice_id ";
$query .= " LIMIT 1";
}
if ($query) {
$result = pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
$parent = pmb_mysql_fetch_object($result);
$this->parent['title'] = $parent->tit1;
$this->parent['id'] = $parent->notice_id;
$this->parent['bulletin_id'] = $parent->bulletin_id;
$this->parent['bulletin_title'] = $parent->bulletin_titre;
$this->parent['numero'] = $parent->bulletin_numero;
$this->parent['date'] = $parent->mention_date;
$this->parent['date_date'] = $parent->date_date;
$this->parent['aff_date_date'] = $parent->aff_date_date;
}
}
}
}
return $this->parent;
}
/**
* Retourne le type de document
*
* @return string
*/
public function get_typdoc() {
if (!$this->notice->typdoc) $this->notice->typdoc='a';
return $this->notice->typdoc;
}
/**
* Retourne les données de la série si il y en a une
*
* @return array
*/
public function get_serie() {
if (!isset($this->serie)) {
$this->serie = array();
if ($this->notice->tparent_id) {
$query = "SELECT serie_name FROM series WHERE serie_id='".$this->notice->tparent_id."' ";
$result = pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
$serie = pmb_mysql_fetch_object($result);
$authority = new authority(0, $this->notice->tparent_id, AUT_TABLE_SERIES);
$this->serie = array(
'id' => $this->notice->tparent_id,
'name' => $serie->serie_name,
'p_perso' => $authority->get_p_perso()
);
}
}
}
return $this->serie;
}
/**
* Charge les données de carthographie
*/
private function fetch_map() {
$ids = array();
$this->map=new stdClass();
$this->map_info=new stdClass();
if($this->get_parameter_value('map_activate')==1 || $this->get_parameter_value('map_activate')==2){
$ids[]=$this->id;
$this->map=new map_objects_controler(TYPE_RECORD,$ids);
$this->map_info=new map_info($this->id);
}
}
/**
* Retourne la carte associée
* @return map_objects_controler
*/
public function get_map() {
if (!$this->map) {
$this->fetch_map();
}
return $this->map;
}
/**
* Retourne les infos de la carte associée
* @return map_info
*/
public function get_map_info() {
if (!$this->map_info) {
$this->fetch_map();
}
return $this->map_info;
}
/**
* Charge les données de carthographie de localisation des exemplaires
*/
private function fetch_map_location() {
$this->map_location='';
if($this->get_parameter_value('map_activate')==1 || $this->get_parameter_value('map_activate')==3){
$this->get_expls_datas();
$this->get_explnums_datas();
$memo_expl = array();
// mémorisation des exemplaires et de leur localisation
if(count($this->expls_datas['expls'])) {
foreach ($this->expls_datas['expls'] as $expl){
$memo_expl['expl'][]=array(
'expl_id' => $expl['expl_id'],
'expl_location' => array( $expl['expl_location']),
'id_notice' => $expl['id_notice'],
'id_bulletin' => $expl['id_bulletin']
);
}
}
if(count($this->explnums_datas['explnums'])) {
foreach ($this->explnums_datas['explnums'] as $expl){
$memo_expl['explnum'][]=array(
'expl_id' => $expl['id'],
'expl_location' => $expl['expl_location'],
'id_notice' => $expl['id_notice'],
'id_bulletin' => $expl['id_bulletin']
);
}
}
$this->map_location=map_locations_controler::get_map_location($memo_expl,TYPE_LOCATION, 1);
}
}
/**
* Retourne la carte associée de localisation des exemplaires
* @return map_objects_controler
*/
public function get_map_location() {
if (!isset($this->map_location)) {
$this->fetch_map_location();
}
return $this->map_location;
}
/**
* Retourne les paramètres persos
* @return array
*/
public function get_p_perso() {
if (!$this->p_perso) {
global $memo_p_perso_notices;
$this->p_perso = array();
if (!$memo_p_perso_notices) {
$memo_p_perso_notices = new parametres_perso("notices");
}
$ppersos = $memo_p_perso_notices->show_fields($this->id);
if(isset($ppersos['FIELDS']) && is_array($ppersos['FIELDS']) && count($ppersos['FIELDS'])){
foreach ($ppersos['FIELDS'] as $pperso) {
if ($pperso['AFF']) {
$this->p_perso[$pperso['NAME']] = $pperso;
}
}
}
}
return $this->p_perso;
}
/**
* Gestion des droits d'accès emprunteur/notice
*/
private function fetch_visibilite() {
global $PMBuserid;
global $hide_explnum;
global $gestion_acces_active,$gestion_acces_user_notice, $gestion_acces_user_docnum;
if (($gestion_acces_active == 1) && (($gestion_acces_user_notice == 1) || ($gestion_acces_user_docnum == 1))) {
$ac = new acces();
}
if (($gestion_acces_active == 1) && ($gestion_acces_user_notice == 1)) {
$this->dom_1= $ac->setDomain(1);
if ($hide_explnum) {
$this->rights = $this->dom_1->getRights($PMBuserid,$this->id,4);
} else {
$this->rights = $this->dom_1->getRights($PMBuserid,$this->id);
}
} else {
if (isset($this->notice->statut)) {
$query = "SELECT opac_libelle, notice_visible_opac, expl_visible_opac, notice_visible_opac_abon, expl_visible_opac_abon, explnum_visible_opac, explnum_visible_opac_abon, notice_scan_request_opac, notice_scan_request_opac_abon FROM notice_statut WHERE id_notice_statut='".$this->notice->statut."' ";
$result = pmb_mysql_query($query);
if(pmb_mysql_num_rows($result)) {
$statut_temp = pmb_mysql_fetch_object($result);
$this->statut_notice = $statut_temp->opac_libelle;
$this->visu_notice = $statut_temp->notice_visible_opac;
$this->visu_notice_abon = $statut_temp->notice_visible_opac_abon;
$this->visu_expl = $statut_temp->expl_visible_opac;
$this->visu_expl_abon = $statut_temp->expl_visible_opac_abon;
$this->visu_explnum = $statut_temp->explnum_visible_opac;
$this->visu_explnum_abon = $statut_temp->explnum_visible_opac_abon;
$this->visu_scan_request = $statut_temp->notice_scan_request_opac;
$this->visu_scan_request_abon = $statut_temp->notice_scan_request_opac_abon;
if ($hide_explnum) {
$this->visu_explnum=0;
$this->visu_explnum_abon=0;
}
}
}
}
if (($gestion_acces_active == 1) && ($gestion_acces_user_docnum == 1)) {
$this->dom_3 = $ac->setDomain(3);
}
}
public function get_dom_1() {
return $this->dom_1;
}
public function get_dom_3() {
return $this->dom_3;
}
public function get_rights() {
return $this->rights;
}
/**
* Retourne un tableau des auteurs
* @return array Tableaux des responsabilités = array(
'responsabilites' => array(),
'auteurs' => array()
);
*/
public function get_responsabilites() {
global $fonction_auteur;
if (!count($this->responsabilites)) {
$this->responsabilites = array(
'responsabilites' => array(),
'auteurs' => array()
);
$query = "SELECT author_id, responsability_fonction, responsability_type, author_type,author_name, author_rejete, author_type, author_date, author_see, author_web, author_isni ";
$query.= "FROM responsability, authors ";
$query.= "WHERE responsability_notice='".$this->id."' AND responsability_author=author_id ";
$query.= "ORDER BY responsability_type, responsability_ordre " ;
$result = pmb_mysql_query($query);
while ($notice = pmb_mysql_fetch_object($result)) {
$this->responsabilites['responsabilites'][] = $notice->responsability_type ;
$info_bulle="";
if($notice->author_type==72 || $notice->author_type==71) {
$congres = authorities_collection::get_authority(AUT_TABLE_AUTHORS, $notice->author_id);
$auteur_isbd=$congres->get_isbd();
$auteur_titre=$congres->display;
$info_bulle=" title='".$congres->info_bulle."' ";
} else {
if ($notice->author_rejete) $auteur_isbd = $notice->author_rejete." ".$notice->author_name ;
else $auteur_isbd = $notice->author_name ;
// on s'arrête là pour auteur_titre = "Prénom NOM" uniquement
$auteur_titre = $auteur_isbd ;
// on complète auteur_isbd pour l'affichage complet
if ($notice->author_date) $auteur_isbd .= " (".$notice->author_date.")" ;
}
$authority = new authority(0, $notice->author_id, AUT_TABLE_AUTHORS);
$this->responsabilites['auteurs'][] = array(
'id' => $notice->author_id,
'fonction' => $notice->responsability_fonction,
'responsability' => $notice->responsability_type,
'name' => $notice->author_name,
'rejete' => $notice->author_rejete,
'date' => $notice->author_date,
'type' => $notice->author_type,
'fonction_aff' => ($notice->responsability_fonction ? $fonction_auteur[$notice->responsability_fonction] : ''),
'auteur_isbd' => $auteur_isbd,
'auteur_titre' => $auteur_titre,
'info_bulle' => $info_bulle,
'web' => $notice->author_web,
'isni' => $notice->author_isni,
'p_perso' => $authority->get_p_perso()
);
}
}
return $this->responsabilites;
}
/**
* Retourne les auteurs principaux
* @return string auteur1 ; auteur2 ...
*/
public function get_auteurs_principaux() {
global $use_opac_url_base;
if (!$this->auteurs_principaux) {
$this->get_responsabilites();
// on ne prend que le auteur_titre = "Prénom NOM"
$as = array_search("0", $this->responsabilites["responsabilites"]);
if (($as !== FALSE) && ($as !== NULL)) {
$auteur_0 = $this->responsabilites["auteurs"][$as];
if($use_opac_url_base) {
$this->auteurs_principaux = "".$auteur_0["auteur_titre"]."";
} else {
$this->auteurs_principaux = "".$auteur_0["auteur_titre"]."";
}
} else {
$as = array_keys($this->responsabilites["responsabilites"], "1" );
$aut1_libelle = array();
for ($i = 0; $i < count($as); $i++) {
$indice = $as[$i];
$auteur_1 = $this->responsabilites["auteurs"][$indice];
if($auteur_1["type"]==72 || $auteur_1["type"]==71) {
$congres = authorities_collection::get_authority(AUT_TABLE_AUTHORS, $auteur_1["id"]);
if($use_opac_url_base) {
$aut1_libelle[]="".$congres->display."";
} else {
$aut1_libelle[]="".$congres->display."";
}
} else {
if($use_opac_url_base) {
$aut1_libelle[]= "".$auteur_1["auteur_titre"]."";
} else {
$aut1_libelle[]= "".$auteur_1["auteur_titre"]."";
}
}
}
$auteurs_liste = implode(" ; ",$aut1_libelle);
if ($auteurs_liste) $this->auteurs_principaux = $auteurs_liste;
}
}
return $this->auteurs_principaux;
}
/**
* Retourne les auteurs secondaires
* @return string auteur1 ; auteur2 ...
*/
public function get_auteurs_secondaires() {
global $use_opac_url_base;
if (!$this->auteurs_secondaires) {
$this->get_responsabilites();
$as = array_keys($this->responsabilites["responsabilites"], "2" );
$aut2_libelle = array();
for ($i = 0; $i < count($as); $i++) {
$indice = $as[$i];
$auteur_2 = $this->responsabilites["auteurs"][$indice];
if($auteur_2["type"]==72 || $auteur_2["type"]==71) {
$congres = authorities_collection::get_authority(AUT_TABLE_AUTHORS, $auteur_2["id"]);
if($use_opac_url_base) {
$aut2_libelle[]="".$congres->display."";
} else {
$aut2_libelle[]="".$congres->display."";
}
} else {
if($use_opac_url_base) {
$aut2_libelle[]="".$auteur_2["auteur_titre"]."";
} else {
$aut2_libelle[]="".$auteur_2["auteur_titre"]."";
}
}
}
$auteurs_liste = implode(" ; ",$aut2_libelle);
if ($auteurs_liste) $this->auteurs_secondaires = $auteurs_liste;
}
return $this->auteurs_secondaires;
}
/**
* Retourne le libellé du statut de la notice
*
* @return string
*/
public function get_statut_notice() {
return $this->statut_notice;
}
/**
* Retourne la visibilité de la notice à tout le monde
*
* @return int
*/
public function is_visu_notice() {
return $this->visu_notice;
}
/**
* Retourne la visibilité de la notice aux abonnés uniquement
*
* @return int
*/
public function is_visu_notice_abon() {
return $this->visu_notice_abon;
}
/**
* Retourne la visibilité des exemplaires de la notice à tout le monde
*
* @return int
*/
public function is_visu_expl() {
return $this->visu_expl;
}
/**
* Retourne la visibilité des exemplaires de la notice aux abonnés uniquement
*
* @return int
*/
public function is_visu_expl_abon() {
return $this->visu_expl_abon;
}
/**
* Retourne la visibilité des exemplaires numériques de la notice à tout le monde
*
* @return int
*/
public function is_visu_explnum() {
return $this->visu_explnum;
}
/**
* Retourne la visibilité des exemplaires numériques de la notice aux abonnés uniquement
*
* @return int
*/
public function is_visu_explnum_abon() {
return $this->visu_explnum_abon;
}
/**
* Retourne la visibilité du lien de demande de numérisation
*/
public function is_visu_scan_request() {
return $this->visu_scan_request;
}
/**
* Retourne la visibilité du lien de demande de numérisation aux abonnés uniquement
*/
public function is_visu_scan_request_abon() {
return $this->visu_scan_request_abon;
}
/**
* Retourne les catégories de la notice
* @return categorie Tableau des catégories
*/
public function get_categories() {
if (!isset($this->categories)) {
global $thesaurus_categories_affichage_ordre, $thesaurus_categories_show_only_last;
$this->categories = array();
// Tableau qui va nous servir à trier alphabétiquement les catégories
if (!$thesaurus_categories_affichage_ordre) $sort_array = array();
$query = "select distinct num_noeud from notices_categories where notcateg_notice = ".$this->id." order by ordre_vedette, ordre_categorie";
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($row = pmb_mysql_fetch_object($result)) {
/* @var $object categorie */
$object = authorities_collection::get_authority(AUT_TABLE_CATEG, $row->num_noeud);
$format_label = $object->libelle;
// On ajoute les parents si nécessaire
if (!$thesaurus_categories_show_only_last) {
$parent_id = $object->parent_id;
while ($parent_id && ($parent_id != 1) && (!in_array($parent_id, array($object->thes->num_noeud_racine, $object->thes->num_noeud_nonclasses, $object->thes->num_noeud_orphelins)))) {
$parent = authorities_collection::get_authority(AUT_TABLE_CATEG, $parent_id);
$format_label = $parent->libelle.':'.$format_label;
$parent_id = $parent->parent_id;
}
}
$authority = new authority(0, $row->num_noeud, AUT_TABLE_CATEG);
$categorie = array(
'object' => $object,
'format_label' => $format_label,
'p_perso' => $authority->get_p_perso()
);
if (!$thesaurus_categories_affichage_ordre) {
$sort_array[$object->thes->id_thesaurus][] = strtoupper(convert_diacrit($format_label));
}
$this->categories[$object->thes->id_thesaurus][] = $categorie;
}
// On tri par ordre alphabétique
if (!$thesaurus_categories_affichage_ordre) {
foreach ($this->categories as $thes_id => &$categories) {
array_multisort($sort_array[$thes_id], $categories);
}
}
// On tri par index de thésaurus
ksort($this->categories);
}
}
return $this->categories;
}
/**
* Retourne le titre uniforme
* @return tu_notice
*/
public function get_titre_uniforme() {
if (!$this->titre_uniforme) {
$this->titre_uniforme = new tu_notice($this->id);
}
return $this->titre_uniforme;
}
/**
* Retourne un tableau d'instances de titres uniformes
* @return array
*/
public function get_works_data() {
if (empty($this->works_data)) {
$this->works_data = array();
$tu_notice = $this->get_titre_uniforme();
foreach ($tu_notice->ntu_data as $work) {
$this->works_data[] = new titre_uniforme($work->num_tu);
}
}
return $this->works_data;
}
/**
* Retourne le tableau des langues de la notices
* @return array $this->langues = array('langues' => array(), 'languesorg' => array())
*/
public function get_langues() {
if (!count($this->langues)) {
global $marc_liste_langues;
if (!$marc_liste_langues) $marc_liste_langues=new marc_list('lang');
$this->langues = array(
'langues' => array(),
'languesorg' => array()
);
$query = "select code_langue, type_langue from notices_langues where num_notice=".$this->id." order by ordre_langue ";
$result = pmb_mysql_query($query);
while (($notice=pmb_mysql_fetch_object($result))) {
if ($notice->code_langue) {
$langue = array(
'lang_code' => $notice->code_langue,
'langue' => $marc_liste_langues->table[$notice->code_langue]
);
if (!$notice->type_langue) {
$this->langues['langues'][] = $langue;
} else {
$this->langues['languesorg'][] = $langue;
}
}
}
}
return $this->langues;
}
/**
* Retourne un tableau avec le nombre d'avis et la moyenne
* @return array Tableau $this->avis = array('moyenne', 'qte', 'avis' => array('note', 'commentaire', 'sujet'), 'nb_by_note' => array('{note}' => {nb_avis})
*/
public function get_avis() {
if (!is_object($this->avis)) {
$this->avis = new avis($this->id);
}
return $this->avis;
}
/**
* Retourne le nombre de bulletins associés
* @return int
*/
public function get_nb_bulletins(){
global $PMBuserid;
if (!isset($this->nb_bulletins)) {
$this->nb_bulletins = 0;
//Droits d'accès
if (is_null($this->dom_1)) {
$acces_j='';
$statut_j=',notice_statut';
$statut_r="and statut=id_notice_statut and notice_visible_gestion=1";
} else {
$acces_j = $this->dom_1->getJoin($PMBuserid,4,'notice_id');
$statut_j = "";
$statut_r = "";
}
//Bulletins sans notice
$req="SELECT bulletin_id FROM bulletins WHERE bulletin_notice='".$this->id."' and num_notice=0";
$res = pmb_mysql_query($req);
if($res){
$this->nb_bulletins+=pmb_mysql_num_rows($res);
}
//Bulletins avec notice
$req="SELECT bulletin_id FROM bulletins
JOIN notices ON notice_id=num_notice AND num_notice!=0
".$acces_j." ".$statut_j."
WHERE bulletin_notice='".$this->id."'
".$statut_r."";
$res = pmb_mysql_query($req);
if($res){
$this->nb_bulletins+=pmb_mysql_num_rows($res);
}
}
return $this->nb_bulletins;
}
/**
* Retourne le tableau des bulletins associés à la notice
* @return array $this->bulletins[] = array('id', 'numero', 'mention_date', 'date_date', 'bulletin_titre', 'num_notice')
*/
public function get_bulletins(){
global $PMBuserid;
if (!count($this->bulletins) && $this->get_nb_bulletins()) {
//Droits d'accès
if (is_null($this->dom_1)) {
$acces_j='';
$statut_j=',notice_statut';
$statut_r="and statut=id_notice_statut and notice_visible_gestion=1";
} else {
$acces_j = $this->dom_1->getJoin($PMBuserid,4,'notice_id');
$statut_j = "";
$statut_r = "";
}
//Bulletins sans notice
$req="SELECT * FROM bulletins WHERE bulletin_notice='".$this->id."' and num_notice=0";
$res = pmb_mysql_query($req);
if($res && pmb_mysql_num_rows($res)){
while($r=pmb_mysql_fetch_object($res)){
$this->bulletins[] = array(
'id' => $r->bulletin_id,
'numero' => $r->bulletin_numero,
'mention_date' => $r->mention_date,
'date_date' => $r->date_date,
'bulletin_titre' => $r->bulletin_titre,
'num_notice' => $r->num_notice
);
}
}
//Bulletins avec notice
$req="SELECT bulletins.* FROM bulletins
JOIN notices ON notice_id=num_notice AND num_notice!=0
".$acces_j." ".$statut_j."
WHERE bulletin_notice='".$this->id."'
".$statut_r."";
$res = pmb_mysql_query($req);
if($res && pmb_mysql_num_rows($res)){
while($r=pmb_mysql_fetch_object($res)){
$this->bulletins[] = array(
'id' => $r->bulletin_id,
'numero' => $r->bulletin_numero,
'mention_date' => $r->mention_date,
'date_date' => $r->date_date,
'bulletin_titre' => $r->bulletin_titre,
'num_notice' => $r->num_notice
);
}
}
}
return $this->bulletins;
}
/**
* Retourne le nombre de documents numériques associés aux bulletins
* @return int
*/
public function get_nb_bulletins_docnums() {
if (!isset($this->nb_bulletins_docnums)) {
$this->get_bulletins_docnums();
$this->nb_bulletins_docnums = count($this->bulletins_docnums);
}
return $this->nb_bulletins_docnums;
}
/**
* Retourne le nombre de documents numériques associés aux bulletins
* @return int
*/
public function get_bulletins_docnums() {
if (!isset($this->bulletins_docnums)) {
$this->bulletins_docnums = array();
$join_acces_explnum = "";
if (!$this->get_parameter_value('show_links_invisible_docnums')) {
if (!is_null($this->dom_3)) {
$join_acces_explnum = $this->dom_3->getJoin($_SESSION['id_empr_session'],16,'explnum_id');
} else {
$join_acces_explnum = "join explnum_statut on explnum_docnum_statut=id_explnum_statut and ((explnum_statut.explnum_visible_opac=1 and explnum_statut.explnum_visible_opac_abon=0)".($_SESSION["user_code"]?" or (explnum_statut.explnum_visible_opac_abon=1 and explnum_statut.explnum_visible_opac=1)":"").")";
}
}
$sql_explnum = "SELECT explnum_id, explnum_nom, explnum_nomfichier, explnum_url, explnum_mimetype
FROM explnum $join_acces_explnum JOIN bulletins ON explnum_bulletin=bulletin_id
WHERE bulletin_notice = ".$this->id." order by explnum_id";
$explnums = pmb_mysql_query($sql_explnum);
$explnumscount = pmb_mysql_num_rows($explnums);
if ($this->get_parameter_value('show_links_invisible_docnums') || (is_null($this->dom_2) && $this->visu_explnum && (!$this->visu_explnum_abon || ($this->visu_explnum_abon && $_SESSION["user_code"]))) || ($this->rights & 16) ) {
if ($explnumscount) {
while($explnumrow = pmb_mysql_fetch_object($explnums)) {
$visible = true;
//vérification de la visibilité si non connecté
if(!$_SESSION['id_empr_session'] && $this->get_parameter_value('show_links_invisible_docnums')){
$visible = false;
if (!is_null($this->dom_3)) {
$right = $this->dom_3->getRights(0,$explnumrow->explnum_id,16);
if($right == 16){
$visible = true;
}
}else{
$sql = "select explnum_id from explnum join explnum_statut on id_explnum_statut = explnum_docnum_statut where explnum_visible_opac= 1 and explnum_visible_opac_abon = 0 and explnum_id = ".$explnumrow->explnum_id;
if(pmb_mysql_num_rows(pmb_mysql_query($sql))){
$visible = true;
}
}
}
if ($visible) {
$this->bulletins_docnums[] = $explnumrow;
}
}
}
}
}
return $this->bulletins_docnums;
}
/**
* Retourne $this->notice->niveau_biblio
*/
public function get_niveau_biblio() {
return $this->notice->niveau_biblio;
}
/**
* Retourne $this->notice->niveau_hierar
*/
public function get_niveau_hierar() {
return $this->notice->niveau_hierar;
}
/**
* Retourne $this->notice->tit1
*/
public function get_tit1() {
return $this->notice->tit1;
}
/**
* Retourne $this->notice->tit2
*/
public function get_tit2() {
return $this->notice->tit2;
}
/**
* Retourne $this->notice->tit3
*/
public function get_tit3() {
return $this->notice->tit3;
}
/**
* Retourne $this->notice->tit4
*/
public function get_tit4() {
return $this->notice->tit4;
}
/**
* Retourne $this->notice->code
*/
public function get_code() {
return $this->notice->code;
}
/**
* Retourne $this->notice->npages
*/
public function get_npages() {
return $this->notice->npages;
}
/**
* Retourne $this->notice->year
*/
public function get_year() {
return $this->notice->year;
}
/**
* Retourne un tableau des éditeurs
* @return publisher Tableau des instances d'éditeurs
*/
public function get_publishers() {
if((!isset($this->publishers) || !count($this->publishers)) && $this->notice->ed1_id){
$publisher = authorities_collection::get_authority(AUT_TABLE_PUBLISHERS, $this->notice->ed1_id);
$this->publishers[]=$publisher;
if ($this->notice->ed2_id) {
$publisher = authorities_collection::get_authority(AUT_TABLE_PUBLISHERS, $this->notice->ed2_id);
$this->publishers[]=$publisher;
}
}
return $this->publishers;
}
/**
* Retourne $this->notice->thumbnail_url
*/
public function get_thumbnail_url() {
return $this->notice->thumbnail_url;
}
/**
* Retourne l'état de collection
* @return collstate
*/
public function get_collstate() {
if (!$this->collstate) {
if ($this->notice->niveau_biblio == 's') {
$this->collstate = new collstate(0, $this->id);
} else if ($this->notice->niveau_biblio == 'b') {
$this->get_bul_info();
$this->collstate = new collstate(0, 0, $this->parent['bulletin_id']);
}
}
return $this->collstate;
}
/**
* Retourne tous les états de collection
* @return collstate
*/
public function get_collstate_list() {
if (!$this->collstate_list) {
$this->collstate_list = $this->get_collstate()->get_collstate_datas();
}
return $this->collstate_list;
}
/**
* Retourne l'autorisation des avis
* @return boolean
*/
public function get_avis_allowed() {
return true;
}
/**
* Retourne l'autorisation des tags
* @return boolean
*/
public function get_tag_allowed() {
return true;
}
/**
* Retourne l'autorisation des suggestions
* @return boolean
*/
public function get_sugg_allowed() {
return true;
}
/**
* Retourne l'autorisation des listes de lecture
* @return boolean
*/
public function get_liste_lecture_allowed() {
return true;
}
public function get_enrichment_sources() {
if (!isset($this->enrichment_sources)) {
$this->enrichment_sources = array();
if($this->get_parameter_value('notice_enrichment')){
$enrichment = new enrichment();
if(!isset($enrichment->active[$this->notice->niveau_biblio.$this->notice->typdoc])) {
$enrichment->active[$this->notice->niveau_biblio.$this->notice->typdoc] = '';
}
if(!isset($enrichment->active[$this->notice->niveau_biblio])) {
$enrichment->active[$this->notice->niveau_biblio] = '';
}
if($enrichment->active[$this->notice->niveau_biblio.$this->notice->typdoc]){
$this->enrichment_sources = $enrichment->active[$this->notice->niveau_biblio.$this->notice->typdoc];
}else if ($enrichment->active[$this->notice->niveau_biblio]){
$this->enrichment_sources = $enrichment->active[$this->notice->niveau_biblio];
}
}
}
return $this->enrichment_sources;
}
/**
* Retourne l'icone du type de document
* @return string
*/
public function get_icon_doc() {
if (!isset($this->icon_doc)) {
$icon_doc = marc_list_collection::get_instance('icondoc');
$this->icon_doc = $icon_doc->table[$this->notice->niveau_biblio.$this->notice->typdoc];
}
return $this->icon_doc;
}
/**
* Retourne le libellé du niveau biblio
* @return string
*/
public function get_biblio_doc() {
if (!$this->biblio_doc) {
$biblio_doc = marc_list_collection::get_instance('nivbiblio');
$this->biblio_doc = $biblio_doc->table[$this->notice->niveau_biblio];
}
return $this->biblio_doc;
}
/**
* Retourne le libellé du type de document
* @return string
*/
public function get_tdoc() {
if (!$this->tdoc) {
global $tdoc;
$this->tdoc = $tdoc->table[$this->get_typdoc()];
}
return $this->tdoc;
}
/**
* Retourne la liste des concepts qui indexent la notice
* @return skos_concepts_list
*/
public function get_concepts_list() {
if (!$this->concepts_list) {
$this->concepts_list = new skos_concepts_list();
$this->concepts_list->set_concepts_from_object(TYPE_NOTICE, $this->id);
}
return $this->concepts_list;
}
/**
* Retourne le tableau des mots clés
* @return array
*/
public function get_mots_cles() {
if (!isset($this->mots_cles)) {
global $pmb_keyword_sep;
if (!$pmb_keyword_sep) $pmb_keyword_sep=" ";
if (!trim($this->notice->index_l)) return "";
$this->mots_cles = explode($pmb_keyword_sep,trim($this->notice->index_l)) ;
}
return $this->mots_cles;
}
/**
* Retourne l'indexation décimale
* @return indexint
*/
public function get_indexint() {
if(!$this->indexint && $this->notice->indexint) {
$this->indexint = authorities_collection::get_authority(AUT_TABLE_INDEXINT, $this->notice->indexint);
}
return $this->indexint;
}
/**
* Retourne le résumé
* @return string
*/
public function get_resume() {
return $this->notice->n_resume;
}
/**
* Retourne le contenu
* @return string
*/
public function get_contenu() {
return $this->notice->n_contenu;
}
/**
* Retourne $this->notice->lien
* @return string
*/
public function get_lien() {
if (isset($this->lien)) {
return $this->lien;
}
$this->lien = $this->notice->lien;
$this->get_source();
switch (true) {
//Cairn
case ( ((!empty($this->source)) && ($this->source['connector'] == 'cairn')) || (strpos($this->lien, "cairn.info") !== false) ) :
$cairn_connector = new cairn();
$cairn_sso_params = $cairn_connector->get_sso_params();
if ($cairn_sso_params && (strpos($this->lien, "?") === false)) {
$this->lien.= "?";
$cairn_sso_params = substr($cairn_sso_params, 1);
}
$this->lien.= $cairn_sso_params;
break;
//Odilotk
case ( (!empty($this->source)) && ($this->source['connector'] == 'odilotk') ) :
$odilotk_connector = new odilotk();
$this->lien = $odilotk_connector->get_odilotk_link($this->source['source_id'], $this->id);
break;
default :
break;
}
return $this->lien;
}
public function is_cairn_source() {
// On gère un flag pour les cas particuliers des notices cairn qui ne seraient pas issue du connecteur
$from_cairn_connector = false;
$this->get_source();
if (count($this->source)) {
switch ($this->source['connector']) {
case 'cairn' :
$from_cairn_connector = true;
break;
}
}
if ($from_cairn_connector || (strpos($this->get_lien(), "cairn.info") !== false)) {
return true;
}
return false;
}
/**
*
* @return string
*/
public function get_source_label() {
$this->get_source();
if(empty($this->source['label'])) {
return '';
}
return $this->source['label'];
}
/**
*
* @return array
*/
public function get_source() {
if (isset($this->source)) {
return $this->source;
}
$this->source = [];
$q = "SELECT notices_externes.recid, connectors_sources.name ";
$q.= "FROM notices_externes ";
$q.= "JOIN external_count ON external_count.recid = notices_externes.recid ";
$q.= "JOIN connectors_sources ON connectors_sources.source_id = external_count.source_id ";
$q.= "WHERE notices_externes.num_notice = " . $this->id ." limit 1";
$r = pmb_mysql_query($q);
if (pmb_mysql_num_rows($r)) {
$recid = pmb_mysql_result($r, 0, 0);
$label = pmb_mysql_result($r, 0, 1);
$data = explode(" ", $recid);
$this->source = [
'recid' => $recid,
'connector' => $data[0],
'source_id' => $data[1],
'ref' => $data[2],
'label' => $label,
];
}
return $this->source;
}
/**
* Retourne $this->notice->eformat
* @return string
*/
public function get_eformat() {
return $this->notice->eformat;
}
/**
* Retourne $this->notice->tnvol
* @return string
*/
public function get_tnvol() {
return $this->notice->tnvol;
}
/**
* Retourne $this->notice->mention_edition
* @return string
*/
public function get_mention_edition() {
return $this->notice->mention_edition;
}
/**
* Retourne $this->notice->nocoll
* @return string
*/
public function get_nocoll() {
return $this->notice->nocoll;
}
/**
* Retourne la collection
* @return collection
*/
public function get_collection() {
if (!$this->collection && $this->notice->coll_id) {
$this->collection = authorities_collection::get_authority(AUT_TABLE_COLLECTIONS, $this->notice->coll_id);
}
return $this->collection;
}
/**
* Retourne la sous-collection
* @return subcollection
*/
public function get_subcollection() {
if (!$this->subcollection && $this->notice->subcoll_id) {
$this->subcollection = authorities_collection::get_authority(AUT_TABLE_SUB_COLLECTIONS, $this->notice->subcoll_id);
}
return $this->subcollection;
}
/**
* Retourne $this->notice->ill
* @return string
*/
public function get_ill() {
return $this->notice->ill;
}
/**
* Retourne $this->notice->size
* @return string
*/
public function get_size() {
return $this->notice->size;
}
/**
* Retourne $this->notice->accomp
* @return string
*/
public function get_accomp() {
return $this->notice->accomp;
}
/**
* Retourne $this->notice->prix
* @return string
*/
public function get_prix() {
return $this->notice->prix;
}
/**
* Retourne $this->notice->n_gen
* @return string
*/
public function get_n_gen() {
return $this->notice->n_gen;
}
/**
* Retourne le permalink
* @return string
*/
public function get_permalink() {
if (!$this->permalink) {
if($this->notice->niveau_biblio != "b"){
$this->permalink = $this->get_parameter_value('url_base')."catalog.php?categ=isbd&id=".$this->id;
}else{
$bull = $this->get_bul_info();
$this->permalink = $this->get_parameter_value('url_base')."catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=".$bull['bulletin_id'];
}
}
return $this->permalink;
}
/**
* Retourne les données d'exemplaires
* @return array
*/
public function get_expls_datas() {
if (!isset($this->expls_datas)) {
$this->expls_datas = array();
if(((!isset($this->dom_2) || is_null($this->dom_2)) && $this->get_parameter_value('show_exemplaires') && $this->is_visu_expl() && (!$this->is_visu_expl_abon() || ($this->is_visu_expl_abon() && $_SESSION["user_code"]))) || ($this->get_rights() & 8)) {
$bull = $this->get_bul_info();
if(isset($bull['bulletin_id'])) {
$bull_id = $bull['bulletin_id']*1;
} else {
$bull_id = 0;
}
$exemplaires = new exemplaires($this->get_id(), $bull_id, $this->get_niveau_biblio());
$this->expls_datas = $exemplaires->get_data();
}
}
return $this->expls_datas;
}
/**
* Retourne la disponibilité
* @return array $this->availibility = array('availibility', 'next-return')
*/
public function get_availability() {
if (!$this->availability) {
$expls_datas = $this->get_expls_datas();
$next_return = "";
$availability = "unavailable";
if (isset($expls_datas['expls']) && count($expls_datas['expls'])) {
foreach ($expls_datas['expls'] as $expl) {
if ($expl['pret_flag']) { // Pretable
if ($expl['flag_resa']) { // Réservé
if(!$next_return) {
$availability = "reserved";
}
} else if ($expl['pret_retour']) { // Sorti
if (!$next_return || ($next_return > $expl['pret_retour'])) {
$next_return = $expl['pret_retour'];
$availability = "out";
}
} else {
$availability = "available";
break;
}
} else {
$availability = "no_lendable";
}
}
} else {
// Pas d'exemplaires
if($this->get_parameter_value('show_empty_items_block')) {
$availability = "empty";
} else {
$availability = "none";
}
}
$this->availability = array(
'availability' => $availability,
'next_return' => formatdate($next_return)
);
}
return $this->availability;
}
/**
* Retourne la disponibilité d'un exemplaire numérique
*/
public function get_numeric_expl_availability() {
return array(
'availability' => 'available',
//'next_return' => formatdate()
);
}
/**
* Retourne le tableau des ids des notices du même auteur
* @return array
*/
public function get_records_from_same_author() {
if (!isset($this->records_from_same_author)) {
$this->records_from_same_author = array();
$this->get_responsabilites();
$as = array_search("0", $this->responsabilites["responsabilites"]);
if (($as !== FALSE) && ($as !== NULL)) {
$authors_ids = $this->responsabilites["auteurs"][$as]['id'];
} else {
$as = array_keys($this->responsabilites["responsabilites"], "1");
$authors_ids = "";
for ($i = 0; $i < count($as); $i++) {
$indice = $as[$i];
if ($authors_ids) $authors_ids .= ",";
$authors_ids .= $this->responsabilites["auteurs"][$indice]['id'];
}
}
if ($authors_ids) {
$query = "select distinct responsability_notice from responsability where responsability_author in (".$authors_ids.") and responsability_notice != ".$this->id." order by responsability_type, responsability_ordre";
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($record = pmb_mysql_fetch_object($result)) {
$this->records_from_same_author[] = $record->responsability_notice;
}
}
}
}
$filter = new filter_results($this->records_from_same_author);
$this->records_from_same_author = explode(",",$filter->get_results());
return $this->records_from_same_author;
}
/**
* Retourne le tableau des ids des notices du même éditeur
* @return array
*/
public function get_records_from_same_publisher() {
if (!isset($this->records_from_same_publisher)) {
$this->records_from_same_publisher = array();
if ($this->notice->ed1_id) {
$query = "select distinct notice_id from notices where ed1_id = ".$this->notice->ed1_id." and notice_id != ".$this->id;
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($record = pmb_mysql_fetch_object($result)) {
$this->records_from_same_publisher[] = $record->notice_id;
}
}
}
}
$filter = new filter_results($this->records_from_same_publisher);
$this->records_from_same_publisher = explode(",",$filter->get_results());
return $this->records_from_same_publisher;
}
/**
* Retourne le tableau des ids des notices de la même collection
* @return array
*/
public function get_records_from_same_collection() {
if (!isset($this->records_from_same_collection)) {
$this->records_from_same_collection = array();
if ($this->notice->coll_id) {
$query = "select distinct notice_id from notices where coll_id = ".$this->notice->coll_id." and notice_id != ".$this->id;
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($record = pmb_mysql_fetch_object($result)) {
$this->records_from_same_collection[] = $record->notice_id;
}
}
}
}
$filter = new filter_results($this->records_from_same_collection);
$this->records_from_same_collection = explode(",",$filter->get_results());
return $this->records_from_same_collection;
}
/**
* Retourne le tableau des ids des notices de la même série
* @return array
*/
public function get_records_from_same_serie() {
if (!isset($this->records_from_same_serie)) {
$this->records_from_same_serie = array();
if ($this->notice->tparent_id) {
$query = "select distinct notice_id from notices where tparent_id = ".$this->notice->tparent_id." and notice_id != ".$this->id;
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($record = pmb_mysql_fetch_object($result)) {
$this->records_from_same_serie[] = $record->notice_id;
}
}
}
}
$filter = new filter_results($this->records_from_same_serie);
$this->records_from_same_serie = explode(",",$filter->get_results());
return $this->records_from_same_serie;
}
/**
* Retourne le tableau des ids des notices avec la même indexation décimale
* @return array
*/
public function get_records_from_same_indexint() {
if (!isset($this->records_from_same_indexint)) {
$this->records_from_same_indexint = array();
if ($this->notice->indexint) {
$query = "select distinct notice_id from notices where indexint = ".$this->notice->indexint." and notice_id != ".$this->id;
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($record = pmb_mysql_fetch_object($result)) {
$this->records_from_same_indexint[] = $record->notice_id;
}
}
}
}
$filter = new filter_results($this->records_from_same_indexint);
$this->records_from_same_indexint = explode(",",$filter->get_results());
return $this->records_from_same_indexint;
}
/**
* Retourne le tableau des ids de notices avec des catégories communes
* @return array
*/
public function get_records_from_same_categories() {
if (!$this->records_from_same_categories) {
$this->records_from_same_categories = array();
$query = "select notcateg_notice, count(num_noeud) as pert from notices_categories where num_noeud in (select num_noeud from notices_categories where notcateg_notice = ".$this->id.") group by notcateg_notice order by pert desc";
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($record = pmb_mysql_fetch_object($result)) {
$this->records_from_same_categories[] = $record->notcateg_notice;
}
}
}
$filter = new filter_results($this->records_from_same_categories);
$this->records_from_same_categories = explode(",",$filter->get_results());
return $this->records_from_same_categories;
}
/**
* Retourne l'URL calculée de l'image
* @return string
*/
public function get_picture_url() {
if (!$this->picture_url && ($this->get_code() || $this->get_thumbnail_url())) {
if ($this->get_parameter_value('show_book_pics')=='1' && ($this->get_parameter_value('book_pics_url') || $this->get_thumbnail_url())) {
$this->picture_url = getimage_url($this->get_code(), $this->get_thumbnail_url());
}
}
if (!$this->picture_url) {
$this->picture_url = notice::get_picture_url_no_image($this->get_niveau_biblio(), $this->get_typdoc());
}
return $this->picture_url;
}
/**
* Retourne le texte au survol de l'image
* @return string
*/
public function get_picture_title() {
if (!$this->picture_title && ($this->get_code() || $this->get_thumbnail_url())) {
global $charset;
if ($this->get_parameter_value('show_book_pics')=='1' && ($this->get_parameter_value('book_pics_url') || $this->get_thumbnail_url())) {
if ($this->get_thumbnail_url()) {
$this->picture_title = htmlentities($this->get_tit1(), ENT_QUOTES, $charset);
} else {
$this->picture_title = htmlentities($this->get_parameter_value('book_pics_msg'), ENT_QUOTES, $charset);
}
}
}
return $this->picture_title;
}
public function get_pnb_datas() {
// $allow_pnb = Droit à l'emprunt de document numérique
global $allow_pnb;
$this->pnb_datas = array(
'flag_pnb_visible' => false,
'href' => "#",
'onclick' => "",
);
$record_datas = record_display::get_record_datas($this->id);
if ($record_datas->is_numeric()) {
if ($record_datas->get_availability() && $_SESSION["user_code"] && $allow_pnb) {
$this->pnb_datas['flag_pnb_visible'] = true;
$this->pnb_datas['onclick'] ="pnb_post_loan_info(" . $this->id . ");return false;";
}
}
return $this->pnb_datas;
}
/**
* Retourne vrai si nouveauté, false sinon
* @return boolean
*/
public function is_new() {
if ($this->notice->notice_is_new) {
return true;
}
return false;
}
/**
* Retourne le tableau des relations parentes
* @return array
*/
public function get_relations_up() {
if (!isset($this->relations_up)) {
$this->relations_up = array();
$notice_relations = notice_relations_collection::get_object_instance($this->id);
$parents = $notice_relations->get_parents();
foreach ($parents as $parents_relations) {
foreach ($parents_relations as $parent) {
if (!isset($this->relations_up[$parent->get_relation_type()]['label'])){
$this->relations_up[$parent->get_relation_type()]['label'] = notice_relations::$liste_type_relation['up']->table[$parent->get_relation_type()];
$this->relations_up[$parent->get_relation_type()]['relation_type'] = $parent->get_relation_type();
}
$this->relations_up[$parent->get_relation_type()]['parents'][] = $parent->get_linked_notice();
}
}
foreach($this->relations_up as $key => $value){
$filter = new filter_results($value['parents']);
$this->relations_up[$key]['parents'] = explode(",",$filter->get_results());
for($i = 0; $i < count($this->relations_up[$key]['parents']); $i++){
if($this->relations_up[$key]['parents'][$i] == ''){
unset($this->relations_up[$key]['parents'][$i]);
}else{
$this->relations_up[$key]['parents'][$i] = record_display::get_record_datas($this->relations_up[$key]['parents'][$i]);
}
}
if(count($this->relations_up[$key]['parents']) == 0){
unset($this->relations_up[$key]);
}
}
}
return $this->relations_up;
}
/**
* Retourne le tableau des relations enfants
* @return array
*/
public function get_relations_down() {
if (!isset($this->relations_down)) {
$this->relations_down = array();
$notice_relations = notice_relations_collection::get_object_instance($this->id);
$childs = $notice_relations->get_childs();
foreach ($childs as $childs_relations) {
foreach ($childs_relations as $child) {
if (!isset($this->relations_down[$child->get_relation_type()]['label'])){
$this->relations_down[$child->get_relation_type()]['label'] = notice_relations::$liste_type_relation['down']->table[$child->get_relation_type()];
$this->relations_down[$child->get_relation_type()]['relation_type'] = $child->get_relation_type();
}
$this->relations_down[$child->get_relation_type()]['children'][] = $child->get_linked_notice();
}
}
foreach($this->relations_down as $key => $value){
$filter = new filter_results($value['children']);
$this->relations_down[$key]['children'] = explode(",",$filter->get_results());
for($i = 0; $i < count($this->relations_down[$key]['children']); $i++){
if($this->relations_down[$key]['children'][$i] == ''){
unset($this->relations_down[$key]['children'][$i]);
}else{
$this->relations_down[$key]['children'][$i] = record_display::get_record_datas($this->relations_down[$key]['children'][$i]);
}
}
if(count($this->relations_down[$key]['children']) == 0){
unset($this->relations_down[$key]);
}
}
}
return $this->relations_down;
}
/**
* Retourne le tableau des relations horizontales
* @return array
*/
public function get_relations_both() {
if (!isset($this->relations_both)) {
$this->relations_both = array();
$notice_relations = notice_relations_collection::get_object_instance($this->id);
$pairs = $notice_relations->get_pairs();
foreach ($pairs as $pairs_relations) {
foreach ($pairs_relations as $pair) {
if (!isset($this->relations_both[$pair->get_relation_type()]['label'])){
$this->relations_both[$pair->get_relation_type()]['label'] = notice_relations::$liste_type_relation['both']->table[$pair->get_relation_type()];
$this->relations_both[$pair->get_relation_type()]['relation_type'] = $pair->get_relation_type();
}
$this->relations_both[$pair->get_relation_type()]['pairs'][] = $pair->get_linked_notice();
}
}
foreach($this->relations_both as $key => $value){
$filter = new filter_results($value['pairs']);
$this->relations_both[$key]['pairs'] = explode(",",$filter->get_results());
for($i = 0; $i < count($this->relations_both[$key]['pairs']); $i++){
if($this->relations_both[$key]['pairs'][$i] == ''){
unset($this->relations_both[$key]['pairs'][$i]);
}else{
$this->relations_both[$key]['pairs'][$i] = record_display::get_record_datas($this->relations_both[$key]['pairs'][$i]);
}
}
if(count($this->relations_both[$key]['pairs']) == 0){
unset($this->relations_both[$key]);
}
}
}
return $this->relations_both;
}
/**
* Retourne les dépouillements
* @return string Tableau des affichage des articles
*/
public function get_articles() {
if (!isset($this->articles)) {
$this->articles = array();
$bul_info = $this->get_bul_info();
$bulletin_id = $bul_info['bulletin_id'];
$query = "SELECT analysis_notice FROM analysis, notices, notice_statut WHERE analysis_bulletin=".$bulletin_id." AND notice_id = analysis_notice AND statut = id_notice_statut and notice_visible_gestion=1 order by analysis_notice";
$result = @pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
while(($article = pmb_mysql_fetch_object($result))) {
$this->articles[] = record_display::get_display_in_result($article->analysis_notice);
}
}
}
return $this->articles;
}
/**
* Retourne le nombre d'article associés à un bulletin
* @param number $bulletin_id
* @return number $nb_articles
*/
public function get_nb_articles($bulletin_id = 0) {
global $PMBuserid;
$acces_j = "";
$statut_j = "";
$statut_r = "";
$nb_articles = 0;
if (!$bulletin_id) {
$bul_info = $this->get_bul_info();
$bulletin_id = $bul_info['bulletin_id'];
}
//Droits d'accès
if (is_null($this->dom_1)) {
$statut_j=', notice_statut';
$statut_r="AND statut = id_notice_statut AND notice_visible_gestion = 1";
} else {
$acces_j = $this->dom_1->getJoin($PMBuserid, 4, 'notice_id');
}
$query = "SELECT COUNT(*) FROM analysis, notices".$acces_j.$statut_j." WHERE analysis_bulletin=".$bulletin_id;
$query .= " AND notice_id = analysis_notice ".$statut_r;
$result = pmb_mysql_query($query);
if($result) {
$nb_articles = intval(pmb_mysql_result($result, 0, 0));
}
return $nb_articles;
}
/**
* Retourne les données de demandes
* @return string Tableau des données ['themes' => ['id', 'label'], 'types' => ['id', 'label']]
*/
public function get_demands_datas() {
if (!isset($this->demands_datas)) {
$this->demands_datas = array(
'themes' => array(),
'types' => array()
);
// On va chercher les thèmes
$query = "select id_theme, libelle_theme from demandes_theme";
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($theme = pmb_mysql_fetch_object($result)) {
$this->demands_datas['themes'][] = array(
'id' => $theme->id_theme,
'label' => $theme->libelle_theme
);
}
}
// On va chercher les types
$query = "select id_type, libelle_type from demandes_type";
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($theme = pmb_mysql_fetch_object($result)) {
$this->demands_datas['types'][] = array(
'id' => $theme->id_type,
'label' => $theme->libelle_type
);
}
}
}
return $this->demands_datas;
}
/**
* Retourne l'autorisation d'afficher le panier en fonction des paramètres
* @return boolean true si le panier est autoriser, false sinon
*/
public function is_cart_allow() {
return true;
}
/**
* Retourne la présence ou non de la notice dans le panier
* @return boolean true si la notice est déjà dans le panier, false sinon
*/
public function is_in_cart() {
if (!isset($this->in_cart)) {
if(isset($_SESSION['cart']) && in_array($this->id, $_SESSION["cart"])) {
$this->in_cart = true;
} else {
$this->in_cart = false;
}
}
return $this->in_cart;
}
/**
* Retourne le tableau des autorités persos associées à la notice
* @return authority
*/
public function get_authpersos() {
if (isset($this->authpersos)) {
return $this->authpersos;
}
$query = 'select notice_authperso_authority_num from notices_authperso
JOIN authperso_authorities ON id_authperso_authority = notice_authperso_authority_num
where notices_authperso.notice_authperso_notice_num = '.$this->id.'
order by authperso_authority_authperso_num';
$result = pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
while ($row = pmb_mysql_fetch_object($result)) {
$this->authpersos[] = new authority(0, $row->notice_authperso_authority_num, AUT_TABLE_AUTHPERSO);
}
}
return $this->authpersos;
}
/**
* Retourne le tableau des autorités persos classées associées à la notice
* @return authority
*/
public function get_authpersos_ranked() {
if (isset($this->authpersos_ranked)) {
return $this->authpersos_ranked;
}
$this->authpersos_ranked = array();
$query = 'select authperso_authority_authperso_num, notice_authperso_authority_num from notices_authperso
JOIN authperso_authorities ON id_authperso_authority = notice_authperso_authority_num
where notices_authperso.notice_authperso_notice_num = '.$this->id.'
order by authperso_authority_authperso_num';
$result = pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
while ($row = pmb_mysql_fetch_object($result)) {
$this->authpersos_ranked[$row->authperso_authority_authperso_num][] = new authority(0, $row->notice_authperso_authority_num, AUT_TABLE_AUTHPERSO);
}
}
return $this->authpersos_ranked;
}
/**
* Retourne $this->notice->opac_serialcirc_demande
*/
public function get_opac_serialcirc_demande() {
return $this->notice->opac_serialcirc_demande;
}
/**
* Retourne $this->notice->opac_visible_bulletinage
*/
public function get_opac_visible_bulletinage() {
return $this->notice->opac_visible_bulletinage;
}
/**
* Retourne les informations de notice externe
*/
public function get_external_rec_id() {
if(!isset($this->external_rec_id)) {
$this->external_rec_id = array();
$query = "SELECT recid FROM notices_externes WHERE num_notice = " . $this->id;
$result = pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
$recid = pmb_mysql_result($result, 0,0);
$data = explode(" ", $recid);
$this->external_rec_id = array(
'recid' => $recid,
'connector' => $data[0],
'source_id' => $data[1],
'ref' => $data[2]
);
}
}
return $this->external_rec_id;
}
/**
* Retourne l'affichage réduit d'une notice
*/
public function get_aff_notice_reduit() {
return aff_notice($this->id, 1, 1, 0, AFF_ETA_NOTICES_REDUIT);
}
/**
* Retourne les informations du périodique
*/
public function get_serial() {
if (!isset($this->serial)) {
$this->serial = new stdClass();
$query = "";
if ($this->notice->niveau_hierar == 2) {
if ($this->notice->niveau_biblio == 'a') {
$query = "SELECT bulletin_notice FROM bulletins JOIN analysis ON analysis_bulletin = bulletin_id WHERE analysis_notice = ".$this->id;
} elseif ($this->notice->niveau_biblio == 'b') {
$query = "SELECT bulletin_notice FROM bulletins WHERE num_notice = ".$this->id;
}
}
if ($query) {
$result = pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
$row = pmb_mysql_fetch_object($result);
$this->serial = record_display::get_record_datas($row->bulletin_notice);
}
}
}
return $this->serial;
}
/**
* Affecte $external_parameters
*/
public function set_external_parameters($external_parameters) {
$this->external_parameters = $external_parameters;
}
/**
* Retourne $external_parameters
*/
public function get_external_parameters() {
return $this->external_parameters;
}
public static function format_url($url) {
global $base_path;
global $use_opac_url_base, $opac_url_base;
if($use_opac_url_base) return $opac_url_base.$url;
else return $base_path.'/'.$url;
}
/**
* Retourne vrai si la notice est numérique, false sinon
* @return boolean
*/
public function is_numeric() {
if ($this->notice->is_numeric) {
return true;
}
return false;
}
/**
* Retourne la date de création de la notice
* @return string
*/
public function get_create_date() {
return formatdate($this->notice->create_date);
}
/**
* Retourne la date de mise à jour de la notice
* @return string
*/
public function get_update_date() {
return formatdate($this->notice->update_date);
}
public function get_contributor() {
$contributor = new stdClass();
$query = "SELECT id_empr
FROM empr
JOIN audit ON user_id = id_empr
JOIN notices ON object_id = notice_id AND type_obj=1 AND type_modif=1 AND type_user=1
WHERE notice_id = ".$this->id;
$result = pmb_mysql_query($query);
if(pmb_mysql_num_rows($result)) {
$id_empr = pmb_mysql_result($result, 0, 'id_empr');
$contributor = new emprunteur($id_empr);
}
return $contributor;
}
public function get_coins() {
$coins = array();
switch ($this->get_niveau_biblio()){
case 's':// periodique
/*
$coins['rft.genre'] = 'book';
$coins['rft.btitle'] = $this->get_tit1();
$coins['rft.title'] = $this->get_tit1();
if ($this->get_code()){
$coins['rft.issn'] = $this->get_code();
}
if ($this->get_npages()) {
$coins['rft.epage'] = $this->get_npages();
}
if ($this->get_year()) {
$coins['rft.date'] = $this->get_year();
}
*/
break;
case 'a': // article
$parent = $this->get_bul_info();
$coins['rft.genre'] = 'article';
$coins['rft.atitle'] = $this->get_tit1();
$coins['rft.jtitle'] = $parent['title'];
if ($parent['numero']) {
$coins['rft.issue'] = $parent['numero'];
}
if($parent['date']){
$coins['rft.date'] = $parent['date'];
}elseif($parent['date_date']){
$coins['rft.date'] = $parent['date_date'];
}
if ($this->get_code()){
$coins['rft.issn'] = $this->get_code();
}
if ($this->get_npages()) {
$coins['rft.epage'] = $this->get_npages();
}
break;
case 'b': //Bulletin
/*
$coins['rft.genre'] = 'issue';
$coins_span.="&rft.btitle=".rawurlencode($f($this->notice->tit1." / ".$this->parent_title));
if ($this->get_code()){
$coins['rft.isbn'] = $this->get_code();
}
if ($this->get_npages()) {
$coins['rft.epage'] = $this->get_npages();
}
if($this->bulletin_date) $coins_span.="&rft.date=".rawurlencode($f($this->bulletin_date));
*/
break;
case 'm':// livre
default:
$coins['rft.genre'] = 'book';
$coins['rft.btitle'] = $this->get_tit1();
$title="";
$serie = $this->get_serie();
if(isset($serie['name'])) {
$title .= $serie['name'];
if($this->get_tnvol()) $title .= ', '.$this->get_tnvol();
$title .= '. ';
}
$title .= $this->get_tit1();
if ($this->get_tit4()) {
$title .= ' : '.$this->get_tit4();
}
$coins['rft.title'] = $title;
if ($this->get_code()){
$coins['rft.isbn'] = $this->get_code();
}
if ($this->get_npages()) {
$coins['rft.tpages'] = $this->get_npages();
}
if ($this->get_year()) {
$coins['rft.date'] = $this->get_year();
}
break;
}
if($this->get_niveau_biblio() != "b"){
$coins['rft_id'] = $this->get_lien();
}
$collection = $this->get_collection();
$subcollection = $this->get_subcollection();
if($subcollection) {
$coins['rft.series'] = $subcollection->name;
} elseif ($collection) {
$coins['rft.series'] = $collection->name;
}
$publishers = $this->get_publishers();
if (count($publishers)) {
$coins['rft.pub'] = $publishers[0]->name;
if($publishers[0]->ville) {
$coins['rft.place'] = $publishers[0]->ville;
}
}
if($this->get_mention_edition()){
$coins['rft.edition'] = $this->get_mention_edition();
}
$responsabilites = $this->get_responsabilites();
if (count($responsabilites["auteurs"])) {
$coins['rft.au'] = array();
foreach($responsabilites["auteurs"] as $responsabilite){
$coins['rft.au'][] = ($responsabilite['rejete'] ? $responsabilite['rejete'].' ' : '').$responsabilite['name'];
if(empty($coins['rft.aulast'])) {
if($responsabilite['name']) {
$coins['rft.aulast'] = $responsabilite['name'];
if($responsabilite['rejete']) {
$coins['rft.aufirst'] = $responsabilite['rejete'];
} else {
$coins['rft.aufirst'] = '';
}
}
}
}
}
return $coins;
}
protected function get_linked_authors_id($author_type = 0) {
$authors_id= array();
$query = 'SELECT author_id, responsability_fonction, responsability_type
FROM responsability, authors
WHERE responsability_notice = "'.$this->id.'"
AND responsability_author = author_id
AND responsability_type = "'.$author_type.'"
ORDER BY responsability_type, responsability_ordre ' ;
$result = pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
while ($row = pmb_mysql_fetch_assoc($result)) {
$authors_id[] = array(
'id' => $row['author_id'],
'function' => $row['responsability_fonction'],
);
}
}
return $authors_id;
}
public function get_linked_categories_id(){
$categories_id = array();
$query = "select distinct num_noeud from notices_categories where notcateg_notice = ".$this->id." order by ordre_vedette, ordre_categorie";
$result = pmb_mysql_query($query);
if ($result && pmb_mysql_num_rows($result)) {
while ($row = pmb_mysql_fetch_object($result)) {
$categories_id[] = $row->num_noeud;
}
}
return $categories_id ;
}
public function get_linked_works_id(){
$linked_works_id = array();
$query = "select distinct ntu_num_tu from notices_titres_uniformes where ntu_num_notice = ".$this->id;
$result = pmb_mysql_query($query);
if (pmb_mysql_num_rows($result)) {
while ($row = pmb_mysql_fetch_assoc($result)) {
$linked_works_id[] = $row['ntu_num_tu'];
}
}
return $linked_works_id;
}
public function get_linked_concepts_id() {
$index_concept = new index_concept($this->id, TYPE_NOTICE);
return $index_concept->get_concepts_id();
}
public function get_linked_records_id() {
$id = array();
$links = notice_relations::get_notice_links($this->id);
if (!empty($links)) {
foreach ($links as $link) {
foreach ($link as $linked_record) {
$id[] = $linked_record->get_linked_notice();
}
}
}
return $id;
}
public function get_locations() {
$locations = array();
//Localisations des exemplaires
$query = "SELECT distinct location_libelle FROM exemplaires JOIN docs_location ON docs_location.idlocation = exemplaires.expl_location WHERE expl_notice = '".$this->id."'";
$query .= " AND docs_location.location_visible_opac=1";
$result = pmb_mysql_query($query);
while ($row = pmb_mysql_fetch_object($result)) {
$locations[] = array(
'label' => $row->location_libelle
);
}
//Localisations des documents numériques
$query = "SELECT distinct location_libelle FROM explnum JOIN explnum_location ON explnum_location.num_explnum = explnum.explnum_id JOIN docs_location ON docs_location.idlocation = explnum_location.num_location WHERE explnum_notice = '".$this->id."'";
$query .= " AND docs_location.location_visible_opac=1";
$result = pmb_mysql_query($query);
while ($row = pmb_mysql_fetch_object($result)) {
$locations[] = array(
'label' => $row->location_libelle
);
}
return $locations;
}
public function get_lenders() {
$lenders = array();
//Localisations des exemplaires
$query = "SELECT distinct lender_libelle FROM exemplaires JOIN lenders ON lenders.idlender = exemplaires.expl_owner WHERE expl_notice = '".$this->id."'";
$result = pmb_mysql_query($query);
while ($row = pmb_mysql_fetch_object($result)) {
$lenders[] = array(
'label' => $row->lender_libelle
);
}
//Localisations des documents numériques
$query = "SELECT distinct lender_libelle FROM explnum JOIN explnum_lenders ON explnum_lenders.explnum_lender_num_explnum = explnum.explnum_id JOIN lenders ON lenders.idlender = explnum_lenders.explnum_lender_num_lender WHERE explnum_notice = '".$this->id."'";
$result = pmb_mysql_query($query);
while ($row = pmb_mysql_fetch_object($result)) {
$lenders[] = array(
'label' => $row->location_libelle
);
}
return $lenders;
}
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 get_linked_entities_id($type, $property = '', $arguments = array()) {
$entities_linked = array();
switch ($type) {
case TYPE_AUTHOR :
if (isset($arguments[0])) {
$authors_id = $this->get_linked_authors_id($arguments[0]);
foreach ($authors_id as $author) {
$entities_linked[] = array(
'id' => authority::get_authority_id_from_entity($author['id'], AUT_TABLE_AUTHORS)
);
}
}
break;
case TYPE_NOTICE :
$linked_records_id = $this->get_linked_records_id();
if (is_array($linked_records_id)) {
foreach ($linked_records_id as $id) {
$entities_linked[]= array(
'id' => $id
);
}
}
break;
case TYPE_AUTHPERSO :
$authpersos_ranked = $this->get_authpersos_ranked();
if (!empty($arguments[0]) && !empty($authpersos_ranked[$arguments[0]])) {
$linked_authpersos = $authpersos_ranked[$arguments[0]];
if (is_array($linked_authpersos)) {
foreach ($linked_authpersos as $authperso) {
$entities_linked[]= array(
'id' => $authperso->get_id(),
);
}
}
}
break;
default :
if ($property) {
$entities_id = $this->look_for_attribute_in_class($this, $property, $arguments);
if (empty($entities_id) || is_object($entities_id)) {
$entities_id = $this->look_for_attribute_in_class($this->notice, $property, $arguments);
}
if (is_array($entities_id)) {//plusieurs entites liees
foreach ($entities_id as $id) {
$entities_linked[]= array(
'id' => authority::get_authority_id_from_entity($id, authority::$type_table[$type]),
);
}
} elseif ($entities_id) { //une seule entite liee
$entities_linked[]= array(
'id' => authority::get_authority_id_from_entity($entities_id, authority::$type_table[$type]),
);
}
}
break;
}
return $entities_linked;
}
protected function get_parameter_value($name) {
$parameter_name = 'pmb_'.$name;
global ${$parameter_name};
return ${$parameter_name};
}
}