function relation_form_views_ui_add_item_form_alter in Relation 8
Same name and namespace in other branches
- 8.2 relation.views.inc \relation_form_views_ui_add_item_form_alter()
- 7 views/relation.views.inc \relation_form_views_ui_add_item_form_alter()
Implements hook_form_views_ui_add_item_form_alter().
File
- ./
relation.views.inc, line 357
Code
function relation_form_views_ui_add_item_form_alter(&$form, $form_state) {
if ($form_state['type'] == 'relationship' && $form_state['view']->base_table != 'relation') {
foreach (RelationType::loadMultiple() as $relation_type) {
foreach (array(
'source_bundles',
'target_bundles',
) as $endpoint_bundles) {
foreach ($relation_type->{$endpoint_bundles} as $relation_bundle) {
if (substr($relation_bundle, 0, 9) == 'relation:') {
return;
}
}
}
}
// Collect the relation types already added as a relationship.
$preg_pieces = array();
foreach ($form_state['view']->display_handler
->get_handlers('relationship') as $relationship) {
if (get_class($relationship) == 'relation_handler_relationship') {
$preg_pieces[] = '^relation\\.relation_base_' . $relationship->definition['relation_type'];
}
}
if ($preg_pieces) {
// Filter out impossible Views relationships.
$relation_type_preg = '/' . implode('|', array_unique($preg_pieces)) . '/';
foreach (Element::children($form['options']['name']) as $name) {
if (substr($name, 0, 9) == 'relation.' && !preg_match($relation_type_preg, $name)) {
$form['options']['name'][$name]['#access'] = FALSE;
}
}
}
}
}