Some bugfixes inspired by @antennaio
This commit is contained in:
parent
008d5599c4
commit
98144a2c4a
|
@ -129,7 +129,7 @@ class OAI2Server {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function GetRecord() {
|
public function GetRecord() {
|
||||||
if (!isset($this->args['metadataPrefix'])) {
|
if (!isset($this->args['identifier']) || !isset($this->args['metadataPrefix'])) {
|
||||||
$this->errors[] = new OAI2Exception('badArgument');
|
$this->errors[] = new OAI2Exception('badArgument');
|
||||||
} else {
|
} else {
|
||||||
$metadataFormats = call_user_func($this->listMetadataFormatsCallback);
|
$metadataFormats = call_user_func($this->listMetadataFormatsCallback);
|
||||||
|
@ -137,9 +137,6 @@ class OAI2Server {
|
||||||
$this->errors[] = new OAI2Exception('cannotDisseminateFormat');
|
$this->errors[] = new OAI2Exception('cannotDisseminateFormat');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!isset($this->args['identifier'])) {
|
|
||||||
$this->errors[] = new OAI2Exception('badArgument');
|
|
||||||
}
|
|
||||||
if (empty($this->errors)) {
|
if (empty($this->errors)) {
|
||||||
try {
|
try {
|
||||||
if ($record = call_user_func($this->getRecordCallback, $this->args['identifier'], $this->args['metadataPrefix'])) {
|
if ($record = call_user_func($this->getRecordCallback, $this->args['identifier'], $this->args['metadataPrefix'])) {
|
||||||
|
@ -208,7 +205,9 @@ class OAI2Server {
|
||||||
}
|
}
|
||||||
if (empty($this->errors)) {
|
if (empty($this->errors)) {
|
||||||
try {
|
try {
|
||||||
$records_count = call_user_func($this->listRecordsCallback, $metadataPrefix, $this->formatTimestamp($from), $this->formatTimestamp($until), true);
|
if (!($records_count = call_user_func($this->listRecordsCallback, $metadataPrefix, $this->formatTimestamp($from), $this->formatTimestamp($until), true))) {
|
||||||
|
throw new OAI2Exception('noRecordsMatch');
|
||||||
|
}
|
||||||
$records = call_user_func($this->listRecordsCallback, $metadataPrefix, $this->formatTimestamp($from), $this->formatTimestamp($until), false, $deliveredRecords, $maxItems);
|
$records = call_user_func($this->listRecordsCallback, $metadataPrefix, $this->formatTimestamp($from), $this->formatTimestamp($until), false, $deliveredRecords, $maxItems);
|
||||||
foreach ($records as $record) {
|
foreach ($records as $record) {
|
||||||
if ($this->verb == 'ListRecords') {
|
if ($this->verb == 'ListRecords') {
|
||||||
|
@ -230,7 +229,7 @@ class OAI2Server {
|
||||||
$expirationDatetime = null;
|
$expirationDatetime = null;
|
||||||
}
|
}
|
||||||
if (isset($restoken)) {
|
if (isset($restoken)) {
|
||||||
$this->response->createResumptionToken($restoken, $expirationDatetime, $records_count, $deliveredRecords);
|
$this->response->createResumptionToken($restoken, $expirationDatetime, $records_count, $deliveredRecords-$maxItems);
|
||||||
}
|
}
|
||||||
} catch (OAI2Exception $e) {
|
} catch (OAI2Exception $e) {
|
||||||
$this->errors[] = $e;
|
$this->errors[] = $e;
|
||||||
|
|
|
@ -34,13 +34,12 @@ class OAI2XMLResponse {
|
||||||
$this->addChild($oai_node, 'responseDate', gmdate('Y-m-d\TH:i:s\Z'));
|
$this->addChild($oai_node, 'responseDate', gmdate('Y-m-d\TH:i:s\Z'));
|
||||||
$this->doc->appendChild($oai_node);
|
$this->doc->appendChild($oai_node);
|
||||||
$request = $this->addChild($this->doc->documentElement, 'request', $uri);
|
$request = $this->addChild($this->doc->documentElement, 'request', $uri);
|
||||||
|
if (!empty($this->verb)) {
|
||||||
$request->setAttribute('verb', $this->verb);
|
$request->setAttribute('verb', $this->verb);
|
||||||
|
}
|
||||||
foreach($request_args as $key => $value) {
|
foreach($request_args as $key => $value) {
|
||||||
$request->setAttribute($key, $value);
|
$request->setAttribute($key, $value);
|
||||||
}
|
}
|
||||||
if (!empty($this->verb)) {
|
|
||||||
$this->verbNode = $this->addChild($this->doc->documentElement, $this->verb);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,6 +66,9 @@ class OAI2XMLResponse {
|
||||||
* @param $value Type: string. The content of appending node.
|
* @param $value Type: string. The content of appending node.
|
||||||
*/
|
*/
|
||||||
function addToVerbNode($nodeName, $value = null) {
|
function addToVerbNode($nodeName, $value = null) {
|
||||||
|
if (!isset($this->verbNode) && !empty($this->verb)) {
|
||||||
|
$this->verbNode = $this->addChild($this->doc->documentElement, $this->verb);
|
||||||
|
}
|
||||||
return $this->addChild($this->verbNode, $nodeName, $value);
|
return $this->addChild($this->verbNode, $nodeName, $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue