From abaee8bd3a6d61ceec90f63418bf84998e4dc98f Mon Sep 17 00:00:00 2001
From: Alex Arnaud <alex.arnaud@biblibre.com>
Date: Tue, 29 Sep 2015 15:59:56 +0200
Subject: [PATCH] dev #29524 - Add a variable that enables/disables the process
 of checking consent for cookies

---
 library/Class/AdminVar.php                    |  3 ++-
 .../ZendAfi/Controller/Plugin/CnilConsent.php |  3 ++-
 .../opac/controllers/IndexControllerTest.php  | 25 +++++++++++++++++++
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php
index 87eeba675d6..53527cfe81d 100644
--- a/library/Class/AdminVar.php
+++ b/library/Class/AdminVar.php
@@ -162,7 +162,8 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
 
                     'TEXT_REPLACEMENTS' => Class_AdminVar_Meta::newRawText($this->_('Remplacement de textes à la volée. <br/>Ex:<br/>Panier;Sélection<br/>Vous avez %%d paniers;Vous avez %%d sélections')),
                     'URL_COSMOGRAMME' => Class_AdminVar_Meta::newDefault('')->bePrivate(),
-                    'PACK_MOBILE' => Class_AdminVar_Meta::newOnOff($this->_('Activation des fonctions avancées du téléphone'))->bePrivate()],
+                    'PACK_MOBILE' => Class_AdminVar_Meta::newOnOff($this->_('Activation des fonctions avancées du téléphone'))->bePrivate(),
+                    'CNIL_CONSENT_ENABLE' => Class_AdminVar_Meta::newOnOff("Affiche la demande de consentement avant l'insertion de cookies ou autres traceurs")->bePrivate()],
        'catalogue' => [
                        'OAI_SERVER' => Class_AdminVar_Meta::newOnOff($this->_('Activation du serveur OAI: permet le moissonnage des domaines par d\'autres logiciels via OAI'))],
        'newsletter' => [
diff --git a/library/ZendAfi/Controller/Plugin/CnilConsent.php b/library/ZendAfi/Controller/Plugin/CnilConsent.php
index 14544081a50..cf0b78107ad 100644
--- a/library/ZendAfi/Controller/Plugin/CnilConsent.php
+++ b/library/ZendAfi/Controller/Plugin/CnilConsent.php
@@ -24,6 +24,7 @@
 
 class ZendAfi_Controller_Plugin_CnilConsent extends Zend_Controller_Plugin_Abstract {
   function preDispatch(Zend_Controller_Request_Abstract $request) {
-    (new Class_Cnil())->trackConsent();
+    if (Class_AdminVar::get('CNIL_CONSENT_ENABLE'))
+      (new Class_Cnil())->trackConsent();
   }
 }
diff --git a/tests/application/modules/opac/controllers/IndexControllerTest.php b/tests/application/modules/opac/controllers/IndexControllerTest.php
index 735d5d6510f..46202796e82 100644
--- a/tests/application/modules/opac/controllers/IndexControllerTest.php
+++ b/tests/application/modules/opac/controllers/IndexControllerTest.php
@@ -322,6 +322,10 @@ abstract class IndexControllerCnilTrackingTestCase extends AbstractControllerTes
 
   public function setUp() {
     parent::setUp();
+
+    $this->fixture('Class_AdminVar', ['id' => 'CNIL_CONSENT_ENABLE',
+                                      'valeur' => true]);
+
     Class_Cnil::setTimeSource($this->mock()
                               ->whenCalled('time')
                               ->answers(strtotime('2015-09-25 15:45:54')));
@@ -348,6 +352,7 @@ class IndexControllerCnilTrackingFirstVisitTest
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/', true);
   }
 
@@ -366,6 +371,26 @@ class IndexControllerCnilTrackingFirstVisitTest
 
 
 
+class IndexControllerCnilTrackingFirstVisitWithAdminVarDisabledTest
+  extends IndexControllerCnilTrackingTestCase {
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->fixture('Class_AdminVar', ['id' => 'CNIL_CONSENT_ENABLE',
+                                      'valeur' => false]);
+    $this->dispatch('/', true);
+  }
+
+
+  /** @test */
+  public function shouldDisplayCnilMessage() {
+    $this->assertNotXPathContentContains('//script', $this->_expected_message);
+  }
+}
+
+
+
 class IndexControllerCnilTrackingSecondVisitTest
   extends IndexControllerCnilTrackingTestCase {
 
-- 
GitLab