You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.4 KiB
58 lines
1.4 KiB
<?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(array $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; |
|
}
|
|
|