WP DSGVO Tools - Version 3.1.7

Version Description

  • css improvements
  • openstreetmap blocking improved
  • performance improvements
  • privacy policy: restored texts of mandatory service
  • WPGlobus compatibility
Download this release

Release Info

Developer shapepress
Plugin Icon 128x128 WP DSGVO Tools
Version 3.1.7
Comparing to
See all releases

Code changes from version 3.1.6 to 3.1.7

README.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://legalweb.io
4
  Tags: gdpr, dsgvo, datenschutz, privacy, privacy policy, imprint, impressum, wordpress, compliance, privacy, woocommerce, law
5
  Requires at least: 3.0.1
6
  Tested up to: 5.4.0
7
- Stable tag: 3.1.6
8
  Requires PHP: 5.6.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -13,47 +13,174 @@ WP DSGVO Tools (GDPR) by <a target="_blank" href="https://www.legalweb.io">legal
13
 
14
  == Description ==
15
 
16
- # WP DSGVO Tools (GDPR): the all in one solution to the GDPR
17
- The GDPR (General Data Protection Regulation) brings with it many requirements and hurdles for **WordPress & WooCommerce** operators. Our mission is to make this as easy as possible for you and to protect you from warnings in the best possible way.
18
- Easy installation, dozens of useful features and lots of information on how to make your website GDPR compliant. Manufactured by IT professionals and lawyers (for more information, visit <a target="_blank" href="https://www.legalweb.io">legalweb.io</a>).
19
 
20
- ### Cookie pop-up & notice with selective opt-in & opt-out
21
- Our cookie popup has been designed in such a way that it meets the requirements of the courts & data protection authorities or the legal situation. Services are loaded **automatically** depending on the setting and grouped correctly. Users have the option of agreeing to services without nudging or not.
22
 
23
- ### Legally compliant data protection declaration for AT, DE and third countries
24
- The data protection declaration is generated individually and automatically by us through the settings in the plugin. **All legal texts have been checked by a lawyer and have been translated by court interpreters.** The legal texts are directly integrated for **Austria, Germany and third countries**. Includes: Responsible, data protection officer, data subject rights, web hosts, CDN, analysis, marketing, embeddings, forms, newsletters, captchas, web shops, payment services, shipping services.
25
 
26
- ### Google Analytics, Matomo & WP Statistics GDPR compliant
27
- In the free version, **Google Analytics, Matomo & WP Statistics** are directly integrated for you. Additional services are available in our premium version.
28
 
29
- ### Automatic imprint
30
- Generate your **legally compliant imprint** automatically, with just one click after entering the data protection settings.
 
 
 
 
31
 
32
- ## An overview of our functions
33
- ### Free Features
34
- * **Cookie pop-up & cookie notice** with selective opt-in & opt-out
35
- * **Legally compliant data protection texts for AT, DE and third countries**
36
- * **Google Analytics, Matomo &amp; WP Statistics GDPR compliant** integration
37
- * **Right to be forgotten** (with time management)
38
- * **Automated directory query** (as PDF and JSON) and deletion
39
- * Translatable, multilingual support – **officially WPML certified**
40
- * Pseudonymization
41
 
42
- ### Premium Edition
43
- * All functions of the Free Edition
44
- * Automatic updating of texts on data protection guidelines
45
- * Compatibility with **Google Tag Manager and Matomo Tag Manager** (opt-in for tags)
46
- * **Custom codes** and Java scripts of integration can be customized
47
- * Further integrations: **Facebook Pixel, Criteo, Clicky, Piwik, Etracker, Hotjar, Bing Ads, LinkedIn Pixel** – are continuously being expanded
48
- * Embeddings: **YouTube, Facebook, Instagram, Google Maps, OpenStreetMap, Soundcloud, Twitter, Vimeo**
49
- * **WooCommerce Features:** Checkbox, data extract, request for deletion
50
- * Receive email notifications of new requests
51
- * A full list of all features you can find at <a href="https://legalweb.io" target="_blank">https://legalweb.io</a>.
52
 
53
- Important note: This plugin only supports you in fulfilling the guidelines for compliance with the GDPR. Installation is not enough – correct configuration of this plugin by a website administrator is required to achieve conformity. A 100% conformity only through the plugin cannot be guaranteed, as this depends on several other aspects.
54
 
55
- **SUPPORT**
56
- Only at <a href="https://legalweb.freshdesk.com/">https://legalweb.freshdesk.com</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
 
58
  == Installation ==
59
 
@@ -76,6 +203,13 @@ Just install via wordpress plugin feature or upload zip and activate it.
76
 
77
 
78
  == Changelog ==
 
 
 
 
 
 
 
79
  = 3.1.6 =
80
  * IE fixes
81
 
@@ -215,7 +349,7 @@ Just install via wordpress plugin feature or upload zip and activate it.
215
  * In the beginning there was a version 1
216
 
217
  == Upgrade Notice ==
218
- = 3.1.6 =
219
  * Important if you upgrade from V2: In V3 a lot of important changes have been made. Please check all your settings after updating to ensure correct functionality
220
  * THE PLUGIN NEEDS A COMPLETE RECONFIGURATION TO FULFILL THE LATEST GDPR LAWS IF YOU UPDATE FROM V2 to V3
221
  * the changelog can be found here: <a href="https://wordpress.org/plugins/shapepress-dsgvo/#developers" target="_blank">https://wordpress.org/plugins/shapepress-dsgvo/#developers</a>
4
  Tags: gdpr, dsgvo, datenschutz, privacy, privacy policy, imprint, impressum, wordpress, compliance, privacy, woocommerce, law
5
  Requires at least: 3.0.1
6
  Tested up to: 5.4.0
7
+ Stable tag: 3.1.7
8
  Requires PHP: 5.6.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
13
 
14
  == Description ==
15
 
16
+ # **ALL-IN-ONE SOLUTION**
 
 
17
 
18
+ #### As a user of WP GDPR you have two simple tasks:
 
19
 
20
+ * Selection of the services used
21
+ * Filling of a few input fields
22
 
23
+ ## WP GDPR does everything else:
 
24
 
25
+ * Creation of the cookie popup
26
+ * Creation of the cookie notice
27
+ * Control of services
28
+ * Control of embeddings
29
+ * Generation of the data protection information
30
+ * Creation of the imprint
31
 
32
+ ## Also available from around mid-April 2020:
 
 
 
 
 
 
 
 
33
 
34
+ * Terms & Conditions
35
+ * Seal of approval
 
 
 
 
 
 
 
 
36
 
37
+ # **TOP PRIORITY**
38
 
39
+ Our top priority is **compliance with the laws and the regulations of courts and of data protection authorities**. We do not offer options that are not legally or legally highly controversial.
40
+
41
+ **Why so strict?** Because our users have neither the desire nor the budget to lead complex procedures through all appeals, just to find out whether any cool feature is legally permissible or not.
42
+
43
+ **But don't worry:** there are never any end features, just scroll down, down, down ... :)
44
+
45
+ # **LAWYER CREATED**
46
+
47
+ All legal texts were created by the law firm Marketingrecht.eu, which specializes in IT, internet and data protection law.
48
+
49
+ # **TRANSLATED BY COURT INTERPRETERS**
50
+
51
+ We do not use community translations. All translations have been translated by sworn and certified interpreters. Official certified by WPML. Works also with Polylang and WPGlobus.
52
+
53
+ # **BASIC FEATURES**
54
+ * Free & Premium
55
+ * from around mid-April 2020: Cloud
56
+ * optimized for Germany & Austria
57
+ * can also be used in other EU countries and third countries
58
+ * Tag Manager compatible
59
+
60
+ # **IMPRINT**
61
+ * Automatic creation
62
+ * Integration via page selection or shortcode
63
+ * (from cloud version: significantly expanded imprint generator)
64
+
65
+ # **COOKIE POPUP / COOKIE NOTICE / PRIVACY INFO**
66
+ * Our feature list gets longer and longer every month.
67
+ * Opt-in / consent management
68
+ * Opt-out / cancellation management
69
+ * definable validity of consent
70
+ * definable waiting time until the new request for consent
71
+ * correct grouping of services
72
+ * Display of all mandatory information
73
+ * No illegal nudging (obtaining consent through psychotricks)
74
+ * Style configurator
75
+
76
+ #### **Responsible & data protection officer**
77
+ * Responsible
78
+ * Data protection officer
79
+ * Data protection officer
80
+
81
+ #### **Host provider**
82
+ 1 & 1 IONOS SE, 1blu, Amazon AWS, Alfahosting, All-inkl.com, Awardspace, Bluehost, Contabo, Dogado, domainfactory GmbH, DWZI GmbH, GoDaddy, Hetzner Online GmbH, Host Europe GmbH, HostProfis ISP Telekom GmbH, Kinsta, Lima City , Magenta- / T-Mobile Austria GmbH, Mittwald CM Service GmbH & Co. KG, Microsoft Azure, Netcup, OVH, platformSH, Rackspace, Raidboxes, Schlundtech, SiteGround, Strato, Telekom Austria AG, UnitedDomains, Vautron Rechenzentrum AG, webgo, World4You Internet Services GmbH, ZAP hosting
83
+ freely configurable provider
84
+
85
+ #### **Log files**
86
+ * definable storage period
87
+
88
+ #### **CDN**
89
+ * Akamai CDN, AWS Cloudfront CDN, Azure CDN, Bunny CDN, CacheFly, CDN.NET, CDN 77, Cloudflare CDN, Fastly CDN, Google Cloud CDN, G-Core Labs CDN, Key CDN, Medianova, OVH CDN, StackPath
90
+ * freely configurable provider
91
+
92
+ #### **Webshop checkout**
93
+ * freely selectable data protection notice
94
+
95
+ #### **Payment services**
96
+ * Cash, cash on delivery, bank transfer, 1 & 1 ipayment, Amazon Pay, Apple Pay, Arvato Infoscore, B + S Card Services, Commdoo, Concardis, Deutsche Card Services, Docdata Payments, Easycash, Easypay, Ecardon, EOS, Google Pay, Heidelpay, Klarna, Girosolution, Micropayment, mPay24, Novalnet, Paymorrow, PAYONE, PayPal, Secupay, Stripe, Telecash, VR-Pay Virtuell, Wirecard
97
+ * (from cloud version: freely configurable payment services)
98
+
99
+ #### **Font services**
100
+ * Google Fonts, Adobe Fonts, Font Awesome, Fonts.com
101
+ * (from cloud version: freely configurable font services)
102
+
103
+ #### **Forms**
104
+ * Contact form, application form, registration form, competition form, comment form
105
+ * (from cloud version: freely configurable forms)
106
+
107
+ #### **Captchas**
108
+ * local captcha, Google reCAPTCHA
109
+ * freely selectable captcha
110
+
111
+ #### **Newsletter services**
112
+ * Local newsletter service, AWeber, ActiveCampaign, CleverReach, Klick-tipp, MailChimp, Mailjet, MailPoet, newslettertwogo, Rapidmail
113
+ * freely selectable newsletter service
114
+
115
+ #### **Tag manager**
116
+ * Google Tag Manager
117
+ * Matomo Tag Manager
118
+
119
+ #### **Statistics / analysis**
120
+ * WP Statistics, Matomo (On ​​Premise / Agentur / Cloud), Piwik (On Premise / Agentur / Cloud), E-Tracker, Google Analytics, Clicky, Hotjar
121
+ * (from cloud version: freely configurable statstics)
122
+
123
+ #### **Targeting / advertising**
124
+ * Facebook Pixel, Criteo, LinkedIn Pixel, Bing Ads
125
+ * (from cloud version: freely configurable ad software)
126
+
127
+ #### **Embeddings**
128
+ * Google Maps, Open Street Map, Youtube, Vimeo, Sound Cloud, Facebook, Instagram, Twitter
129
+
130
+ #### **Additional functions**
131
+ * Data extract
132
+ * Deletion request
133
+
134
+ # **FREE VERSION**
135
+ The free version includes all the services that are important for private websites:
136
+
137
+ * Cookie popup
138
+ * Cookie notice
139
+ * Data protection info
140
+ * Google Analytics
141
+ * Matomo
142
+ * WP Statistics
143
+ * Right to be forgotten (with time management)
144
+ * Automated directory query (as PDF and JSON) and deletion
145
+ * Translatable, multilingual support - officially WPML certified
146
+
147
+ # **PREMIUM VERSION**
148
+ The premium version includes all services that are important for websites of bloggers, influencers & entrepreneurs.
149
+
150
+ * all functions as listed above
151
+ * available here: legalweb.io
152
+
153
+ # **CLOUD VERSION**
154
+ The cloud version also makes our services accessible to other CMS and brings new features.
155
+
156
+ * from around mid-April 2020
157
+ * no price increase for existing Premium users when switching
158
+ * CMS independent
159
+ * Data acquisition via REST API or manual implementation
160
+ * Plugins for Wordpress, Typo3, Joomla, NEOS, Shopware, Magento
161
+ * extended imprint generator
162
+ * further services for the data protection generator
163
+ * Terms and conditions generator
164
+ * seal of approval
165
+
166
+ # **UPDATES**
167
+ We have very short update cycles to fix any bugs immediately and to continuously deliver new features.
168
+
169
+ # **SUPPORT & FAQ**
170
+ We are here for you!
171
+
172
+ * Free webinars every Wednesday at 4 p.m.: legalweb.io
173
+ * for all users: wordpress.org
174
+ * for premium & cloud users: legalweb.io/support/
175
+
176
+ # **TEAM**
177
+ Our team is small but nice! Lawyer, programmer, marketing - everything is there :)
178
+
179
+ * Attorney Peter Harlander, <a target="_blank" href="https://marketingrecht.eu">marketingrecht.eu</a>
180
+ * CEO & CMO Daniel H&ouml;ller, <a target="_blank" href="https://shapepress.com">shapepress.com</a>
181
+ * CEO & CTO Matthias Redl, <a target="_blank" href="https://bytekitchen.at">bytekitchen.at</a>
182
+
183
+ **Important note:** This plugin only supports you in fulfilling the guidelines for compliance with the GDPR. Installation is not enough - correct configuration of this plugin by a website administrator is required to achieve conformity. A 100% conformity only through the plugin cannot be guaranteed, as this depends on several other aspects.
184
 
