예제 #1
0
 static function getObjectPoolByRIQuery($object_pool_query = null)
 {
     $object_query_results = FedoraObject::getRIQueryResults('apiary:SpecimenBinders', $object_pool_query);
     $sxml = new SimpleXMLElement($object_query_results);
     $object_pool_pid = array();
     foreach ($sxml->xpath('//@uri') as $uri) {
         array_push($object_pool_pid, substr(strstr($uri, '/'), 1));
     }
     return $object_pool_pid;
 }
예제 #2
0
 static function setImageStatus($image_pid, $status_type, $status)
 {
     global $user;
     $datastream_name = "status";
     $datastream_label = "Image Status";
     $dom = FedoraObject::getManagedXMLDom($image_pid, $datastream_name);
     if ($dom != false) {
         $dom->getElementsByTagName($status_type)->item(0)->nodeValue = $status;
         $dom->getElementsByTagName($status_type . 'UpdatedBy')->item(0)->nodeValue = $user->name;
     } else {
         //Shouldn't be able to get here as a lock is needed before a status can be updated.
         return false;
     }
     //We don't get here if we fail
     $success = FedoraObject::createManagedXMLDom($image_pid, $datastream_name, $datastream_label, $dom);
     if ($success) {
         include_once drupal_get_path('module', 'apiary_project') . '/workflow/include/search.php';
         $search_instance = new search();
         $search_instance->index($image_pid);
         return $dom;
     } else {
         //can't update this datastream!
         return false;
     }
 }
/**
 * @param FedoraObject $entity
 * @param string $entityPid
 *
 * @return string
 */
function checkForReplacedEntity($repository, $entity, $entityPid, $entityTitle, &$replacementPids, $logFile)
{
    if (array_key_exists($entityPid, $replacementPids)) {
        return $replacementPids[$entityPid];
    }
    $entityMods = $entity->getDatastream('MODS');
    $entityDoc = new DOMDocument();
    if (!$entityDoc->loadXML($entityMods->content)) {
        echo "Could not load XML for {$entityPid}";
        return array($entityPid, $entityTitle);
    }
    $personNotes = $entityDoc->getElementsByTagNameNS("http://marmot.org/local_mods_extension", 'personNotes')->item(0);
    $newEntityPid = null;
    if ($personNotes != null) {
        $personNotes = $personNotes->textContent;
        if (strlen($personNotes) > 0) {
            if (strpos($personNotes, 'replace_old') != false) {
                if (preg_match('/(evld:\\d+)/', $personNotes, $matches)) {
                    $newEntityPid = $matches[1];
                }
            }
        }
    }
    $placeNotes = $entityDoc->getElementsByTagNameNS("http://marmot.org/local_mods_extension", 'placeNotes')->item(0);
    if ($placeNotes != null) {
        $placeNotes = $placeNotes->textContent;
        if (strlen($placeNotes) > 0) {
            if (strpos($placeNotes, 'replace_old') != false) {
                if (preg_match('/(evld:\\d+)/', $placeNotes, $matches)) {
                    $newEntityPid = $matches[1];
                }
            }
        }
    }
    $abstract = $entityDoc->getElementsByTagNameNS("http://www.loc.gov/mods/v3", 'abstract')->item(0);
    if ($abstract != null) {
        $abstract = $abstract->textContent;
        if (strlen($abstract) > 0) {
            if (strpos($abstract, 'replace_old') != false) {
                if (preg_match('/(evld:\\d+)/', $abstract, $matches)) {
                    $newEntityPid = $matches[1];
                }
            }
        }
    }
    if ($newEntityPid == null) {
        $replacementPids[$entityPid] = array($entityPid, $entityTitle);
    } else {
        list($oldNamespace, $oldId) = explode(':', $entityPid);
        list($newNamespace, $newId) = explode(':', $newEntityPid);
        if ($oldNamespace != $newNamespace) {
            //echo("--Warning namespace for replacement PID changed $entityPid to $newEntityPid using old namespace<br/>\r\n");
            $newEntityPid = $oldNamespace . ':' . $newId;
        }
        $newEntity = getFedoraObjectByPid($repository, $newEntityPid);
        echo "--Changing Entity ({$entityPid}) {$entityTitle} to ({$newEntityPid}) {$newEntity->label}<br/>\r\n";
        fwrite($logFile, "--Changing Entity ({$entityPid}) {$entityTitle} to ({$newEntityPid}) {$newEntity->label}\r\n");
        $replacementPids[$entityPid] = array($newEntityPid, $newEntity->label);
    }
    return $replacementPids[$entityPid];
}
예제 #4
0
 static function unlockSpecimen($specimen_pid = null)
 {
     global $user;
     $timestamp = date("YmdHis");
     if ($specimen_pid == null) {
         $specimen_pid = $this->pid;
     }
     if ($specimen_pid != null && $specimen_pid != '') {
         //returns specimenMetadata_record
         return FedoraObject::getMetadata_record($specimen_pid, 'specimenMetadata', 'specimenMetadata_record', 'api');
     } else {
         return false;
     }
     return $locked;
 }
/**
 * @param $fileToLoad
 * @param $datastream
 * @param $datastreamLabel
 * @param $mimeType
 * @param FedoraObject $fedoraObject
 * @param $datastreamFile
 */
function addDatastream($fileToLoad, $datastream, $datastreamLabel, $mimeType, $fedoraObject, $datastreamFile)
{
    $imageDatastream = $fedoraObject->constructDatastream($datastream);
    $imageDatastream->label = $datastreamLabel;
    $imageDatastream->mimetype = $mimeType;
    set_time_limit(1600);
    $imageDatastream->setContentFromFile($fileToLoad);
    $fedoraObject->ingestDatastream($imageDatastream);
    unset($imageDatastream);
    fwrite($datastreamFile, "  {$fileToLoad} uploaded\r\n");
}