Advertisement
Guest User

Untitled

a guest
Jul 4th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. <?php
  2. class OAIClient {
  3. public $urlbase = '';
  4. public $proxy = false;
  5. public $proxyUser = false;
  6. public $proxyPass = false;
  7.  
  8. function __construct($url, $proxy=false, $proxyUser=false, $proxyPass=false) {
  9. $this->urlbase = $url;
  10. if ($proxy !== false) $this->proxy = $proxy;
  11. if ($proxyUser !== false) $this->proxyUser = $proxy;
  12. if ($proxyPass !== false) $this->proxyPass = $proxy;
  13. }
  14.  
  15. function post($url, $data) {
  16. $postSerialised = array();
  17. foreach($data as $key=>$value) { $postSerialised[] = $key.'='.$value; }
  18. $postSerialised = implode('&',$postSerialised);
  19.  
  20. $ch = curl_init();
  21.  
  22. if ($this->proxy !== false)
  23. curl_setopt($ch, CURLOPT_PROXY, $this->proxy);
  24. if ($this->proxyUser !== false && $this->ProxyPass !== false)
  25. curl_setopt($ch, CURLOPT_PROXYUSERPWD, $this->proxyUser . ':' . $this->ProxyPass);
  26. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  27. curl_setopt($ch, CURLOPT_URL,$url . '?' . $postSerialised);
  28. //curl_setopt($ch,CURLOPT_POSTFIELDS, $postSerialised);
  29. //curl_setopt($ch,CURLOPT_POST, 1);
  30. $response = curl_exec($ch);
  31. curl_close($ch);
  32. return $response;
  33. }
  34.  
  35. function listSets() {
  36. $xml = $this->post($this->urlbase,array('verb'=>'ListSets'));
  37. $xmlP = simplexml_load_string($xml);
  38. if (!isset($xmlP->ListSets)) return false;
  39. $sets = array();
  40. foreach ($xmlP->ListSets->children() as $set) {
  41. $sets[$set->setSpec->__toString()] = array('Name'=>$set->setName->__toString(),'Description'=>$set->setDescription->__toString());
  42. }
  43. return $sets;
  44. }
  45.  
  46. function listMetadataPrefixes() {
  47. $xml = $this->post($this->urlbase,array('verb'=>'ListMetadataFormats'));
  48. $xmlP = simplexml_load_string($xml);
  49. $metadataPrefixes = array();
  50. foreach ($xmlP->ListMetadataFormats->children() as $metadataFormat) {
  51. $metadataPrefixes[] = $metadataFormat->metadataPrefix->__toString();
  52. }
  53. return $metadataPrefixes;
  54. }
  55.  
  56. function ListRecords($set, $metadataPrefix, $fromDate=false, $toDate=false, $resumptionToken=false) {
  57. $returnData = array();
  58. $data = array();
  59. $data['verb'] = 'ListRecords';
  60. if ($resumptionToken !== false) $data['resumptionToken'] = $resumptionToken;
  61. else {
  62. $data['set'] = $set;
  63. $data['metadataPrefix'] = $metadataPrefix;
  64. if ($fromDate !== false) $data['from'] = $fromDate;
  65. if ($fromDate !== false) $data['to'] = $toDate;
  66. }
  67. $dom = new DOMDocument();
  68. $dom->loadXml($this->post($this->urlbase, $data));
  69. //echo $this->post($this->urlbase, $data);
  70. //die;
  71. foreach ($dom->getElementsByTagName('record') as $node) {
  72. $id = $node->getElementsByTagName('header')[0]->getElementsByTagName('identifier')[0]->nodeValue;
  73. $returnData[$id] = array();
  74. foreach ($node->getElementsByTagName('metadata')[0]->getElementsByTagName('dc')[0]->childNodes as $data) {
  75. if (substr($data->nodeName,0,3) != 'dc:') continue;
  76. if (!empty($data->nodeValue)) $returnData[$id][$data->nodeName][] = $data->nodeValue;
  77. }
  78. }
  79. if (isset($dom->getElementsByTagName('resumptionToken')[0])) {
  80. $returnData = array_merge($returnData, $this->ListRecords($set, $metadataPrefix, $fromDate, $toDate,$dom->getElementsByTagName('resumptionToken')[0]->nodeValue));
  81. }
  82. return $returnData;
  83. }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement