134 lines
4.9 KiB
Text
134 lines
4.9 KiB
Text
<?php
|
|
/**
|
|
* @file
|
|
* This module intends to deal with the EU Directive on Privacy and Electronic
|
|
* Communications that comes into effect in the UK on 26th May 2012.
|
|
*
|
|
* Author: Marcin Pajdzik
|
|
*/
|
|
|
|
/**
|
|
* Implements hook_menu().
|
|
*/
|
|
function eu_cookie_compliance_menu() {
|
|
$items = array();
|
|
$items['admin/settings/eu-cookie-compliance'] = array(
|
|
'title' => 'EU Cookie Compliance',
|
|
'description' => 'Make your website compliant with the EU Directive on Privacy and Electronic Communications.',
|
|
'page callback' => 'drupal_get_form',
|
|
'page arguments' => array('eu_cookie_compliance_admin_form'),
|
|
'access arguments' => array('administer EU Cookie Compliance popup'),
|
|
'file' => 'eu_cookie_compliance.admin.inc',
|
|
'type' => MENU_NORMAL_ITEM,
|
|
);
|
|
return $items;
|
|
}
|
|
|
|
/**
|
|
* Implements hook_init().
|
|
*/
|
|
function eu_cookie_compliance_init() {
|
|
if (eu_cookie_compliance_enabled()) {
|
|
$path = drupal_get_path('module', 'eu_cookie_compliance');
|
|
drupal_add_css($path . '/css/eu_cookie_compliance.css');
|
|
drupal_add_js($path . '/js/eu_cookie_compliance.js', 'module', 'footer');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_footer().
|
|
*/
|
|
function eu_cookie_compliance_footer() {
|
|
if (eu_cookie_compliance_enabled()) {
|
|
global $language;
|
|
$popup_settings = eu_cookie_compliance_get_settings();
|
|
$popup_text_info = str_replace(array("\r", "\n"), '', $popup_settings['popup_info']['value']);
|
|
$popup_text_agreed = str_replace(array("\r", "\n"), '', $popup_settings['popup_agreed']['value']);
|
|
$html_info = theme('eu_cookie_compliance_popup_info', check_markup($popup_text_info, $popup_settings['popup_info']['format'], FALSE),$popup_settings['popup_agree_button_message'],$popup_settings['popup_disagree_button_message']);
|
|
$html_agreed = theme('eu_cookie_compliance_popup_agreed', check_markup($popup_text_agreed, $popup_settings['popup_agreed']['format'], FALSE),$popup_settings['popup_hide_button_message'],$popup_settings['popup_find_more_button_message']);
|
|
$clicking_confirmation = (isset($popup_settings['popup_clicking_confirmation']))? $popup_settings['popup_clicking_confirmation'] : TRUE ;
|
|
$variables = array(
|
|
'popup_enabled' => $popup_settings['popup_enabled'],
|
|
'popup_agreed_enabled' => $popup_settings['popup_agreed_enabled'],
|
|
'popup_hide_agreed' => isset($popup_settings['popup_hide_agreed']) ? $popup_settings['popup_hide_agreed'] : FALSE,
|
|
'popup_clicking_confirmation' => $clicking_confirmation,
|
|
'popup_html_info' => empty($html_info) ? FALSE : $html_info,
|
|
'popup_html_agreed' => empty($html_agreed) ? FALSE : $html_agreed,
|
|
'popup_height' => ($popup_settings['popup_height']) ? (int) $popup_settings['popup_height'] : 'auto',
|
|
'popup_width' => (drupal_substr($popup_settings['popup_width'], -1) == '%') ? $popup_settings['popup_width'] : (int) $popup_settings['popup_width'],
|
|
'popup_delay' => (int) ($popup_settings['popup_delay'] * 1000),
|
|
'popup_link' => empty($popup_settings['popup_link']) ? FALSE : $popup_settings['popup_link'],
|
|
'popup_position' => empty($popup_settings['popup_position']) ? NULL : $popup_settings['popup_position'],
|
|
'popup_language' => $language->language,
|
|
);
|
|
drupal_add_js(array('eu_cookie_compliance' => $variables), 'setting', 'footer');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_perm().
|
|
*/
|
|
function eu_cookie_compliance_perm() {
|
|
return array(
|
|
'administer EU Cookie Compliance popup',
|
|
'see EU Cookie Compliance popup',
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Implements hook_theme().
|
|
*/
|
|
function eu_cookie_compliance_theme() {
|
|
$path = drupal_get_path('module', 'eu_cookie_compliance') . '/theme';
|
|
return array(
|
|
'eu_cookie_compliance_popup_info' => array(
|
|
'template' => 'eu-cookie-compliance-popup-info',
|
|
'arguments' => array('message' => NULL, 'agree_button' => NULL, 'disagree_button' => NULL),
|
|
'path' => $path,
|
|
),
|
|
'eu_cookie_compliance_popup_agreed' => array(
|
|
'template' => 'eu-cookie-compliance-popup-agreed',
|
|
'arguments' => array('message' => NULL, 'hide_button' => NULL, 'find_more_button' => NULL),
|
|
'path' => $path,
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Return true if EU Cookie compliance is enabled; false in other case.
|
|
*/
|
|
function eu_cookie_compliance_enabled() {
|
|
global $conf;
|
|
if (!empty($conf['eu_cookie_compliance']) && $conf['eu_cookie_compliance']) {
|
|
if (eu_cookie_compliance_get_settings('popup_enabled')) {
|
|
if (user_access('see EU Cookie Compliance popup')) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* Retrieves settings from the database for a current language.
|
|
*
|
|
* @global type $language
|
|
* @param type $setting
|
|
* @return type
|
|
*/
|
|
|
|
function eu_cookie_compliance_get_settings($setting = 'all') {
|
|
global $language;
|
|
$popup_settings = variable_get('eu_cookie_compliance_' . $language->language, array());
|
|
|
|
if ($setting == 'all') {
|
|
return $popup_settings;
|
|
}
|
|
|
|
if (isset($popup_settings[$setting])) {
|
|
return $popup_settings[$setting];
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|