/** * Responds to GetRecord OAI verb */ private function getRecord($oaiData) { if ($ps_identifier = $this->opo_request->getParameter('identifier', pString)) { if (!($vs_item_id = OaiIdentifier::oaiIdToItem($ps_identifier))) { $this->throwError(self::OAI_ERR_ID_DOES_NOT_EXIST, _t('Identifier is empty')); return false; } } $getRecord = $oaiData->createElement('GetRecord'); $oaiData->documentElement->appendChild($getRecord); $o_dm = Datamodel::load(); $t_item = $o_dm->getInstanceByTableName($this->table, true); if (!$t_item->load($vs_item_id)) { // error - identifier invalid $this->throwError(self::OAI_ERR_ID_DOES_NOT_EXIST, _t('Identifier is invalid')); return; } $va_access_values = caGetUserAccessValues($this->opo_request, array_merge($this->opa_provider_info, array('ignoreProvidence' => true))); $vb_show_deleted = (bool) $this->opa_provider_info['show_deleted']; $vb_dont_enforce_access_settings = (bool) $this->opa_provider_info['dont_enforce_access_settings']; if (!$vb_dont_enforce_access_settings && $t_item->hasField('access')) { if (!in_array($t_item->get('access'), $va_access_values)) { $this->throwError(self::OAI_ERR_ID_DOES_NOT_EXIST, _t('Identifier is invalid')); return; } } if ($t_item->hasField('deleted')) { if (!$vb_show_deleted && (bool) $t_item->get('deleted')) { $this->throwError(self::OAI_ERR_ID_DOES_NOT_EXIST, _t('Identifier is deleted')); return; } } $va_last_change = $t_item->getLastChangeTimestamp(); $vs_export = ca_data_exporters::exportRecord($this->getMappingCode(), $t_item->getPrimaryKey()); $headerData = array('identifier' => OaiIdentifier::itemToOaiId($vs_item_id), 'datestamp' => self::unixToUtc((int) $va_last_change['timestamp'])); $exportFragment = $oaiData->createDocumentFragment(); $exportFragment->appendXML($vs_export); $recordElement = $getRecord->appendChild($oaiData->createElement('record')); $this->createElementWithChildren($oaiData, $recordElement, 'header', $headerData); $metadataElement = $oaiData->createElement('metadata'); $metadataElement->appendChild($exportFragment); $recordElement->appendChild($metadataElement); }
/** * Responds to GetRecord OAI verb */ private function getRecord($oaiData) { if ($ps_identifier = $this->opo_request->getParameter('identifier', pString)) { if (!($vs_item_id = OaiIdentifier::oaiIdToItem($ps_identifier))) { $this->throwError(self::OAI_ERR_ID_DOES_NOT_EXIST, _t('Identifier is empty')); return false; } } $getRecord = $oaiData->createElement('GetRecord'); $oaiData->documentElement->appendChild($getRecord); $o_dm = Datamodel::load(); $t_item = $o_dm->getInstanceByTableName($this->table, true); if (!$t_item->load($vs_item_id)) { // error - identifier invalid $this->throwError(self::OAI_ERR_ID_DOES_NOT_EXIST, _t('Identifier is invalid')); return; } $vs_export = ca_data_exporters::exportRecord($this->getMappingCode(), $t_item->getPrimaryKey()); $headerData = array('identifier' => OaiIdentifier::itemToOaiId($ps_identifier), 'datestamp' => self::unixToUtc(time())); $exportFragment = $oaiData->createDocumentFragment(); $exportFragment->appendXML($vs_export); $recordElement = $getRecord->appendChild($oaiData->createElement('record')); $this->createElementWithChildren($oaiData, $recordElement, 'header', $headerData); $metadataElement = $oaiData->createElement('metadata'); $metadataElement->appendChild($exportFragment); $recordElement->appendChild($metadataElement); }