mail_logger.views.inc in Mail Logger 6
Same filename and directory in other branches
Contains implementations of Views hooks.
File
views/mail_logger.views.incView 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
Name![]() |
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(). |