table;
}
// propriétés pour le selecteur de panier
$cart_click = "onClick=\"openPopUp('./cart.php?object_type=NOTI&item=!!id!!&unq=!!unique!!', 'cart')\"";
function cmpexpl($a, $b)
{
$c1 = isset($a["priority"]) ? $a["priority"] : "";
$c2 = isset($b["priority"]) ? $b["priority"] : "";
if ($c1 == $c2) {
$c1 = isset($a["content"]["v"]) ? $a["content"]["v"] : "";
$c2 = isset($b["content"]["v"]) ? $b["content"]["v"] : "";
return strcmp($c1, $c2);
}
return $c2-$c1;
}
// définition de la classe d'affichage des monographies en liste
class mono_display_unimarc {
public $notice_id = 0; // id de la notice à afficher
public $isbn = 0; // isbn ou code EAN de la notice à afficher
public $notice; // objet notice (tel que fetch� dans la table 'notices'
public $langues = array();
public $languesorg = array();
public $action = ''; // URL à associer au header
public $header = ''; // chaine accueillant le chapeau de notice (peut-être cliquable)
public $tit_serie = ''; // titre de série si applicable
public $tit1 = ''; // valeur du titre 1
public $result = ''; // affichage final
public $level = 1; // niveau d'affichage
public $isbd = ''; // isbd de la notice en fonction du level défini
public $expl = 0; // flag indiquant si on affiche les infos d'exemplaire
public $nb_expl = 0; //nombre d'exemplaires
public $link_expl = ''; // lien associé à un exemplaire
public $responsabilites = array("responsabilites" => array(),"auteurs" => array()); // les auteurs
public $auteurs_principaux;
public $auteurs_tous;
public $categories_toutes;
public $collections;
public $publishers;
public $print_mode=0;
public $show_explnum=1;
public $no_link;
public $entrepots_localisations=array();
public $docnums;
public $source_id;
// constructeur------------------------------------------------------------
public function __construct($id, $level=1, $expl=1, $print=0, $show_explnum=1, $no_link=false, $entrepots_localisations=array()) {
// $id = id de la notice à afficher
// $action = URL associée au header
// $level :
// 0 : juste le header (titre / auteur principal avec le lien si applicable)
// suppression des niveaux entre 1 et 6, seul reste level
// 1 : ISBD seul, pas de note, bouton modif, expl, explnum et r�sas
// 6 : cas général détaillé avec notes, categ, langues, indexation... + boutons
// $expl -> affiche ou non les exemplaires associés
$this->notice_id = $id+0;
$this->mono_display_fetch_data();
$this->fetch_auteurs();
$this->fetch_categories();
$this->level=$level;
$this->expl = $expl;
$this->entrepots_localisations = $entrepots_localisations;
// mise à jour des catégories
$this->categories = get_notice_categories($this->notice_id) ;
$this->do_header();
switch($level) {
case 0:
// là, c'est le niveau 0 : juste le header
$this->result = $this->header;
break;
default:
// niveau 1 et plus : header + isbd à générer
$this->init_javascript();
$this->do_isbd();
$this->finalize();
break;
}
}
public function fetch_auteurs() {
global $fonction_auteur;
global $dbh ;
$this->responsabilites = array() ;
$auteurs = array() ;
$res["responsabilites"] = array() ;
$res["auteurs"] = array() ;
$requete = "SELECT source_id FROM external_count WHERE rid=".addslashes($this->notice_id);
$myQuery = pmb_mysql_query($requete);
$source_id = pmb_mysql_result($myQuery, 0, 0);
$rqt = "select recid,ufield,field_order,usubfield,subfield_order,value from entrepot_source_$source_id where recid='".addslashes($this->notice_id)."' and ufield like '7%' group by ufield,usubfield,field_order,subfield_order,value order by recid,field_order,subfield_order";
$res_sql=pmb_mysql_query($rqt);
$id_aut="";
$n_aut=-1;
while ($l=pmb_mysql_fetch_object($res_sql)) {
if ($l->field_order!=$id_aut) {
$n_aut++;
switch ($l->ufield) {
case "700":
case "710":
$responsabilites[$n_aut]=0;
break;
case "701":
case "711":
$responsabilites[$n_aut]=1;
break;
case "702":
case "712":
$responsabilites[$n_aut]=2;
break;
}
switch (substr($l->ufield,0,2)) {
case "70":
$auteurs[$n_aut]["type"]=1;
break;
case "71":
$auteurs[$n_aut]["type"]=2;
break;
}
$auteurs[$n_aut]["id"]=$l->recid.$l->field_order;
$id_aut=$l->field_order;
}
switch ($l->usubfield) {
case '4':
$auteurs[$n_aut]['fonction']=$l->value;
$auteurs[$n_aut]['fonction_aff']=$fonction_auteur[$l->value];
break;
case 'a':
$auteurs[$n_aut]['name']=$l->value;
break;
case 'b':
if ($auteurs[$n_aut]['type']==2) {
$auteurs[$n_aut]['subdivision']=$l->value;
} else {
$auteurs[$n_aut]['rejete']=$l->value;
}
break;
case 'd':
if ($auteurs[$n_aut]['type']==2) {
$auteurs[$n_aut]['numero']=$l->value;
}
break;
case 'e':
if ($auteurs[$n_aut]['type']==2) {
$auteurs[$n_aut]['lieu'].=(($auteurs[$n_aut]['lieu'])?'; ':'').$l->value;
}
break;
case 'f':
$auteurs[$n_aut]['date']=$l->value;
break;
case 'g':
if ($auteurs[$n_aut]['type']==2) {
$auteurs[$n_aut]['rejete']=$l->value;
}
break;
}
}
foreach($auteurs as $n_aut=>$auteur) {
$auteurs[$n_aut]['auteur_titre']=(!empty($auteurs[$n_aut]['rejete']) ? $auteurs[$n_aut]['rejete'].' ' : '').$auteurs[$n_aut]['name'];
if ($auteur['type']==2 && ($auteurs[$n_aut]['subdivision'] || $auteurs[$n_aut]['numero'] || $auteurs[$n_aut]['date'] || $auteurs[$n_aut]['lieu'])) {
$c='';
$c.=$auteurs[$n_aut]['subdivision'];
$c.=($c && $auteurs[$n_aut]['numero'])?(', '.$auteurs[$n_aut]['numero']):($auteurs[$n_aut]['numero']);
$c.=($c && $auteurs[$n_aut]['date'])?(', '.$auteurs[$n_aut]['date']):($auteurs[$n_aut]['date']);
$c.=($c && $auteurs[$n_aut]['lieu'])?(', '.$auteurs[$n_aut]['lieu']):($auteurs[$n_aut]['lieu']);
$auteurs[$n_aut]['auteur_titre'].=' ('.$c.')';
}
$auteurs[$n_aut]['auteur_isbd']=$auteurs[$n_aut]['auteur_titre'].(!empty($auteurs[$n_aut]['fonction_aff']) ? ' ,'.$auteurs[$n_aut]['fonction_aff'] : '');
}
if (empty($responsabilites)) $responsabilites = array();
if (!$auteurs) $auteurs = array();
$res["responsabilites"] = $responsabilites ;
$res["auteurs"] = $auteurs ;
$this->responsabilites = $res;
// $this->auteurs_principaux
// on ne prend que le auteur_titre = "Prenom NOM"
$as = array_search ("0", $this->responsabilites["responsabilites"]) ;
if ($as!== FALSE && $as!== NULL) {
$auteur_0 = $this->responsabilites["auteurs"][$as] ;
$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] ;
$aut1_libelle[]= $auteur_1["auteur_titre"];
}
$auteurs_liste = implode ("; ",$aut1_libelle) ;
if ($auteurs_liste) $this->auteurs_principaux = $auteurs_liste ;
}
// $this->auteurs_tous
$mention_resp = array() ;
$as = array_search ("0", $this->responsabilites["responsabilites"]) ;
if ($as!== FALSE && $as!== NULL) {
$auteur_0 = $this->responsabilites["auteurs"][$as] ;
$mention_resp_lib = $auteur_0["auteur_isbd"];
$mention_resp[] = $mention_resp_lib ;
}
$as = array_keys ($this->responsabilites["responsabilites"], "1" ) ;
for ($i = 0 ; $i < count($as) ; $i++) {
$indice = $as[$i] ;
$auteur_1 = $this->responsabilites["auteurs"][$indice] ;
$mention_resp_lib = $auteur_1["auteur_isbd"];
$mention_resp[] = $mention_resp_lib ;
}
$as = array_keys ($this->responsabilites["responsabilites"], "2" ) ;
for ($i = 0 ; $i < count($as) ; $i++) {
$indice = $as[$i] ;
$auteur_2 = $this->responsabilites["auteurs"][$indice] ;
$mention_resp_lib = $auteur_2["auteur_isbd"];
$mention_resp[] = $mention_resp_lib ;
}
$libelle_mention_resp = implode ("; ",$mention_resp) ;
if ($libelle_mention_resp) $this->auteurs_tous = $libelle_mention_resp ;
else $this->auteurs_tous ="" ;
} // fin fetch_auteurs
// récupération des categories ------------------------------------------------------------------
public function fetch_categories() {
global $pmb_keyword_sep;
$this->categories_toutes="";
$requete = "SELECT source_id FROM external_count WHERE rid=".addslashes($this->notice_id);
$myQuery = pmb_mysql_query($requete);
$source_id = pmb_mysql_result($myQuery, 0, 0);
$rqt = "select ufield,field_order,usubfield,subfield_order,value from entrepot_source_$source_id where recid='".addslashes($this->notice_id)."' and ufield like '60%' group by ufield,usubfield,field_order,subfield_order,value order by recid,field_order,subfield_order";
$res_sql=pmb_mysql_query($rqt);
$id_categ="";
$n_categ=-1;
$categ_l=array();
while ($l=pmb_mysql_fetch_object($res_sql)) {
if ($l->field_order!=$id_categ) {
if ($n_categ!=-1) {
$categ_libelle=$categ_l["a"][0].(!empty($categ_l["x"]) ? " - ".implode(" - ",$categ_l["x"]):"").(!empty($categ_l["y"]) ? " - ".implode(" - ",$categ_l["y"]):"").(!empty($categ_l["z"]) ? " - ".implode(" - ",$categ_l["z"]):"");
$this->categories_toutes.=($this->categories_toutes?" ":"").$categ_libelle;
}
$categ_l=array();
$n_categ++;
$id_categ=$l->field_order;
}
$categ_l[$l->usubfield][]=$l->value;
}
if ($n_categ>=0) {
$categ_libelle=$categ_l["a"][0].(!empty($categ_l["x"])?" - ".implode(" - ",$categ_l["x"]):"").(!empty($categ_l["y"])?" - ".implode(" - ",$categ_l["y"]):"").(!empty($categ_l["z"])?" - ".implode(" - ",$categ_l["z"]):"");
$this->categories_toutes.=($this->categories_toutes?" ":"").$categ_libelle;
}
}
public function fetch_langues($quelle_langues=0) {
global $dbh;
global $marc_liste_langues ;
if (!$marc_liste_langues) $marc_liste_langues=new marc_list('lang');
$requete = "SELECT source_id FROM external_count WHERE rid=".addslashes($this->notice_id);
$myQuery = pmb_mysql_query($requete);
$source_id = pmb_mysql_result($myQuery, 0, 0);
$rqt = "select ufield,field_order,usubfield,subfield_order,value from entrepot_source_$source_id where recid='".addslashes($this->notice_id)."' and ufield like '101' group by ufield,usubfield,field_order,subfield_order,value order by recid,field_order,subfield_order";
$res_sql=pmb_mysql_query($rqt);
$langues = array() ;
$subfield=array("0"=>"a","1"=>"c");
while ($l=pmb_mysql_fetch_object($res_sql)) {
if ($l->usubfield==$subfield[$quelle_langues]) {
if ($marc_liste_langues->table[$l->value]) {
$langues[] = array(
'lang_code' => $l->value,
'langue' => $marc_liste_langues->table[$l->value]
) ;
}
}
}
if (!$quelle_langues) $this->langues = $langues;
else $this->languesorg = $langues;
}
// finalisation du résultat (écriture de l'isbd)
public function finalize() {
$this->result = str_replace('!!ISBD!!', $this->isbd, $this->result);
}
// génération du template javascript---------------------------------------
public function init_javascript() {
global $msg, $notice_id;
if (isset($notice_id))
$notice_id_info = "¬ice_id=".$notice_id;
else
$notice_id_info = "";
// propriétés pour le selecteur de panier
$cart_click = "onClick=\"document.search_form.action='catalog.php?categ=search&mode=7&sub=integre".$notice_id_info."&item=!!id!!'; document.search_form.submit()\"";
$suppr_click = "onClick=\"if(confirm('".$msg['confirm_suppr_notice']."')){;document.search_form.action='catalog.php?categ=search&mode=7&sub=suppr".$notice_id_info."&item=!!id!!'; document.search_form.submit()}\"";
$javascript_template ="