Changeset 2280819 for shapepress-dsgvo
- Timestamp:
- 04/10/2020 09:58:05 AM (6 years ago)
- Location:
- shapepress-dsgvo/trunk
- Files:
-
- 17 edited
-
README.txt (modified) (4 diffs)
-
includes/class-sp-dsgvo-embedding-api-base.php (modified) (1 diff)
-
includes/class-sp-dsgvo-integration-api-base.php (modified) (3 diffs)
-
includes/class-sp-dsgvo-javascript.php (modified) (1 diff)
-
includes/class-sp-dsgvo-language-tools.php (modified) (5 diffs)
-
includes/class-sp-dsgvo.php (modified) (7 diffs)
-
includes/integrations/embeddings/openstreetmap/class-sp-dsgvo-openstreetmap-api.php (modified) (1 diff)
-
includes/integrations/targeting/gadsense/class-sp-dsgvo-gadsense-api.php (modified) (3 diffs)
-
public/actions/legal-web-text-action.php (modified) (2 diffs)
-
public/class-sp-dsgvo-public.php (modified) (5 diffs)
-
public/css/sp-dsgvo-popup.css (modified) (3 diffs)
-
public/css/sp-dsgvo-popup.min.css (modified) (1 diff)
-
public/shortcodes/imprint.php (modified) (1 diff)
-
public/shortcodes/privacy-policy.php (modified) (3 diffs)
-
public/shortcodes/subject-access-request/subject-access-request.php (modified) (1 diff)
-
public/shortcodes/super-unsubscribe/unsubscribe-form.php (modified) (1 diff)
-
sp-dsgvo.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
shapepress-dsgvo/trunk/README.txt
r2274024 r2280819 5 5 Requires at least: 3.0.1 6 6 Tested up to: 5.4.0 7 Stable tag: 3.1. 67 Stable tag: 3.1.7 8 8 Requires PHP: 5.6.0 9 9 License: GPLv2 or later … … 14 14 == Description == 15 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 & 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> 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ö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. 57 184 58 185 == Installation == … … 77 204 78 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 79 213 = 3.1.6 = 80 214 * IE fixes … … 216 350 217 351 == Upgrade Notice == 218 = 3.1. 6=352 = 3.1.7 = 219 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 220 354 * THE PLUGIN NEEDS A COMPLETE RECONFIGURATION TO FULFILL THE LATEST GDPR LAWS IF YOU UPDATE FROM V2 to V3 -
shapepress-dsgvo/trunk/includes/class-sp-dsgvo-embedding-api-base.php
r2273977 r2280819 237 237 return apply_filters('sp_dsgvo_integrationapis_'.$type, array()); 238 238 } 239 239 240 } -
shapepress-dsgvo/trunk/includes/class-sp-dsgvo-integration-api-base.php
r2273977 r2280819 19 19 public $supportsMultipleImplementationModes = false; 20 20 public $implementationModes = []; 21 public $hosts = ''; 21 22 22 23 protected function __construct() … … 70 71 { 71 72 return $this->cookieNames; 73 } 74 75 public final function getHosts() 76 { 77 return $this->hosts; 72 78 } 73 79 … … 143 149 } 144 150 145 public final function getHosts()146 {147 return '';148 }149 151 150 152 public function getDefaultSettings($ownCodeEnabledByDefault = false) -
shapepress-dsgvo/trunk/includes/class-sp-dsgvo-javascript.php
r2273977 r2280819 56 56 'jsCode' => base64_encode(($integration->getJsCode($integrationSettings))), 57 57 'hosts' => $integration->getHosts(), 58 'placeholder' => $integration->getCategory() == SPDSGVOConstants::CATEGORY_SLUG_EMBEDDINGS? SPDSGVOEmbeddingsManager::getDummyPlaceholderForMutationObserver($integration) : ''58 'placeholder' => empty($integration->getHosts()) == false ? SPDSGVOEmbeddingsManager::getDummyPlaceholderForMutationObserver($integration) : '' 59 59 ]; 60 60 -
shapepress-dsgvo/trunk/includes/class-sp-dsgvo-language-tools.php
r2259265 r2280819 35 35 public function getTypeOfLanguagePlugin() 36 36 { 37 if ((defined('ICL_LANGUAGE_CODE') || defined('POLYLANG_FILE') ) == false) return 'none';37 if ((defined('ICL_LANGUAGE_CODE') || defined('POLYLANG_FILE') || class_exists( 'WPGlobus' )) == false) return 'none'; 38 38 else { 39 39 if(function_exists('icl_get_languages')) return 'wpml'; 40 40 if(function_exists('pll_current_language')) return 'polylang'; 41 if(class_exists( 'WPGlobus' )) return 'wpglobus'; 41 42 } 42 43 … … 48 49 $currentLanguage = null; 49 50 50 switch ($this->getTypeOfLanguagePlugin()) 51 { 51 switch ($this->getTypeOfLanguagePlugin()) { 52 52 case "wpml": 53 53 $currentLanguage = apply_filters('wpml_current_language', null); … … 60 60 } 61 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; 62 73 case "none": 63 74 $currentLanguage = $this->defaultLanguage; … … 90 101 } 91 102 break; 103 case "wpglobus": 104 $currentLanguage = WPGlobus::Config()->default_language; 105 break; 92 106 case "none": 93 107 $currentLanguage = $this->defaultLanguage; … … 116 130 { 117 131 try { 132 $locale = strtolower($locale); 133 118 134 if (substr( $locale, 0, 2 ) === 'de') $locale = 'de_DE'; 119 135 if (substr( $locale, 0, 2 ) === 'en') $locale = 'en_EN'; -
shapepress-dsgvo/trunk/includes/class-sp-dsgvo.php
r2273977 r2280819 28 28 * @author Shapepress eU 29 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()) { 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()) { 64 66 $this->defineAdminHooks(); 65 67 } else { … … 68 70 } 69 71 70 protected function __clone(){} 71 72 public static function instance(){ 73 if(!isset(static::$instance)){ 72 protected function __clone() 73 { 74 } 75 76 public static function instance() 77 { 78 if (!isset(static::$instance)) { 74 79 static::$instance = new static; 75 80 } … … 78 83 } 79 84 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 } 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 } 95 101 */ 96 102 97 $load = array(98 //======================================================================99 // Libraries100 //======================================================================103 $load = array( 104 //====================================================================== 105 // Libraries 106 //====================================================================== 101 107 SPDSGVO::pluginDir('includes/class-sp-dsgvo-constants.php'), 102 SPDSGVO::pluginDir('includes/helpers.php'),108 SPDSGVO::pluginDir('includes/helpers.php'), 103 109 SPDSGVO::pluginDir('includes/class-sp-dsgvo-cache-manager.php'), 104 110 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'),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'), 114 120 SPDSGVO::pluginDir('includes/class-sp-dsgvo-embedding-api-base.php'), 115 121 SPDSGVO::pluginDir('includes/class-sp-dsgvo-embeddings-manager.php'), … … 117 123 SPDSGVO::pluginDir('includes/class-sp-dsgvo-integration.php'), 118 124 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'),125 SPDSGVO::pluginDir('includes/class-sp-dsgvo-slim-model.php'), 126 SPDSGVO::pluginDir('includes/class-sp-dsgvo-cron.php'), 121 127 SPDSGVO::pluginDir('includes/class-sp-dsgvo-language-tools.php'), 122 128 SPDSGVO::pluginDir('includes/class-sp-dsgvo-cookie-category-api.php'), 123 129 SPDSGVO::pluginDir('includes/class-sp-dsgvo-upgrade-notice-tools.php'), 124 SPDSGVO::pluginDir('public/class-sp-dsgvo-public.php'),125 126 127 //======================================================================128 // Models129 //======================================================================130 SPDSGVO::pluginDir('includes/models/unsubscriber.php'),131 SPDSGVO::pluginDir('includes/models/subject-access-request.php'),132 133 134 //======================================================================135 // Cron136 //======================================================================137 SPDSGVO::pluginDir('includes/cron/do-subject-access-request.php'),138 SPDSGVO::pluginDir('includes/cron/do-delete-data-request.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'), 139 145 SPDSGVO::pluginDir('includes/cron/do-validate-license.php'), 140 146 SPDSGVO::pluginDir('includes/cron/do-check-privacy-policy-texts.php'), 141 147 142 //======================================================================143 // Actions144 //======================================================================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'),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'), 151 157 SPDSGVO::pluginDir('public/actions/legal-web-text-action.php'), 152 158 SPDSGVO::pluginDir('public/actions/update-privacy-policy-texts-action.php'), 153 159 154 160 155 //======================================================================156 // Shortcodes157 //======================================================================158 // SAR159 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 Unsubscribe164 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'),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'), 171 177 172 178 SPDSGVO::pluginDir('public/shortcodes/privacy-policy-link-shortcode.php'), 173 179 SPDSGVO::pluginDir('public/shortcodes/cookie-popup-shortcode.php'), 174 180 175 //======================================================================176 // Default Integrations177 //======================================================================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'),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'), 183 189 184 190 // tag manager … … 214 220 SPDSGVO::pluginDir('includes/integrations/targeting/bingadsuet/class-sp-dsgvo-bing-ads-uet-api.php'), 215 221 SPDSGVO::pluginDir('includes/integrations/targeting/bingadsuet/class-sp-dsgvo-bing-ads-uet-integration.php'), 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 // embeddings222 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 220 226 SPDSGVO::pluginDir('includes/integrations/embeddings/youtube/class-sp-dsgvo-youtube-api.php'), 221 227 SPDSGVO::pluginDir('includes/integrations/embeddings/youtube/class-sp-dsgvo-youtube-integration.php'), … … 235 241 SPDSGVO::pluginDir('includes/integrations/embeddings/soundcloud/class-sp-dsgvo-soundcloud-integration.php'), 236 242 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 ); 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); 356 368 // do migration logic 357 369 //$this->loader->add_action('upgrader_process_complete', SPDSGVOMigrator::getInstance(), 'checkForMigrations', 10, 2); 358 370 $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'); 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'); 382 395 383 396 $this->loader->add_filter('the_content', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessIframes', 50, 1); … … 386 399 $this->loader->add_filter('embed_oembed_html', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessOembeds', 50, 2); 387 400 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 } 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 } 497 520 } -
shapepress-dsgvo/trunk/includes/integrations/embeddings/openstreetmap/class-sp-dsgvo-openstreetmap-api.php
r2247191 r2280819 12 12 $this->cookieCategory = SPDSGVOConstants::CATEGORY_SLUG_EMBEDDINGS; 13 13 $this->cookieNames = ''; 14 $this->hosts = ' www.openstreetmap.org';14 $this->hosts = 'openstreetmap.org'; 15 15 16 16 parent::__construct(); -
shapepress-dsgvo/trunk/includes/integrations/targeting/gadsense/class-sp-dsgvo-gadsense-api.php
r2253116 r2280819 3 3 class SPDSGVOGadsenseApi extends SPDSGVOIntegrationApiBase 4 4 { 5 5 public $overlayText; 6 6 7 7 protected function __construct() … … 17 17 $this->isPremium = true; 18 18 $this->isTagManagerCompatible = false; 19 $this->hosts = 'doubleclick.net'; 20 21 $this->overlayText = SPDSGVOLanguageTools::getLwText($this->slug, 'overlay', ''); 19 22 } 20 23 … … 27 30 } 28 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; 29 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 } 30 58 } 31 59 -
shapepress-dsgvo/trunk/public/actions/legal-web-text-action.php
r2273977 r2280819 45 45 break; 46 46 } 47 /* 47 48 if ($settings['showAsTechMandatory'] == '1') 48 49 { … … 50 51 } else 51 52 { 52 $slug .= '-';53 $slug .= (array_key_exists('implementationMode',$settings)) ? $settings['implementationMode'] : 'on-premises';54 53 55 if (strpos($slug, "by-agency") >= 0) 56 { 57 if (array_key_exists('agency', $settings['meta']) == true) 58 { 59 $webAgencyText = $settings['meta']['agency']; 60 } 54 } 55 */ 61 56 62 } 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 63 } 64 64 } -
shapepress-dsgvo/trunk/public/class-sp-dsgvo-public.php
r2274024 r2280819 58 58 wp_enqueue_style(sp_dsgvo_NAME.'_twbs4_grid', plugin_dir_url(__FILE__) . 'css/bootstrap-grid.min.css', array(), sp_dsgvo_VERSION, 'all'); 59 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');60 wp_enqueue_style(sp_dsgvo_NAME.'_popup', plugin_dir_url(__FILE__) . 'css/sp-dsgvo-popup.css', array(), sp_dsgvo_VERSION, 'all'); 61 61 wp_enqueue_style('simplebar', plugin_dir_url(__FILE__) . 'css/simplebar.min.css'); 62 62 … … 515 515 <?php endif; ?> 516 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; ?> 517 565 </div><!-- .lang-wrapper --> 518 566 </div> … … 527 575 <div class="lwb-row" style="margin-bottom: 3px;"> 528 576 529 <div class="lwb-col-md- 5">577 <div class="lwb-col-md-4 pr-2"> 530 578 <div class="sp-dsgvo-logo-wrapper"> 531 579 <?php … … 549 597 </div> 550 598 </div> 551 <div class="sp-dsgvo-link-wrapper lwb-col-md- 4px-0">599 <div class="sp-dsgvo-link-wrapper lwb-col-md-5 px-0"> 552 600 <a href="<?= $imprintUrl; ?>" target="_blank"><?= __('Imprint', 'shapepress-dsgvo');?></a> 553 601 <span>|</span> … … 587 635 <?php endif; ?> 588 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 589 686 </div><!-- .lang-wrapper --> 590 687 <div class="lwb-col-md-1" style="text-align: right"> -
shapepress-dsgvo/trunk/public/css/sp-dsgvo-popup.css
r2274024 r2280819 116 116 color: black; 117 117 letter-spacing: normal; 118 box-sizing: border-box; 118 119 } 119 120 … … 300 301 margin-right: 5px; 301 302 padding-left: 3px; 303 vertical-align: middle; 302 304 } 303 305 … … 378 380 379 381 .sp-dsgvo-privacy-popup-title { 380 font-size: 1.0em;382 font-size: 0.9em; 381 383 font-weight: 500; 382 384 margin-bottom: 0; -
shapepress-dsgvo/trunk/public/css/sp-dsgvo-popup.min.css
r2274024 r2280819 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}} -
shapepress-dsgvo/trunk/public/shortcodes/imprint.php
r2273977 r2280819 1 1 <?php 2 2 3 function SPDSGVOImprintShortcode( ){3 function SPDSGVOImprintShortcode($atts){ 4 4 5 $locale = SPDSGVOLanguageTools::getInstance()->getCurrentLanguageCode(); 6 /* 7 $params = shortcode_atts(array( 8 'lang' => $locale 9 ), $atts); 10 11 $locale = $params['lang']; 12 */ 5 13 $settings = SPDSGVOSettings::getAll(); 6 14 -
shapepress-dsgvo/trunk/public/shortcodes/privacy-policy.php
r2273977 r2280819 2 2 3 3 4 function SPDSGVOPrivacyPolicyShortcode( ){4 function SPDSGVOPrivacyPolicyShortcode($atts){ 5 5 6 6 $locale = SPDSGVOLanguageTools::getInstance()->getCurrentLanguageCode(); 7 /* 8 $params = shortcode_atts(array( 9 'lang' => $locale 10 ), $atts); 11 12 $locale = $params['lang']; 13 */ 7 14 $hTagTitle = "h1"; 8 15 $hTagSubtitle = "h2"; … … 50 57 $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_countrycode') .", "; 51 58 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>' .", ";59 $responsibleText .= '<a href="mailto:' . SPDSGVOSettings::get('spdsgvo_company_info_email').'">'.SPDSGVOSettings::get("spdsgvo_company_info_email").'</a>' .", "; 53 60 if (empty(SPDSGVOSettings::get('spdsgvo_company_info_phone')) == false) $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_phone'); 54 61 $privacyPolicy[] = SPDSGVOGetFormatedHtmlTextArray('p', $responsibleText); … … 364 371 // <editor-fold desc="Analyse"> 365 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 366 379 $enabledIntegrationCount = 0; 367 380 $integrationTexts = null; -
shapepress-dsgvo/trunk/public/shortcodes/subject-access-request/subject-access-request.php
r2259265 r2280819 19 19 20 20 <?php else: ?> 21 <div class="sp-dsgvo ">21 <div class="sp-dsgvo sp-sar-form"> 22 22 <form method="post" action="<?= SPDSGVOSubjectAccessRequestAction::url() ?>" class="sp-dsgvo-framework"> 23 23 <?php wp_nonce_field( SPDSGVOSubjectAccessRequestAction::getActionName(). '-nonce' ); ?> -
shapepress-dsgvo/trunk/public/shortcodes/super-unsubscribe/unsubscribe-form.php
r2259265 r2280819 24 24 25 25 <?php else: ?> 26 <div class="sp-dsgvo ">26 <div class="sp-dsgvo sp-unsubsribe-form"> 27 27 <form method="post" action="<?= SPDSGVOSuperUnsubscribeFormAction::url() ?>" > 28 28 <?php wp_nonce_field( SPDSGVOSuperUnsubscribeFormAction::getActionName(). '-nonce' ); ?> -
shapepress-dsgvo/trunk/sp-dsgvo.php
r2274024 r2280819 17 17 * Plugin URI: https://legalweb.io 18 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. 619 * Version: 3.1.7 20 20 * Author: legalweb 21 21 * Author URI: https://www.legalweb.io … … 29 29 } 30 30 31 define('sp_dsgvo_VERSION', '3.1. 6');31 define('sp_dsgvo_VERSION', '3.1.7'); 32 32 define('sp_dsgvo_NAME', 'sp-dsgvo'); 33 33 define('sp_dsgvo_PLUGIN_NAME', 'shapepress-dsgvo');
Note: See TracChangeset
for help on using the changeset viewer.