You are here

function matrix_views_data in Matrix field 6.2

Implementation of hook_views_data()

File

./matrix.views.inc, line 11
Views hooks implemented for the Matrix module.

Code

function matrix_views_data() {
  foreach (content_fields() as $field) {
    if ($field['type'] == 'matrix') {
      $data['node_data_' . $field['field_name']] = array(
        'table' => array(
          'group' => 'Matrix',
          'join' => array(
            'node' => array(
              'table' => 'content_type_' . $field['type_name'],
              'left_field' => 'vid',
              'field' => 'vid',
            ),
          ),
        ),
        $field['field_name'] . '_value' => array(
          'field' => array(
            'title' => $field['widget']['label'] . ' (' . $field['field_name'] . ')',
            'help' => t('Appears on %type_name (table layout)', array(
              '%type_name' => $field['type_name'],
            )),
            'handler' => 'matrix_handler_field',
            'content_field_name' => $field['field_name'],
          ),
        ),
      );
      switch ($field['widget']['type']) {
        case 'table':
          $rows_elements = array_fill(0, count($field['widget']['default_value']), '0');
          break;
        case 'matrix':
          $rows_elements = unserialize($field['rows_elements']);
          break;
      }
      $cols_elements = unserialize(str_replace("\r", "", $field['cols_elements']));
      if (!is_array($cols_elements)) {
        $cols_elements = array();
      }
      foreach ($rows_elements as $row_index => $row) {
        foreach ($cols_elements as $col_index => $col) {
          $cell_ref = $row_index . '_' . $col_index;
          $cell_name = $col['#title'] . ' x ' . $row['#title'];
          $data['node_data_' . $field['field_name'] . '_' . $cell_ref] = array(
            'table' => array(
              'group' => 'Matrix',
              'join' => array(
                'node' => array(
                  'table' => 'content_type_' . $field['type_name'],
                  'left_field' => 'vid',
                  'field' => 'vid',
                ),
              ),
            ),
            $field['field_name'] . '_' . $cell_ref . '_value' => array(
              'field' => array(
                'title' => $field['widget']['label'] . ' cell ' . $cell_name . ' (' . $field['field_name'] . ')',
                'help' => t('Appears on %type_name', array(
                  '%type_name' => $field['type_name'],
                )),
                'handler' => 'matrix_handler_cell',
                'content_field_name' => $field['field_name'],
                'row_index' => $row_index,
                'col_index' => $col_index,
              ),
              'filter' => array(
                'title' => $field['widget']['label'] . ' cell ' . $cell_name . ' (' . $field['field_name'] . ')',
                'help' => t('Appears on %type_name', array(
                  '%type_name' => $field['type_name'],
                )),
                'handler' => 'matrix_handler_filter_cell',
              ),
            ),
          );
        }
      }
    }
  }
  return $data;
}