<?php
/**
 * @file
 * Autocomplete functionality for content models in Islandora.
 */

/**
 * Autocomplete the content model name.
 *
 * @param string $string
 *   A search string.
 *
 * @return string
 *   The rendered JSON results.
 */
function islandora_content_model_autocomplete($string) {
  $content_models = islandora_get_content_model_names();
  $output = array();
  foreach ($content_models as $model => $label) {
    if (preg_match("/{$string}/i", $label) !== 0) {
      $output[$model] = $label;
    }
  }
  return drupal_json_output($output);
}

/**
 * Gets a map of form names suitable for use as select #options.
 */
function islandora_get_content_model_names() {
  module_load_include('inc', 'islandora', 'includes/utilities');
  $results = islandora_get_content_models();
  $ret = array();
  foreach ($results as $result) {
    $ret[$result['pid']] = "{$result['label']} ({$result['pid']})";
  }
  return $ret;
}

/**
 * Minor array transformation.
 *
 * @param array $content
 *   The array of results as returned from Tuque's RI query interface.
 *
 * @return array
 *   An array of results in a more usable format.
 */
function islandora_parse_query($content) {
  $content_models = array();
  foreach ($content as $model) {
    $content_models[] = $model['object']['value'];
  }
  $content_models = array_unique($content_models);
  $content_models = array_values($content_models);
  return $content_models;
}