function __construct($query, $request_type = 'issn', $sr_api_key = '') { $query_string = 'versions=all&' . $request_type . '=' . urlencode($query); if ($sr_api_key) { $query_string .= '&ak=' . $sr_api_key; } $client = new Zend_HTTP_Client(); $client->setUri('http://www.sherpa.ac.uk/romeo/api29.php?' . $query_string); $response = $client->request(); if ($response->getStatus() == 200) { $sr = $response->getBody(); $sr_xml = new DOMDocument(); $sr_xml->loadXML($sr); $this->num_hits = $sr_xml->getElementsByTagName('numhits')->item(0)->nodeValue; $this->issn = $sr_xml->getElementsByTagName('issn')->item(0)->nodeValue; $this->jtitle = $sr_xml->getElementsByTagName('jtitle')->item(0)->nodeValue; $pubs = $sr_xml->getElementsByTagName('publisher'); for ($i = 0; $i < $pubs->length; $i++) { $id = $pubs->item($i)->getAttribute('id'); $name = $pubs->item($i)->getElementsByTagName('name')->item(0)->nodeValue; $p = new Publisher($id, $name); $p->setPrearchiving($pubs->item($i)->getElementsByTagName('prearchiving')->item(0)->nodeValue); $p->setPostarchiving($pubs->item($i)->getElementsByTagName('postarchiving')->item(0)->nodeValue); $p->setPdfarchiving($pubs->item($i)->getElementsByTagName('pdfarchiving')->item(0)->nodeValue); $prerestrictions_xml = $pubs->item($i)->getElementsByTagName('prerestriction'); $prerestrictions = array(); for ($j = 0; $j < $prerestrictions_xml->length; $j++) { $prerestrictions[] = strip_tags(trim($prerestrictions_xml->item($j)->nodeValue)); } $p->setPrerestrictions($prerestrictions); $postrestrictions_xml = $pubs->item($i)->getElementsByTagName('postrestriction'); $postrestrictions = array(); for ($j = 0; $j < $postrestrictions_xml->length; $j++) { $postrestrictions[] = strip_tags(trim($postrestrictions_xml->item($j)->textContent)); } $p->setPostrestrictions($postrestrictions); $pdfrestrictions_xml = $pubs->item($i)->getElementsByTagName('pdfrestriction'); $pdfrestrictions = array(); for ($j = 0; $j < $pdfrestrictions_xml->length; $j++) { $pdfrestrictions[] = strip_tags(trim($pdfrestrictions_xml->item($j)->nodeValue)); } $p->setPdfrestrictions($pdfrestrictions); $conditions_xml = $pubs->item($i)->getElementsByTagName('condition'); $conditions = array(); for ($j = 0; $j < $conditions_xml->length; $j++) { $conditions[] = $conditions_xml->item($j)->nodeValue; } $p->setConditions($conditions); $this->publishers[$id] = $p; } } }