You are here

function piwik_stats_field_views_data in Piwik Statistic Integration 7.2

Implements hook_field_views_data().

File

./piwik_stats.views.inc, line 12
Handles views integration of piwik stats field.

Code

function piwik_stats_field_views_data($field) {

  // Get the default views integration for our field.
  $data = field_views_field_default_views_data($field);

  // Override and extend the default integration.
  foreach ($data as $data_table => &$data_fields) {
    foreach ($data_fields as $data_field_fullname => &$data_field) {
      $data_field_name = str_replace($field['field_name'] . '_', '', $data_field_fullname);

      // Get piwik keyed descriptions.
      $definitions = piwik_stats_definitions();
      if (isset($definitions[$data_field_name])) {
        $definition = $definitions[$data_field_name];

        // Add field information, so views will regard this as usable field.
        $data_field['field'] = array(
          'table' => $data_table,
          'click sortable' => TRUE,
          'field_name' => $data_field_fullname,
          'real field' => $data_field_fullname,
          'is revision' => FALSE,
          'entity_tables' => array(
            'node' => 'node',
            'node_revisions' => 'node',
          ),
        );
        switch ($definition['format']) {
          case 'number':

            // Modify title field.
            $data_field['title'] = str_replace($field['field_name'] . ':' . $data_field_name, $definition['title'], $data_field['title']);
            $data_field['title short'] = $definition['title'];

            // Set the proper handler.
            $data_field['field']['handler'] = 'views_handler_field_numeric';
            break;
          case 'seconds':

            // Modify title field.
            $data_field['title'] = str_replace($field['field_name'] . ':' . $data_field_name, $definition['title'], $data_field['title']);
            $data_field['title short'] = $definition['title'];

            // Set the proper handler.
            $data_field['field']['handler'] = 'views_handler_field_time_interval';
            break;
          case 'percent':

            // Modify title field.
            $data_field['title'] = str_replace($field['field_name'] . ':' . $data_field_name, $definition['title'] . ' %', $data_field['title']);
            $data_field['title short'] = $definition['title'];

            // Set the proper handler.
            $data_field['field']['handler'] = 'views_handler_field_numeric';
            break;
        }
      }
    }
  }
  return $data;
}