function _pm_permission_get_field_names_per_field_type in Drupal PM (Project Management) 7.3
Same name and namespace in other branches
- 8 includes/pm.permission.inc \_pm_permission_get_field_names_per_field_type()
Get a list of field names matching a specific type.
This function works reliably for "entityreference" only.
Parameters
string $type: Type of field e.g. entityreference.
Return value
array $field_names Field names categorized by target entity type.
1 call to _pm_permission_get_field_names_per_field_type()
- pm_permission_admin in includes/
pm.permission.inc - Admin settings form.
File
- includes/
pm.permission.inc, line 148 - Main module file for the pm_permission module.
Code
function _pm_permission_get_field_names_per_field_type($type, $entity_type = NULL, $bundle_name = NULL) {
$field_names = array(
'user' => array(
'' => t('- None -'),
),
'node' => array(
'' => t('- None -'),
),
);
// Get all entityreference field names.
$query = db_select('field_config', 'f');
$query
->fields('f', array(
'field_name',
));
$query
->condition('f.type', $type);
$query
->distinct();
$rows = $query
->execute();
foreach ($rows as $row) {
$field_name = $row->field_name;
if ($bundle_name and !field_info_instance($entity_type, $field_name, $bundle_name)) {
continue;
}
$field_info = field_info_field($field_name);
if (isset($field_info['settings']['target_type'])) {
// Code...
$field_names[$field_info['settings']['target_type']][$field_name] = $field_name;
}
}
return $field_names;
}