You are here

function viewfield_field in Viewfield 5

Same name and namespace in other branches
  1. 6.2 viewfield.module \viewfield_field()
  2. 6 viewfield.module \viewfield_field()

Implementation of hook_field().

File

./viewfield.module, line 93
Defines a field type for referencing a view from a node

Code

function viewfield_field($op, &$node, $field, &$node_field, $teaser, $page) {
  if ($op == 'load') {
    if (!$node_field[0]['vname']) {

      // We're in default land here.
      $items = $field['super_default_widget'][0][$field['field_name']];
      viewfield_widget('process form values', $node, $field, $items);
      $items[0]['default'] = true;
      $adds = array(
        $field['field_name'] => $items,
      );
      return $adds;
    }
  }
  elseif ($op == 'view') {

    // Custom override of the view function to eliminate the 'default' key if any.
    foreach ($node_field as $delta => $item) {
      if (!is_array($node_field[$delta])) {
        continue;
      }

      // From _content_field_view().
      $context = $teaser ? 'teaser' : 'full';
      $formatter = isset($field['display_settings'][$context]['format']) ? $field['display_settings'][$context]['format'] : 'default';
      $node_field[$delta]['view'] = content_format($field, $item, $formatter, $node);
    }
    $value = theme('field', $node, $field, $node_field, $teaser, $page);
    return $value;
  }
}