Skip to content

Build, Access, Modify and Delete Fedora objects with the Tuque interface

nigelgbanks edited this page Apr 18, 2013 · 2 revisions
$connection = new RepositoryConnection($fedoraUrl, $username, $password);
$connection->reuseConnection = TRUE;
$repository = new FedoraRepository(
       new FedoraApi($connection),
       new SimpleCache());
D7 module_load_include('inc', 'islandora', 'includes/IslandoraTuque');
D6 module_load_include('inc', 'fedora_repository', 'api/tuque');
$my_islandora_tuque = new IslandoraTuque();
$repository = $my_islandora_tuque->repository;

All interaction with Fedora can now take place through the $repository object. D7 There are some wrapper functions that handle some errors and fire some hooks in islandora.module.

Create array of ContentModels for the object. This will normally be a single element array:

$content_models = array(array('pid' => 'islandora:collectionCModel'));
$namespace = 'test';
$collection_pid = 'islandora:root';
$fedora_object = $repository->constructObject($namespace); // allow fedora to generate a PID

or with a specified PID:

$fedora_object = $repository->constructObject($pid); // create an object with the given PID
$fedora_object->label = “my new object”;
$fedora_object->owner = $username;
$datastream_id = “TN”;
$new_datastream = $fedora_object->constructDatastream($datastream_id);

or

$datastream_id = "MODS";
$controlGroup = "X";
$new_datastream = $fedora_object->constructDatastream($datastream_id, $controlGroup);
$new_datastream->label = 'MYDSID';
$new_datastream->mimetype = 'something/something';
$new_datastream->setContentFromUrl(URL_TO_CONTENT);

or

$new_datastream->setContentFromFile(PATH_TO_CONTENT);

or

$new_datastream->setContentFromString(“content”);
$new_datastream->url = 'some redirect URL';
$fedora_object->ingestDatastream($new_datastream);
$fedora_object->relationships->remove(FEDORA_MODEL_URI, 'hasModel', 'islandora:collectionCModel');
$fedora_object->relationships->add(FEDORA_MODEL_URI, 'hasModel', 'islandora:imageCModel');
$fedora_object['your dsid']->relationships->remove(ISLANDORA_SCHOLAR_EMBARGO_RELS_URI, 'embargo-until');
$fedora_object['your dsid']->relationships->add(ISLANDORA_SCHOLAR_EMBARGO_RELS_URI, 'embargo-until', 'some date', TRUE);
$new_fedora_object = islandora_add_object($fedora_object);

or ingest with existing repository object

$repository->ingestObject($fedora_object);
$pid = “test:1”;
$fedora_object = islandora_object_load($pid);

or

$fedora_object = $repository->getObject($pid);
if (!$fedora_object) {
  drupal_set_message("Fedora Object isn't in the repo!");
}
$fedora_object->repository->purgeObject($pid);

or

$repository->purgeObject($pid);
$fedora_object->delete()
$pid = $fedoraObject->id;
$rels = $fedora_object->relationships->get()
[0] = Array
  (
   [predicate] => Array
       (
           [value] => hasModel
           [alias] => fedora-model
           [namespace] => info:fedora/fedora-system:def/model#
       )

   [object] => Array
       (
           [literal] => 
           [value] => islandora:collectionCModel
       )
  )
[1] => Array......
$rels = $fedora_object->relationships->get('info:fedora/fedora-system:def/model#', 'hasModel' );
$datastreams = $fedora_object->repository->api->a->listDatastreams($pid);
$datastream = $fedora_object['dsid'];
$dsid = $datastream->id;
label
controlGroup
versionable
state
mimetype
format
size
checksum
checksumType
createdDate
content
url
location
logMessage
foreach($fedora_object as $datastream){
 // access individual datastreams.
}
$old_mime = $datastream->mimeType;
$datastream->mimeType = “new/mimetype”;
$datastream->content = file_get_contents('http://myexample.com/sample.jpg'));
// Create DS or grab it.
if (!isset($fedora_object["JP2"])) {
  $jp2_ds = $fedora_object->constructDatastream('JP2', 'M');
}
else {
  $jp2_ds = $fedora_object["JP2"];
}
$jp2_ds->label = 'Derived display JP2.';
$jp2_ds->mimeType = 'image/jp2';
// Don't copy the file.
$jp2_ds->setContentFromFile($jp2_file, FALSE);
// May not need to be called if the DS already existed
$fedora_object->ingestDatastream($jp2_ds);
$objects = $fedora_object->repository->ri->itqlQuery($query, 'unlimited'); // for itql
$objects = $fedora_object->repository->ri->sparqlQuery($query); // for SparQL queries

Clone this wiki locally