185
  == Installation ==
186
 
203
 
204
 
205
  == Changelog ==
206
+ = 3.1.7 =
207
+ * css improvements
208
+ * openstreetmap blocking improved
209
+ * performance improvements
210
+ * privacy policy: restored texts of mandatory service
211
+ * WPGlobus compatibility
212
+
213
  = 3.1.6 =
214
  * IE fixes
215
 
349
  * In the beginning there was a version 1
350
 
351
  == Upgrade Notice ==
352
+ = 3.1.7 =
353
  * Important if you upgrade from V2: In V3 a lot of important changes have been made. Please check all your settings after updating to ensure correct functionality
354
  * THE PLUGIN NEEDS A COMPLETE RECONFIGURATION TO FULFILL THE LATEST GDPR LAWS IF YOU UPDATE FROM V2 to V3
355
  * the changelog can be found here: <a href="https://wordpress.org/plugins/shapepress-dsgvo/#developers" target="_blank">https://wordpress.org/plugins/shapepress-dsgvo/#developers</a>
includes/class-sp-dsgvo-embedding-api-base.php CHANGED
@@ -236,4 +236,5 @@ abstract class SPDSGVOEmbeddingApiBase
236
  {
237
  return apply_filters('sp_dsgvo_integrationapis_'.$type, array());
238
  }
 
239
  }
236
  {
237
  return apply_filters('sp_dsgvo_integrationapis_'.$type, array());
238
  }
239
+
240
  }
includes/class-sp-dsgvo-integration-api-base.php CHANGED
@@ -18,6 +18,7 @@ abstract class SPDSGVOIntegrationApiBase
18
  public $optionTechMandatory = false;
19
  public $supportsMultipleImplementationModes = false;
20
  public $implementationModes = [];
 
21
 
22
  protected function __construct()
23
  {
@@ -71,6 +72,11 @@ abstract class SPDSGVOIntegrationApiBase
71
  return $this->cookieNames;
72
  }
73
 
 
 
 
 
 
74
  public final function getCategory($backendMode = false)
75
  {
76
  if ($backendMode == false && $this->getIsTechMandatoryOptionEnabled() == true)
@@ -142,10 +148,6 @@ abstract class SPDSGVOIntegrationApiBase
142
  return $this->optionTechMandatory;
143
  }
144
 
145
- public final function getHosts()
146
- {
147
- return '';
148
- }
149
 
150
  public function getDefaultSettings($ownCodeEnabledByDefault = false)
151
  {
18
  public $optionTechMandatory = false;
19
  public $supportsMultipleImplementationModes = false;
20
  public $implementationModes = [];
21
+ public $hosts = '';
22
 
23
  protected function __construct()
24
  {
72
  return $this->cookieNames;
73
  }
74
 
75
+ public final function getHosts()
76
+ {
77
+ return $this->hosts;
78
+ }
79
+
80
  public final function getCategory($backendMode = false)
81
  {
82
  if ($backendMode == false && $this->getIsTechMandatoryOptionEnabled() == true)
148
  return $this->optionTechMandatory;
149
  }
150
 
 
 
 
 
151
 
152
  public function getDefaultSettings($ownCodeEnabledByDefault = false)
153
  {
includes/class-sp-dsgvo-javascript.php CHANGED
@@ -55,7 +55,7 @@ class SPDSGVOJavascript
55
  'usedTagmanager' => (array_key_exists('usedTagmanager', $integrationSettings) && $integrationSettings['usedTagmanager'] != '') ? $integrationSettings['usedTagmanager'] : '',
56
  'jsCode' => base64_encode(($integration->getJsCode($integrationSettings))),
57
  'hosts' => $integration->getHosts(),
58
- 'placeholder' => $integration->getCategory() == SPDSGVOConstants::CATEGORY_SLUG_EMBEDDINGS ? SPDSGVOEmbeddingsManager::getDummyPlaceholderForMutationObserver($integration) : ''
59
  ];
60
 
61
  $gtmNeeded += (array_key_exists('usedTagmanager', $integrationSettings) && $integrationSettings['usedTagmanager'] == SPDSGVOGoogleTagmanagerApi::getInstance()->getSlug()) ? 1 : 0;
55
  'usedTagmanager' => (array_key_exists('usedTagmanager', $integrationSettings) && $integrationSettings['usedTagmanager'] != '') ? $integrationSettings['usedTagmanager'] : '',
56
  'jsCode' => base64_encode(($integration->getJsCode($integrationSettings))),
57
  'hosts' => $integration->getHosts(),
58
+ 'placeholder' => empty($integration->getHosts()) == false ? SPDSGVOEmbeddingsManager::getDummyPlaceholderForMutationObserver($integration) : ''
59
  ];
60
 
61
  $gtmNeeded += (array_key_exists('usedTagmanager', $integrationSettings) && $integrationSettings['usedTagmanager'] == SPDSGVOGoogleTagmanagerApi::getInstance()->getSlug()) ? 1 : 0;
includes/class-sp-dsgvo-language-tools.php CHANGED
@@ -34,10 +34,11 @@ class SPDSGVOLanguageTools
34
 
35
  public function getTypeOfLanguagePlugin()
