Browse Source

Added helper function to make it cleaner to define required objects.

pull/516/head
Nigel Banks 11 years ago
parent
commit
0af2bea1aa
  1. 40
      includes/solution_packs.inc

40
includes/solution_packs.inc

@ -58,6 +58,46 @@ function islandora_solution_packs_get_required_objects($module = NULL) {
}
}
/**
* Convenience function used to create objects in hook_required_objects().
*
* @param IslandoraTuque $connection
* The connection to the fedora repository.
* @param array $args
* An associative array defining the objects properties and datastreams"
* - pid: The identifier for the new object.
* - label: The new object's label.
* - models: String / array of content model identifier(s) for the new object.
* - datastreams: An associative array of properties for each datastream where
* each key represents the datastream's identifier:
* - control_group: The control group for this datastream defaults to 'M'.
* - label: The datastream's label.
* - file: The file path to the datastream's content.
* - mimetype: The mimetype of the given file. Defaults to 'text/xml'.
*
* @return AbstractObject
* A new Fedora Object, that has yet to be persisted to the repository.
*/
function islandora_solution_pack_create_required_object(IslandoraTuque $connection, array $args) {
$object = $connection->repository->constructObject($args['pid']);
$object->owner = 'fedoraAdmin';
$object->label = $args['label'];
foreach ($args['datastreams'] as $dsid => $properties) {
$control_group = isset($properties['control_group']) ? $properties['control_group'] : 'M';
$datastream = $object->constructDatastream($dsid, $control_group);
$datastream->label = isset($properties['label']) ? $properties['label'] : $dsid;
$datastream->mimetype = isset($properties['mimetype']) ? $properties['mimetype'] : 'text/xml';
$datastream->setContentFromFile($properties['file'], FALSE);
$object->ingestDatastream($datastream);
}
// We must set the model after the datastreams as Tuque will ignore the
// RELS-EXT content if the model is set first.
if (isset($args['model'])) {
$object->models = $args['model'];
}
return $object;
}
/**
* Solution pack admin page callback.
*

Loading…
Cancel
Save