<?php /** * @file * Menu callback functionality for islandora/ingest */ /** * Callback function for islandora/ingest/%collection_pid * * @TODO: validate?: pid, registry return * @param string $pid */ function islandora_ingest_callback($collection_object) { if (!$collection_object) { return drupal_not_found(); } $ingest_registry = module_invoke_all('islandora_ingest_registry', $collection_object); $registry_count = count($ingest_registry); if ($registry_count == 0) { // No ingest implementations. drupal_set_message(t('There are no ingest methods specified for @name.', array('@name', $collection_object->label))); drupal_goto('islandora/object/' . $collection_object->id); } elseif ($registry_count == 1) { // One registry implementation, go there drupal_goto($ingest_registry[0]['url']); } else { // Multiple ingest routes registered return islandora_ingest_registry_render($ingest_registry); } } // @TODO: theme function islandora_ingest_registry_render($ingest_registry) { $output = array( '#type' => 'markup', '#markup' => '', ); foreach ($ingest_registry AS $ingest_route) { $output['#markup'] .= l($ingest_route['name'], $ingest_route['url']) . '<br/>'; } return $output; }