You are here

public function reference_table_formatter_base_type::render_table in Reference Table Formatter 7

Render a table of content from the plugin.

Parameters

$items: The content items to render.

Return value

array A table array.

File

./reference_table_formatter_base_type.inc, line 222
A base class for the "reference type" plugin.

Class

reference_table_formatter_base_type
Class reference_table_formatter_base_type

Code

public function render_table($items) {

  // The fields that are renderable on this specific bundle.
  $renderable_fields = $this
    ->get_renderable_fields();

  // The fields the admin has decided to render.
  $fields_to_render = $this
    ->get_configured_field_list();
  foreach ($fields_to_render as $i => $field_name) {
    if (!isset($renderable_fields[$field_name])) {
      unset($fields_to_render[$i]);
    }
  }
  $table = array(
    '#theme' => 'table',
    '#rows' => array(),
  );

  // Optionally display a table header.
  if ($this->settings['show_header']) {
    $table['#header'] = array();
    foreach ($fields_to_render as $field_name) {
      $label = $renderable_fields[$field_name];
      $table['#header'][] = $label;
    }
  }

  // Render each field as a cell in a row.
  foreach ($items as $item) {
    $row =& $table['#rows'][];
    foreach ($fields_to_render as $field_name) {
      $loaded_item = $this
        ->load_entity_from_item($item);
      if ($this
        ->is_field($field_name)) {
        if (field_get_items($this
          ->entity_name(), $loaded_item, $field_name)) {
          $renderable_field = field_view_field($this
            ->entity_name(), $loaded_item, $field_name, $this->settings['view_mode']);
          $renderable_field['#label_display'] = 'hidden';
        }
        else {
          $renderable_field = array();
        }
      }
      else {
        $renderable_field = array(
          '#markup' => $loaded_item->{$field_name},
        );
      }
      $row[] = render($renderable_field);
    }
  }
  if ($this
    ->hide_empty()) {
    $this
      ->hide_empty_columns($table);
  }
  return $table;
}