You are here

function noderelationships_get_backref_view_overrides in Node Relationships 6

Get overrides for back reference views.

Parameters

$view:

$referrer_field:

See also

noderelationships_customize_backref_view()

content_views_data()

1 call to noderelationships_get_backref_view_overrides()
noderelationships_customize_backref_view in ./noderelationships.inc
Apply custom configuration to the given back reference view.

File

./noderelationships.inc, line 841
Common functions for the noderelationships module.

Code

function noderelationships_get_backref_view_overrides($view, $referrer_field) {

  // Obtain database and views information about the field.
  if (!function_exists('content_views_field_views_data')) {
    module_load_include('inc', 'content', 'includes/views/content.views');
  }
  $module = $referrer_field['module'];
  $views_data = module_invoke($module, 'field_settings', 'views data', $referrer_field);
  $table_alias = content_views_tablename($referrer_field);
  $db_info = content_database_info($referrer_field);
  $nodereference_column = $db_info['columns']['nid']['column'];
  $view_overrides = array();

  // Build relationship overrides.
  $view_overrides['relationships'] = array(
    $nodereference_column => array(
      'label' => $views_data[$table_alias][$nodereference_column]['relationship']['label'],
      'id' => $nodereference_column,
      'table' => $table_alias,
      'field' => $nodereference_column,
      'required' => 1,
      'delta' => -1,
      'relationship' => 'none',
    ),
  );
  $existing_view_relationships = $view->display_handler
    ->get_option('relationships');
  if (!empty($existing_view_relationships)) {
    $view_overrides['relationships'] = array_merge($view_overrides['relationships'], $existing_view_relationships);
  }

  // Build argument overrides.
  $common_argument_options = array(
    'default_action' => 'empty',
    'default_argument_type' => 'fixed',
    'default_argument' => '',
    'validate_type' => 'none',
    'validate_fail' => 'not found',
    'relationship' => 'none',
  );
  $view_overrides['arguments'] = array(
    $nodereference_column => array_merge($common_argument_options, array(
      'id' => $nodereference_column,
      'table' => $table_alias,
      'field' => $nodereference_column,
    )),
    'type' => array_merge($common_argument_options, array(
      'id' => 'type',
      'table' => 'node',
      'field' => 'type',
    )),
  );
  return $view_overrides;
}