function _rolereference_potential_references in Role Reference 6
Fetch an array of all candidate referenced roles.
This info is used in various places (allowed values, autocomplete results, input validation...). Some of them only need the rids, others rid + names, others yet rid + names + rendered row (for display in widgets). The array we return contains all the potentially needed information, and lets consumers use the parts they actually need.
Parameters
$field: The field description.
$string: Optional string to filter titles on (used by autocomplete).
$match: Operator to match filtered name against, can be any of: 'contains', 'equals', 'starts_with'
$ids: Optional role ids to lookup (the $string and $match arguments will be ignored).
$limit: If non-zero, limit the size of the result set.
Return value
An array of valid roles in the form: array( rid => array( 'name' => The role name, 'rendered' => The text to display in widgets (can be HTML) ), ... )
3 calls to _rolereference_potential_references()
- rolereference_allowed_values in ./
rolereference.module - Implementation of hook_allowed_values().
- rolereference_autocomplete in ./
rolereference.module - Menu callback; Retrieve a pipe delimited string of autocomplete suggestions for existing roles
- rolereference_autocomplete_validate in ./
rolereference.module - Validate an autocomplete element.
File
- ./
rolereference.module, line 682 - Defines a field type for referencing a role. Based almost entirely on nodereference and userreference modules.
Code
function _rolereference_potential_references($field, $string = '', $match = 'contains', $ids = array(), $limit = NULL) {
static $results = array();
// Create unique id for static cache.
$cid = $field['field_name'] . ':' . $match . ':' . ($string !== '' ? $string : implode('-', $ids)) . ':' . $limit;
if (!isset($results[$cid])) {
$references = FALSE;
if (module_exists('views') && !empty($field['advanced_view']) && $field['advanced_view'] != '--') {
$references = _rolereference_potential_references_views($field, $string, $match, $ids, $limit);
}
// If the view doesn't exist, we got FALSE, and fallback to the regular 'standard mode'.
if ($references === FALSE) {
$references = _rolereference_potential_references_standard($field, $string, $match, $ids, $limit);
}
// Store the results.
$results[$cid] = !empty($references) ? $references : array();
}
return $results[$cid];
}