function unserialize($infos, $mode) { global $openurl_map; global $class_path; $elements = array(); foreach ($infos as $key => $values) { switch ($key) { case "rft_id": //descripteurs identifier foreach ($values as $value) { if (preg_match('/([^:]+:[^:]*):.*/', $value, $match)) { $iclass = $openurl_map[strtolower('info:ofi/nam:' . $match[1])]['class']; $ident = new $iclass(); $ident->setEntityType($this->type); $ident->unserialize($value); $this->descriptors[] = $ident; } } break; case "rft_val_fmt": //By-Value $class = $openurl_map[strtolower($values[0])]['class']; break; case "rft_ref_fmt": //By-Reference $content = openurl_transport_http::get($infos["rft_ref"][0]); switch (self::$serialize) { case "kev_mtx": default: $content = openurl_serialize_kev_mtx::unserialize($content); foreach ($content as $key => $value) { $content[$key] = $value[0]; } break; } $byref = new $openurl_map[strtolower($values[0])]['class'](); $byref->setEntityType($this->type); $byref->unserialize($content, true); $this->descriptors[] = $byref; break; case "rft_dat": //Private Data break; default: //on colle les éléments du by-value dans un tableau if (substr($key, -3) != "ref") { $elements[$key] = $values[0]; } break; } } if ($class) { $byval = new $class(); $byval->setEntityType($this->type); $byval->unserialize($elements); $this->descriptors[] = $byval; } }
function serialize($debug = false) { if ($debug) { highlight_string("ContextObject :" . print_r($this->infos, true)); } $this->context = openurl_serialize_kev_mtx::serialize($this->infos); //on ajoute les entités foreach ($this->entities as $entity) { $entity_serialized = $entity->serialize($debug); if ($entity_serialized != "") { $this->context .= "&" . $entity_serialized; } } return $this->context; }
function generateURL($debug = false) { if (!$this->serialized_tsp) { $this->serialized_tsp = $this->serialize($debug); } if (!$this->serialized_obj) { $this->serialized_obj = openurl_serialize_kev_mtx::serialize(array('url_ctx_val' => $this->contextObject->serialize($debug))); } return $this->service_address . (strpos($this->service_address, "?") === false ? "?" : "&") . $this->serialized_tsp . ($this->serialized_obj ? "&" . $this->serialized_obj : ""); }
function serialize($tab) { return openurl_serialize_kev_mtx::serialize($tab); }