36
  {
37
- if ((defined('ICL_LANGUAGE_CODE') || defined('POLYLANG_FILE')) == false) return 'none';
38
  else {
39
  if(function_exists('icl_get_languages')) return 'wpml';
40
  if(function_exists('pll_current_language')) return 'polylang';
 
41
  }
42
 
43
  return "none";
@@ -47,8 +48,7 @@ class SPDSGVOLanguageTools
47
  {
48
  $currentLanguage = null;
49
 
50
- switch ($this->getTypeOfLanguagePlugin())
51
- {
52
  case "wpml":
53
  $currentLanguage = apply_filters('wpml_current_language', null);
54
  break;
@@ -59,6 +59,17 @@ class SPDSGVOLanguageTools
59
  $currentLanguage = pll_default_language();
60
  }
61
  break;
 
 
 
 
 
 
 
 
 
 
 
62
  case "none":
63
  $currentLanguage = $this->defaultLanguage;
64
  break;
@@ -89,6 +100,9 @@ class SPDSGVOLanguageTools
89
  $currentLanguage = pll_default_language();
90
  }
91
  break;
 
 
 
92
  case "none":
93
  $currentLanguage = $this->defaultLanguage;
94
  break;
@@ -115,6 +129,8 @@ class SPDSGVOLanguageTools
115
  static function normalizeLocaleCode($locale)
116
  {
117
  try {
 
 
118
  if (substr( $locale, 0, 2 ) === 'de') $locale = 'de_DE';
119
  if (substr( $locale, 0, 2 ) === 'en') $locale = 'en_EN';
120
  if (substr( $locale, 0, 2 ) === 'fr') $locale = 'fr_FR';
34
 
35
  public function getTypeOfLanguagePlugin()
36
  {
37
+ if ((defined('ICL_LANGUAGE_CODE') || defined('POLYLANG_FILE') || class_exists( 'WPGlobus' )) == false) return 'none';
38
  else {
39
  if(function_exists('icl_get_languages')) return 'wpml';
40
  if(function_exists('pll_current_language')) return 'polylang';
41
+ if(class_exists( 'WPGlobus' )) return 'wpglobus';
42
  }
43
 
44
  return "none";
48
  {
49
  $currentLanguage = null;
50
 
51
+ switch ($this->getTypeOfLanguagePlugin()) {
 
52
  case "wpml":
53
  $currentLanguage = apply_filters('wpml_current_language', null);
54
  break;
59
  $currentLanguage = pll_default_language();
60
  }
61
  break;
62
+ case "wpglobus":
63
+ /*
64
+ $languageCookieThere = isset($_COOKIE[WPGlobus::_COOKIE]);
65
+ if ($languageCookieThere == false) {
66
+ $currentLanguage = WPGlobus::Config()->language;
67
+ } else
68
+ {
69
+ $currentLanguage = stripslashes($_COOKIE[WPGlobus::_COOKIE]);
70
+ }*/
71
+ $currentLanguage = WPGlobus::Config()->language;
72
+ break;
73
  case "none":
74
  $currentLanguage = $this->defaultLanguage;
75
  break;
100
  $currentLanguage = pll_default_language();
101
  }
102
  break;
103
+ case "wpglobus":
104
+ $currentLanguage = WPGlobus::Config()->default_language;
105
+ break;
106
  case "none":
107
  $currentLanguage = $this->defaultLanguage;
108
  break;
129
  static function normalizeLocaleCode($locale)
130
  {
131
  try {
132
+ $locale = strtolower($locale);
133
+
134
  if (substr( $locale, 0, 2 ) === 'de') $locale = 'de_DE';
135
  if (substr( $locale, 0, 2 ) === 'en') $locale = 'en_EN';
136
  if (substr( $locale, 0, 2 ) === 'fr') $locale = 'fr_FR';
includes/class-sp-dsgvo.php CHANGED
@@ -27,159 +27,165 @@
27
  * @subpackage WP DSGVO Tools/includes
28
  * @author Shapepress eU
29
  */
30
- class SPDSGVO{
31
- /**
32
- * The loader that's responsible for maintaining and registering all hooks that power
33
- * the plugin.
34
- *
35
- * @since 1.0.0
36
- * @access protected
37
- * @var sp_dsgvo_Loader $loader Maintains and registers all hooks for the plugin.
38
- */
39
- protected $loader;
40
-
41
- /**
42
- * The current version of the plugin.
43
- *
44
- * @since 1.0.0
45
- * @access protected
46
- * @var string $version The current version of the plugin.
47
- */
48
- protected $version;
49
-
50
- /**
51
- * Singleton
52
- *
53
- * @since 1.0.0
54
- * @access protected
55
- * @var object $instance The singleton instance
56
- */
57
- protected static $instance = null;
58
-
59
- protected function __construct(){
60
- $this->version = sp_dsgvo_VERSION;
61
- $this->loadDependencies();
62
-
63
- if (is_admin()) {
 
 
64
  $this->defineAdminHooks();
65
  } else {
66
  $this->definePublicHooks();
67
  }
68
  }
69
 
70
- protected function __clone(){}
 
 
71
 
72
- public static function instance(){
73
- if(!isset(static::$instance)){
 
74
  static::$instance = new static;
75
  }
76
 
77
  return static::$instance;
78
  }
79
 
80
- private function loadDependencies(){
81
- require_once plugin_dir_path(dirname(__FILE__)) .'includes/class-sp-dsgvo-loader.php';
82
- $this->loader = new SPDSGVOLoader();
83
-
84
- if(file_exists(dirname(dirname(__FILE__)) .'/vendor/autoload.php')){
85
- require_once dirname(dirname(__FILE__)) .'/vendor/autoload.php';
86
- }
87
-
88
- /*
89
- * moved to subject-access-request.php -> just load it only if required
90
- *
91
- if(!class_exists('TCPDF')){
92
- require_once SPDSGVO::pluginDir('includes/lib/tcpdf/dsgdf.php');
93
- require_once SPDSGVO::pluginDir('includes/class-sp-dsgvo-pdf.php');
94
- }
 
95
  */
96
 
97
- $load = array(
98
- //======================================================================
99
- // Libraries
100
- //======================================================================
101
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-constants.php'),
102
- SPDSGVO::pluginDir('includes/helpers.php'),
103
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-cache-manager.php'),
104
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-migrator.php'),
105
- SPDSGVO::pluginDir('admin/class-sp-dsgvo-admin.php'),
106
- SPDSGVO::pluginDir('admin/class-sp-dsgvo-admin-tab.php'),
107
- SPDSGVO::pluginDir('includes/class-sp-dsgvo-ajax-action.php'),
108
- SPDSGVO::pluginDir('admin/class-sp-dsgvo-admin-action.php'),
109
- SPDSGVO::pluginDir('includes/class-sp-dsgvo-settings.php'),
110
- SPDSGVO::pluginDir('includes/class-sp-dsgvo-settings-polylang.php'),
111
- SPDSGVO::pluginDir('includes/class-sp-dsgvo-mail.php'),
112
- SPDSGVO::pluginDir('includes/class-sp-dsgvo-data-collecter.php'),
113
- SPDSGVO::pluginDir('includes/class-sp-dsgvo-log.php'),
114
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-embedding-api-base.php'),
115
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-embeddings-manager.php'),
116
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-integration-api-base.php'),
117
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-integration.php'),
118
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-javascript.php'),
119
- SPDSGVO::pluginDir('includes/class-sp-dsgvo-slim-model.php'),
120
- SPDSGVO::pluginDir('includes/class-sp-dsgvo-cron.php'),
121
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-language-tools.php'),
122
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-cookie-category-api.php'),
123
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-upgrade-notice-tools.php'),
124
- SPDSGVO::pluginDir('public/class-sp-dsgvo-public.php'),
125
 
126
 
127
- //======================================================================
128
- // Models
129
- //======================================================================
130
- SPDSGVO::pluginDir('includes/models/unsubscriber.php'),
131
- SPDSGVO::pluginDir('includes/models/subject-access-request.php'),
132
 
133
 
134
- //======================================================================
135
- // Cron
136
- //======================================================================
137
- SPDSGVO::pluginDir('includes/cron/do-subject-access-request.php'),
138
- SPDSGVO::pluginDir('includes/cron/do-delete-data-request.php'),
139
  SPDSGVO::pluginDir('includes/cron/do-validate-license.php'),
140
  SPDSGVO::pluginDir('includes/cron/do-check-privacy-policy-texts.php'),
141
 
142
- //======================================================================
143
- // Actions
144
- //======================================================================
145
- SPDSGVO::pluginDir('public/actions/unsubscribe.php'),
146
- SPDSGVO::pluginDir('public/actions/user-permissions.php'),
147
- /* i592995 */
148
- SPDSGVO::pluginDir('public/actions/popup-accept.php'),
149
- /* i592995 */
150
- SPDSGVO::pluginDir('public/actions/notice-action.php'),
151
  SPDSGVO::pluginDir('public/actions/legal-web-text-action.php'),
152
  SPDSGVO::pluginDir('public/actions/update-privacy-policy-texts-action.php'),
153
 
154
 
155
- //======================================================================
156
- // Shortcodes
157
- //======================================================================
158
- // SAR
159
- SPDSGVO::pluginDir('public/shortcodes/subject-access-request/download-subject-access-request.php'),
160
- SPDSGVO::pluginDir('public/shortcodes/subject-access-request/subject-access-request-action.php'),
161
- SPDSGVO::pluginDir('public/shortcodes/subject-access-request/subject-access-request.php'),
162
 
163
- // Super Unsubscribe
164
- SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-form.php'),
165
- SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-form-action.php'),
166
- SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php'),
167
 
168
 
169
- SPDSGVO::pluginDir('public/shortcodes/privacy-policy.php'),
170
- SPDSGVO::pluginDir('public/shortcodes/imprint.php'),
171
 
172
  SPDSGVO::pluginDir('public/shortcodes/privacy-policy-link-shortcode.php'),
173
  SPDSGVO::pluginDir('public/shortcodes/cookie-popup-shortcode.php'),
174
 
175
- //======================================================================
176
- // Default Integrations
177
- //======================================================================
178
- SPDSGVO::pluginDir('includes/integrations/mailchimp/MailchimpIntegration.php'),
179
- SPDSGVO::pluginDir('includes/integrations/woocommerce/WoocommerceIntegration.php'),
180
- SPDSGVO::pluginDir('includes/integrations/cf7/Cf7Integration.php'),
181
- SPDSGVO::pluginDir('includes/integrations/bbpress/BbpressIntegration.php'),
182
- SPDSGVO::pluginDir('includes/integrations/buddypress/BuddyPressIntegration.php'),
183
 
184
  // tag manager
185
  SPDSGVO::pluginDir('includes/integrations/tagmanager/googletagmanager/class-sp-dsgvo-google-tagmanager-api.php'),
@@ -216,7 +222,7 @@ class SPDSGVO{
216
  //SPDSGVO::pluginDir('includes/integrations/targeting/gadsense/class-sp-dsgvo-gadsense-api.php'),
217
  //SPDSGVO::pluginDir('includes/integrations/targeting/gadsense/class-sp-dsgvo-gadsense-integration.php'),
218
 
219
- // embeddings
220
  SPDSGVO::pluginDir('includes/integrations/embeddings/youtube/class-sp-dsgvo-youtube-api.php'),
221
  SPDSGVO::pluginDir('includes/integrations/embeddings/youtube/class-sp-dsgvo-youtube-integration.php'),
222
  SPDSGVO::pluginDir('includes/integrations/embeddings/gmaps/class-sp-dsgvo-gmaps-api.php'),
@@ -234,264 +240,281 @@ class SPDSGVO{
234
  SPDSGVO::pluginDir('includes/integrations/embeddings/soundcloud/class-sp-dsgvo-soundcloud-api.php'),
235
  SPDSGVO::pluginDir('includes/integrations/embeddings/soundcloud/class-sp-dsgvo-soundcloud-integration.php'),
236
 
237
- //======================================================================
238
- // Admin Pages
239
- //======================================================================
240
-
241
- SPDSGVO::pluginDir('admin/tabs/v3/info/class-sp-dsgvo-info-tab.php'),
242
- SPDSGVO::pluginDir('admin/tabs/v3/webinars/class-sp-dsgvo-webinars-tab.php'),
243
-
244
- SPDSGVO::pluginDir('admin/tabs/setup/class-sp-dsgvo-create-page-action.php'),
245
 
246
- // Subject Access Request
247
- SPDSGVO::pluginDir('admin/tabs/v3/subject-access-request/class-sp-dsgvo-subject-access-request-tab.php'),
248
- SPDSGVO::pluginDir('admin/tabs/v3/subject-access-request/class-sp-dsgvo-subject-access-request-action.php'),
 
249
 
250
- // Super Unsubscribe
251
- SPDSGVO::pluginDir('admin/tabs/v3/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-tab.php'),
252
- SPDSGVO::pluginDir('admin/tabs/v3/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-action.php'),
253
- /* i592995 */
254
- SPDSGVO::pluginDir('admin/tabs/v3/super-unsubscribe/class-sp-dsgvo-dismiss-unsubscribe-action.php'),
255
- /* i592995 */
256
 
 
 
 
257
 
 
258
 
259
- // Common Settings
260
- SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-common-settings-tab.php'),
261
- SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-common-settings-action.php'),
262
- SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-common-settings-activate-action.php'),
263
- SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-common-settings-validate-license-action.php'),
264
 
265
- SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-privacy-policy-action.php'),
 
 
 
 
 
266
 
 
 
 
 
 
267
 
268
- // Cookie Notice
269
- SPDSGVO::pluginDir('admin/tabs/v3/popup-notice/class-sp-dsgvo-cookie-notice-tab.php'),
270
- SPDSGVO::pluginDir('admin/tabs/v3/popup-notice/class-sp-dsgvo-cookie-notice-action.php'),
271
 
272
- // Operator
273
- SPDSGVO::pluginDir('admin/tabs/v3/operator/class-sp-dsgvo-operator-tab.php'),
274
- SPDSGVO::pluginDir('admin/tabs/v3/operator/class-sp-dsgvo-operator-action.php'),
275
- SPDSGVO::pluginDir('admin/tabs/v3/operator/class-sp-dsgvo-imprint-action.php'),
276
 
277
- // Page Basics
278
- SPDSGVO::pluginDir('admin/tabs/v3/page-basics/class-sp-dsgvo-page-basics-tab.php'),
279
- SPDSGVO::pluginDir('admin/tabs/v3/page-basics/class-sp-dsgvo-page-basics-action.php'),
 
280
 
281
- // Tagmanager Integrations
282
- SPDSGVO::pluginDir('admin/tabs/v3/tagmanager/class-sp-dsgvo-tagmanager-tab.php'),
283
- SPDSGVO::pluginDir('admin/tabs/v3/tagmanager/class-sp-dsgvo-tagmanager-action.php'),
284
 
285
- // Statistic Integrations
286
- SPDSGVO::pluginDir('admin/tabs/v3/stats/class-sp-dsgvo-stats-tab.php'),
287
- SPDSGVO::pluginDir('admin/tabs/v3/stats/class-sp-dsgvo-stats-action.php'),
288
 
289
- // Targeting Integrations
290
- SPDSGVO::pluginDir('admin/tabs/v3/targeting/class-sp-dsgvo-targeting-tab.php'),
291
- SPDSGVO::pluginDir('admin/tabs/v3/targeting/class-sp-dsgvo-targeting-action.php'),
292
 
293
- // Embedding Integrations
294
- SPDSGVO::pluginDir('admin/tabs/v3/embeddings/class-sp-dsgvo-embeddings-tab.php'),
295
- SPDSGVO::pluginDir('admin/tabs/v3/embeddings/class-sp-dsgvo-embeddings-action.php'),
296
 
297
- // Integrations
298
- SPDSGVO::pluginDir('admin/tabs/integrations/class-sp-dsgvo-integrations-tab.php'),
299
- SPDSGVO::pluginDir('admin/tabs/integrations/class-sp-dsgvo-integrations-action.php'),
300
 
301
- );
 
 
 
 
 
302
 
303
- // Gravity Forms
304
- if(class_exists( 'GFAPI' )){
305
- $load[] = SPDSGVO::pluginDir('admin/tabs/gravity-forms/class-sp-dsgvo-gravity-forms-tab.php');
306
- $load[] = SPDSGVO::pluginDir('admin/tabs/gravity-forms/class-sp-dsgvo-gravity-forms-action.php');
307
- }
308
 
309
- foreach($load as $path){
310
- require_once $path;
311
- }
 
 
312
 
313
- do_action('sp_dsgvo_booted');
314
- }
 
315
 
316
- public static function version(){
317
- return (new self)->version;
318
- }
319
 
320
- public static function isTesting(){
321
- return (defined('sp_dsgvo_TESTING') && sp_dsgvo_TESTING === '1');
322
- }
 
323
 
 
 
 
 
324
 
325
 
326
- /**
327
- * Register all of the hooks related to the admin area functionality
328
- * of the plugin.
329
- *
330
- * @since 1.0.0
331
- * @access private
332
- */
333
- private function defineAdminHooks(){
334
- $admin = new SPDSGVOAdmin();
335
- $this->loader->add_action('init', $admin, 'adminInit');
336
- $this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueue_styles');
337
- $this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueue_scripts');
 
338
 
339
- $this->loader->add_action('admin_menu', $admin, 'menuItem');
340
 
341
- // $this->loader->add_filter('manage_users_columns', $admin, 'addExplicitPermissionColumn');
342
- // $this->loader->add_filter('manage_users_custom_column', $admin, 'explicitPermissionColumnCallback', 1, 3);
343
 
344
- //$this->loader->add_action('show_user_profile', $admin, 'showCustomProfileFields');
345
- //$this->loader->add_action('edit_user_profile', $admin, 'showCustomProfileFields');
346
 
347
- $this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueueColorPicker');
348
- $this->loader->add_action('display_post_states', $admin, 'addCustomPostStates', 1, 3);
349
 
350
- // gravity forms action
351
- $this->loader->add_action('gform_after_submission', $admin, 'gf_after_submisison_cleanse', 10, 2);
352
- $this->loader->add_action('admin_notices', $admin, 'dsvgvo_admin_notices' );
353
 
354
- // upgrade notice
355
- $this->loader->add_action( 'in_plugin_update_message-shapepress-dsgvo/sp-dsgvo.php', $admin,'showUpgradeMessage', 10, 2 );
356
  // do migration logic
357
  //$this->loader->add_action('upgrader_process_complete', SPDSGVOMigrator::getInstance(), 'checkForMigrations', 10, 2);
358
  $this->loader->add_action('plugins_loaded', SPDSGVOMigrator::getInstance(), 'checkForMigrations');
359
- }
360
-
361
- /**
362
- * Register all of the hooks related to the public-facing functionality
363
- * of the plugin.
364
- *
365
- * @since 1.0.0
366
- * @access private
367
- */
368
- private function definePublicHooks(){
369
- $public = new SPDSGVOPublic();
370
- $this->loader->add_action('wp_enqueue_scripts', $public, 'enqueue_styles');
371
- $this->loader->add_action('wp_enqueue_scripts', $public, 'enqueue_scripts');
372
- $this->loader->add_action('wp_enqueue_scripts', SPDSGVOJavascript::getInstance(), 'register');
373
- $this->loader->add_action('upload_mimes', $public, 'allowJSON');
374
- //$this->loader->add_action('user_register', $public, 'newUserRegistered', 10, 1);
375
- //$this->loader->add_action('wp', $public, 'forcePermisson');
376
- $this->loader->add_action('init', $public, 'publicInit');
377
- $this->loader->add_action('sp_dsgvo_collect_user_data', $public, 'collectUserData');
378
- $this->loader->add_action('wp_print_footer_scripts', $public, 'wp_print_footer_scripts');
379
- $this->loader->add_action('wp_footer', $public, 'writeFooterScripts', 1000);
380
- $this->loader->add_action('wp_head', $public, 'writeHeaderScripts');
381
- $this->loader->add_action('wp_body_open', $public, 'writeBodyStartScripts');
 
382
 
383
  $this->loader->add_filter('the_content', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessIframes', 50, 1);
384
  $this->loader->add_filter('widget_text_content', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessIframes', 50, 1);
385
  $this->loader->add_filter('widget_custom_html_content', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessIframes', 50, 1);
386
  $this->loader->add_filter('embed_oembed_html', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessOembeds', 50, 2);
387
 
388
- /**
389
- * If activated by user, block google-fonts if cookies are not accepted
390
- */
391
- /*
392
- if(hasUserGivenPermissionFor('google-fonts')) {
393
- SPDSGVOPublic::blockGoogleFonts();
394
- }
395
- */
396
-
397
- $this->loader->add_action('woocommerce_review_order_before_submit', $public, 'wooAddCustomFields', 20 );
398
-
399
- }
400
-
401
- /**
402
- * Run the loader to execute all of the hooks with WordPress.
403
- *
404
- * @since 1.0.0
405
- */
406
- public function run(){
407
- $this->loader->run();
408
- }
409
-
410
- /**
411
- * The name of the plugin used to uniquely identify it within the context of
412
- * WordPress and to define internationalization functionality.
413
- *
414
- * @since 1.0.0
415
- * @return string The name of the plugin.
416
- */
417
- public function get_sp_dsgvo() {
418
- return sp_dsgvo_NAME;
419
- }
420
-
421
- /**
422
- * The reference to the class that orchestrates the hooks with the plugin.
423
- *
424
- * @since 1.0.0
425
- * @return sp_dsgvo_Loader Orchestrates the hooks of the plugin.
426
- */
427
- public function get_loader() {
428
- return $this->loader;
429
- }
430
-
431
- /**
432
- * Retrieve the version number of the plugin.
433
- *
434
- * @since 1.0.0
435
- * @return string The version number of the plugin.
436
- */
437
- public function get_version() {
438
- return $this->version;
439
- }
440
-
441
- public function testPermissions(){
442
- return wp_upload_bits('sp-dsgvo-test-file.txt', NULL, time())['error'] === FALSE;
443
- }
444
-
445
-
446
- //======================================================================
447
- // Helpers
448
- //======================================================================
449
- public static function adminURL($params = NULL){
450
- if(is_null($params)){
451
- $params = array();
452
- }
453
-
454
- $params = http_build_query(array_merge(array(
455
- 'page' => 'sp-dsgvo',
456
- ), $params));
457
-
458
- return admin_url() .'?'. $params;
459
- }
460
-
461
- public static function pluginDir($append = ''){
462
- return plugin_dir_path(dirname(__FILE__)) . $append;
463
- }
464
-
465
- public static function pluginURI($append = ''){
466
- return plugin_dir_url(dirname(__FILE__)) . $append;
467
- }
468
-
469
- public static function isAjax(){
470
- return (strpos($_SERVER['REQUEST_URI'], 'admin-ajax.php') !== FALSE);
471
- }
472
-
473
- public function slugify($text){
474
- $text = preg_replace('~[^\pL\d]+~u', '-', $text);
475
-
476
- // transliterate
477
- $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
478
-
479
- // remove unwanted characters
480
- $text = preg_replace('~[^-\w]+~', '', $text);
481
-
482
- // trim
483
- $text = trim($text, '-');
484
-
485
- // remove duplicate -
486
- $text = preg_replace('~-+~', '-', $text);
487
-
488
- // lowercase
489
- $text = strtolower($text);
490
-
491
- if(empty($text)){
492
- return 'n-a';
493
- }
494
-
495
- return $text;
496
- }
 
 
 
 
 
 
 
 
 
 
497
  }
27
  * @subpackage WP DSGVO Tools/includes
28
  * @author Shapepress eU
29
  */
30
+ class SPDSGVO
31
+ {
32
+ /**
33
+ * The loader that's responsible for maintaining and registering all hooks that power
34
+ * the plugin.
35
+ *
36
+ * @since 1.0.0
37
+ * @access protected
38
+ * @var sp_dsgvo_Loader $loader Maintains and registers all hooks for the plugin.
39
+ */
40
+ protected $loader;
41
+
42
+ /**
43
+ * The current version of the plugin.
44
+ *
45
+ * @since 1.0.0
46
+ * @access protected
47
+ * @var string $version The current version of the plugin.
48
+ */
49
+ protected $version;
50
+
51
+ /**
52
+ * Singleton
53
+ *
54
+ * @since 1.0.0
55
+ * @access protected
56
+ * @var object $instance The singleton instance
57
+ */
58
+ protected static $instance = null;
59
+
60
+ protected function __construct()
61
+ {
62
+ $this->version = sp_dsgvo_VERSION;
63
+ $this->loadDependencies();
64
+
65
+ if (is_admin()) {
66
  $this->defineAdminHooks();
67
  } else {
68
  $this->definePublicHooks();
69
  }
70
  }
71
 
72
+ protected function __clone()
73
+ {
74
+ }
75
 
76
+ public static function instance()
77
+ {
78
+ if (!isset(static::$instance)) {
79
  static::$instance = new static;
80
  }
81
 
82
  return static::$instance;
83
  }
84
 
85
+ private function loadDependencies()
86
+ {
87
+ require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-sp-dsgvo-loader.php';
88
+ $this->loader = new SPDSGVOLoader();
89
+
90
+ if (file_exists(dirname(dirname(__FILE__)) . '/vendor/autoload.php')) {
91
+ require_once dirname(dirname(__FILE__)) . '/vendor/autoload.php';
92
+ }
93
+
94
+ /*
95
+ * moved to subject-access-request.php -> just load it only if required
96
+ *
97
+ if(!class_exists('TCPDF')){
98
+ require_once SPDSGVO::pluginDir('includes/lib/tcpdf/dsgdf.php');
99
+ require_once SPDSGVO::pluginDir('includes/class-sp-dsgvo-pdf.php');
100
+ }
101
  */
102
 
103
+ $load = array(
104
+ //======================================================================
105
+ // Libraries
106
+ //======================================================================
107
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-constants.php'),
108
+ SPDSGVO::pluginDir('includes/helpers.php'),
109
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-cache-manager.php'),
110
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-migrator.php'),
111
+ SPDSGVO::pluginDir('admin/class-sp-dsgvo-admin.php'),
112
+ SPDSGVO::pluginDir('admin/class-sp-dsgvo-admin-tab.php'),
113
+ SPDSGVO::pluginDir('includes/class-sp-dsgvo-ajax-action.php'),
114
+ SPDSGVO::pluginDir('admin/class-sp-dsgvo-admin-action.php'),
115
+ SPDSGVO::pluginDir('includes/class-sp-dsgvo-settings.php'),
116
+ SPDSGVO::pluginDir('includes/class-sp-dsgvo-settings-polylang.php'),
117
+ SPDSGVO::pluginDir('includes/class-sp-dsgvo-mail.php'),
118
+ SPDSGVO::pluginDir('includes/class-sp-dsgvo-data-collecter.php'),
119
+ SPDSGVO::pluginDir('includes/class-sp-dsgvo-log.php'),
120
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-embedding-api-base.php'),
121
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-embeddings-manager.php'),
122
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-integration-api-base.php'),
123
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-integration.php'),
124
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-javascript.php'),
125
+ SPDSGVO::pluginDir('includes/class-sp-dsgvo-slim-model.php'),
126
+ SPDSGVO::pluginDir('includes/class-sp-dsgvo-cron.php'),
127
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-language-tools.php'),
128
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-cookie-category-api.php'),
129
  SPDSGVO::pluginDir('includes/class-sp-dsgvo-upgrade-notice-tools.php'),
130
+ SPDSGVO::pluginDir('public/class-sp-dsgvo-public.php'),
131
 
132
 
133
+ //======================================================================
134
+ // Models
135
+ //======================================================================
136
+ SPDSGVO::pluginDir('includes/models/unsubscriber.php'),
137
+ SPDSGVO::pluginDir('includes/models/subject-access-request.php'),
138
 
139
 
140
+ //======================================================================
141
+ // Cron
142
+ //======================================================================
143
+ SPDSGVO::pluginDir('includes/cron/do-subject-access-request.php'),
144
+ SPDSGVO::pluginDir('includes/cron/do-delete-data-request.php'),
145
  SPDSGVO::pluginDir('includes/cron/do-validate-license.php'),
146
  SPDSGVO::pluginDir('includes/cron/do-check-privacy-policy-texts.php'),
147
 
148
+ //======================================================================
149
+ // Actions
150
+ //======================================================================
151
+ SPDSGVO::pluginDir('public/actions/unsubscribe.php'),
152
+ SPDSGVO::pluginDir('public/actions/user-permissions.php'),
153
+ /* i592995 */
154
+ SPDSGVO::pluginDir('public/actions/popup-accept.php'),
155
+ /* i592995 */
156
+ SPDSGVO::pluginDir('public/actions/notice-action.php'),
157
  SPDSGVO::pluginDir('public/actions/legal-web-text-action.php'),
158
  SPDSGVO::pluginDir('public/actions/update-privacy-policy-texts-action.php'),
159
 
160
 
161
+ //======================================================================
162
+ // Shortcodes
163
+ //======================================================================
164
+ // SAR
165
+ SPDSGVO::pluginDir('public/shortcodes/subject-access-request/download-subject-access-request.php'),
166
+ SPDSGVO::pluginDir('public/shortcodes/subject-access-request/subject-access-request-action.php'),
167
+ SPDSGVO::pluginDir('public/shortcodes/subject-access-request/subject-access-request.php'),
168
 
169
+ // Super Unsubscribe
170
+ SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-form.php'),
171
+ SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-form-action.php'),
172
+ SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php'),
173
 
174
 
175
+ SPDSGVO::pluginDir('public/shortcodes/privacy-policy.php'),
176
+ SPDSGVO::pluginDir('public/shortcodes/imprint.php'),
177
 
178
  SPDSGVO::pluginDir('public/shortcodes/privacy-policy-link-shortcode.php'),
179
  SPDSGVO::pluginDir('public/shortcodes/cookie-popup-shortcode.php'),
180
 
181
+ //======================================================================
182
+ // Default Integrations
183
+ //======================================================================
184
+ SPDSGVO::pluginDir('includes/integrations/mailchimp/MailchimpIntegration.php'),
185
+ SPDSGVO::pluginDir('includes/integrations/woocommerce/WoocommerceIntegration.php'),
186
+ SPDSGVO::pluginDir('includes/integrations/cf7/Cf7Integration.php'),
187
+ SPDSGVO::pluginDir('includes/integrations/bbpress/BbpressIntegration.php'),
188
+ SPDSGVO::pluginDir('includes/integrations/buddypress/BuddyPressIntegration.php'),
189
 
190
  // tag manager
191
  SPDSGVO::pluginDir('includes/integrations/tagmanager/googletagmanager/class-sp-dsgvo-google-tagmanager-api.php'),
222
  //SPDSGVO::pluginDir('includes/integrations/targeting/gadsense/class-sp-dsgvo-gadsense-api.php'),
223
  //SPDSGVO::pluginDir('includes/integrations/targeting/gadsense/class-sp-dsgvo-gadsense-integration.php'),
224
 
225
+ // embeddings
226
  SPDSGVO::pluginDir('includes/integrations/embeddings/youtube/class-sp-dsgvo-youtube-api.php'),
227
  SPDSGVO::pluginDir('includes/integrations/embeddings/youtube/class-sp-dsgvo-youtube-integration.php'),
228
  SPDSGVO::pluginDir('includes/integrations/embeddings/gmaps/class-sp-dsgvo-gmaps-api.php'),
240
  SPDSGVO::pluginDir('includes/integrations/embeddings/soundcloud/class-sp-dsgvo-soundcloud-api.php'),
241
  SPDSGVO::pluginDir('includes/integrations/embeddings/soundcloud/class-sp-dsgvo-soundcloud-integration.php'),
242
 
 
 
 
 
 
 
 
 
243
 
244
+ );
245
+ //======================================================================
246
+ // Admin Pages
247
+ //======================================================================
248
 
249
+ if (is_admin()) {
 
 
 
 
 
250
 
251
+ array_push($load,
252
+ SPDSGVO::pluginDir('admin/tabs/v3/info/class-sp-dsgvo-info-tab.php'),
253
+ SPDSGVO::pluginDir('admin/tabs/v3/webinars/class-sp-dsgvo-webinars-tab.php'),
254
 
255
+ SPDSGVO::pluginDir('admin/tabs/setup/class-sp-dsgvo-create-page-action.php'),
256
 
257
+ // Subject Access Request
258
+ SPDSGVO::pluginDir('admin/tabs/v3/subject-access-request/class-sp-dsgvo-subject-access-request-tab.php'),
259
+ SPDSGVO::pluginDir('admin/tabs/v3/subject-access-request/class-sp-dsgvo-subject-access-request-action.php'),
 
 
260
 
261
+ // Super Unsubscribe
262
+ SPDSGVO::pluginDir('admin/tabs/v3/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-tab.php'),
263
+ SPDSGVO::pluginDir('admin/tabs/v3/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-action.php'),
264
+ /* i592995 */
265
+ SPDSGVO::pluginDir('admin/tabs/v3/super-unsubscribe/class-sp-dsgvo-dismiss-unsubscribe-action.php'),
266
+ /* i592995 */
267
 
268
+ // Common Settings
269
+ SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-common-settings-tab.php'),
270
+ SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-common-settings-action.php'),
271
+ SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-common-settings-activate-action.php'),
272
+ SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-common-settings-validate-license-action.php'),
273
 
274
+ SPDSGVO::pluginDir('admin/tabs/v3/common-settings/class-sp-dsgvo-privacy-policy-action.php'),
 
 
275
 
276
+ // Cookie Notice
277
+ SPDSGVO::pluginDir('admin/tabs/v3/popup-notice/class-sp-dsgvo-cookie-notice-tab.php'),
278
+ SPDSGVO::pluginDir('admin/tabs/v3/popup-notice/class-sp-dsgvo-cookie-notice-action.php'),
 
279
 
280
+ // Operator
281
+ SPDSGVO::pluginDir('admin/tabs/v3/operator/class-sp-dsgvo-operator-tab.php'),
282
+ SPDSGVO::pluginDir('admin/tabs/v3/operator/class-sp-dsgvo-operator-action.php'),
283
+ SPDSGVO::pluginDir('admin/tabs/v3/operator/class-sp-dsgvo-imprint-action.php'),
284
 
285
+ // Page Basics
286
+ SPDSGVO::pluginDir('admin/tabs/v3/page-basics/class-sp-dsgvo-page-basics-tab.php'),
287
+ SPDSGVO::pluginDir('admin/tabs/v3/page-basics/class-sp-dsgvo-page-basics-action.php'),
288
 
289
+ // Tagmanager Integrations
290
+ SPDSGVO::pluginDir('admin/tabs/v3/tagmanager/class-sp-dsgvo-tagmanager-tab.php'),
291
+ SPDSGVO::pluginDir('admin/tabs/v3/tagmanager/class-sp-dsgvo-tagmanager-action.php'),
292
 
293
+ // Statistic Integrations
294
+ SPDSGVO::pluginDir('admin/tabs/v3/stats/class-sp-dsgvo-stats-tab.php'),
295
+ SPDSGVO::pluginDir('admin/tabs/v3/stats/class-sp-dsgvo-stats-action.php'),
296
 
297
+ // Targeting Integrations
298
+ SPDSGVO::pluginDir('admin/tabs/v3/targeting/class-sp-dsgvo-targeting-tab.php'),
299
+ SPDSGVO::pluginDir('admin/tabs/v3/targeting/class-sp-dsgvo-targeting-action.php'),
300
 
301
+ // Embedding Integrations
302
+ SPDSGVO::pluginDir('admin/tabs/v3/embeddings/class-sp-dsgvo-embeddings-tab.php'),
303
+ SPDSGVO::pluginDir('admin/tabs/v3/embeddings/class-sp-dsgvo-embeddings-action.php'),
304
 
305
+ // Integrations
306
+ SPDSGVO::pluginDir('admin/tabs/integrations/class-sp-dsgvo-integrations-tab.php'),
307
+ SPDSGVO::pluginDir('admin/tabs/integrations/class-sp-dsgvo-integrations-action.php')
308
+ );
309
+ //array_push($load, $loadAdmin);
310
+ }
311
 
 
 
 
 
 
312
 
313
+ // Gravity Forms
314
+ if (class_exists('GFAPI')) {
315
+ $load[] = SPDSGVO::pluginDir('admin/tabs/gravity-forms/class-sp-dsgvo-gravity-forms-tab.php');
316
+ $load[] = SPDSGVO::pluginDir('admin/tabs/gravity-forms/class-sp-dsgvo-gravity-forms-action.php');
317
+ }
318
 
319
+ foreach ($load as $path) {
320
+ require_once $path;
321
+ }
322
 
323
+ do_action('sp_dsgvo_booted');
324
+ }
 
325
 
326
+ public static function version()
327
+ {
328
+ return (new self)->version;
329
+ }
330
 
331
+ public static function isTesting()
332
+ {
333
+ return (defined('sp_dsgvo_TESTING') && sp_dsgvo_TESTING === '1');
334
+ }
335
 
336
 
337
+ /**
338
+ * Register all of the hooks related to the admin area functionality
339
+ * of the plugin.
340
+ *
341
+ * @since 1.0.0
342
+ * @access private
343
+ */
344
+ private function defineAdminHooks()
345
+ {
346
+ $admin = new SPDSGVOAdmin();
347
+ $this->loader->add_action('init', $admin, 'adminInit');
348
+ $this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueue_styles');
349
+ $this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueue_scripts');
350
 
351
+ $this->loader->add_action('admin_menu', $admin, 'menuItem');
352
 
353
+ // $this->loader->add_filter('manage_users_columns', $admin, 'addExplicitPermissionColumn');
354
+ // $this->loader->add_filter('manage_users_custom_column', $admin, 'explicitPermissionColumnCallback', 1, 3);
355
 
356
+ //$this->loader->add_action('show_user_profile', $admin, 'showCustomProfileFields');
357
+ //$this->loader->add_action('edit_user_profile', $admin, 'showCustomProfileFields');
358
 
359
+ $this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueueColorPicker');
360
+ $this->loader->add_action('display_post_states', $admin, 'addCustomPostStates', 1, 3);
361
 
362
+ // gravity forms action
363
+ $this->loader->add_action('gform_after_submission', $admin, 'gf_after_submisison_cleanse', 10, 2);
364
+ $this->loader->add_action('admin_notices', $admin, 'dsvgvo_admin_notices');
365
 
366
+ // upgrade notice
367
+ $this->loader->add_action('in_plugin_update_message-shapepress-dsgvo/sp-dsgvo.php', $admin, 'showUpgradeMessage', 10, 2);
368
  // do migration logic
369
  //$this->loader->add_action('upgrader_process_complete', SPDSGVOMigrator::getInstance(), 'checkForMigrations', 10, 2);
370
  $this->loader->add_action('plugins_loaded', SPDSGVOMigrator::getInstance(), 'checkForMigrations');
371
+ }
372
+
373
+ /**
374
+ * Register all of the hooks related to the public-facing functionality
375
+ * of the plugin.
376
+ *
377
+ * @since 1.0.0
378
+ * @access private
379
+ */
380
+ private function definePublicHooks()
381
+ {
382
+ $public = new SPDSGVOPublic();
383
+ $this->loader->add_action('wp_enqueue_scripts', $public, 'enqueue_styles');
384
+ $this->loader->add_action('wp_enqueue_scripts', $public, 'enqueue_scripts');
385
+ $this->loader->add_action('wp_enqueue_scripts', SPDSGVOJavascript::getInstance(), 'register');
386
+ $this->loader->add_action('upload_mimes', $public, 'allowJSON');
387
+ //$this->loader->add_action('user_register', $public, 'newUserRegistered', 10, 1);
388
+ //$this->loader->add_action('wp', $public, 'forcePermisson');
389
+ $this->loader->add_action('init', $public, 'publicInit');
390
+ $this->loader->add_action('sp_dsgvo_collect_user_data', $public, 'collectUserData');
391
+ $this->loader->add_action('wp_print_footer_scripts', $public, 'wp_print_footer_scripts');
392
+ $this->loader->add_action('wp_footer', $public, 'writeFooterScripts', 1000);
393
+ $this->loader->add_action('wp_head', $public, 'writeHeaderScripts');
394
+ $this->loader->add_action('wp_body_open', $public, 'writeBodyStartScripts');
395
 
396
  $this->loader->add_filter('the_content', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessIframes', 50, 1);
397
  $this->loader->add_filter('widget_text_content', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessIframes', 50, 1);
398
  $this->loader->add_filter('widget_custom_html_content', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessIframes', 50, 1);
399
  $this->loader->add_filter('embed_oembed_html', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessOembeds', 50, 2);
400
 
401
+ /**
402
+ * If activated by user, block google-fonts if cookies are not accepted
403
+ */
404
+ /*
405
+ if(hasUserGivenPermissionFor('google-fonts')) {
406
+ SPDSGVOPublic::blockGoogleFonts();
407
+ }
408
+ */
409
+
410
+ $this->loader->add_action('woocommerce_review_order_before_submit', $public, 'wooAddCustomFields', 20);
411
+
412
+ }
413
+
414
+ /**
415
+ * Run the loader to execute all of the hooks with WordPress.
416
+ *
417
+ * @since 1.0.0
418
+ */
419
+ public function run()
420
+ {
421
+ $this->loader->run();
422
+ }
423
+
424
+ /**
425
+ * The name of the plugin used to uniquely identify it within the context of
426
+ * WordPress and to define internationalization functionality.
427
+ *
428
+ * @return string The name of the plugin.
429
+ * @since 1.0.0
430
+ */
431
+ public function get_sp_dsgvo()
432
+ {
433
+ return sp_dsgvo_NAME;
434
+ }
435
+
436
+ /**
437
+ * The reference to the class that orchestrates the hooks with the plugin.
438
+ *
439
+ * @return sp_dsgvo_Loader Orchestrates the hooks of the plugin.
440
+ * @since 1.0.0
441
+ */
442
+ public function get_loader()
443
+ {
444
+ return $this->loader;
445
+ }
446
+
447
+ /**
448
+ * Retrieve the version number of the plugin.
449
+ *
450
+ * @return string The version number of the plugin.
451
+ * @since 1.0.0
452
+ */
453
+ public function get_version()
454
+ {
455
+ return $this->version;
456
+ }
457
+
458
+ public function testPermissions()
459
+ {
460
+ return wp_upload_bits('sp-dsgvo-test-file.txt', NULL, time())['error'] === FALSE;
461
+ }
462
+
463
+
464
+ //======================================================================
465
+ // Helpers
466
+ //======================================================================
467
+ public static function adminURL($params = NULL)
468
+ {
469
+ if (is_null($params)) {
470
+ $params = array();
471
+ }
472
+
473
+ $params = http_build_query(array_merge(array(
474
+ 'page' => 'sp-dsgvo',
475
+ ), $params));
476
+
477
+ return admin_url() . '?' . $params;
478
+ }
479
+
480
+ public static function pluginDir($append = '')
481
+ {
482
+ return plugin_dir_path(dirname(__FILE__)) . $append;
483
+ }
484
+
485
+ public static function pluginURI($append = '')
486
+ {
487
+ return plugin_dir_url(dirname(__FILE__)) . $append;
488
+ }
489
+
490
+ public static function isAjax()
491
+ {
492
+ return (strpos($_SERVER['REQUEST_URI'], 'admin-ajax.php') !== FALSE);
493
+ }
494
+
495
+ public function slugify($text)
496
+ {
497
+ $text = preg_replace('~[^\pL\d]+~u', '-', $text);
498
+
499
+ // transliterate
500
+ $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
501
+
502
+ // remove unwanted characters
503
+ $text = preg_replace('~[^-\w]+~', '', $text);
504
+
505
+ // trim
506
+ $text = trim($text, '-');
507
+
508
+ // remove duplicate -
509
+ $text = preg_replace('~-+~', '-', $text);
510
+
511
+ // lowercase
512
+ $text = strtolower($text);
513
+
514
+ if (empty($text)) {
515
+ return 'n-a';
516
+ }
517
+
518
+ return $text;
519
+ }
520
  }
includes/integrations/embeddings/openstreetmap/class-sp-dsgvo-openstreetmap-api.php CHANGED
@@ -11,7 +11,7 @@ class SPDSGVOOpenstreetmapApi extends SPDSGVOEmbeddingApiBase
11
  $this->storageId = 'osm';
12
  $this->cookieCategory = SPDSGVOConstants::CATEGORY_SLUG_EMBEDDINGS;
13
  $this->cookieNames = '';
14
- $this->hosts = 'www.openstreetmap.org';
15
 
16
  parent::__construct();
17
  }
11
  $this->storageId = 'osm';
12
  $this->cookieCategory = SPDSGVOConstants::CATEGORY_SLUG_EMBEDDINGS;
13
  $this->cookieNames = '';
14
+ $this->hosts = 'openstreetmap.org';
15
 
16
  parent::__construct();
17
  }
includes/integrations/targeting/gadsense/class-sp-dsgvo-gadsense-api.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  class SPDSGVOGadsenseApi extends SPDSGVOIntegrationApiBase
4
  {
5
-
6
 
7
  protected function __construct()
8
  {
@@ -16,6 +16,9 @@ class SPDSGVOGadsenseApi extends SPDSGVOIntegrationApiBase
16
  $this->insertLocation = 'head';
17
  $this->isPremium = true;
18
  $this->isTagManagerCompatible = false;
 
 
 
19
  }
20
 
21
  public static function getDefaultJsCode($propertyId)
@@ -26,7 +29,32 @@ class SPDSGVOGadsenseApi extends SPDSGVOIntegrationApiBase
26
 
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
  SPDSGVOGadsenseApi::getInstance()->register();
2
 
3
  class SPDSGVOGadsenseApi extends SPDSGVOIntegrationApiBase
4
  {
5
+ public $overlayText;
6
 
7
  protected function __construct()
8
  {
16
  $this->insertLocation = 'head';
17
  $this->isPremium = true;
18
  $this->isTagManagerCompatible = false;
19
+ $this->hosts = 'doubleclick.net';
20
+
21
+ $this->overlayText = SPDSGVOLanguageTools::getLwText($this->slug, 'overlay', '');
22
  }
23
 
24
  public static function getDefaultJsCode($propertyId)
29
 
30
  }
31
 
32
+ // copied fro embeddings-manager for special case of adsense
33
+ public function processContent($content)
34
+ {
35
+ // if its allowed by cookie nothing is to do here. otherwise replace iframes, show image, add optin handler
36
+ if ($this->checkIfIntegrationIsAllowed($this->slug) == true) return;
37
+
38
+ $replacedContent = $this->getOptInContentReplacementHtml($content);
39
+
40
+ return $replacedContent;
41
+ }
42
 
43
+ public function getOptInContentReplacementHtml($content)
44
+ {
45
+
46
+ $output = '<div class="sp-dsgvo-blocked-embedding-placeholder sp-dsgvo-blocked-embedding-placeholder-'.$this->slug.'">';
47
+ $output .=' <div class="sp-dsgvo-blocked-embedding-placeholder-header"><img class="sp-dsgvo-blocked-embedding-placeholder-header-icon" src="'. SPDSGVO::pluginURI('public/images/embeddings/icon-'.$this->slug .'.svg') .'"/>'.sprintf(__('We need your consent to load the content of %s.','shapepress-dsgvo'), $this->name).'</div>';
48
+ $output .=' <div class="sp-dsgvo-blocked-embedding-placeholder-body">';
49
+ $output .= $this->overlayText;
50
+ $output .=' <div class="sp-dsgvo-blocked-embedding-button-container"> <a href="#" class="sp-dsgvo-direct-enable-popup sp-dsgvo-blocked-embedding-button-enable" data-slug="'.$this->slug.'">'.__('Click here to enable this content.','shapepress-dsgvo').'</a></div>';
51
+ $output .=' </div>';
52
+ if (empty($this->additionalCss) == false) $output.= '<style>'.$this->additionalCss .'</style>';
53
+
54
+ $output .='</div>';
55
+
56
+ return $output;
57
+ }
58
  }
59
 
60
  SPDSGVOGadsenseApi::getInstance()->register();
public/actions/legal-web-text-action.php CHANGED
@@ -44,22 +44,22 @@ Class SPDSGVOLegalWebTextAction extends SPDSGVOAjaxAction{
44
  $settings = SPDSGVOPiwikApi::getInstance()->getSettings();
45
  break;
46
  }
 
47
  if ($settings['showAsTechMandatory'] == '1')
48
  {
49
  $slug .= '-mandatory';
50
  } else
51
  {
52
- $slug .= '-';
53
- $slug .= (array_key_exists('implementationMode',$settings)) ? $settings['implementationMode'] : 'on-premises';
54
 
55
- if (strpos($slug, "by-agency") >= 0)
56
- {
57
- if (array_key_exists('agency', $settings['meta']) == true)
58
- {
59
- $webAgencyText = $settings['meta']['agency'];
60
- }
61
 
62
- }
 
 
63
  }
64
  }
65
 
44
  $settings = SPDSGVOPiwikApi::getInstance()->getSettings();
45
  break;
46
  }
47
+ /*
48
  if ($settings['showAsTechMandatory'] == '1')
49
  {
50
  $slug .= '-mandatory';
51
  } else
52
  {
 
 
53
 
54
+ }
55
+ */
56
+
57
+ $slug .= '-';
58
+ $slug .= (array_key_exists('implementationMode',$settings)) ? $settings['implementationMode'] : 'on-premises';
 
59
 
60
+ if (array_key_exists('agency', $settings['meta']) == true)
61
+ {
62
+ $webAgencyText = $settings['meta']['agency'];
63
  }
64
  }
65
 
public/class-sp-dsgvo-public.php CHANGED
@@ -57,7 +57,7 @@ class SPDSGVOPublic
57
  {
58
  wp_enqueue_style(sp_dsgvo_NAME.'_twbs4_grid', plugin_dir_url(__FILE__) . 'css/bootstrap-grid.min.css', array(), sp_dsgvo_VERSION, 'all');
59
  wp_enqueue_style(sp_dsgvo_NAME, plugin_dir_url(__FILE__) . 'css/sp-dsgvo-public.min.css', array(), sp_dsgvo_VERSION, 'all');
60
- wp_enqueue_style(sp_dsgvo_NAME.'_popup', plugin_dir_url(__FILE__) . 'css/sp-dsgvo-popup.min.css', array(), sp_dsgvo_VERSION, 'all');
61
  wp_enqueue_style('simplebar', plugin_dir_url(__FILE__) . 'css/simplebar.min.css');
62
 
63
  }
@@ -514,6 +514,54 @@ class SPDSGVOPublic
514
  </div><!-- .popup-language-switcher -->
515
  <?php endif; ?>
516
  <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
517
  </div><!-- .lang-wrapper -->
518
  </div>
519
 
@@ -526,7 +574,7 @@ class SPDSGVOPublic
526
 
527
  <div class="lwb-row" style="margin-bottom: 3px;">
528
 
529
- <div class="lwb-col-md-5">
530
  <div class="sp-dsgvo-logo-wrapper">
531
  <?php
532
  $src = sp_dsgvo_URL . 'public/images/legalwebio-icon.png';
@@ -548,7 +596,7 @@ class SPDSGVOPublic
548
 
549
  </div>
550
  </div>
551
- <div class="sp-dsgvo-link-wrapper lwb-col-md-4 px-0">
552
  <a href="<?= $imprintUrl; ?>" target="_blank"><?= __('Imprint', 'shapepress-dsgvo');?></a>
553
  <span>|</span>
554
  <a href="<?= $privacyPolicyUrl; ?>" target="_blank"><?= SPDSGVOSettings::get('privacy_policy_custom_header');?></a>
@@ -586,6 +634,55 @@ class SPDSGVOPublic
586
  </div><!-- .popup-language-switcher -->
587
  <?php endif; ?>
588
  <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
589
  </div><!-- .lang-wrapper -->
590
  <div class="lwb-col-md-1" style="text-align: right">
591
  <?php
57
  {
58
  wp_enqueue_style(sp_dsgvo_NAME.'_twbs4_grid', plugin_dir_url(__FILE__) . 'css/bootstrap-grid.min.css', array(), sp_dsgvo_VERSION, 'all');
59
  wp_enqueue_style(sp_dsgvo_NAME, plugin_dir_url(__FILE__) . 'css/sp-dsgvo-public.min.css', array(), sp_dsgvo_VERSION, 'all');
60
+ wp_enqueue_style(sp_dsgvo_NAME.'_popup', plugin_dir_url(__FILE__) . 'css/sp-dsgvo-popup.css', array(), sp_dsgvo_VERSION, 'all');
61
  wp_enqueue_style('simplebar', plugin_dir_url(__FILE__) . 'css/simplebar.min.css');
62
 
63
  }
514
  </div><!-- .popup-language-switcher -->
515
  <?php endif; ?>
516
  <?php endif; ?>
517
+ <?php
518
+ /**
519
+ * WPGlobus language switcher.
520
+ */
521
+ if ( class_exists( 'WPGlobus' ) ): ?>
522
+ <div class="sp-dsgvo-popup-language-switcher">
523
+
524
+ <?php
525
+
526
+ $currentLanguage = WPGlobus::Config()->language;
527
+ $enabled_languages = apply_filters( 'wpglobus_extra_languages', WPGlobus::Config()->enabled_languages, WPGlobus::Config()->language );
528
+ ?>
529
+
530
+ <span class="sp-dsgvo-lang-active">
531
+ <img src="<?php echo WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $currentLanguage ]; ?>" alt="<?= __('Country flag', 'shapepress-dsgvo');?>" style="vertical-align: middle;"/>
532
+ <span><?php echo WPGlobus::Config()->en_language_name[$currentLanguage]; ?></span>
533
+ <svg width="10" height="6">
534
+ <line x1="0" y1="0" x2="5" y2="5" />
535
+ <line x1="5" y1="5" x2="10" y2="0" />
536
+ </svg>
537
+ </span>
538
+
539
+ <div class="sp-dsgvo-lang-dropdown">
540
+
541
+ <?php
542
+
543
+ /**
544
+ * Filter that prevent using language that has `draft` status.
545
+ * That works with module `Publish` from WPGlobus Plus add-on.
546
+ */
547
+
548
+ foreach ( $enabled_languages as $language ):
549
+ $url = null;
550
+
551
+ if ( $language != WPGlobus::Config()->language ) {
552
+ $url = WPGlobus_Utils::localize_current_url( $language );
553
+ }
554
+
555
+ echo '<a href="'.esc_url( $url ).'">
556
+ <img src="'.WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $language ].'" alt="'. __('Country flag', 'shapepress-dsgvo').'" />
557
+ <span>'.WPGlobus::Config()->en_language_name[$language].'</span>
558
+ </a>';
559
+
560
+ endforeach; ?>
561
+
562
+ </div>
563
+ </div>
564
+ <?php endif; ?>
565
  </div><!-- .lang-wrapper -->
566
  </div>
567
 
574
 
575
  <div class="lwb-row" style="margin-bottom: 3px;">
576
 
577
+ <div class="lwb-col-md-4 pr-2">
578
  <div class="sp-dsgvo-logo-wrapper">
579
  <?php
580
  $src = sp_dsgvo_URL . 'public/images/legalwebio-icon.png';
596
 
597
  </div>
598
  </div>
599
+ <div class="sp-dsgvo-link-wrapper lwb-col-md-5 px-0">
600
  <a href="<?= $imprintUrl; ?>" target="_blank"><?= __('Imprint', 'shapepress-dsgvo');?></a>
601
  <span>|</span>
602
  <a href="<?= $privacyPolicyUrl; ?>" target="_blank"><?= SPDSGVOSettings::get('privacy_policy_custom_header');?></a>
634
  </div><!-- .popup-language-switcher -->
635
  <?php endif; ?>
636
  <?php endif; ?>
637
+ <?php
638
+ /**
639
+ * WPGlobus language switcher.
640
+ */
641
+ if ( class_exists( 'WPGlobus' ) ): ?>
642
+ <div class="sp-dsgvo-popup-language-switcher">
643
+
644
+ <?php
645
+
646
+ $currentLanguage = WPGlobus::Config()->language;
647
+ $enabled_languages = apply_filters( 'wpglobus_extra_languages', WPGlobus::Config()->enabled_languages, WPGlobus::Config()->language );
648
+ ?>
649
+
650
+ <span class="sp-dsgvo-lang-active">
651
+ <img src="<?php echo WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $currentLanguage ]; ?>" alt="<?= __('Country flag', 'shapepress-dsgvo');?>" style="vertical-align: middle;"/>
652
+ <span><?php echo WPGlobus::Config()->en_language_name[$currentLanguage]; ?></span>
653
+ <svg width="10" height="6">
654
+ <line x1="0" y1="0" x2="5" y2="5" />
655
+ <line x1="5" y1="5" x2="10" y2="0" />
656
+ </svg>
657
+ </span>
658
+
659
+ <div class="sp-dsgvo-lang-dropdown">
660
+
661
+ <?php
662
+
663
+ /**
664
+ * Filter that prevent using language that has `draft` status.
665
+ * That works with module `Publish` from WPGlobus Plus add-on.
666
+ */
667
+
668
+ foreach ( $enabled_languages as $language ):
669
+ $url = null;
670
+
671
+ if ( $language != WPGlobus::Config()->language ) {
672
+ $url = WPGlobus_Utils::localize_current_url( $language );
673
+ }
674
+
675
+ echo '<a href="'.esc_url( $url ).'">
676
+ <img src="'.WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $language ].'" alt="'. __('Country flag', 'shapepress-dsgvo').'" />
677
+ <span>'.WPGlobus::Config()->en_language_name[$language].'</span>
678
+ </a>';
679
+
680
+ endforeach; ?>
681
+
682
+ </div>
683
+ </div>
684
+ <?php endif; ?>
685
+
686
  </div><!-- .lang-wrapper -->
687
  <div class="lwb-col-md-1" style="text-align: right">
688
  <?php
public/css/sp-dsgvo-popup.css CHANGED
@@ -115,6 +115,7 @@
115
  background-color: white;
116
  color: black;
117
  letter-spacing: normal;
 
118
  }
119
 
120
  @media (max-width: 320px)
@@ -299,6 +300,7 @@ a.close
299
  .sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown a img {
300
  margin-right: 5px;
301
  padding-left: 3px;
 
302
  }
303
 
304
  .sp-dsgvo-privacy-category-content,
@@ -377,7 +379,7 @@ a.close
377
 
378
 
379
  .sp-dsgvo-privacy-popup-title {
380
- font-size: 1.0em;
381
  font-weight: 500;
382
  margin-bottom: 0;
383
  }
115
  background-color: white;
116
  color: black;
117
  letter-spacing: normal;
118
+ box-sizing: border-box;
119
  }
120
 
121
  @media (max-width: 320px)
300
  .sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown a img {
301
  margin-right: 5px;
302
  padding-left: 3px;
303
+ vertical-align: middle;
304
  }
305
 
306
  .sp-dsgvo-privacy-category-content,
379
 
380
 
381
  .sp-dsgvo-privacy-popup-title {
382
+ font-size: 0.9em;
383
  font-weight: 500;
384
  margin-bottom: 0;
385
  }
public/css/sp-dsgvo-popup.min.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-family:'Roboto';font-style:italic;font-weight:300;src:local('Roboto Light Italic'),local('Roboto-LightItalic'),url(fonts/roboto/Roboto-LightItalic-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:italic;font-weight:400;src:local('Roboto Italic'),local('Roboto-Italic'),url(fonts/roboto/Roboto-Italic-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:italic;font-weight:700;src:local('Roboto Bold Italic'),local('Roboto-BoldItalic'),url(fonts/roboto/Roboto-BoldItalic-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:italic;font-weight:900;src:local('Roboto Black Italic'),local('Roboto-BlackItalic'),url(fonts/roboto/Roboto-BlackItalic-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;src:local('Roboto Light'),local('Roboto-Light'),url(fonts/roboto/Roboto-Light-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;src:local('Roboto Regular'),local('Roboto-Regular'),url(fonts/roboto/Roboto-Regular-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;src:local('Roboto Bold'),local('Roboto-Bold'),url(fonts/roboto/Roboto-Bold-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:normal;font-weight:900;src:local('Roboto Black'),local('Roboto-Black'),url(fonts/roboto/Roboto-Black-webfont.woff) format('woff');font-display:swap}.sp-dsgvo-popup-overlay,.sp-dsgvo-cookie-overlay{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(34,34,34,.8);z-index:9999999}.sp-dsgvo-privacy-popup{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:100%;max-width:500px;font-family:'Roboto',Roboto,"Helvetica Neue",Arial,sans-serif;font-size:22px;padding-bottom:10px;padding-left:5px !important;padding-right:5px !important;line-height:normal;background-color:white;color:black;letter-spacing:normal}@media(max-width:320px){.sp-dsgvo-privacy-popup{max-width:310px;font-size:18px}}@media(max-width:540px){.sp-dsgvo-privacy-popup{max-width:360px;font-size:20px}}@media(min-width:541px){.sp-dsgvo-privacy-popup{max-width:620px}}.sp-dsgvo-popup-overlay.sp-dsgvo-overlay-hidden{display:none}.sp-dsgvo-privacy-popup .sp-dsgvo-popup-top{padding:20px 10px 10px 10px;box-sizing:border-box}.sp-dsgvo-privacy-popup .sp-dsgvo-popup-more-information-top{padding:10px;height:50px;box-sizing:border-box}.sp-dsgvo-popup-close,.sp-dsgvo-popup-more-information-close{height:10px}a.sp-dsgvo-popup-close,a.close{background:none !important;border:none !important}.sp-dsgvo-popup-close svg{vertical-align:top}.sp-dsgvo-popup-more-information-close svg{vertical-align:middle}.sp-dsgvo-popup-close svg line,.sp-dsgvo-popup-more-information-close svg line{stroke-width:2px;stroke:#000}.sp-dsgvo-privacy-popup .sp-dsgvo-logo-wrapper{width:40px;float:left;margin-right:5px}.sp-dsgvo-privacy-popup .sp-dsgvo-logo-wrapper img{max-height:35px;max-width:35px;position:relative}@media(max-width:480px){.sp-dsgvo-privacy-popup .sp-dsgvo-logo-wrapper img{max-width:100px}}.sp-dsgvo-header-description-text{font-size:.65em}.sp-dsgvo-privacy-popup .sp-dsgvo-link-wrapper a,.sp-dsgvo-privacy-popup .sp-dsgvo-link-wrapper span{font-size:.5em;font-weight:bold;color:#555}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown{display:none;position:absolute;left:0;top:calc(100% - 10px);width:100%;border:1px solid #f1f1f1;background-color:#fff;border-radius:5px;z-index:10}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-wrapper{display:flex;justify-content:flex-end}.sp-dsgvo-privacy-popup .dsgvo-lang-active{cursor:pointer;font-size:12px;font-weight:600;display:flex;align-items:flex-start}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active span{width:calc(100% /*!*/- 38px)}.sp-dsgvo-privacy-popup .sp-dsgvo-popup-language-switcher{position:relative}.sp-dsgvo-privacy-popup .sp-dsgvo-popup-language-switcher span{font-size:.75em}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active img{margin-right:5px}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active svg{margin-left:3px;vertical-align:middle}@media(max-width:540px){.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active svg{margin-top:5px;vertical-align:top}}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active svg line{stroke-width:2px;stroke:#000}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown.active{display:block}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown a,.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown a span{width:100%;font-size:.6em;font-weight:500;align-items:center;padding:3px;color:black}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown a img{margin-right:5px;padding-left:3px}.sp-dsgvo-privacy-category-content,.sp-dsgvo-popup-more-information-content{overflow-y:auto;overflow-x:hidden}.sp-dsgvo-popup-more-information-content strong{color:black}#sp-dsgvo-popup-more-information-content>p{line-height:initial;text-align:left;line-height:normal}@media(max-width:540px){.sp-dsgvo-privacy-category-content{overflow-y:scroll;max-height:412px}.sp-dsgvo-popup-more-information-content{overflow-y:scroll;max-height:330px}}.sp-dsgvo-privacy-popup p,.sp-dsgvo-privacy-popup span{font-size:.7em}.sp-dsgvo-popup-more-information-content p,.sp-dsgvo-popup-more-information-content span{font-size:.6em;margin:0}@media(max-height:568px){.sp-dsgvo-privacy-content-category-content{max-height:250px !important}.sp-dsgvo-popup-more-information-content{max-height:280px !important}}@media(min-height:569px) and (max-height:667px){.sp-dsgvo-privacy-content-category-content,.sp-dsgvo-popup-more-information-content{max-height:370px !important}}@media(min-height:668px){.sp-dsgvo-privacy-content-category-content,.sp-dsgvo-popup-more-information-content{max-height:430px !important}}.sp-dsgvo-privacy-popup-title{font-size:1.0;font-weight:500;margin-bottom:0}.sp-dsgvo-privacy-content{padding:10px}.sp-dsgvo-category-container{border-radius:3px;background-color:#f0f0f0;padding:10px 15px 10px 15px;margin-bottom:5px}.sp-dsgvo-category-name,.sp-dsgvo-popup-more-information-title{font-size:.8em;font-weight:bold}.sp-dsgvo-category-name small{font-size:75%;font-weight:400}.sp-dsgvo-category-count{font-size:.7em;width:80px}.sp-dsgvo-category-description{font-size:.6em}.sp-dsgvo-category-item{margin-left:10px;margin-top:5px;margin-bottom:5px}.sp-dsgvo-category-item-name{font-size:.7em;font-weight:bold}.sp-dsgvo-category-item-name small{font-size:70%;font-weight:600}.sp-dsgvo-category-item-company{font-size:.60em}.sp-dsgvo-category-item-description-url a{font-size:.6em;color:#006d91 !important;text-decoration:none !important}.sp-dsgvo-category-container hr{margin:1px 0 1px 0 !important;height:1px;border:0;color:white;background-color:white}.sp-dsgvo-category-item-toggle input[type=checkbox],.sp-dsgvo-category-toggle input[type=checkbox]{height:0;width:0;visibility:hidden;display:block}.sp-dsgvo-category-item-toggle label,.sp-dsgvo-category-toggle label{margin-bottom:0}.sp-dsgvo-category-item-toggle>.switch,.sp-dsgvo-category-toggle>.switch{display:block;margin-bottom:5px}.switch{position:relative;display:inline-block;vertical-align:top;width:65px;height:24px;padding:2px;cursor:pointer;border-radius:18px}.switch-input{position:absolute;top:0;left:0;opacity:0}.switch-label{position:relative;display:block;height:20px;font-size:11px !important;text-transform:uppercase;background:#eceeef;border-radius:inherit;box-shadow:inset 0 1px 2px rgba(0,0,0,0.12),inset 0 0 2px rgba(0,0,0,0.15);-webkit-transition:.15s ease-out;-moz-transition:.15s ease-out;-o-transition:.15s ease-out;transition:.15s ease-out;-webkit-transition-property:opacity background;-moz-transition-property:opacity background;-o-transition-property:opacity background;transition-property:opacity background}.switch-label:before,.switch-label:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;-webkit-transition:inherit;-moz-transition:inherit;-o-transition:inherit;transition:inherit}.switch-label:before{content:attr(data-off);right:11px;color:#aaa;text-shadow:0 1px rgba(255,255,255,0.5)}.switch-label:after{content:attr(data-on);left:11px;color:white;text-shadow:0 1px rgba(0,0,0,0.2);opacity:0}.switch-input:checked ~ .switch-label{background:#47a8d8;box-shadow:inset 0 1px 2px rgba(0,0,0,0.15),inset 0 0 3px rgba(0,0,0,0.2)}.switch-input:checked ~ .switch-label:before{opacity:0}.switch-input:checked ~ .switch-label:after{opacity:1}.switch-handle{position:absolute;top:4px;left:4px;width:17px;height:17px;background:white;border-radius:10px;box-shadow:1px 1px 5px rgba(0,0,0,0.2);background-image:-webkit-linear-gradient(top,white 40%,#f0f0f0);background-image:-moz-linear-gradient(top,white 40%,#f0f0f0);background-image:-o-linear-gradient(top,white 40%,#f0f0f0);background-image:linear-gradient(to bottom,white 40%,#f0f0f0);-webkit-transition:left .15s ease-out;-moz-transition:left .15s ease-out;-o-transition:left .15s ease-out;transition:left .15s ease-out}.switch-handle:before{content:'';position:absolute;top:50%;left:50%;margin:-6px 0 0 -6px;width:12px;height:12px;background:#f9f9f9;border-radius:6px;box-shadow:inset 0 1px rgba(0,0,0,0.02);background-image:-webkit-linear-gradient(top,#eee,white);background-image:-moz-linear-gradient(top,#eee,white);background-image:-o-linear-gradient(top,#eee,white);background-image:linear-gradient(to bottom,#eee,white)}.switch-input:checked ~ .switch-handle{left:40px;box-shadow:-1px 1px 5px rgba(0,0,0,0.2)}.switch-green>.switch-input:checked ~ .switch-label{background:#4fb845}.switch-green>.switch-input:disabled ~ .switch-label{background:#a9a9a9}.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button{text-transform:uppercase;font-size:.62em;font-weight:500 !important;padding:6px 11px 6px 11px !important;display:inline-block !important;position:relative;box-shadow:inset 0 1px rgba(0,0,0,0.02) !important;border-radius:3px !important;color:white !important;text-decoration:none !important}.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button:hover,.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button:focus,.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button:active{text-decoration:none !important;color:#fafafa !important}@media(max-width:540px){.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button{margin-left:0 !important;margin-right:0 !important;text-align:center;font-size:.55em;padding:5px 5px 5px 5px !important}}.sp-dsgvo-privacy-bottom a.grey{color:white;border-color:#4d4c53;background-color:#4d4c53}.sp-dsgvo-privacy-bottom a.blue{color:white;border-color:#27a1e5;background-color:#27a1e5}.sp-dsgvo-privacy-bottom a.green{color:white;border-color:#4fb845;background-color:#4fb845}.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button:hover{color:#555}.sp-dsgvo .progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:10px;overflow:hidden;font-size:.703125rem;background-color:#ccc;border-radius:0}.sp-dsgvo .progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.sp-dsgvo .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.sp-dsgvo .progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#999;-webkit-transition:width .6s ease;transition:width .6s ease;font-size:12px;font-weight:500}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}
1
+ @font-face{font-family:'Roboto';font-style:italic;font-weight:300;src:local('Roboto Light Italic'),local('Roboto-LightItalic'),url(fonts/roboto/Roboto-LightItalic-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:italic;font-weight:400;src:local('Roboto Italic'),local('Roboto-Italic'),url(fonts/roboto/Roboto-Italic-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:italic;font-weight:700;src:local('Roboto Bold Italic'),local('Roboto-BoldItalic'),url(fonts/roboto/Roboto-BoldItalic-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:italic;font-weight:900;src:local('Roboto Black Italic'),local('Roboto-BlackItalic'),url(fonts/roboto/Roboto-BlackItalic-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;src:local('Roboto Light'),local('Roboto-Light'),url(fonts/roboto/Roboto-Light-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;src:local('Roboto Regular'),local('Roboto-Regular'),url(fonts/roboto/Roboto-Regular-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;src:local('Roboto Bold'),local('Roboto-Bold'),url(fonts/roboto/Roboto-Bold-webfont.woff) format('woff');font-display:swap}@font-face{font-family:'Roboto';font-style:normal;font-weight:900;src:local('Roboto Black'),local('Roboto-Black'),url(fonts/roboto/Roboto-Black-webfont.woff) format('woff');font-display:swap}.sp-dsgvo-popup-overlay,.sp-dsgvo-cookie-overlay{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(34,34,34,.8);z-index:9999999}.sp-dsgvo-privacy-popup{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:100%;max-width:500px;font-family:'Roboto',Roboto,"Helvetica Neue",Arial,sans-serif;font-size:22px;padding-bottom:10px;padding-left:5px !important;padding-right:5px !important;line-height:normal;background-color:white;color:black;letter-spacing:normal;box-sizing:border-box}@media(max-width:320px){.sp-dsgvo-privacy-popup{max-width:310px;font-size:18px}}@media(max-width:540px){.sp-dsgvo-privacy-popup{max-width:360px;font-size:20px}}@media(min-width:541px){.sp-dsgvo-privacy-popup{max-width:620px}}.sp-dsgvo-popup-overlay.sp-dsgvo-overlay-hidden{display:none}.sp-dsgvo-privacy-popup .sp-dsgvo-popup-top{padding:20px 10px 10px 10px;box-sizing:border-box}.sp-dsgvo-privacy-popup .sp-dsgvo-popup-more-information-top{padding:10px;height:50px;box-sizing:border-box}.sp-dsgvo-popup-close,.sp-dsgvo-popup-more-information-close{height:10px}a.sp-dsgvo-popup-close,a.close{background:none !important;border:none !important}.sp-dsgvo-popup-close svg{vertical-align:top}.sp-dsgvo-popup-more-information-close svg{vertical-align:middle}.sp-dsgvo-popup-close svg line,.sp-dsgvo-popup-more-information-close svg line{stroke-width:2px;stroke:#000}.sp-dsgvo-privacy-popup .sp-dsgvo-logo-wrapper{width:40px;float:left;margin-right:5px}.sp-dsgvo-privacy-popup .sp-dsgvo-logo-wrapper img{max-height:35px;max-width:35px;position:relative}@media(max-width:480px){.sp-dsgvo-privacy-popup .sp-dsgvo-logo-wrapper img{max-width:100px}}.sp-dsgvo-header-description-text{font-size:.65em}.sp-dsgvo-privacy-popup .sp-dsgvo-link-wrapper a,.sp-dsgvo-privacy-popup .sp-dsgvo-link-wrapper span{font-size:.5em;font-weight:bold;color:#555}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown{display:none;position:absolute;left:0;top:calc(100% - 10px);width:100%;border:1px solid #f1f1f1;background-color:#fff;border-radius:5px;z-index:10}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-wrapper{display:flex;justify-content:flex-end}.sp-dsgvo-privacy-popup .dsgvo-lang-active{cursor:pointer;font-size:12px;font-weight:600;display:flex;align-items:flex-start}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active span{width:calc(100% /*!*/- 38px)}.sp-dsgvo-privacy-popup .sp-dsgvo-popup-language-switcher{position:relative}.sp-dsgvo-privacy-popup .sp-dsgvo-popup-language-switcher span{font-size:.75em}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active img{margin-right:5px}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active svg{margin-left:3px;vertical-align:middle}@media(max-width:540px){.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active svg{margin-top:5px;vertical-align:top}}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-active svg line{stroke-width:2px;stroke:#000}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown.active{display:block}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown a,.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown a span{width:100%;font-size:.6em;font-weight:500;align-items:center;padding:3px;color:black}.sp-dsgvo-privacy-popup .sp-dsgvo-lang-dropdown a img{margin-right:5px;padding-left:3px;vertical-align:middle}.sp-dsgvo-privacy-category-content,.sp-dsgvo-popup-more-information-content{overflow-y:auto;overflow-x:hidden}.sp-dsgvo-popup-more-information-content strong{color:black}#sp-dsgvo-popup-more-information-content>p{line-height:initial;text-align:left;line-height:normal}@media(max-width:540px){.sp-dsgvo-privacy-category-content{overflow-y:scroll;max-height:412px}.sp-dsgvo-popup-more-information-content{overflow-y:scroll;max-height:330px}}.sp-dsgvo-privacy-popup p,.sp-dsgvo-privacy-popup span{font-size:.7em}.sp-dsgvo-popup-more-information-content p,.sp-dsgvo-popup-more-information-content span{font-size:.6em;margin:0}@media(max-height:568px){.sp-dsgvo-privacy-content-category-content{max-height:250px !important}.sp-dsgvo-popup-more-information-content{max-height:280px !important}}@media(min-height:569px) and (max-height:667px){.sp-dsgvo-privacy-content-category-content,.sp-dsgvo-popup-more-information-content{max-height:370px !important}}@media(min-height:668px){.sp-dsgvo-privacy-content-category-content,.sp-dsgvo-popup-more-information-content{max-height:430px !important}}.sp-dsgvo-privacy-popup-title{font-size:.9em;font-weight:500;margin-bottom:0}.sp-dsgvo-privacy-content{padding:10px}.sp-dsgvo-category-container{border-radius:3px;background-color:#f0f0f0;padding:10px 15px 10px 15px;margin-bottom:5px}.sp-dsgvo-category-name,.sp-dsgvo-popup-more-information-title{font-size:.8em;font-weight:bold}.sp-dsgvo-category-name small{font-size:75%;font-weight:400}.sp-dsgvo-category-count{font-size:.7em;width:80px}.sp-dsgvo-category-description{font-size:.6em}.sp-dsgvo-category-item{margin-left:10px;margin-top:5px;margin-bottom:5px}.sp-dsgvo-category-item-name{font-size:.7em;font-weight:bold}.sp-dsgvo-category-item-name small{font-size:70%;font-weight:600}.sp-dsgvo-category-item-company{font-size:.60em}.sp-dsgvo-category-item-description-url a{font-size:.6em;color:#006d91 !important;text-decoration:none !important}.sp-dsgvo-category-container hr{margin:1px 0 1px 0 !important;height:1px;border:0;color:white;background-color:white}.sp-dsgvo-category-item-toggle input[type=checkbox],.sp-dsgvo-category-toggle input[type=checkbox]{height:0;width:0;visibility:hidden;display:block}.sp-dsgvo-category-item-toggle label,.sp-dsgvo-category-toggle label{margin-bottom:0}.sp-dsgvo-category-item-toggle>.switch,.sp-dsgvo-category-toggle>.switch{display:block;margin-bottom:5px}.switch{position:relative;display:inline-block;vertical-align:top;width:65px;height:24px;padding:2px;cursor:pointer;border-radius:18px}.switch-input{position:absolute;top:0;left:0;opacity:0}.switch-label{position:relative;display:block;height:20px;font-size:11px !important;text-transform:uppercase;background:#eceeef;border-radius:inherit;box-shadow:inset 0 1px 2px rgba(0,0,0,0.12),inset 0 0 2px rgba(0,0,0,0.15);-webkit-transition:.15s ease-out;-moz-transition:.15s ease-out;-o-transition:.15s ease-out;transition:.15s ease-out;-webkit-transition-property:opacity background;-moz-transition-property:opacity background;-o-transition-property:opacity background;transition-property:opacity background}.switch-label:before,.switch-label:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;-webkit-transition:inherit;-moz-transition:inherit;-o-transition:inherit;transition:inherit}.switch-label:before{content:attr(data-off);right:11px;color:#aaa;text-shadow:0 1px rgba(255,255,255,0.5)}.switch-label:after{content:attr(data-on);left:11px;color:white;text-shadow:0 1px rgba(0,0,0,0.2);opacity:0}.switch-input:checked ~ .switch-label{background:#47a8d8;box-shadow:inset 0 1px 2px rgba(0,0,0,0.15),inset 0 0 3px rgba(0,0,0,0.2)}.switch-input:checked ~ .switch-label:before{opacity:0}.switch-input:checked ~ .switch-label:after{opacity:1}.switch-handle{position:absolute;top:4px;left:4px;width:17px;height:17px;background:white;border-radius:10px;box-shadow:1px 1px 5px rgba(0,0,0,0.2);background-image:-webkit-linear-gradient(top,white 40%,#f0f0f0);background-image:-moz-linear-gradient(top,white 40%,#f0f0f0);background-image:-o-linear-gradient(top,white 40%,#f0f0f0);background-image:linear-gradient(to bottom,white 40%,#f0f0f0);-webkit-transition:left .15s ease-out;-moz-transition:left .15s ease-out;-o-transition:left .15s ease-out;transition:left .15s ease-out}.switch-handle:before{content:'';position:absolute;top:50%;left:50%;margin:-6px 0 0 -6px;width:12px;height:12px;background:#f9f9f9;border-radius:6px;box-shadow:inset 0 1px rgba(0,0,0,0.02);background-image:-webkit-linear-gradient(top,#eee,white);background-image:-moz-linear-gradient(top,#eee,white);background-image:-o-linear-gradient(top,#eee,white);background-image:linear-gradient(to bottom,#eee,white)}.switch-input:checked ~ .switch-handle{left:40px;box-shadow:-1px 1px 5px rgba(0,0,0,0.2)}.switch-green>.switch-input:checked ~ .switch-label{background:#4fb845}.switch-green>.switch-input:disabled ~ .switch-label{background:#a9a9a9}.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button{text-transform:uppercase;font-size:.62em;font-weight:500 !important;padding:6px 11px 6px 11px !important;display:inline-block !important;position:relative;box-shadow:inset 0 1px rgba(0,0,0,0.02) !important;border-radius:3px !important;color:white !important;text-decoration:none !important}.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button:hover,.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button:focus,.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button:active{text-decoration:none !important;color:#fafafa !important}@media(max-width:540px){.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button{margin-left:0 !important;margin-right:0 !important;text-align:center;font-size:.55em;padding:5px 5px 5px 5px !important}}.sp-dsgvo-privacy-bottom a.grey{color:white;border-color:#4d4c53;background-color:#4d4c53}.sp-dsgvo-privacy-bottom a.blue{color:white;border-color:#27a1e5;background-color:#27a1e5}.sp-dsgvo-privacy-bottom a.green{color:white;border-color:#4fb845;background-color:#4fb845}.sp-dsgvo-privacy-bottom a.sp-dsgvo-popup-button:hover{color:#555}.sp-dsgvo .progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:10px;overflow:hidden;font-size:.703125rem;background-color:#ccc;border-radius:0}.sp-dsgvo .progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.sp-dsgvo .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.sp-dsgvo .progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#999;-webkit-transition:width .6s ease;transition:width .6s ease;font-size:12px;font-weight:500}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}
public/shortcodes/imprint.php CHANGED
@@ -1,7 +1,15 @@
1
  <?php
2
 
3
- function SPDSGVOImprintShortcode(){
4
 
 
 
 
 
 
 
 
 
5
  $settings = SPDSGVOSettings::getAll();
6
 
7
 
1
  <?php
2
 
3
+ function SPDSGVOImprintShortcode($atts){
4
 
5
+ $locale = SPDSGVOLanguageTools::getInstance()->getCurrentLanguageCode();
6
+ /*
7
+ $params = shortcode_atts(array(
8
+ 'lang' => $locale
9
+ ), $atts);
10
+
11
+ $locale = $params['lang'];
12
+ */
13
  $settings = SPDSGVOSettings::getAll();
14
 
15
 
public/shortcodes/privacy-policy.php CHANGED
@@ -1,9 +1,16 @@
1
  <?php
2
 
3
 
4
- function SPDSGVOPrivacyPolicyShortcode(){
5
 
6
  $locale = SPDSGVOLanguageTools::getInstance()->getCurrentLanguageCode();
 
 
 
 
 
 
 
7
  $hTagTitle = "h1";
8
  $hTagSubtitle = "h2";
9
  $hTagSubSubtitle = "h3";
@@ -49,7 +56,7 @@ function SPDSGVOPrivacyPolicyShortcode(){
49
  $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_loc') .", ";
50
  $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_countrycode') .", ";
51
  if (empty(SPDSGVOSettings::get('spdsgvo_company_info_email')) == false)
52
- $responsibleText .= '<a href= "mailto:' . SPDSGVOSettings::get('spdsgvo_company_info_email').'">'.SPDSGVOSettings::get("spdsgvo_company_info_email").'</a>' .", ";
53
  if (empty(SPDSGVOSettings::get('spdsgvo_company_info_phone')) == false) $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_phone');
54
  $privacyPolicy[] = SPDSGVOGetFormatedHtmlTextArray('p', $responsibleText);
55
  // </editor-fold>
@@ -363,6 +370,12 @@ function SPDSGVOPrivacyPolicyShortcode(){
363
 
364
  // <editor-fold desc="Analyse">
365
  $integrations = SPDSGVOIntegrationApiBase::getAllIntegrationApis(SPDSGVOConstants::CATEGORY_SLUG_STATISTICS, FALSE);
 
 
 
 
 
 
366
  $enabledIntegrationCount = 0;
367
  $integrationTexts = null;
368
  foreach ($integrations as $integrationSlug => $integration)
1
  <?php
2
 
3
 
4
+ function SPDSGVOPrivacyPolicyShortcode($atts){
5
 
6
  $locale = SPDSGVOLanguageTools::getInstance()->getCurrentLanguageCode();
7
+ /*
8
+ $params = shortcode_atts(array(
9
+ 'lang' => $locale
10
+ ), $atts);
11
+
12
+ $locale = $params['lang'];
13
+ */
14
  $hTagTitle = "h1";
15
  $hTagSubtitle = "h2";
16
  $hTagSubSubtitle = "h3";
56
  $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_loc') .", ";
57
  $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_countrycode') .", ";
58
  if (empty(SPDSGVOSettings::get('spdsgvo_company_info_email')) == false)
59
+ $responsibleText .= '<a href="mailto:' . SPDSGVOSettings::get('spdsgvo_company_info_email').'">'.SPDSGVOSettings::get("spdsgvo_company_info_email").'</a>' .", ";
60
  if (empty(SPDSGVOSettings::get('spdsgvo_company_info_phone')) == false) $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_phone');
61
  $privacyPolicy[] = SPDSGVOGetFormatedHtmlTextArray('p', $responsibleText);
62
  // </editor-fold>
370
 
371
  // <editor-fold desc="Analyse">
372
  $integrations = SPDSGVOIntegrationApiBase::getAllIntegrationApis(SPDSGVOConstants::CATEGORY_SLUG_STATISTICS, FALSE);
373
+
374
+ // add techn. required too (wp stats, matomo, piwik) because the have another catin the filter
375
+ if (SPDSGVOMatomoApi::getInstance()->getIsEnabled()) $integrations[SPDSGVOMatomoApi::getInstance()->getSlug()] =SPDSGVOMatomoApi::getInstance();
376
+ if (SPDSGVOWpStatisticsApi::getInstance()->getIsEnabled()) $integrations[SPDSGVOWpStatisticsApi::getInstance()->getSlug()] = SPDSGVOWpStatisticsApi::getInstance();
377
+ if (SPDSGVOPiwikApi::getInstance()->getIsEnabled()) $integrations[SPDSGVOPiwikApi::getInstance()->getSlug()] = SPDSGVOPiwikApi::getInstance();
378
+
379
  $enabledIntegrationCount = 0;
380
  $integrationTexts = null;
381
  foreach ($integrations as $integrationSlug => $integration)
public/shortcodes/subject-access-request/subject-access-request.php CHANGED
@@ -18,7 +18,7 @@ function SPDSGVODownloadMyDataShortcode($atts){
18
  <p class="sp-dsgvo sar-success-message"><?php _e('Your request has been created','shapepress-dsgvo')?> <br> <?php _e('You will receive an email from us with a current extract of your data stored with us.','shapepress-dsgvo')?></p>
19
 
20
  <?php else: ?>
21
- <div class="sp-dsgvo">
22
  <form method="post" action="<?= SPDSGVOSubjectAccessRequestAction::url() ?>" class="sp-dsgvo-framework">
23
  <?php wp_nonce_field( SPDSGVOSubjectAccessRequestAction::getActionName(). '-nonce' ); ?>
24
  <fieldset>
18
  <p class="sp-dsgvo sar-success-message"><?php _e('Your request has been created','shapepress-dsgvo')?> <br> <?php _e('You will receive an email from us with a current extract of your data stored with us.','shapepress-dsgvo')?></p>
19
 
20
  <?php else: ?>
21
+ <div class="sp-dsgvo sp-sar-form">
22
  <form method="post" action="<?= SPDSGVOSubjectAccessRequestAction::url() ?>" class="sp-dsgvo-framework">
23
  <?php wp_nonce_field( SPDSGVOSubjectAccessRequestAction::getActionName(). '-nonce' ); ?>
24
  <fieldset>
public/shortcodes/super-unsubscribe/unsubscribe-form.php CHANGED
@@ -23,7 +23,7 @@ function SPDSGVOUnsubscribeShortcode($atts){
23
  <p class="sp-dsgvo us-success-message"><?php _e('Request successfully completed. Your data has been completely deleted.','shapepress-dsgvo')?></p>
24
 
25
  <?php else: ?>
26
- <div class="sp-dsgvo">
27
  <form method="post" action="<?= SPDSGVOSuperUnsubscribeFormAction::url() ?>" >
28
  <?php wp_nonce_field( SPDSGVOSuperUnsubscribeFormAction::getActionName(). '-nonce' ); ?>
29
  <fieldset>
23
  <p class="sp-dsgvo us-success-message"><?php _e('Request successfully completed. Your data has been completely deleted.','shapepress-dsgvo')?></p>
24
 
25
  <?php else: ?>
26
+ <div class="sp-dsgvo sp-unsubsribe-form">
27
  <form method="post" action="<?= SPDSGVOSuperUnsubscribeFormAction::url() ?>" >
28
  <?php wp_nonce_field( SPDSGVOSuperUnsubscribeFormAction::getActionName(). '-nonce' ); ?>
29
  <fieldset>
sp-dsgvo.php CHANGED
@@ -16,7 +16,7 @@
16
  * Plugin Name: WP DSGVO Tools (GDPR)
17
  * Plugin URI: https://legalweb.io
18
  * Description: WP DSGVO Tools (GDPR) help you to fulfill the GDPR (DGSVO) compliance guidance (<a target="_blank" href="https://ico.org.uk/for-organisations/data-protection-reform/overview-of-the-gdpr/">GDPR</a>)
19
- * Version: 3.1.6
20
  * Author: legalweb
21
  * Author URI: https://www.legalweb.io
22
  * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
@@ -28,7 +28,7 @@ if (! defined('WPINC')) {
28
  die();
29
  }
30
 
31
- define('sp_dsgvo_VERSION', '3.1.6');
32
  define('sp_dsgvo_NAME', 'sp-dsgvo');
33
  define('sp_dsgvo_PLUGIN_NAME', 'shapepress-dsgvo');
34
  define('sp_dsgvo_LEGAL_TEXTS_MIN_VERSION', '1579021814');
16
  * Plugin Name: WP DSGVO Tools (GDPR)
17
  * Plugin URI: https://legalweb.io
18
  * Description: WP DSGVO Tools (GDPR) help you to fulfill the GDPR (DGSVO) compliance guidance (<a target="_blank" href="https://ico.org.uk/for-organisations/data-protection-reform/overview-of-the-gdpr/">GDPR</a>)
19
+ * Version: 3.1.7
20
  * Author: legalweb
21
  * Author URI: https://www.legalweb.io
22
  * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
28
  die();
29
  }
30
 
31
+ define('sp_dsgvo_VERSION', '3.1.7');
32
  define('sp_dsgvo_NAME', 'sp-dsgvo');
33
  define('sp_dsgvo_PLUGIN_NAME', 'shapepress-dsgvo');
34
  define('sp_dsgvo_LEGAL_TEXTS_MIN_VERSION', '1579021814');