You are here

mail_logger.views.inc in Mail Logger 6

Same filename and directory in other branches
  1. 7 views/mail_logger.views.inc

Contains implementations of Views hooks.

File

views/mail_logger.views.inc
View source
<?php

/**
 * @file
 * Contains implementations of Views hooks.
 */

/**
 * Implementation of hook_views_handlers().
 */
function mail_logger_views_handlers() {
  $handlers = array(
    'info' => array(
      'path' => drupal_get_path('module', 'mail_logger') . '/views/handlers',
    ),
  );

  // We piggyback onto the field handler Views provides for Locale module,
  // as it does everything we need.
  // However, to avoid adding a dependency on Locale, we need to tell Views
  // about its location if the module is not enabled.
  if (!module_exists('locale')) {
    $handlers['handlers'] = array(
      'views_handler_field_locale_language' => array(
        'parent' => 'views_handler_field',
        'path' => drupal_get_path('module', 'views') . '/modules/locale',
      ),
    );
  }
  $handlers['handlers']['mail_logger_handler_field_mail'] = array(
    'parent' => 'views_handler_field',
  );
  $handlers['handlers']['mail_logger_handler_field_mail_logger_entry'] = array(
    'parent' => 'views_handler_field',
  );
  return $handlers;
}

/**
 * Implementation of hook_views_data().
 */
function mail_logger_views_data() {

  // Basic table information.
  $data['mail_logger']['table']['group'] = t('Mail log');

  // Advertise this table as a possible base table
  $data['mail_logger']['table']['base'] = array(
    'field' => 'mlid',
    'title' => t('Mail message'),
    'help' => t('A record of a mail sent by the site.'),
    'weight' => 10,
  );

  // Mail id
  $data['mail_logger']['mlid'] = array(
    'title' => t('Mail id'),
    'help' => t('The serial id of the mail log entry.'),
    'field' => array(
      'handler' => 'mail_logger_handler_field_mail_logger_entry',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ),
    'sort' => array(
      'handler' => 'views_handler_sort',
    ),
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  // Mail key
  $data['mail_logger']['mailkey'] = array(
    'title' => t('Mail key'),
    'help' => t('The internal key the mail used for drupal_mail().'),
    'field' => array(
      'handler' => 'mail_logger_handler_field_mail_logger_entry',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ),
    'sort' => array(
      'handler' => 'views_handler_sort',
    ),
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  // 'From' address
  $data['mail_logger']['mail_from'] = array(
    'title' => t('From address'),
    'help' => t('The address the mail was sent from.'),
    'field' => array(
      'handler' => 'mail_logger_handler_field_mail',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ),
    'sort' => array(
      'handler' => 'views_handler_sort',
    ),
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  // 'To' address
  $data['mail_logger']['mail_to'] = array(
    'title' => t('To address'),
    'help' => t('The address the mail was sent to.'),
    'field' => array(
      'handler' => 'mail_logger_handler_field_mail',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ),
    'sort' => array(
      'handler' => 'views_handler_sort',
    ),
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  // Subject
  $data['mail_logger']['subject'] = array(
    'title' => t('Subject'),
    'help' => t('The subject line of the mail.'),
    'field' => array(
      'handler' => 'mail_logger_handler_field_mail_logger_entry',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ),
    'sort' => array(
      'handler' => 'views_handler_sort',
    ),
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  // Body
  $data['mail_logger']['body'] = array(
    'title' => t('Body'),
    'help' => t('The body text of the mail.'),
    'field' => array(
      'handler' => 'mail_logger_handler_field_mail_logger_entry',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ),
    'sort' => array(
      'handler' => 'views_handler_sort',
    ),
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  // Date
  $data['mail_logger']['date_sent'] = array(
    'title' => t('Date sent'),
    'help' => t('The date the email was sent.'),
    'field' => array(
      'handler' => 'views_handler_field_date',
      'click sortable' => TRUE,
    ),
    'sort' => array(
      'handler' => 'views_handler_sort_date',
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_date',
    ),
    'argument' => array(
      'handler' => 'views_handler_argument_date',
    ),
  );

  // Language field
  // We piggyback onto the field handler that Views provides for Locale module.
  $data['mail_logger']['language'] = array(
    'title' => t('Mail language'),
    'help' => t('The language the email is in.'),
    'field' => array(
      'handler' => 'views_handler_field_locale_language',
      'click sortable' => TRUE,
    ),
  );

  // The argument and filter handlers need functions in Locale module, so
  // we can only provide these if it's enabled.
  if (module_exists('locale')) {
    $data['mail_logger']['language']['filter'] = array(
      'handler' => 'views_handler_filter_locale_language',
    );
    $data['mail_logger']['language']['argument'] = array(
      'handler' => 'views_handler_argument_locale_language',
    );
  }
  return $data;
}

/**
 * Implement hook_date_api_tables().
 *
 * This hook together with hook_date_api_fields() tells Date module's handlers
 * how to use our date field.
 *
 * These may as well live in this file, since it will be loaded by Views
 * whenever Date module invokes both of these hooks, since it does so starting
 * from its own hook_views_data().
 */
function mail_logger_date_api_tables() {
  return array(
    'mail_logger',
  );
}

/**
 * Implementation of hook_date_api_fields().
 * on behalf of core fields.
 *
 * All modules that create custom fields that use the
 * 'views_handler_field_date' handler can provide
 * additional information here about the type of
 * date they create so the date can be used by
 * the Date API views date argument and date filter.
 */
function mail_logger_date_api_fields($field) {
  if ($field == 'mail_logger.date_sent') {
    return array(
      // The type of date: DATE_UNIX, DATE_ISO, DATE_DATETIME.
      'sql_type' => DATE_UNIX,
      // Timezone handling options: 'none', 'site', 'date', 'utc'.
      'tz_handling' => 'site',
      // Needed only for dates that use 'date' tz_handling.
      'timezone_field' => '',
      // Needed only for dates that use 'date' tz_handling.
      'offset_field' => '',
      // Array of "table.field" values for related fields that should be
      // loaded automatically in the Views SQL.
      'related_fields' => array(),
      // Granularity of this date field's db data.
      'granularity' => array(
        'year',
        'month',
        'day',
        'hour',
        'minute',
        'second',
      ),
    );
  }
}

Functions

Namesort descending Description
mail_logger_date_api_fields Implementation of hook_date_api_fields(). on behalf of core fields.
mail_logger_date_api_tables Implement hook_date_api_tables().
mail_logger_views_data Implementation of hook_views_data().
mail_logger_views_handlers Implementation of hook_views_handlers().