Exemple #1
0
function gtm4wp_sanitize_options($options)
{
    global $wpdb;
    $output = gtm4wp_reload_options();
    foreach ($output as $optionname => $optionvalue) {
        if (isset($options[$optionname])) {
            $newoptionvalue = $options[$optionname];
        } else {
            $newoptionvalue = "";
        }
        // "include" settings
        if (substr($optionname, 0, 8) == "include-") {
            $output[$optionname] = (bool) $newoptionvalue;
            // tracked download extensions
        } else {
            if ($optionname == GTM4WP_OPTION_EVENTS_DWLEXT) {
                $output[$optionname] = str_replace(" ", "", trim($newoptionvalue));
                // dataLayer events
            } else {
                if (substr($optionname, 0, 6) == "event-") {
                    $output[$optionname] = (bool) $newoptionvalue;
                    // clear oembed transients when feature is enabled because we need to hook into the oembed process to enable some 3rd party APIs
                    if ($output[$optionname] && !$optionvalue) {
                        if (GTM4WP_OPTION_EVENTS_YOUTUBE == $optionname) {
                            $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE meta_value LIKE '%youtube.com%' AND meta_key LIKE '_oembed_%'");
                        }
                        if (GTM4WP_OPTION_EVENTS_VIMEO == $optionname) {
                            $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE meta_value LIKE '%vimeo.com%' AND meta_key LIKE '_oembed_%'");
                        }
                    }
                    // integrations
                } else {
                    if (substr($optionname, 0, 10) == "integrate-") {
                        $output[$optionname] = (bool) $newoptionvalue;
                        // GTM code or dataLayer variable name
                    } else {
                        if ($optionname == GTM4WP_OPTION_GTM_CODE || $optionname == GTM4WP_OPTION_DATALAYER_NAME) {
                            $newoptionvalue = trim($newoptionvalue);
                            //			if ( ( $optionname == GTM4WP_OPTION_GTM_CODE ) && ( ! preg_match( "/^GTM-[A-Z0-9]+$/", $newoptionvalue ) ) ) {
                            //				add_settings_error( GTM4WP_ADMIN_GROUP, GTM4WP_OPTIONS . '[' . GTM4WP_OPTION_GTM_CODE . ']', __( "Invalid Google Tag Manager ID. Valid ID format: GTM-XXXXX", 'duracelltomi-google-tag-manager' ) );
                            if ($optionname == GTM4WP_OPTION_GTM_CODE) {
                                $_gtmid_list = explode(",", $newoptionvalue);
                                $_gtmid_haserror = false;
                                foreach ($_gtmid_list as $one_gtm_id) {
                                    $_gtmid_haserror = $_gtmid_haserror || !preg_match("/^GTM-[A-Z0-9]+\$/", $one_gtm_id);
                                }
                                if ($_gtmid_haserror) {
                                    add_settings_error(GTM4WP_ADMIN_GROUP, GTM4WP_OPTIONS . '[' . GTM4WP_OPTION_GTM_CODE . ']', __("Invalid Google Tag Manager ID. Valid ID format: GTM-XXXXX. Use comma without additional space (,) to enter more than one container ID.", 'duracelltomi-google-tag-manager'));
                                } else {
                                    $output[$optionname] = $newoptionvalue;
                                }
                            } else {
                                if ($optionname == GTM4WP_OPTION_DATALAYER_NAME && $newoptionvalue != "" && !preg_match("/^[a-zA-Z][a-zA-Z0-9_-]*\$/", $newoptionvalue)) {
                                    add_settings_error(GTM4WP_ADMIN_GROUP, GTM4WP_OPTIONS . '[' . GTM4WP_OPTION_DATALAYER_NAME . ']', __("Invalid dataLayer variable name. Please start with a character from a-z or A-Z followed by characters from a-z, A-Z, 0-9 or '_' or '-'!", 'duracelltomi-google-tag-manager'));
                                } else {
                                    $output[$optionname] = $newoptionvalue;
                                }
                            }
                            // GTM container code placement
                        } else {
                            if ($optionname == GTM4WP_OPTION_GTM_PLACEMENT) {
                                $output[$optionname] = (int) $newoptionvalue;
                                if ($output[$optionname] < 0 || $output[$optionname] > 2) {
                                    $output[$optionname] = 0;
                                }
                                // scroll tracking content ID
                            } else {
                                if ($optionname == GTM4WP_OPTION_SCROLLER_CONTENTID) {
                                    $output[$optionname] = trim(str_replace("#", "", $newoptionvalue));
                                    // anything else
                                } else {
                                    switch (gettype($optionvalue)) {
                                        case "boolean":
                                            $output[$optionname] = (bool) $newoptionvalue;
                                            break;
                                        case "integer":
                                            $output[$optionname] = (int) $newoptionvalue;
                                            break;
                                        default:
                                            $output[$optionname] = $newoptionvalue;
                                    }
                                    // end switch
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return $output;
}
define('GTM4WP_PLACEMENT_FOOTER', 0);
define('GTM4WP_PLACEMENT_BODYOPEN', 1);
define('GTM4WP_PLACEMENT_BODYOPEN_AUTO', 2);
$gtm4wp_options = array();
$gtm4wp_defaultoptions = array(GTM4WP_OPTION_GTM_CODE => "", GTM4WP_OPTION_DATALAYER_NAME => "", GTM4WP_OPTION_GTM_PLACEMENT => GTM4WP_PLACEMENT_FOOTER, GTM4WP_OPTION_INCLUDE_REMARKETING => false, GTM4WP_OPTION_INCLUDE_LOGGEDIN => false, GTM4WP_OPTION_INCLUDE_USERROLE => false, GTM4WP_OPTION_INCLUDE_USERID => false, GTM4WP_OPTION_INCLUDE_POSTTYPE => true, GTM4WP_OPTION_INCLUDE_CATEGORIES => true, GTM4WP_OPTION_INCLUDE_TAGS => true, GTM4WP_OPTION_INCLUDE_AUTHOR => true, GTM4WP_OPTION_INCLUDE_POSTDATE => false, GTM4WP_OPTION_INCLUDE_POSTTITLE => false, GTM4WP_OPTION_INCLUDE_POSTCOUNT => false, GTM4WP_OPTION_INCLUDE_SEARCHDATA => false, GTM4WP_OPTION_INCLUDE_BROWSERDATA => false, GTM4WP_OPTION_INCLUDE_OSDATA => false, GTM4WP_OPTION_INCLUDE_DEVICEDATA => false, GTM4WP_OPTION_INCLUDE_WEATHER => false, GTM4WP_OPTION_INCLUDE_WEATHERUNITS => 0, GTM4WP_OPTION_EVENTS_OUTBOUND => false, GTM4WP_OPTION_EVENTS_DOWNLOADS => false, GTM4WP_OPTION_EVENTS_DWLEXT => "pdf,doc,docx,xls,xlsx,ppt,pptx,zip,rar,gz,tar", GTM4WP_OPTION_EVENTS_EMAILCLICKS => false, GTM4WP_OPTION_EVENTS_FORMMOVE => true, GTM4WP_OPTION_EVENTS_SOCIAL => false, GTM4WP_OPTION_EVENTS_YOUTUBE => false, GTM4WP_OPTION_EVENTS_VIMEO => false, GTM4WP_OPTION_EVENTS_SOUNDCLOUD => false, GTM4WP_OPTION_SCROLLER_ENABLED => false, GTM4WP_OPTION_SCROLLER_DEBUGMODE => false, GTM4WP_OPTION_SCROLLER_CALLBACKTIME => 100, GTM4WP_OPTION_SCROLLER_DISTANCE => 150, GTM4WP_OPTION_SCROLLER_CONTENTID => "content", GTM4WP_OPTION_SCROLLER_READERTIME => 60, GTM4WP_OPTION_BLACKLIST_ENABLE => 0, GTM4WP_OPTION_BLACKLIST_ADADVISOR => false, GTM4WP_OPTION_BLACKLIST_ADROLL => false, GTM4WP_OPTION_BLACKLIST_AWCONV => false, GTM4WP_OPTION_BLACKLIST_AWREMARKET => false, GTM4WP_OPTION_BLACKLIST_BIZO => false, GTM4WP_OPTION_BLACKLIST_CLICKTALE => false, GTM4WP_OPTION_BLACKLIST_COMSCORE => false, GTM4WP_OPTION_BLACKLIST_CUSTOMHTML => false, GTM4WP_OPTION_BLACKLIST_CUSTOMIMG => false, GTM4WP_OPTION_BLACKLIST_DBLCLKCOUNT => false, GTM4WP_OPTION_BLACKLIST_DBLCLKSALES => false, GTM4WP_OPTION_BLACKLIST_GACLASSIC => false, GTM4WP_OPTION_BLACKLIST_MARIN => false, GTM4WP_OPTION_BLACKLIST_MPLEXIFRAME => false, GTM4WP_OPTION_BLACKLIST_MPLEXROI => false, GTM4WP_OPTION_BLACKLIST_MEDIA6DEG => false, GTM4WP_OPTION_BLACKLIST_TURNCONV => false, GTM4WP_OPTION_BLACKLIST_TURNDATA => false, GTM4WP_OPTION_BLACKLIST_UA => false, GTM4WP_OPTION_BLACKLIST_MACRO_DOMELEMENT => true, GTM4WP_OPTION_BLACKLIST_MACRO_CUSTOMJS => true, GTM4WP_OPTION_BLACKLIST_MACRO_CONSTANT => true, GTM4WP_OPTION_BLACKLIST_MACRO_1STCOOKIE => true, GTM4WP_OPTION_BLACKLIST_MACRO_EVENTNAME => true, GTM4WP_OPTION_BLACKLIST_MACRO_JSVAR => true, GTM4WP_OPTION_BLACKLIST_MACRO_DLAYERVAR => true, GTM4WP_OPTION_BLACKLIST_MACRO_RANDOMNUM => true, GTM4WP_OPTION_BLACKLIST_MACRO_REFERRER => true, GTM4WP_OPTION_BLACKLIST_MACRO_URL => true, GTM4WP_OPTION_BLACKLIST_MACRO_AUTOEVENT => true, GTM4WP_OPTION_INTEGRATE_WPCF7 => false, GTM4WP_OPTION_INTEGRATE_WCTRACKCLASSICEC => false, GTM4WP_OPTION_INTEGRATE_WCTRACKENHANCEDEC => false, GTM4WP_OPTION_INTEGRATE_WCREMARKETING => false, GTM4WP_OPTION_INTEGRATE_WCREMARKETINGSKU => false, GTM4WP_OPTION_INTEGRATE_WPECOMMERCE => false);
function gtm4wp_reload_options()
{
    global $gtm4wp_defaultoptions;
    $storedoptions = (array) get_option(GTM4WP_OPTIONS);
    if (!is_array($gtm4wp_defaultoptions)) {
        $gtm4wp_defaultoptions = array();
    }
    // update WooCommerce settings from 0.7.x to 0.8
    if (isset($storedoptions[GTM4WP_OPTION_INTEGRATE_WOOCOMMERCE]) && !isset($storedoptions[GTM4WP_OPTION_INTEGRATE_WCTRACKCLASSICEC])) {
        $storedoptions[GTM4WP_OPTION_INTEGRATE_WCTRACKCLASSICEC] = $storedoptions[GTM4WP_OPTION_INTEGRATE_WOOCOMMERCE];
        $storedoptions[GTM4WP_OPTION_INTEGRATE_WCTRACKENHANCEDEC] = false;
        $storedoptions[GTM4WP_OPTION_INTEGRATE_WCREMARKETING] = $storedoptions[GTM4WP_OPTION_INTEGRATE_WOOCOMMERCE];
        unset($storedoptions[GTM4WP_OPTION_INTEGRATE_WOOCOMMERCE]);
    }
    return array_merge($gtm4wp_defaultoptions, $storedoptions);
}
function gtp4wp_debug_file($debug_data)
{
    $fp = fopen(dirname(__FILE__) . "/" . date("Y-m-d-H-i-s-u") . ".txt", "w");
    if ($fp) {
        fwrite($fp, $debug_data);
        fclose($fp);
    }
}
$gtm4wp_options = gtm4wp_reload_options();
Exemple #3
0
function gtm4wp_sanitize_options($options)
{
    $output = gtm4wp_reload_options();
    foreach ($output as $optionname => $optionvalue) {
        if (isset($options[$optionname])) {
            $newoptionvalue = $options[$optionname];
        } else {
            $newoptionvalue = "";
        }
        // "include" settings
        if (substr($optionname, 0, 8) == "include-") {
            $output[$optionname] = (bool) $newoptionvalue;
            // tracked download extensions
        } else {
            if ($optionname == GTM4WP_OPTION_EVENTS_DWLEXT) {
                $output[$optionname] = str_replace(" ", "", trim($newoptionvalue));
                // dataLayer events
            } else {
                if (substr($optionname, 0, 6) == "event-") {
                    $output[$optionname] = (bool) $newoptionvalue;
                    // integrations
                } else {
                    if (substr($optionname, 0, 10) == "integrate-") {
                        $output[$optionname] = (bool) $newoptionvalue;
                        // GTM code or dataLayer variable name
                    } else {
                        if ($optionname == GTM4WP_OPTION_GTM_CODE || $optionname == GTM4WP_OPTION_DATALAYER_NAME) {
                            $newoptionvalue = trim($newoptionvalue);
                            if ($optionname == GTM4WP_OPTION_GTM_CODE && !preg_match("/^GTM-[A-Z0-9]+\$/", $newoptionvalue)) {
                                add_settings_error(GTM4WP_ADMIN_GROUP, GTM4WP_OPTIONS . '[' . GTM4WP_OPTION_GTM_CODE . ']', __("Invalid Google Tag Manager ID. Valid ID format: GTM-XXXXX", GTM4WP_TEXTDOMAIN));
                            } else {
                                if ($optionname == GTM4WP_OPTION_DATALAYER_NAME && $newoptionvalue != "" && !preg_match("/^[a-zA-Z][a-zA-Z0-9_-]*\$/", $newoptionvalue)) {
                                    add_settings_error(GTM4WP_ADMIN_GROUP, GTM4WP_OPTIONS . '[' . GTM4WP_OPTION_DATALAYER_NAME . ']', __("Invalid dataLayer variable name. Please start with a character from a-z or A-Z followed by characters from a-z, A-Z, 0-9 or '_' or '-'!", GTM4WP_TEXTDOMAIN));
                                } else {
                                    $output[$optionname] = $newoptionvalue;
                                }
                            }
                            // GTM container code placement
                        } else {
                            if ($optionname == GTM4WP_OPTION_GTM_PLACEMENT) {
                                $output[$optionname] = (int) $newoptionvalue;
                                if ($output[$optionname] < 0 || $output[$optionname] > 1) {
                                    $output[$optionname] = 0;
                                }
                                // scroll tracking content ID
                            } else {
                                if ($optionname == GTM4WP_OPTION_SCROLLER_CONTENTID) {
                                    $output[$optionname] = trim(str_replace("#", "", $newoptionvalue));
                                    // anything else
                                } else {
                                    switch (gettype($optionvalue)) {
                                        case "boolean":
                                            $output[$optionname] = (bool) $newoptionvalue;
                                            break;
                                        case "integer":
                                            $output[$optionname] = (int) $newoptionvalue;
                                            break;
                                        default:
                                            $output[$optionname] = $newoptionvalue;
                                    }
                                    // end switch
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return $output;
}