You are here

function views_database_connector_views_data in Views Database Connector 7

Same name and namespace in other branches
  1. 8 views_database_connector.views.inc \views_database_connector_views_data()

Implements hook_views_data().

File

./views_database_connector.views.inc, line 11
Responsible for hooking views to add each database and its tables.

Code

function views_database_connector_views_data() {
  $dbs = views_database_connector_get_database_schemas();
  $data = array();

  // Iterate through each database.
  foreach ($dbs as $dname => $db) {

    // Iterate through each table.
    foreach ($db as $table) {

      // Make sure the table name hasn't been used before.
      if (!isset($data[$table[0]])) {

        // Set the title.
        $title = '[VDC] ' . check_plain($dname) . ':  ';
        $title .= check_plain($table[0]);

        // Setup the table for Views to be able to see it.
        $data[$table[0]]['table']['group'] = $table[0];
        $data[$table[0]]['table']['base'] = array(
          // Use the first column's name as the primary field.
          'field' => $table[1][0][1],
          'title' => $title,
          'database' => $dname,
          'weight' => -9001,
        );

        // Add each column to its respective table.
        foreach ($table[1] as $col) {
          if ($col[0] == 'numeric') {
            $data[$table[0]][$col[1]] = array(
              'title' => $col[1],
              'help' => $col[1],
              'field' => array(
                'handler' => 'views_handler_field_numeric',
                'click sortable' => TRUE,
              ),
              'sort' => array(
                'handler' => 'views_handler_sort',
              ),
              'filter' => array(
                'handler' => 'views_handler_filter_numeric',
              ),
              'argument' => array(
                'handler' => 'views_handler_argument_numeric',
              ),
            );
          }
          if ($col[0] == 'date') {
            $data[$table[0]][$col[1]] = array(
              'title' => $col[1],
              'help' => $col[1],
              'field' => array(
                'handler' => 'views_database_connector_handler_field_datetime',
                'click sortable' => TRUE,
              ),
              'sort' => array(
                'handler' => 'views_handler_sort_date',
              ),
              'filter' => array(
                'handler' => 'views_database_connector_handler_filter_datetime',
              ),
              'argument' => array(
                'handler' => 'views_handler_argument_date',
                'empty field name' => t('Undated'),
              ),
            );
          }
          if ($col[0] == 'string') {
            $data[$table[0]][$col[1]] = array(
              'title' => $col[1],
              'help' => $col[1],
              'field' => array(
                'handler' => 'views_handler_field',
                'click sortable' => TRUE,
              ),
              'sort' => array(
                'handler' => 'views_handler_sort',
              ),
              'filter' => array(
                'handler' => 'views_handler_filter_string',
              ),
              'argument' => array(
                'handler' => 'views_handler_argument_string',
              ),
            );
          }
          if ($col[0] == 'broken') {
            $data[$table[0]][$col[1]] = array(
              'title' => $col[1],
              'help' => $col[1],
              'field' => array(
                'handler' => 'views_handler_field_broken',
                'click sortable' => TRUE,
              ),
              'sort' => array(
                'handler' => 'views_handler_sort_broken',
              ),
              'filter' => array(
                'handler' => 'views_handler_filter_broken',
              ),
              'argument' => array(
                'handler' => 'views_handler_argument_broken',
              ),
            );
          }
        }
      }
    }
  }

  // Return the finished result, allowing Views to be able to see everything
  // that it needs.
  return $data;
}