=') && extension_loaded('xsl')) { require_once($include_path.'/xslt-php4-to-php5.inc.php'); } class cairn extends oai { /** * Identifiant PMB à transmettre à CAIRN * @var string */ protected $pmb_id; /** * Identifiant fourni par CAIRN * @var string */ protected $cairn_id; public function __construct($connector_path="") { parent::__construct($connector_path); $this->unserialize_parameters(); } public function get_messages($connector_path) { global $lang; if (file_exists($connector_path."/../oai/messages/".$lang.".xml")) { $oai_file_name=$connector_path."/../oai/messages/".$lang.".xml"; } else if (file_exists($connector_path."/../oai/messages/fr_FR.xml")) { $oai_file_name=$connector_path."/../oai/messages/fr_FR.xml"; } else { $oai_file_name=''; } if (file_exists($connector_path."/messages/".$lang.".xml")) { $file_name=$connector_path."/messages/".$lang.".xml"; } else if (file_exists($connector_path."/messages/fr_FR.xml")) { $file_name=$connector_path."/messages/fr_FR.xml"; } else { $file_name=''; } if ($oai_file_name) { $xmllist = new XMLlist($oai_file_name); $xmllist->analyser(); $this->msg=$xmllist->table; } if ($file_name) { $xmllist=new XMLlist($file_name); $xmllist->analyser(); $this->msg+=$xmllist->table; } } public function get_id() { return "cairn"; } //Est-ce un entrepot ? public function is_repository() { return 1; } /** * Génération un token constitué de l'id lecteur, de l'identifiant institution et de l'identifiant transmis par PMB à CAIRN */ public function get_token() { if (!$this->cairn_id || !$this->pmb_id || !$_SESSION['user_code']) { return ''; } $sessions_tokens = new sessions_tokens('cairn'); $sessions_tokens->set_SESSID($_COOKIE["PmbOpac-SESSID"]); $token = $sessions_tokens->get_token(); if(!$token) { $arguments = array(md5($_COOKIE["PmbOpac-SESSID"]),$this->cairn_id,$this->pmb_id); $token = $sessions_tokens->generate_token_from_arguments($arguments); } return $token; } public function get_sso_params() { $token = $this->get_token(); if ($token) { return '&idsso='.$this->cairn_id.'&pmbtoken='.$token; } return ''; } /** * Génération de l'identifiant anonyme persistant d'un lecteur * @param string $empr_login Login lecteur */ public function get_empr_id($empr_login) { if(!$empr_login) { return false; } $query = "select empr_cb from empr where empr_login = '".$empr_login."'"; $result = pmb_mysql_query($query); if(pmb_mysql_num_rows($result)){ $empr_cb = pmb_mysql_result($result, 0,0); } return md5($empr_cb); } /** * Génération de l'identifiant unique PMB à transmettre à Cairn */ public function set_pmb_id($cairn_id) { $this->pmb_id = md5($cairn_id.microtime()); return $this; } public function get_pmb_id() { return $this->pmb_id; } public function get_cairn_id() { return $this->cairn_id; } public function unserialize_parameters() { if ($this->parameters) { $param = unserialize($this->parameters); $this->pmb_id= $param['id_pmb']; $this->cairn_id=$param['id_cairn']; } else { $this->pmb_id = ""; $this->cairn_id = ""; } } //Formulaire des propriétés générales public function get_property_form() { global $charset; $this->fetch_global_properties(); //Affichage du formulaire en fonction de $this->parameters $r="
"; return $r; } public function make_serialized_properties() { global $id_pmb, $id_cairn; //Mise en forme des paramètres à partir de variables globales (mettre le résultat dans $this->parameters) $param = array(); $param['id_pmb']=$id_pmb; $param['id_cairn']=$id_cairn; $this->parameters = serialize($param); } public function get_resource_link($url) { // TODO Générer le lien de la ressource avec le token à partir de l'url originale de la ressource return $url; } public function source_get_property_form($source_id) { global $charset; $params=$this->get_source_params($source_id); $vars = array(); if ($params["PARAMETERS"]) { //Affichage du formulaire avec $params["PARAMETERS"] $vars=unserialize($params["PARAMETERS"]); } if (!$vars['url']) { $vars['url'] = 'http://oai.cairn.info/oai.php'; } self::$sources_params[$source_id]["PARAMETERS"] = serialize($vars); return parent::source_get_property_form($source_id); } }