Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class OAIClient {
- public $urlbase = '';
- public $proxy = false;
- public $proxyUser = false;
- public $proxyPass = false;
- function __construct($url, $proxy=false, $proxyUser=false, $proxyPass=false) {
- $this->urlbase = $url;
- if ($proxy !== false) $this->proxy = $proxy;
- if ($proxyUser !== false) $this->proxyUser = $proxy;
- if ($proxyPass !== false) $this->proxyPass = $proxy;
- }
- function post($url, $data) {
- $postSerialised = array();
- foreach($data as $key=>$value) { $postSerialised[] = $key.'='.$value; }
- $postSerialised = implode('&',$postSerialised);
- $ch = curl_init();
- if ($this->proxy !== false)
- curl_setopt($ch, CURLOPT_PROXY, $this->proxy);
- if ($this->proxyUser !== false && $this->ProxyPass !== false)
- curl_setopt($ch, CURLOPT_PROXYUSERPWD, $this->proxyUser . ':' . $this->ProxyPass);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_URL,$url . '?' . $postSerialised);
- //curl_setopt($ch,CURLOPT_POSTFIELDS, $postSerialised);
- //curl_setopt($ch,CURLOPT_POST, 1);
- $response = curl_exec($ch);
- curl_close($ch);
- return $response;
- }
- function listSets() {
- $xml = $this->post($this->urlbase,array('verb'=>'ListSets'));
- $xmlP = simplexml_load_string($xml);
- if (!isset($xmlP->ListSets)) return false;
- $sets = array();
- foreach ($xmlP->ListSets->children() as $set) {
- $sets[$set->setSpec->__toString()] = array('Name'=>$set->setName->__toString(),'Description'=>$set->setDescription->__toString());
- }
- return $sets;
- }
- function listMetadataPrefixes() {
- $xml = $this->post($this->urlbase,array('verb'=>'ListMetadataFormats'));
- $xmlP = simplexml_load_string($xml);
- $metadataPrefixes = array();
- foreach ($xmlP->ListMetadataFormats->children() as $metadataFormat) {
- $metadataPrefixes[] = $metadataFormat->metadataPrefix->__toString();
- }
- return $metadataPrefixes;
- }
- function ListRecords($set, $metadataPrefix, $fromDate=false, $toDate=false, $resumptionToken=false) {
- $returnData = array();
- $data = array();
- $data['verb'] = 'ListRecords';
- if ($resumptionToken !== false) $data['resumptionToken'] = $resumptionToken;
- else {
- $data['set'] = $set;
- $data['metadataPrefix'] = $metadataPrefix;
- if ($fromDate !== false) $data['from'] = $fromDate;
- if ($fromDate !== false) $data['to'] = $toDate;
- }
- $dom = new DOMDocument();
- $dom->loadXml($this->post($this->urlbase, $data));
- //echo $this->post($this->urlbase, $data);
- //die;
- foreach ($dom->getElementsByTagName('record') as $node) {
- $id = $node->getElementsByTagName('header')[0]->getElementsByTagName('identifier')[0]->nodeValue;
- $returnData[$id] = array();
- foreach ($node->getElementsByTagName('metadata')[0]->getElementsByTagName('dc')[0]->childNodes as $data) {
- if (substr($data->nodeName,0,3) != 'dc:') continue;
- if (!empty($data->nodeValue)) $returnData[$id][$data->nodeName][] = $data->nodeValue;
- }
- }
- if (isset($dom->getElementsByTagName('resumptionToken')[0])) {
- $returnData = array_merge($returnData, $this->ListRecords($set, $metadataPrefix, $fromDate, $toDate,$dom->getElementsByTagName('resumptionToken')[0]->nodeValue));
- }
- return $returnData;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement