<?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;
}