$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', 'islandora', 'includes/tuque'); $repository= new IslandoraTuque(); |
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'; |
module_load_include('inc', 'islandora', '/includes/islandora.ingest'); $fedora_object = islandora_ingest_get_object($content_models, $collection_pid, 'isMemberOf', $namespace); |
or create the object directly with tuque:
$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"); |
$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'); |
$new_fedora_object = islandora_ingest_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 |
$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']; |
$pid = $datastream->id; |
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', '0'); // for itql $objects = $fedora_object->repository->ri->sparqlQuery($query); // for SparQL queries |