You are here

function theme_noderelationships_formatter_count in Node Relationships 6

Field formatter for back references count.

File

./noderelationships.pages.inc, line 257
Implementation of user land pages.

Code

function theme_noderelationships_formatter_count($element) {

  // Check if we have a node here. We should.
  if (empty($element['#node']) || empty($element['#node']->nid)) {
    return '';
  }

  // Load back reference field data.
  $field = content_fields($element['#field_name'], $element['#type_name']);
  if (empty($field['referrer_field']) || empty($field['referrer_type'])) {
    return '';
  }

  // Include common module functions.
  module_load_include('inc', 'noderelationships');

  // Obtain back reference settings for this type.
  $backref_settings = noderelationships_settings_load($element['#type_name'], 'backref');
  $backref_regions = $backref_settings['regions'];
  if (empty($backref_regions[NODERELATIONSHIPS_BACKREF_REGION_FIELD])) {
    return '';
  }

  // Check we really have relation information.
  $region_settings = $backref_regions[NODERELATIONSHIPS_BACKREF_REGION_FIELD];
  if (empty($region_settings[$field['referrer_type'] . ':' . $field['referrer_field']])) {
    return '';
  }

  // Get information about the referrer field.
  $referrer_field = content_fields($field['referrer_field'], $field['referrer_type']);
  if (empty($referrer_field)) {
    return '';
  }
  $db_info = content_database_info($referrer_field);
  if (empty($db_info) || empty($db_info['columns'])) {
    return '';
  }
  $db_column = $field['referrer_field'] . '_' . current(array_keys($db_info['columns']));

  // Compute and return the count of back references for the given field.
  return db_result(db_query('SELECT COUNT(*) FROM {' . $db_info['table'] . '} WHERE ' . $db_column . ' = %d', $element['#node']->nid));
}