You are here

function noderelationships_settings_load in Node Relationships 6

Get relationship settings for the given content type.

Parameters

$nodetype: The node type.

$settings_group: The group of settings the caller is interested in. Optional, options: 'noderef', 'backref', 'all' (default).

Return value

array The requested settings array.

15 calls to noderelationships_settings_load()
noderelationships_admin_settings_backref in ./noderelationships.admin.inc
Back reference settings form.
noderelationships_admin_settings_backref_submit in ./noderelationships.admin.inc
Submit handler for the back reference settings form.
noderelationships_admin_settings_noderef in ./noderelationships.admin.inc
Node reference extras form.
noderelationships_admin_settings_noderef_submit in ./noderelationships.admin.inc
Submit handler for the node reference extras form.
noderelationships_backref_access in ./noderelationships.module
Access callback for the node relationships tab.

... See full list

File

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

Code

function noderelationships_settings_load($nodetype, $settings_group = 'all') {

  // Build default settings structure.
  $settings = array(
    'noderef' => array(
      'search_and_reference_view' => array(),
      'view_in_new_window' => array(),
      'edit_reference' => array(),
      'create_and_reference' => array(),
      'translate_and_reference' => array(),
    ),
    'backref' => array(
      'regions' => array(),
    ),
  );

  // Read settings from database.
  $regions = noderelationships_get_back_reference_regions();
  foreach (noderelationships_settings_list("type_name = '%s'", $nodetype) as $row) {
    $relation_key = $row->related_type . ':' . $row->field_name;
    if ($row->relation_type == 'noderef') {
      if (!empty($row->settings['search_and_reference_view'])) {
        $settings['noderef']['search_and_reference_view'][$row->field_name] = $row->settings['search_and_reference_view'];
      }
      if (!empty($row->settings['view_in_new_window'])) {
        $settings['noderef']['view_in_new_window'][$row->field_name] = $row->field_name;
      }
      if (!empty($row->settings['edit_reference'])) {
        $settings['noderef']['edit_reference'][$row->field_name] = $row->field_name;
      }
      if (!empty($row->settings['create_and_reference'])) {
        $settings['noderef']['create_and_reference'][$row->field_name] = $row->field_name;
      }
      if (!empty($row->settings['translate_and_reference'])) {
        $settings['noderef']['translate_and_reference'][$row->field_name] = $row->field_name;
      }
    }
    elseif ($row->relation_type == 'backref') {
      $region = $row->settings['region'];
      if (isset($regions[$region])) {
        if (!isset($settings['backref']['regions'][$region])) {
          $settings['backref']['regions'][$region] = array();
        }
        $settings['backref']['regions'][$region][$relation_key] = array(
          'weight' => $row->settings['weight'],
          'back_reference_view' => $row->settings['back_reference_view'],
        );
      }
    }
  }

  // Sort back reference regions by weight.
  foreach (array_keys($settings['backref']['regions']) as $region) {
    noderelationships_settings_region_sort($settings['backref']['regions'][$region]);
  }
  if ($settings_group == 'noderef') {
    return $settings['noderef'];
  }
  elseif ($settings_group == 'backref') {
    return $settings['backref'];
  }
  return $settings;
}