This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
suitedesk/modules/eu-cookie-compliance/eu_cookie_compliance.module

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;
}
}