View source
<?php
function newsletter_statistics_menu() {
$items = array();
$items['admin/config/media/newsletter/statistics'] = array(
'title' => 'Statistics',
'description' => 'View newsletter statistics like opens and clicks.',
'access arguments' => array(
'access newsletter statistics',
),
'weight' => 10,
);
$items['admin/config/media/newsletter/statistics/general'] = array(
'title' => 'General',
'description' => 'Watch general statistics.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'newsletter_statistics_general',
),
'file' => 'includes/newsletter_statistics.admin.inc',
'access arguments' => array(
'access newsletter statistics',
),
'type' => MENU_DEFAULT_LOCAL_TASK,
);
$items['admin/config/media/newsletter/statistics/graphic'] = array(
'title' => 'Graphic',
'description' => 'Watch advanced JQuery statistics.',
'access arguments' => array(
'access newsletter statistics',
),
'type' => MENU_LOCAL_TASK,
'page callback' => 'newsletter_statistics_graphic',
'file' => 'includes/newsletter_statistics.admin.inc',
'weight' => 1,
);
$items['newsletter/statistics/%newsletter_subscriber_by_hash/%newsletter'] = array(
'access callback' => TRUE,
'type' => MENU_CALLBACK,
'page callback' => 'newsletter_statistics_open',
'page arguments' => array(
2,
),
'file' => 'includes/newsletter_statistics.pages.inc',
);
return $items;
}
function newsletter_statistics_permission() {
$permissions = array();
$permissions['access newsletter statistics'] = array(
'title' => t('Access newsletter statistics'),
'description' => t('Access the newsletter statistics pages.'),
);
return $permissions;
}
function newsletter_statistics_views_api() {
return array(
'api' => 3,
'path' => drupal_get_path('module', 'newsletter_statistics') . '/includes/views',
);
}
function newsletter_statistics_node_view($node, $view_mode, $langcode) {
static $i;
if (isset($_GET['source']) && $_GET['source'] == 'newsletter' && !$i) {
db_query("UPDATE {newsletter_newsletter}\n SET clicks = clicks + 1\n WHERE nnid = :id", array(
':id' => $_GET['nnid'],
));
$i++;
}
}
function newsletter_statistics_newsletter_list_sent($message) {
$newsletter = $message['params']['newsletter'];
$newsletter->field_newsletter_body[LANGUAGE_NONE][0] = array(
'format' => $message['body_format'],
'summary' => text_summary($message['body'], $message['body_format']),
'value' => $message['body'],
);
entity_get_controller('newsletter_newsletter')
->save($newsletter);
}
function newsletter_statistics_form_newsletter_configure_form_alter(&$form, &$form_state) {
$form['settings']['newsletter_statistics_track_open_rate'] = array(
'#type' => 'checkbox',
'#title' => t('Track open rate'),
'#default_value' => variable_get('newsletter_statistics_track_open_rate', FALSE),
'#description' => t('Enable it, only if you really want the email to be tracked,
since the method used might cause some email clients to mark your emails as spam'),
);
}
function newsletter_statistics_add_open_rate_image($hash, $newsletter) {
$url = url('newsletter/statistics/' . $hash . '/' . $newsletter->nnid, array(
'absolute' => TRUE,
));
return theme('image', array(
'path' => $url,
'width' => '1px',
'height' => '1px',
));
}