View source
<?php
define("GETCLICKY_FIELDS_INIT", serialize(array(
'uid' => t('User ID (uid in mysql)'),
'name' => t('Username (name)'),
'roles' => t('User Roles (roles)'),
)));
define("GETCLICKY_FIELDS_TO_CLICKY_DEFAULT_MAPPINGS", serialize(array(
'name' => 'username',
)));
function getclicky_help($path, $arg) {
switch ($path) {
case 'admin/settings/getclicky':
return t('GetClicky is a free statistics package.');
}
}
function getclicky_perm() {
return array(
'access clicky stats dashboard',
'administer getclicky',
'opt-in or out of getclicky tracking',
'use PHP for tracking visibility',
);
}
function getclicky_menu() {
$items = array();
$items['admin/settings/getclicky'] = array(
'title' => t('GetClicky'),
'description' => t('Configure the settings used to generate your GetClicky tracking code.'),
'page callback' => 'drupal_get_form',
'page arguments' => array(
'getclicky_admin_settings_form',
),
'access arguments' => array(
'administer getclicky',
),
'file' => 'getclicky.admin.inc',
);
$items['admin/settings/getclicky/settings'] = array(
'title' => 'Settings',
'access arguments' => array(
'administer getclicky',
),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
$items['admin/settings/getclicky/clicky-stats-dashboard'] = array(
'title' => 'Clicky Stats Dashboard',
'description' => 'Shows the Clicky Stats Dashboard',
'page callback' => 'drupal_goto',
'page arguments' => array(
'admin/reports/clicky-stats-dashboard',
),
'access arguments' => array(
'access clicky stats dashboard',
),
'type' => MENU_LOCAL_TASK,
'weight' => 10,
);
$items['admin/reports/clicky-stats-dashboard'] = array(
'title' => 'Clicky Stats Dashboard',
'description' => 'Shows the Clicky Stats Dashboard',
'page callback' => '__getclicky_output_stats_dashboard',
'access arguments' => array(
'access clicky stats dashboard',
),
'type' => MENU_LOCAL_TASK,
'weight' => 10,
);
return $items;
}
function getclicky_footer($main = 0) {
global $user;
$user = user_load($user->uid);
$site_id_number = variable_get('getclicky_site_id_number', '');
$segmentation = '';
$script = '';
$arg = arg();
$arg = implode('/', $arg);
if ($site_id_number && __getclicky_should_we_track_path($arg) && __getclicky_should_we_track_user($user)) {
if (is_array($profile_fields = variable_get('getclicky_segmentation', '')) && $user->uid > 0) {
if (count($profile_fields) > 0) {
$segmentation .= <<<HERE
<script type="text/javascript">
var clicky_custom = {};
clicky_custom.session = {
HERE;
foreach ($profile_fields as $field_drupal_name => $title) {
$field_value = $user->{$field_drupal_name};
if (is_array($field_value)) {
foreach ($field_value as $key => $value) {
$field_value[$key] = "'" . $field_value[$key] . "'";
}
$field_value = "[" . implode(',', $field_value) . "]";
}
else {
$field_value = "'" . $field_value . "'";
}
$mapping = unserialize(GETCLICKY_FIELDS_TO_CLICKY_DEFAULT_MAPPINGS);
$field_js_name = !empty($mapping[$field_drupal_name]) ? $mapping[$field_drupal_name] : $field_drupal_name;
$segmentation .= <<<HERE
'{<span class="php-variable">$field_js_name</span>}' : {<span class="php-variable">$field_value</span>},
HERE;
}
$segmentation .= <<<HERE
};
</script>
HERE;
}
$script .= $segmentation;
}
$url_custom = '';
if (module_exists('search') && variable_get('getclicky_site_search', FALSE) && arg(0) == 'search') {
$keys = search_get_keys();
$url_custom = url('search/' . arg(1), 'search=' . trim($keys));
}
if (!empty($url_custom)) {
$url_custom = drupal_to_js($url_custom);
}
$script .= __getclicky_output_js_code($site_id_number);
return $script;
}
}
function __getclicky_should_we_track_user($account) {
$track = FALSE;
foreach (array_keys($account->roles) as $role) {
if (variable_get('getclicky_track_' . $role, FALSE)) {
$track = TRUE;
}
}
if ($account->uid == 1 && variable_get('getclicky_track__user1', FALSE)) {
$track = TRUE;
}
elseif ($account->uid == 1 && !variable_get('getclicky_track__user1', FALSE)) {
$track = FALSE;
}
return $track;
}
function __getclicky_should_we_track_path($arg) {
return TRUE;
}
function __getclicky_output_banner_html_code($site_id_number) {
return '<a title="Clicky Web Analytics" href="http://getclicky.com/' . $site_id_number . '"><img alt="Clicky Web Analytics" src="http://static.getclicky.com/media/links/badge.gif" border="0" /></a>';
}
function __getclicky_output_js_code_secure_or_unsecure($site_id_number, $secure) {
if ($secure == 'secure') {
$http_or_https = "https";
}
else {
$http_or_https = "http";
}
$js_code = '
<script src="' . $http_or_https . '://static.getclicky.com/js" type="text/javascript"></script>
<script type="text/javascript"><!--//--><![CDATA[//><!--
clicky.init(' . $site_id_number . ');
//--><!]]></script>
<noscript><p><img alt="Clicky" src="' . $http_or_https . '://static.getclicky.com/' . $site_id_number . 'ns.gif" /></p></noscript>';
$codesnippet = variable_get('getclicky_codesnippet', '');
if ($codesnippet == "<br>" || $codesnippet == "<br />" || $codesnippet == "<p></p>" || preg_match('!^<p>.+</p>$!', $codesnippet)) {
$codesnippet = "";
}
if (!empty($codesnippet)) {
$js_code .= '<script type="text/javascript">';
$js_code .= $codesnippet;
$js_code .= '</script>';
}
return $js_code;
}
function __getclicky_output_js_code($site_id_number) {
$js_code = '';
if (variable_get('getclicky_show_banner_image', FALSE)) {
$js_code .= __getclicky_output_banner_html_code($site_id_number);
}
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") {
$getclicky_secure_pages_tracking_option = variable_get('getclicky_secure_pages_tracking_option', 0);
if ($getclicky_secure_pages_tracking_option == 0) {
$js_code .= '';
}
elseif ($getclicky_secure_pages_tracking_option == 1) {
$js_code .= __getclicky_output_js_code_secure_or_unsecure($site_id_number, 'secure');
}
elseif ($getclicky_secure_pages_tracking_option == 2) {
$js_code .= __getclicky_output_js_code_secure_or_unsecure($site_id_number, 'unsecure');
}
}
else {
$js_code .= __getclicky_output_js_code_secure_or_unsecure($site_id_number, 'unsecure');
}
return $js_code;
}
function getclicky_block($op = 'list', $delta = 0, $edit = array()) {
if ($op == 'list') {
$blocks['getclicky_banner'] = array(
'info' => t('Show GetClicky banner image'),
'weight' => 0,
'status' => 0,
'cache' => BLOCK_CACHE_GLOBAL,
);
return $blocks;
}
else {
if ($op == 'view') {
switch ($delta) {
case "getclicky_banner":
$block = array(
'subject' => t(''),
'content' => variable_get('getclicky_banner_image_html_code_for_copying', '<a title="Clicky Web Analytics" href="http://getclicky.com/' . variable_get('getclicky_site_id_number', '') . '"><img alt="Clicky Web Analytics" src="http://static.getclicky.com/media/links/badge.gif" border="0" /></a>'),
);
break;
}
return $block;
}
}
}
function __getclicky_output_stats_dashboard() {
if (user_access('access clicky stats dashboard')) {
$site_id = variable_get('getclicky_site_id_number', '');
$site_key = variable_get('getclicky_site_key_number', '');
if ($site_id && $site_key) {
$iframe = '<br /><iframe style="margin-left: 20px; width: 850px; height: 1000px;" src="http://getclicky.com/stats/wp-iframe?site_id=' . $site_id . '&sitekey=' . $site_key . '"></iframe>';
}
else {
$iframe = "Empty. Please enter site id and sitekey ...";
}
return $iframe;
}
}