Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 2
0
 /**
  * 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);
 }