From 290ec7304f6e9c87f7f298efad4ab095dd225016 Mon Sep 17 00:00:00 2001 From: Gerhard Fobe Date: Sat, 16 Jun 2018 20:15:06 +0200 Subject: [PATCH 01/53] make required fields of contact form GDPR compliant --- .../FireGento/MageSetup/Helper/Contacts.php | 23 +++++++ .../Contacts/RequiredUserContactMethod.php | 69 +++++++++++++++++++ .../FireGento/MageSetup/etc/system.xml | 10 +++ .../template/magesetup/contacts/form.phtml | 12 ++-- src/app/locale/de_DE/FireGento_MageSetup.csv | 2 + src/app/locale/en_US/FireGento_MageSetup.csv | 4 +- 6 files changed, 113 insertions(+), 7 deletions(-) create mode 100644 src/app/code/community/FireGento/MageSetup/Model/Source/Contacts/RequiredUserContactMethod.php diff --git a/src/app/code/community/FireGento/MageSetup/Helper/Contacts.php b/src/app/code/community/FireGento/MageSetup/Helper/Contacts.php index 48cd9609..8260f6ab 100644 --- a/src/app/code/community/FireGento/MageSetup/Helper/Contacts.php +++ b/src/app/code/community/FireGento/MageSetup/Helper/Contacts.php @@ -22,6 +22,7 @@ class FireGento_MageSetup_Helper_Contacts extends Mage_Core_Helper_Abstract { const XML_PATH_ACCEPT_AGREEMENT = 'contacts/contacts/accept_agreement'; + const XML_PATH_REQUIRED_USER_CONTACT_METHOD = 'contacts/contacts/required_user_contact_method'; /** @var string $_moduleName Module name */ protected $_moduleName = 'FireGento_MageSetup'; @@ -30,4 +31,26 @@ public function isAcceptAgreement() { return Mage::getStoreConfig(self::XML_PATH_ACCEPT_AGREEMENT); } + + /** + * check config if telephone is required + * Hint: on GDPR only email OR telephone can be required + * + * @return bool - telephone is required + */ + public function isTelephoneRequired() + { + return Mage::getStoreConfigFlag(self::XML_PATH_REQUIRED_USER_CONTACT_METHOD); + } + + /** + * check config if email is required + * Hint: on GDPR only email OR telephone can be required + * + * @return bool - emaile is required + */ + public function isEmailRequired() + { + return !$this->isTelephoneRequired(); + } } diff --git a/src/app/code/community/FireGento/MageSetup/Model/Source/Contacts/RequiredUserContactMethod.php b/src/app/code/community/FireGento/MageSetup/Model/Source/Contacts/RequiredUserContactMethod.php new file mode 100644 index 00000000..b6da2eab --- /dev/null +++ b/src/app/code/community/FireGento/MageSetup/Model/Source/Contacts/RequiredUserContactMethod.php @@ -0,0 +1,69 @@ + + * @copyright 2013-2015 FireGento Team (http://www.firegento.com) + * @license http://opensource.org/licenses/gpl-3.0 GNU General Public License, version 3 (GPLv3) + */ + +/** + * Source model for attribute "required_user_contact_method" + * + * @category FireGento + * @package FireGento_MageSetup + * @author FireGento Team + */ +class FireGento_MageSetup_Model_Source_Contacts_RequiredUserContactMethod +{ + const REQUIRED_FIELD_EMAIL = 0; + const REQUIRED_FIELD_TELEPHONE = 1; + + /** + * Options getter + * + * @return array required_user_contact_method types as option array + */ + public function toOptionArray() + { + $helper = Mage::helper('magesetup'); + + return array( + array( + 'value' => self::REQUIRED_FIELD_EMAIL, + 'label' => $helper->__('Email') + ), + array( + 'value' => self::REQUIRED_FIELD_TELEPHONE, + 'label' => $helper->__('Telephone') + ), + ); + } + + /** + * Retrieve all required_user_contact_method fields as option hash + * + * @return array required_user_contact_method types as option hash + */ + public function getOptionArray() + { + $options = array(); + foreach ($this->toOptionArray() as $option) { + $options[$option['value']] = $option['label']; + } + + return $options; + } +} diff --git a/src/app/code/community/FireGento/MageSetup/etc/system.xml b/src/app/code/community/FireGento/MageSetup/etc/system.xml index 11f00831..8f7f826e 100644 --- a/src/app/code/community/FireGento/MageSetup/etc/system.xml +++ b/src/app/code/community/FireGento/MageSetup/etc/system.xml @@ -508,6 +508,16 @@ 1 1 + + + Because of GDPR only email OR telephone can be required. Please choose here. + select + magesetup/source_contacts_requiredUserContactMethod + 30 + 1 + 1 + 1 + diff --git a/src/app/design/frontend/base/default/template/magesetup/contacts/form.phtml b/src/app/design/frontend/base/default/template/magesetup/contacts/form.phtml index e052cb6a..cb243d9f 100644 --- a/src/app/design/frontend/base/default/template/magesetup/contacts/form.phtml +++ b/src/app/design/frontend/base/default/template/magesetup/contacts/form.phtml @@ -27,22 +27,22 @@