5 * Update scripts for the EU Cookie Compliance module.
8 use Drupal\user\Entity\Role;
9 use Drupal\Core\Database\Database;
10 use Drupal\filter\Entity\FilterFormat;
13 * Implements hook_schema().
15 function eu_cookie_compliance_schema() {
16 $schema['eu_cookie_compliance_basic_consent'] = [
17 'description' => 'Basic consent storage for EU Cookie Compliance / GDPR.',
22 'description' => 'Primary Key: Unique consent storage ID.',
25 'description' => '{users}.uid for user.',
32 'description' => 'Time of consent.',
39 'description' => 'The IP address.',
41 // Maximum length of an ipv6 IP address.
47 'description' => 'The type of consent, such as "banner" for the banner and form_id for forms.',
54 'description' => 'Revision of the privacy policy at the time of consent.',
61 'primary key' => ['cid'],
66 'uid' => ['users' => 'uid'],
74 * Implements hook_install().
76 function eu_cookie_compliance_install() {
77 module_load_include('module', 'eu_cookie_compliance', 'eu_cookie_compliance');
79 $roles = Role::loadMultiple();
80 $permission = 'display eu cookie compliance popup';
81 foreach ($roles as $rid => $role) {
82 user_role_grant_permissions($rid, [$permission]);
85 $cookie_policy = _eu_cookie_compliance_find_privacy_policy();
86 if ($cookie_policy != FALSE) {
87 \Drupal::configFactory()
88 ->getEditable('eu_cookie_compliance.settings')
89 ->set('popup_link', $cookie_policy)
93 eu_cookie_compliance_module_set_weight();
97 * Implements hook_requirements().
99 function eu_cookie_compliance_requirements($phase) {
102 if ($phase == 'runtime') {
103 $popup_link = Drupal::config('eu_cookie_compliance.settings')->get('popup_link');
104 $show_policy = Drupal::config('eu_cookie_compliance.settings')->get('show_disagree_button');
106 if ($popup_link == '<front>' && $show_policy) {
107 $requirements['eu_cookie_compliance'] = [
108 'title' => t('EU Cookie Compliance'),
109 'severity' => REQUIREMENT_WARNING,
110 'description' => t('Your privacy policy link is pointing at the front page. This is the default value after installation, and unless your privacy policy is actually posted at the front page, you will need to create a separate page for the privacy policy and link to that page.'),
111 'value' => t('Privacy policy link not provided'),
116 return $requirements;
120 * Force default value for "cookie_lifetime" item.
122 function eu_cookie_compliance_update_8101() {
123 \Drupal::configFactory()
124 ->getEditable('eu_cookie_compliance.settings')
125 ->set('cookie_lifetime', 100)->save();
129 * Reverse the setting for "Consent by clicking" (solving a module beta bug).
131 function eu_cookie_compliance_update_8102() {
132 $consent_by_clicking_value = \Drupal::configFactory()
133 ->get('eu_cookie_compliance.settings')
134 ->get('popup_clicking_confirmation');
135 \Drupal::configFactory()
136 ->getEditable('eu_cookie_compliance.settings')
137 ->set('popup_clicking_confirmation', !$consent_by_clicking_value)->save();
141 * Fix bug with mobile banner message from beta 9.
143 function eu_cookie_compliance_update_8103() {
144 $mobile_popup_info = \Drupal::configFactory()
145 ->get('eu_cookie_compliance.settings')
146 ->get('mobile_popup_info');
147 if (!is_array($mobile_popup_info) && $mobile_popup_info == '') {
148 \Drupal::configFactory()
149 ->getEditable('eu_cookie_compliance.settings')
150 ->set('mobile_popup_info', [
152 'format' => filter_default_format(),
158 * Change seconds to milliseconds for animation duration.
160 function eu_cookie_compliance_update_8104() {
161 $popup_delay = \Drupal::configFactory()
162 ->get('eu_cookie_compliance.settings')
163 ->get('popup_delay');
164 if ($popup_delay < 10) {
165 \Drupal::configFactory()
166 ->getEditable('eu_cookie_compliance.settings')
167 ->set('popup_delay', $popup_delay * 1000)->save();
172 * Create new config value for show or hide the cookie policy button.
174 function eu_cookie_compliance_update_8105() {
175 \Drupal::configFactory()
176 ->getEditable('eu_cookie_compliance.settings')
177 ->set('show_disagree_button', TRUE)
182 * Create new config value to handle consent options.
184 function eu_cookie_compliance_update_8106() {
185 \Drupal::configFactory()
186 ->getEditable('eu_cookie_compliance.settings')
187 ->set('method', 'default')
188 ->set('disagree_button_label', 'No, thanks')
189 ->set('disabled_javascripts', '')
190 ->set('whitelisted_cookies', '')
195 * Add table to handle basic consent.
197 function eu_cookie_compliance_update_8107() {
198 $schema['eu_cookie_compliance_basic_consent'] = [
199 'description' => 'Basic consent storage for EU Cookie Compliance / GDPR.',
204 'description' => 'Primary Key: Unique consent storage ID.',
207 'description' => '{users}.uid for user.',
214 'description' => 'Time of consent.',
221 'description' => 'The IP address.',
223 // Maximum length of an ipv6 IP address.
229 'description' => 'The type of consent, such as "banner" for the banner and form_id for forms.',
236 'description' => 'Revision of the privacy policy at the time of consent.',
243 'primary key' => ['cid'],
248 'uid' => ['users' => 'uid'],
252 Database::getConnection()->schema()->createTable('eu_cookie_compliance_basic_consent', $schema['eu_cookie_compliance_basic_consent']);
253 \Drupal::configFactory()
254 ->getEditable('eu_cookie_compliance.settings')
255 ->set('consent_storage_method', 'do_not_store')
260 * Change module weight to load after other modules, ensure all JSs are handled.
262 function eu_cookie_compliance_update_8108() {
263 module_load_include('module', 'eu_cookie_compliance', 'eu_cookie_compliance');
264 eu_cookie_compliance_module_set_weight();
268 * Add config variables for the withdraw banner.
270 function eu_cookie_compliance_update_8109() {
271 $default_filter_format = filter_default_format();
272 $full_html_format = FilterFormat::load('full_html');
273 if ($default_filter_format == 'restricted_html' && !empty($full_html_format) && $full_html_format->get('status')) {
274 $default_filter_format = 'full_html';
277 \Drupal::configFactory()
278 ->getEditable('eu_cookie_compliance.settings')
279 ->set('withdraw_message', [
280 'value' => '<h2>We use cookies on this site to enhance your user experience</h2><p>You have given your consent for us to set cookies.</p>',
281 'format' => $default_filter_format,
283 ->set('withdraw_action_button_label', 'Withdraw consent')
284 ->set('withdraw_tab_button_label', 'Privacy settings')
285 ->set('withdraw_enabled', TRUE)
290 * Disable withdraw tab and banner in the consent method "Consent by default".
292 function eu_cookie_compliance_update_8110() {
293 $withdraw_enabled = \Drupal::configFactory()
294 ->get('eu_cookie_compliance.settings')
295 ->get('withdraw_enabled');
296 $method = \Drupal::configFactory()
297 ->get('eu_cookie_compliance.settings')
300 if ($method == 'default' && $withdraw_enabled == 1) {
301 \Drupal::configFactory()
302 ->getEditable('eu_cookie_compliance.settings')
303 ->set('withdraw_enabled', FALSE)