Plugin Directory

Changeset 2280819 for shapepress-dsgvo


Ignore:
Timestamp:
04/10/2020 09:58:05 AM (6 years ago)
Author:
shapepress
Message:

3.1.7

Location:
shapepress-dsgvo/trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • shapepress-dsgvo/trunk/README.txt

    r2274024 r2280819  
    55Requires at least: 3.0.1
    66Tested up to: 5.4.0
    7 Stable tag: 3.1.6
     7Stable tag: 3.1.7
    88Requires PHP: 5.6.0
    99License: GPLv2 or later
     
    1414== Description ==
    1515
    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>
     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
     39Our 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
     47All 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
     51We 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**
     821 & 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
     83freely 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**
     135The 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**
     148The 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**
     154The 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**
     167We have very short update cycles to fix any bugs immediately and to continuously deliver new features.
     168
     169# **SUPPORT & FAQ**
     170We 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**
     177Our 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.
    57184
    58185== Installation ==
     
    77204
    78205== 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
    79213= 3.1.6 =
    80214* IE fixes
     
    216350
    217351== Upgrade Notice ==
    218 = 3.1.6 =
     352= 3.1.7 =
    219353* 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
    220354* 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  
    237237        return apply_filters('sp_dsgvo_integrationapis_'.$type, array());
    238238    }
     239
    239240}
  • shapepress-dsgvo/trunk/includes/class-sp-dsgvo-integration-api-base.php

    r2273977 r2280819  
    1919    public $supportsMultipleImplementationModes = false;
    2020    public $implementationModes = [];
     21    public $hosts = '';
    2122
    2223    protected function __construct()
     
    7071    {
    7172        return $this->cookieNames;
     73    }
     74
     75    public final function getHosts()
     76    {
     77        return $this->hosts;
    7278    }
    7379
     
    143149    }
    144150
    145     public final function getHosts()
    146     {
    147         return '';
    148     }
    149151
    150152    public function getDefaultSettings($ownCodeEnabledByDefault = false)
  • shapepress-dsgvo/trunk/includes/class-sp-dsgvo-javascript.php

    r2273977 r2280819  
    5656                    'jsCode' => base64_encode(($integration->getJsCode($integrationSettings))),
    5757                    'hosts' => $integration->getHosts(),
    58                     'placeholder' => $integration->getCategory() == SPDSGVOConstants::CATEGORY_SLUG_EMBEDDINGS ? SPDSGVOEmbeddingsManager::getDummyPlaceholderForMutationObserver($integration) : ''
     58                    'placeholder' => empty($integration->getHosts()) == false ? SPDSGVOEmbeddingsManager::getDummyPlaceholderForMutationObserver($integration) : ''
    5959                ];
    6060
  • shapepress-dsgvo/trunk/includes/class-sp-dsgvo-language-tools.php

    r2259265 r2280819  
    3535    public function getTypeOfLanguagePlugin()
    3636    {
    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';
    3838        else {
    3939            if(function_exists('icl_get_languages')) return 'wpml';
    4040            if(function_exists('pll_current_language')) return 'polylang';
     41            if(class_exists( 'WPGlobus' )) return 'wpglobus';
    4142        }
    4243
     
    4849        $currentLanguage = null;
    4950
    50         switch ($this->getTypeOfLanguagePlugin())
    51         {
     51        switch ($this->getTypeOfLanguagePlugin()) {
    5252            case "wpml":
    5353                $currentLanguage = apply_filters('wpml_current_language', null);
     
    6060                }
    6161                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;
    6273            case "none":
    6374                $currentLanguage = $this->defaultLanguage;
     
    90101                }
    91102                break;
     103            case "wpglobus":
     104                $currentLanguage = WPGlobus::Config()->default_language;
     105                break;
    92106            case "none":
    93107                $currentLanguage = $this->defaultLanguage;
     
    116130    {
    117131        try {
     132            $locale = strtolower($locale);
     133
    118134            if (substr( $locale, 0, 2 ) === 'de') $locale = 'de_DE';
    119135            if (substr( $locale, 0, 2 ) === 'en') $locale = 'en_EN';
  • shapepress-dsgvo/trunk/includes/class-sp-dsgvo.php

    r2273977 r2280819  
    2828 * @author     Shapepress eU
    2929 */
    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()) {
     30class 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()) {
    6466            $this->defineAdminHooks();
    6567        } else {
     
    6870    }
    6971
    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)) {
    7479            static::$instance = new static;
    7580        }
     
    7883    }
    7984
    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        }
    95101        */
    96102
    97         $load = array(
    98             //======================================================================
    99             // Libraries
    100             //======================================================================
     103        $load = array(
     104            //======================================================================
     105            // Libraries
     106            //======================================================================
    101107            SPDSGVO::pluginDir('includes/class-sp-dsgvo-constants.php'),
    102             SPDSGVO::pluginDir('includes/helpers.php'),
     108            SPDSGVO::pluginDir('includes/helpers.php'),
    103109            SPDSGVO::pluginDir('includes/class-sp-dsgvo-cache-manager.php'),
    104110            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'),
    114120            SPDSGVO::pluginDir('includes/class-sp-dsgvo-embedding-api-base.php'),
    115121            SPDSGVO::pluginDir('includes/class-sp-dsgvo-embeddings-manager.php'),
     
    117123            SPDSGVO::pluginDir('includes/class-sp-dsgvo-integration.php'),
    118124            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'),
    121127            SPDSGVO::pluginDir('includes/class-sp-dsgvo-language-tools.php'),
    122128            SPDSGVO::pluginDir('includes/class-sp-dsgvo-cookie-category-api.php'),
    123129            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'),
     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'),
    139145            SPDSGVO::pluginDir('includes/cron/do-validate-license.php'),
    140146            SPDSGVO::pluginDir('includes/cron/do-check-privacy-policy-texts.php'),
    141147
    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'),
     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'),
    151157            SPDSGVO::pluginDir('public/actions/legal-web-text-action.php'),
    152158            SPDSGVO::pluginDir('public/actions/update-privacy-policy-texts-action.php'),
    153159
    154160
    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'),
     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'),
    171177
    172178            SPDSGVO::pluginDir('public/shortcodes/privacy-policy-link-shortcode.php'),
    173179            SPDSGVO::pluginDir('public/shortcodes/cookie-popup-shortcode.php'),
    174180
    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'),
     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'),
    183189
    184190            // tag manager
     
    214220            SPDSGVO::pluginDir('includes/integrations/targeting/bingadsuet/class-sp-dsgvo-bing-ads-uet-api.php'),
    215221            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             // embeddings
     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
    220226            SPDSGVO::pluginDir('includes/integrations/embeddings/youtube/class-sp-dsgvo-youtube-api.php'),
    221227            SPDSGVO::pluginDir('includes/integrations/embeddings/youtube/class-sp-dsgvo-youtube-integration.php'),
     
    235241            SPDSGVO::pluginDir('includes/integrations/embeddings/soundcloud/class-sp-dsgvo-soundcloud-integration.php'),
    236242
    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);
    356368        // do migration logic
    357369        //$this->loader->add_action('upgrader_process_complete', SPDSGVOMigrator::getInstance(), 'checkForMigrations', 10, 2);
    358370        $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');
    382395
    383396        $this->loader->add_filter('the_content', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessIframes', 50, 1);
     
    386399        $this->loader->add_filter('embed_oembed_html', SPDSGVOEmbeddingsManager::getInstance(), 'findAndProcessOembeds', 50, 2);
    387400
    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    }
    497520}
  • shapepress-dsgvo/trunk/includes/integrations/embeddings/openstreetmap/class-sp-dsgvo-openstreetmap-api.php

    r2247191 r2280819  
    1212        $this->cookieCategory  = SPDSGVOConstants::CATEGORY_SLUG_EMBEDDINGS;
    1313        $this->cookieNames = '';
    14         $this->hosts = 'www.openstreetmap.org';
     14        $this->hosts = 'openstreetmap.org';
    1515
    1616        parent::__construct();
  • shapepress-dsgvo/trunk/includes/integrations/targeting/gadsense/class-sp-dsgvo-gadsense-api.php

    r2253116 r2280819  
    33class SPDSGVOGadsenseApi extends SPDSGVOIntegrationApiBase
    44{
    5 
     5    public $overlayText;
    66
    77    protected function __construct()
     
    1717        $this->isPremium = true;
    1818        $this->isTagManagerCompatible = false;
     19        $this->hosts = 'doubleclick.net';
     20
     21        $this->overlayText = SPDSGVOLanguageTools::getLwText($this->slug, 'overlay', '');
    1922    }
    2023
     
    2730    }
    2831
     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;
    2937
     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    }
    3058}
    3159
  • shapepress-dsgvo/trunk/public/actions/legal-web-text-action.php

    r2273977 r2280819  
    4545                    break;
    4646            }
     47            /*
    4748            if ($settings['showAsTechMandatory'] == '1')
    4849            {
     
    5051            } else
    5152            {
    52                 $slug .=  '-';
    53                 $slug .=  (array_key_exists('implementationMode',$settings)) ? $settings['implementationMode'] : 'on-premises';
    5453
    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            */
    6156
    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'];
    6363            }
    6464        }
  • shapepress-dsgvo/trunk/public/class-sp-dsgvo-public.php

    r2274024 r2280819  
    5858        wp_enqueue_style(sp_dsgvo_NAME.'_twbs4_grid', plugin_dir_url(__FILE__) . 'css/bootstrap-grid.min.css', array(), sp_dsgvo_VERSION, 'all');
    5959        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');
    6161        wp_enqueue_style('simplebar', plugin_dir_url(__FILE__) . 'css/simplebar.min.css');
    6262
     
    515515                                    <?php endif; ?>
    516516                                <?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; ?>
    517565                            </div><!-- .lang-wrapper -->
    518566                        </div>
     
    527575                        <div class="lwb-row" style="margin-bottom: 3px;">
    528576
    529                             <div class="lwb-col-md-5">
     577                            <div class="lwb-col-md-4 pr-2">
    530578                                <div class="sp-dsgvo-logo-wrapper">
    531579                                    <?php
     
    549597                                </div>
    550598                            </div>
    551                             <div class="sp-dsgvo-link-wrapper lwb-col-md-4 px-0">
     599                            <div class="sp-dsgvo-link-wrapper lwb-col-md-5 px-0">
    552600                                <a href="<?= $imprintUrl; ?>" target="_blank"><?= __('Imprint', 'shapepress-dsgvo');?></a>
    553601                                <span>|</span>
     
    587635                                    <?php endif; ?>
    588636                                <?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
    589686                            </div><!-- .lang-wrapper -->
    590687                            <div class="lwb-col-md-1" style="text-align: right">
  • shapepress-dsgvo/trunk/public/css/sp-dsgvo-popup.css

    r2274024 r2280819  
    116116    color: black;
    117117    letter-spacing: normal;
     118    box-sizing: border-box;
    118119}
    119120
     
    300301    margin-right: 5px;
    301302    padding-left: 3px;
     303    vertical-align: middle;
    302304}
    303305
     
    378380
    379381.sp-dsgvo-privacy-popup-title {
    380     font-size: 1.0em;
     382    font-size: 0.9em;
    381383    font-weight: 500;
    382384    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  
    11<?php
    22
    3 function SPDSGVOImprintShortcode(){
     3function SPDSGVOImprintShortcode($atts){
    44
     5    $locale = SPDSGVOLanguageTools::getInstance()->getCurrentLanguageCode();
     6/*
     7    $params = shortcode_atts(array(
     8        'lang' => $locale
     9    ), $atts);
     10
     11    $locale = $params['lang'];
     12*/
    513    $settings = SPDSGVOSettings::getAll();
    614
  • shapepress-dsgvo/trunk/public/shortcodes/privacy-policy.php

    r2273977 r2280819  
    22
    33
    4 function SPDSGVOPrivacyPolicyShortcode(){
     4function SPDSGVOPrivacyPolicyShortcode($atts){
    55
    66    $locale = SPDSGVOLanguageTools::getInstance()->getCurrentLanguageCode();
     7/*
     8    $params = shortcode_atts(array(
     9        'lang' => $locale
     10    ), $atts);
     11
     12    $locale = $params['lang'];
     13*/
    714    $hTagTitle = "h1";
    815    $hTagSubtitle = "h2";
     
    5057    $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_countrycode') .", ";
    5158    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>' .", ";
    5360    if (empty(SPDSGVOSettings::get('spdsgvo_company_info_phone')) == false) $responsibleText .= SPDSGVOSettings::get('spdsgvo_company_info_phone');
    5461    $privacyPolicy[] = SPDSGVOGetFormatedHtmlTextArray('p', $responsibleText);
     
    364371    // <editor-fold desc="Analyse">
    365372    $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
    366379    $enabledIntegrationCount = 0;
    367380    $integrationTexts = null;
  • shapepress-dsgvo/trunk/public/shortcodes/subject-access-request/subject-access-request.php

    r2259265 r2280819  
    1919
    2020        <?php else: ?>
    21     <div class="sp-dsgvo">
     21    <div class="sp-dsgvo sp-sar-form">
    2222            <form method="post" action="<?= SPDSGVOSubjectAccessRequestAction::url() ?>" class="sp-dsgvo-framework">
    2323                <?php wp_nonce_field( SPDSGVOSubjectAccessRequestAction::getActionName(). '-nonce' ); ?>
  • shapepress-dsgvo/trunk/public/shortcodes/super-unsubscribe/unsubscribe-form.php

    r2259265 r2280819  
    2424
    2525        <?php else: ?>
    26         <div class="sp-dsgvo">
     26        <div class="sp-dsgvo sp-unsubsribe-form">
    2727            <form method="post" action="<?= SPDSGVOSuperUnsubscribeFormAction::url() ?>" >
    2828                <?php wp_nonce_field( SPDSGVOSuperUnsubscribeFormAction::getActionName(). '-nonce' ); ?>
  • shapepress-dsgvo/trunk/sp-dsgvo.php

    r2274024 r2280819  
    1717 * Plugin URI:        https://legalweb.io
    1818 * 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
     19 * Version:           3.1.7
    2020 * Author:            legalweb
    2121 * Author URI:        https://www.legalweb.io
     
    2929}
    3030
    31 define('sp_dsgvo_VERSION', '3.1.6');
     31define('sp_dsgvo_VERSION', '3.1.7');
    3232define('sp_dsgvo_NAME', 'sp-dsgvo');
    3333define('sp_dsgvo_PLUGIN_NAME', 'shapepress-dsgvo');
Note: See TracChangeset for help on using the changeset viewer.