PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/watchpalace.kerihosting.com/wp-content/plugins/ad-inserter/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/watchpalace.kerihosting.com/wp-content/plugins/ad-inserter/ad-inserter.php |
<?php /* Plugin Name: Ad Inserter Version: 2.7.34 Description: Ad management with many advanced advertising features to insert ads at optimal positions Author: Igor Funa Author URI: http://igorfuna.com/ Plugin URI: https://adinserter.pro/documentation Text Domain: ad-inserter Domain Path: /languages Requires at least: 5 Requires PHP: 7.2 */ /* Change Log Ad Inserter 2.7.34 - 2024-03-14 - Added support for ^ character to invert viewports in the VIEWPORT separator - Added support for index parameter for counter shortcodes - Changed text for content marker - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.33 - 2024-01-03 - Changed widget class name - Added option to define maximum number of list selection items - Fix for Amazon external script causing false ad blocking detection - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.32 - 2023-10-29 - Added experimental support for REST requests - Added support for data shortcode for url parameters - Added option for shortcodes to ignore category, tag, taxonomy and post ID lists - Added support for background parallax ads (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.31 - 2023-09-11 - Security fix for some data revealed via remote debugging data - Added support to remove ad label when no code is inserted - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.30 - 2023-07-15 - Improved debugging - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.29 - 2023-06-03 - Added support for shortcode for reusable blocks by name - Added support to force using get_queried_object function to get post id - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.28 - 2023-04-12 - Added support for shortcode for reusable blocks - Fix for PDF reports when site_url is different from home_url (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.27 - 2023-03-29 - Fix for ad blocking detection external script trying to download a file Ad Inserter 2.7.26 - 2023-03-20 - Improved compatibility with PHP 8.2 - Security fix for deserialization - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.25 - 2023-02-19 - Improved theme compatibility for sticky widgets with CSS mode - Improved tracking for Google Analytics (Pro only) - Added information bar when Wait for jQuery is enabled - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.24 - 2023-01-18 - Added CSS Push mode for sticky widgets - Added support for sticky ads (push mode) inside post/page content (Pro only) - Added support for frontend JavaScript code in external file - Added support for multiple activations of rotation groups - Added support for %N@M format for filter counting - Added support to prepend and append code to rotation option codes - Added hook for click on the close button (Pro only) - Improved front-end code - Fix for client-side device detection on AMP pages - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.23 - 2022-12-20 - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.22 - 2022-11-30 - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.21 - 2022-10-25 - Added support for Ad Inserter menu position - Added support for random paragraph ranges - Added support for default waiting time for user interaction (Pro only) - Improved front-end code - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.20 - 2022-10-02 - Fix for front-end translation Ad Inserter 2.7.19 - 2022-09-16 - Added constant to disable AdSense API - Fix for rotation code editor - Fix for advaced click tracker for banners (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.18 - 2022-09-01 - Added support to hide ad label when unfilled AdSense block is hidden - Simplified AdSense API authorization process - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.17 - 2022-07-06 - Fixed bug for url parameters check - Added support for reCaptcha v3 score check (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.16 - 2022-06-23 - Added support for adb redirection page with url queries - Added support for tcf-no-google shortcut - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.15 - 2022-06-01 - Added filter hooks for ad labels - Added support for constants - Added support for rotation option index attribute - Added shortcodes for block number and block name - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.14 - 2022-04-28 - Added support for demo settings - Added support for background transparency - Added support for background for sticky ads (Pro only) - Added support for statistics for check options (Pro only) - Added support for individual rotation option statistics (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.13 - 2022-04-02 - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.12 - 2022-03-09 - Security fix for settings page save url - Added support to disable ad blocking detection for specific devices - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.11 - 2022-01-28 - Security fix for sites using constants to prevent file editing or unfiltered HTML - Added filters before the options are saved - Added support for a shortcode for comma separated list of categories with quotes (for Google Ad Manager) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.10 - 2022-01-19 - Security fix for XSS (Reported by Krzysztof Zajac via WPScan) - Added support to detect and replace blank AdSense blocks - Added support to load and save plugins settings to a file (Pro only) - Added support for parallax ads (Pro only) - Few fixes Ad Inserter 2.7.9 - 2022-01-05 - Bug fix for timed rotations - Bug fix for tr_TR translation - Improved checks for cookies - Improved compatibility with PHP 8.1 - Added separate list for cookies - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.8 - 2021-12-01 - Bug fix for paragraph counting and clearance - Bug fix for undefined constant error Ad Inserter 2.7.7 - 2021-11-30 - Few bug fixes Ad Inserter 2.7.6 - 2021-11-28 - Improved compatibility with PHP 8 - Added translation for tr_TR - Added support to wait for an interaction before the block is loaded (Pro only) - Added support to delay insertion of the block (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.5 - 2021-10-20 - Added support for fallback block for limits (Pro only) - Added support to optimize rotation shares by CTR (Pro only) - Added support to animate out sticky ads (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.4 - 2021-09-16 - Updated Google API - Improved labels for AdSense Auto ads - Added external tracking support for WP username (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.3 - 2021-08-10 - Improved ad blocking detection - Improved compatibility with PHP 8 - Improved check for update server accessibility (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.2 - 2021-07-05 - Added shortcuts for TCF v2 consent cookie checks - Added support for adinserter shortcode to get post ID - Improved ad blocking detection - Changed internal IP to country database (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.1 - 2021-06-16 - Improved ad blocking detection - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.0 - 2021-05-30 - Added support to list range of post IDs - Added support for browser language in client lists - Added support for client-side checks for filter hook ai_block_insertion_check - Added support for remote plugin managenent (Pro only) - Added support for scheduling check shortcode (Pro only) - Added support for daily scheduling time (Pro onlyl) - Added support for css attribute in check options (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.27 - 2021-05-29 - Added support for scheduled rotation - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.26 - 2021-05-27 - Few bug fixes (Pro only) Ad Inserter 2.6.25 - 2021-05-24 - Added support for block names in adinserter shortcode block attributes - Added support for browser language in client list (experimental) - Added support for client-side checks for filter hook ai_block_insertion_check (experimental) - Added support for remote plugin managenent (Pro only, experimental) - Added support for default custom field values - Added support for scheduled rotation (experimental) - Added support for scheduling check shortcode (Pro only, experimental) - Added support for daily scheduling time (Pro only, experimental) - Added support for css attribute in check options (Pro only, experimental) - Added support to list range of post IDs - Improved ad blocking detection - Reduced layout shift when using CHECK shortcodes - Fix for expanded shortcodes in the rotate code generator - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.24 - 2021-04-19 - Added support for consent attribute for code generator for AdSense and Amazon AMP ads - Added support for random number shortcode - Added support for && and !! operators in client-side client list checks - Added scheduling time on blocks list (Pro only) - Improved undismissible message when ad blocking is detected - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.23 - 2021-03-17 - Reduced layout shift when using lists and client-side dynamic blocks - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.22 - 2021-02-17 - Various security fixes - Updated AdSense API authorization process - Reduced layout shift when using client-side device detection - Added option to block IP addresses for click fraud protection (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.21 - 2021-01-24 - Improved compatibility with PHP 8 - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.20 - 2021-01-06 - Added support for alt text and lazy loading for banner code generator - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.19 - 2020-12-16 - Improved code to reduce layout shift when using client-side device detection - Added translation for es_ES - Added translation for fr_FR - Added translation for it_IT - Improved compatibility with PHP 8 - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.18 - 2020-11-21 - Added support to change Dynamic blocks setting for adinserter PHP function call - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.17 - 2020-10-31 - Fix for ADINSERTER shortcodes in block codes - Fix for double client-side insertions when using geolocation (Pro only) Ad Inserter 2.6.16 - 2020-10-20 - Added support for ad blocking detection action every n pageviews - Added support to individually disable pageview or click tracking (Pro only) - Changed IAB TCF v2 cookie check name from euconsent-v2 to tcf-v2 (euconsent-v2 will still work) - Fix for category check on category pages - Fix for issues with Safari browser - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.15 - 2020-10-02 - No ad blocking detection actions for crawlers and bots - Fix for processing Ad Inserter shortcodes inside HTML tags - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.14 - 2020-09-07 - Added support to insert [embed] shortcodes - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.13 - 2020-08-26 - Few minor bug fixes Ad Inserter 2.6.12 - 2020-08-23 - Support for PHP 7.4 - Improved ad blocking detection - Added options to delay client-side insertions at HTML element - Added support to check for multiple cookie values (needed for IAB TCF 2.0) - Added filter hooks for block processing - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.11 - 2020-07-23 - Added support for IAB Transparency & Consent Framework 2.0 - Added support for taxonomy for primary category - Added support for taxonomy for post meta data - Added support to invert contain/do not contain text condition for paragraph counting - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.10 - 2020-06-25 - Added user taxonomy items for logged-in and not logged-in users - Added option to define tab setup delay (for the plugin settings page) - Added option to insert unique ad rotation options when block is inserted more than once - Added support for client-side device detection for AMP pages (for method Show) - Added support for code generator for Amazon AMP ads - Added support for custom tracking events (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.6.9 - 2020-05-22 - Added option for paragraph counting to search only tag attributes for text - Added option to embed block Javascript code (to be loaded with Ajax calls) - Added support to prevent duplicate insertions when the_content filter is called more than once (experimental) - Added support for the client list to check for partial user agent strings - Added support for check of cookie object properties - Improved ad blocking detection - Viewports no longer need to be in descending width order - Added option to protect inserted block content (Pro only) - Added support for adb scripts path filter hook (Pro only) - Added support to export statistics data to CSV file (Pro only) - Few minor bug fixes, cosmetic changes and code improvements */ use Detection\MobileDetect; if (!defined ('ABSPATH')) exit; if (!defined ('AD_INSERTER_VERSION')) { function ai_wp_default_editor () { return 'tinymce'; } function ai_wp_default_editor_html () { return 'html'; } function ai_disable_caching () { // WP Super Cache, W3 Total Cache, WP Rocket if (!defined('DONOTCACHEPAGE')) define('DONOTCACHEPAGE', true); if (!defined('DONOTCACHEOBJECT')) define('DONOTCACHEOBJECT', true); if (!defined('DONOTCACHEDB')) define('DONOTCACHEDB', true); if (!headers_sent () && !is_user_logged_in ()) { header('Cache-Control: private, proxy-revalidate, s-maxage=0'); } } function ai_toolbar_menu_items () { global $block_object, $ai_wp_data; if (isset ($ai_wp_data [AI_DEBUG_MENU_ITEMS])) return; $disable_block_insertions = get_disable_block_insertions (); $disable_php_processing = get_disable_php_processing (); $disable_html_code = get_disable_html_code (); $disable_css_code = get_disable_css_code (); $disable_js_code = get_disable_js_code (); $disable_footer_code = get_disable_footer_code (); $disable_header_code = get_disable_header_code (); $statuses = '<span class="ai-insertion-status"'. ($disable_header_code ? ' style="color: #f22"' : '') . '">H</span> '; $statuses .= '<span class="ai-insertion-status"'. ($disable_footer_code ? ' style="color: #f22"' : '') . '">F</span> '; $statuses .= '<span class="ai-insertion-status"'. ($disable_js_code ? ' style="color: #f22"' : '') . '">JS</span> '; $statuses .= '<span class="ai-insertion-status"'. ($disable_css_code ? ' style="color: #f22"' : '') . '">CSS</span> '; $statuses .= '<span class="ai-insertion-status"'. ($disable_html_code ? ' style="color: #f22"' : '') . '">HTML</span> '; $statuses .= '<span class="ai-insertion-status"'. ($disable_php_processing ? ' style="color: #f22"' : '') . '">PHP</span> '; $statuses .= '<span class="ai-insertion-status"'. ($disable_block_insertions ? ' style="color: #f22"' : '') . '">BLOCKS</span>'; $insertion_disabled = $disable_block_insertions || $disable_php_processing || $disable_html_code || $disable_css_code || $disable_js_code || $disable_footer_code || $disable_header_code; $ai_wp_data [AI_DEBUG_MENU_ITEMS] = array (); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) == 0) $debug_blocks = 1; else $debug_blocks = 0; $debug_blocks_class = $debug_blocks == 0 ? ' on' : ''; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) == 0) $debug_positions = 0; else $debug_positions = ''; $debug_positions_class = $debug_positions === '' ? ' on' : ''; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_TAGS) == 0) $debug_tags = 1; else $debug_tags = 0; $debug_tags_class = $debug_tags == 0 ? ' on' : ''; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) == 0) $debug_processing = 1; else $debug_processing = 0; $debug_processing_class = $debug_processing == 0 ? ' on' : ''; if (!isset ($_GET [AI_URL_DEBUG_PROCESSING_FE_]) || $_GET [AI_URL_DEBUG_PROCESSING_FE_] == 0) $debug_processing_fe = 1; else $debug_processing_fe = 0; $debug_processing__fe_class = $debug_processing_fe == 0 ? ' on' : ''; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_NO_INSERTION) == 0) $debug_no_insertion = 1; else $debug_no_insertion = 0; $debug_no_insertion_class = $debug_no_insertion == 0 ? ' on' : ''; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_AD_BLOCKING) == 0) $debug_ad_blocking = 1; else $debug_ad_blocking = 0; $debug_ad_blocking_class = $debug_ad_blocking == 0 ? ' on' : ''; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_AD_BLOCKING_STATUS) == 0) $debug_ad_blocking_status = 1; else $debug_ad_blocking_status = 0; $debug_ad_blocking_status_class = $debug_ad_blocking_status == 0 ? ' on' : ''; $debug_settings_on = $debug_blocks == 0 || $debug_positions === '' || $debug_tags == 0 || $debug_processing == 0 || $debug_no_insertion == 0 || $debug_ad_blocking == 0 || $debug_ad_blocking_status == 0; $debug_settings_class = $debug_settings_on ? ' on' : ''; if ($insertion_disabled) $debug_settings_class .= ' red'; // $settings_page = get_menu_position () == AI_SETTINGS_SUBMENU ? 'options-general.php?page=ad-inserter.php' : 'admin.php?page=ad-inserter.php'; // $settings_link = '<a href="'.admin_url ($settings_page).'">'._x('Settings', 'Menu item', 'ad-inserter') . '</a>'; if (defined ('AI_DEBUGGING_DEMO')) { $top_menu_url = $debug_settings_on ? get_permalink () : add_query_arg (array (AI_URL_DEBUG_BLOCKS => '1', AI_URL_DEBUG_POSITIONS => '0'), remove_debug_parameters_from_url ()); } else { $top_menu_url = admin_url (get_menu_position () == AI_SETTINGS_SUBMENU ? 'options-general.php?page=ad-inserter.php' : 'admin.php?page=ad-inserter.php'); } $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar', 'group' => true ); $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-settings', // 'parent' => 'ai-toolbar', // 'title' => '<span class="ab-icon'.$debug_settings_class.'"></span>'.AD_INSERTER_NAME . (defined ('AI_DEBUGGING_DEMO') ? ' Debugging DEMO' : ($debug_settings_on ? ' Debugging' : '')), 'title' => '<span class="ab-icon'.$debug_settings_class.'"></span>'.AD_INSERTER_NAME . (defined ('AI_DEBUGGING_DEMO') ? ' ' . _x('Debugging DEMO', 'Menu item', 'ad-inserter') : ($debug_settings_on ? '' : '')), 'href' => $top_menu_url, // 'meta' => $debug_settings_on ? array ('title' => 'Turn Debugging Off') : array (), ); if ($insertion_disabled) { $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-status', 'parent' => 'ai-toolbar-settings', 'title' => ' '.$statuses, ); } if ($debug_settings_on) { $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-off', 'parent' => 'ai-toolbar-settings', 'title' => '<span class="ab-icon"></span>' . _x('Disable Debugging', 'Menu item, to disable debugging', 'ad-inserter'), 'href' => add_query_arg (AI_URL_DEBUG, '0', remove_debug_parameters_from_url ()), ); } $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-blocks', 'parent' => 'ai-toolbar-settings', 'title' => '<span class="ab-icon'.$debug_blocks_class.'"></span>' . _x('Label Blocks', 'Menu item, to label blocks', 'ad-inserter'), 'href' => set_url_parameter (AI_URL_DEBUG_BLOCKS, $debug_blocks), ); $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-positions', 'parent' => 'ai-toolbar-settings', 'title' => '<span class="ab-icon'.$debug_positions_class.'"></span>' . _x('Show Positions', 'Menu item', 'ad-inserter'), 'href' => set_url_parameter (AI_URL_DEBUG_POSITIONS, $debug_positions), ); $paragraph_blocks = array (); for ($block = 0; $block <= 96; $block ++) { $obj = $block_object [$block]; $automatic_insertion = $obj->get_automatic_insertion(); if ($block == 0 || !$obj->get_disable_insertion () && ($automatic_insertion == AI_AUTOMATIC_INSERTION_BEFORE_PARAGRAPH || $automatic_insertion == AI_AUTOMATIC_INSERTION_AFTER_PARAGRAPH)) { $block_tags = trim ($block_object [$block]->get_paragraph_tags ()); $direction = $block_object [$block]->get_direction_type() == AI_DIRECTION_FROM_TOP ? 't' : 'b'; $paragraph_min_words = intval ($obj->get_minimum_paragraph_words()); $paragraph_max_words = intval ($obj->get_maximum_paragraph_words()); $paragraph_text_type = $obj->get_paragraph_text_type (); $paragraph_text = trim (html_entity_decode ($obj->get_paragraph_text())); $inside_blockquote = $obj->get_count_inside_blockquote (); $count_inside_type = $obj->get_count_inside (); $count_inside_elements = $obj->get_count_inside_elements (); $that_contain_type = $obj->get_count_inside_elements_contain (); $that_contain_text = trim (html_entity_decode ($obj->get_count_inside_elements_text ())); if ($block_tags != '') { $found = false; foreach ($paragraph_blocks as $index => $paragraph_block) { if ($paragraph_block ['tags'] == $block_tags && $paragraph_block ['direction'] == $direction && $paragraph_block ['min'] == $paragraph_min_words && $paragraph_block ['max'] == $paragraph_max_words && $paragraph_block ['text_type'] == $paragraph_text_type && $paragraph_block ['text'] == $paragraph_text && $paragraph_block ['blockquote'] == $inside_blockquote && $paragraph_block ['inside_type'] == $count_inside_type && $paragraph_block ['inside_elemets'] == $count_inside_elements && $paragraph_block ['contain_type'] == $that_contain_type && $paragraph_block ['contain_text'] == $that_contain_text ) { $found = true; break; } } if ($found) array_push ($paragraph_blocks [$index]['blocks'], $block); else $paragraph_blocks []= array ('blocks' => array ($block), 'tags' => $block_tags, 'direction' => $direction, 'min' => $paragraph_min_words, 'max' => $paragraph_max_words, 'text_type' => $paragraph_text_type, 'text' => $paragraph_text, 'blockquote' => $inside_blockquote, 'inside_type' => $count_inside_type, 'inside_elemets' => $count_inside_elements, 'contain_type' => $that_contain_type, 'contain_text' => $that_contain_text, ); } } } $no_paragraph_counting_inside = get_no_paragraph_counting_inside (); foreach ($paragraph_blocks as $index => $paragraph_block) { $debug_block_active = $debug_positions === '' && in_array ($ai_wp_data [AI_WP_DEBUG_BLOCK], $paragraph_block ['blocks']); $block_class = $debug_block_active ? ' on' : ''; // $block_class = $debug_positions === '' && in_array ($ai_wp_data [AI_WP_DEBUG_BLOCK], $paragraph_block ['blocks']) ? ' on' : ''; $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-positions-'.$index, 'parent' => 'ai-toolbar-positions', 'title' => '<span class="ab-icon'.$block_class.'"></span>'. $paragraph_block ['tags']. ($paragraph_block ['direction'] == 'b' ? ' <span class="dashicons dashicons-arrow-up-alt up-icon"></span>' : ''). ($paragraph_block ['min'] != 0 ? ' min '.$paragraph_block ['min']. ' ' : ''). ($paragraph_block ['max'] != 0 ? ' max '.$paragraph_block ['max']. ' ' : ''). ($paragraph_block ['blockquote'] ? ' +[' . $no_paragraph_counting_inside . '] ' : ''). ($paragraph_block ['text'] != '' ? ($paragraph_block ['text_type'] == AI_DO_NOT_CONTAIN ? ' !has ' : ' has ').' ['.htmlentities ($paragraph_block ['text']).']' : ''). ($paragraph_block ['inside_elemets'] != '' ? ($paragraph_block ['inside_type'] == AI_COUNT_ONLY ? ' insEL' : ' !insEL ').' ['.$paragraph_block ['inside_elemets'].']' : ''). ($paragraph_block ['contain_text'] != '' ? ($paragraph_block ['contain_type'] == AI_CONTAIN ? ' elHAS' : ' !elHAS ').' ['.htmlentities ($paragraph_block ['contain_text']).']' : ''), // 'href' => set_url_parameter (AI_URL_DEBUG_POSITIONS, $paragraph_block ['blocks'][0]), 'href' => set_url_parameter (AI_URL_DEBUG_POSITIONS, $debug_block_active ? '' : $paragraph_block ['blocks'][0]), ); } $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-tags', 'parent' => 'ai-toolbar-settings', 'title' => '<span class="ab-icon'.$debug_tags_class.'"></span>' . _x('Show HTML Tags', 'Menu item', 'ad-inserter'), 'href' => set_url_parameter (AI_URL_DEBUG_TAGS, $debug_tags), ); $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-no-insertion', 'parent' => 'ai-toolbar-settings', 'title' => '<span class="ab-icon'.$debug_no_insertion_class.'"></span>' . _x('Disable Insertion', 'Menu item', 'ad-inserter'), 'href' => set_url_parameter (AI_URL_DEBUG_NO_INSERTION, $debug_no_insertion), ); if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { if ($ai_wp_data [AI_ADB_DETECTION]) { $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-adb-status', 'parent' => 'ai-toolbar-settings', 'title' => '<span class="ab-icon'.$debug_ad_blocking_status_class.'"></span>' . _x('Ad Blocking Status', 'Menu item', 'ad-inserter'), 'href' => set_url_parameter (AI_URL_DEBUG_AD_BLOCKING_STATUS, $debug_ad_blocking_status), ); $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-adb', 'parent' => 'ai-toolbar-settings', 'title' => '<span class="ab-icon'.$debug_ad_blocking_class.'"></span>' . _x('Simulate Ad Blocking', 'Menu item', 'ad-inserter'), 'href' => set_url_parameter (AI_URL_DEBUG_AD_BLOCKING, $debug_ad_blocking), ); } } if (!defined ('AI_DEBUGGING_DEMO')) { $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-processing', 'parent' => 'ai-toolbar-settings', 'title' => '<span class="ab-icon'.$debug_processing_class.'"></span>' . _x('Log Processing', 'Menu item', 'ad-inserter'), 'href' => set_url_parameter (AI_URL_DEBUG_PROCESSING, $debug_processing), ); $ai_wp_data [AI_DEBUG_MENU_ITEMS][] = array ( 'id' => 'ai-toolbar-processing-fe', 'parent' => 'ai-toolbar-processing', 'title' => '<span class="ab-icon'.$debug_processing__fe_class.'"></span>' . _x('Show Log', 'Menu item', 'ad-inserter'), 'href' => set_url_parameter (AI_URL_DEBUG_PROCESSING_FE, $debug_processing_fe), ); } } function ai_toolbar ($wp_admin_bar) { global $ai_wp_data; ai_toolbar_menu_items (); foreach ($ai_wp_data [AI_DEBUG_MENU_ITEMS] as $menu_item) { $wp_admin_bar->add_node ($menu_item); } } function set_user () { global $ai_wp_data; if ($ai_wp_data [AI_WP_USER_SET]) return; if (is_user_logged_in ()) $ai_wp_data [AI_WP_USER] |= AI_USER_LOGGED_IN; if (current_user_role () >= 5) $ai_wp_data [AI_WP_USER] |= AI_USER_ADMINISTRATOR; // if (isset ($_GET [AI_URL_DEBUG_USER]) && $_GET [AI_URL_DEBUG_USER] != 0) $ai_wp_data [AI_WP_USER] = $_GET [AI_URL_DEBUG_USER]; $ai_wp_data [AI_WP_USER_SET] = true; } if (!function_exists ('is_rest')) { /** * Checks if the current request is a WP REST API request. * * Case #1: After WP_REST_Request initialisation * Case #2: Support "plain" permalink settings and check if `rest_route` starts with `/` * Case #3: It can happen that WP_Rewrite is not yet initialized, * so do this (wp-settings.php) * Case #4: URL Path begins with wp-json/ (your REST prefix) * Also supports WP installations in subfolders * * @returns boolean * @author matzeeable */ function is_rest () { if (defined('REST_REQUEST') && REST_REQUEST // (#1) || isset($_GET['rest_route']) // (#2) && strpos( $_GET['rest_route'], '/', 0 ) === 0) return true; // (#3) global $wp_rewrite; if ($wp_rewrite === null) $wp_rewrite = new WP_Rewrite(); // (#4) $rest_url = wp_parse_url( trailingslashit( rest_url( ) ) ); $current_url = wp_parse_url( add_query_arg( array( ) ) ); // PHP 7 // return strpos( $current_url['path'] ?? '/', $rest_url['path'], 0 ) === 0; return strpos((isset ($current_url['path']) && $current_url['path'] != NULL ? $current_url['path'] : '/'), $rest_url['path'], 0 ) === 0; } } function set_page_type () { global $ai_wp_data, $wp_query; if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_NONE) return; if (is_front_page ()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_HOMEPAGE; elseif (is_single()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_POST; elseif (is_page()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_STATIC; elseif (is_feed()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_FEED; elseif (is_category()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_CATEGORY; elseif (is_archive() || (is_home () && !is_front_page ())) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_ARCHIVE; elseif (is_admin()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_ADMIN; // Admin pages may also be search pages or ajax requests elseif (is_search()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_SEARCH; elseif (is_404()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_404; if ( // AMP, AMP WP function_exists ('is_amp_endpoint') && is_amp_endpoint () || // AMP WP function_exists ('is_amp_wp') && is_amp_wp ($wp_query) || // AMP for WP - Accelerated Mobile Pages for WordPress function_exists ('ampforwp_is_amp_endpoint') && ampforwp_is_amp_endpoint () || // WP AMP Ninja isset ($_GET ['wpamp']) || // WP AMP - Accelerated Mobile Pages for WordPress function_exists ('is_wp_amp') && is_wp_amp () || // Better AMP - WordPress Complete AMP function_exists ('is_better_amp') && is_better_amp ($wp_query) || // PenCi Soledad AMP - WordPress Complete AMP function_exists ('is_penci_amp') && is_penci_amp ($wp_query) ) { $ai_wp_data [AI_WP_AMP_PAGE] = true; define ('AI_AMP_PAGE', true); } } function ai_log_message ($message) { global $ai_last_time, $ai_processing_log; $ai_processing_log []= rtrim (sprintf ("%4d %-50s", (microtime (true) - $ai_last_time) * 1000, $message)); } function ai_log_filter_content ($content_string) { $content_string = preg_replace ("/\[\[AI_[A|B]P([\d].?)\]\]/", "", $content_string); return str_replace (array ("<!--", "-->", "\n", "\r"), array ("<!++", "++>", "*n", "*r"), $content_string); } function ai_log_content (&$content) { if (strlen ($content) < 100) ai_log (ai_log_filter_content ($content) . ' ['.number_of_words ($content).' words]'); else ai_log (ai_log_filter_content (html_entity_decode (substr ($content, 0, 60))) . ' ... ' . ai_log_filter_content (html_entity_decode (substr ($content, - 60))) . ' ['.number_of_words ($content).' words]'); } function ai_filter_code ($code) { $code = preg_replace ("/\[\[AI_[A|B]P([\d].?)\]\]/", "", $code); return str_replace (array ("<!--", "-->"), array ("<!++", "++>"), $code); } function ai_dump_code ($code, $max_size = 0) { if ($max_size == 0) return ai_filter_code ($code); else if ($max_size != 0 && strlen ($code) < $max_size) return ai_filter_code ($code); else return ai_filter_code (html_entity_decode (substr ($code, 0, 120))) . ' ... ' . ai_filter_code (html_entity_decode (substr ($code, - 120))); } function ai_block_insertion_status ($block, $ai_last_check) { global $block_object; if ($block < 1 || $block > 96) $block = 0; if ($ai_last_check == AI_CHECK_INSERTED) return "INSERTED"; $status = "FAILED CHECK: "; $obj = $block_object [$block]; switch ($ai_last_check) { case AI_CHECK_PAGE_TYPE_FRONT_PAGE: $status .= "ENABLED ON HOMEPAGE"; break; case AI_CHECK_PAGE_TYPE_STATIC_PAGE: $status .= "ENABLED ON STATIC PAGE"; break; case AI_CHECK_PAGE_TYPE_POST: $status .= "ENABLED ON POST"; break; case AI_CHECK_PAGE_TYPE_CATEGORY: $status .= "ENABLED ON CATEGORY"; break; case AI_CHECK_PAGE_TYPE_SEARCH: $status .= "ENABLED ON SEARCH"; break; case AI_CHECK_PAGE_TYPE_ARCHIVE: $status .= "ENABLED ON ARCHIVE"; break; case AI_CHECK_PAGE_TYPE_FEED: $status .= "ENABLED ON FEED"; break; case AI_CHECK_PAGE_TYPE_404: $status .= "ENABLED ON 404"; break; case AI_CHECK_DESKTOP_DEVICES: $status .= "DESKTOP DEVICES"; break; case AI_CHECK_MOBILE_DEVICES: $status .= "MOBILE DEVICES"; break; case AI_CHECK_TABLET_DEVICES: $status .= "TABLET DEVICES"; break; case AI_CHECK_PHONE_DEVICES: $status .= "PHONE DEVICES"; break; case AI_CHECK_DESKTOP_TABLET_DEVICES: $status .= "DESKTOP TABLET DEVICES"; break; case AI_CHECK_DESKTOP_PHONE_DEVICES: $status .= "DESKTOP PHONE DEVICES"; break; case AI_CHECK_CATEGORY: $status .= "CATEGORY"; break; case AI_CHECK_TAG: $status .= "TAG"; break; case AI_CHECK_TAXONOMY: $status .= "TAXONOMY"; break; case AI_CHECK_ID: $status .= "ID"; break; case AI_CHECK_URL: $status .= "URL"; break; case AI_CHECK_URL_PARAMETER: $status .= "URL PARAMETER"; break; case AI_CHECK_COOKIE: $status .= "COOKIE"; break; case AI_CHECK_REFERER: $status .= "REFERRER ". $obj->get_ad_domain_list(); break; case AI_CHECK_CLIENT: $status .= "CLIENT ". $obj->get_client_list(); break; case AI_CHECK_IP_ADDRESS: $status .= "IP ADDRESS ". $obj->get_ad_ip_address_list(); break; case AI_CHECK_COUNTRY: $status .= "COUNTRY ". $obj->get_ad_country_list (true); break; case AI_CHECK_SCHEDULING: $status .= "SCHEDULING"; break; case AI_CHECK_CODE: $status .= "CODE EMPTY"; break; case AI_CHECK_LOGGED_IN_USER: $status .= "LOGGED-IN USER"; break; case AI_CHECK_NOT_LOGGED_IN_USER: $status .= "NOT LOGGED-IN USER"; break; case AI_CHECK_ADMINISTRATOR: $status .= "ADMINISTRATOR"; break; case AI_CHECK_INDIVIDUALLY_DISABLED: $status .= "INDIVIDUALLY DISABLED"; break; case AI_CHECK_INDIVIDUALLY_ENABLED: $status .= "INDIVIDUALLY ENABLED"; break; case AI_CHECK_DISABLED_MANUALLY: $status .= "DISABLED BY SHORTCODE"; break; case AI_CHECK_MAX_INSERTIONS: $status .= "MAX INSERTIONS " . $obj->get_maximum_insertions (); break; case AI_CHECK_MAX_PAGE_BLOCKS: $status .= "MAX PAGE BLOCKS " . get_max_page_blocks (); break; case AI_CHECK_FILTER: $status .= ($obj->get_inverted_filter() ? 'INVERTED ' : '') . "FILTER " . $obj->get_call_filter(); break; case AI_CHECK_PARAGRAPH_COUNTING: $status .= "PARAGRAPH COUNTING"; break; case AI_CHECK_IMAGE_COUNTING: $status .= "IMAGE COUNTING"; break; case AI_CHECK_MIN_NUMBER_OF_WORDS: $status .= "MIN NUMBER OF WORDS " . intval ($obj->get_minimum_words()); break; case AI_CHECK_MAX_NUMBER_OF_WORDS: $status .= "MAX NUMBER OF WORDS " . (intval ($obj->get_maximum_words()) == 0 ? 1000000 : intval ($obj->get_maximum_words())); break; case AI_CHECK_DEBUG_NO_INSERTION: $status .= "DEBUG NO INSERTION"; break; case AI_CHECK_MAX_IMPRESSIONS: $status .= "MAX IMPRESSIONS"; break; case AI_CHECK_LIMIT_IMPRESSIONS_PER_TIME_PERIOD: $status .= "LIMIT IMPRESSIONS PER TIME PERIOD"; break; case AI_CHECK_MAX_CLICKS: $status .= "MAX CLICKS"; break; case AI_CHECK_LIMIT_CLICKS_PER_TIME_PERIOD: $status .= "LIMIT CLICKS PER TIME PERIOD"; break; case AI_CHECK_CFP_IP_ADDRESS: $status .= "CLICK FRAUD PROTECTION IP ADDRESS"; break; case AI_CHECK_INSERTION_NOT_DISABLED: $status .= "INSERTION PAUSED"; break; case AI_CHECK_PARAGRAPH_TAGS: $status .= "PARAGRAPH TAGS"; break; case AI_CHECK_PARAGRAPHS_WITH_TAGS: $status .= "PARAGRAPHS WITH TAGS"; break; case AI_CHECK_PARAGRAPHS_AFTER_NO_COUNTING_INSIDE: $status .= "PARAGRAPHS AFTER NO COUNTING INSIDE"; break; case AI_CHECK_PARAGRAPHS_AFTER_NO_COUNTING_INSIDE_ELEMENTS: $status .= "PARAGRAPHS AFTER NO COUNTING INSIDE ELEMENTS"; break; case AI_CHECK_PARAGRAPHS_AFTER_MIN_MAX_WORDS: $status .= "PARAGRAPHS AFTER MIN MAX WORDS"; break; case AI_CHECK_PARAGRAPHS_AFTER_TEXT: $status .= "PARAGRAPHS AFTER TEXT"; break; case AI_CHECK_PARAGRAPHS_AFTER_CLEARANCE: $status .= "PARAGRAPHS AFTER CLEARANCE"; break; case AI_CHECK_PARAGRAPHS_MIN_NUMBER: $status .= "PARAGRAPHS MIN NUMBER"; break; case AI_CHECK_PARAGRAPHS_MAX_NUMBER: $status .= "PARAGRAPHS MAX NUMBER"; break; case AI_CHECK_PARAGRAPH_NUMBER: $status .= "PARAGRAPH NUMBER " . $obj->get_paragraph_number(); break; case AI_CHECK_NO_PARAGRAPHS: $status .= "NO PARAGRAPHS"; break; case AI_CHECK_DO_NOT_INSERT: $status .= "PARAGRAPH CLEARANCE"; break; case AI_CHECK_AD_ABOVE: $status .= "PARAGRAPH CLEARANCE ABOVE"; break; case AI_CHECK_AD_BELOW: $status .= "PARAGRAPH CLEARANCE BELOW"; break; case AI_CHECK_SHORTCODE_ATTRIBUTES: $status .= "SHORTCODE ATTRIBUTES"; break; case AI_CHECK_ENABLED_PHP: $status .= "PHP FUNCTION ENABLED"; break; case AI_CHECK_ENABLED_SHORTCODE: $status .= "SHORTCODE ENABLED"; break; case AI_CHECK_ENABLED_WIDGET: $status .= "WIDGET ENABLED"; break; case AI_CUSTOM_FILTER_CHECK: $status .= "CUSTOM FILTER HOOK CHECK"; break; case AI_CHECK_NONE: $status = "BLOCK $block"; break; default: $status .= "?"; break; } $ai_last_check = AI_CHECK_NONE; return $status; } function ai_log_block_status ($block, $ai_last_check) { global $block_object, $block_insertion_log, $ad_inserter_globals, $ai_wp_data; if ($block >= 1 && $ai_last_check == AI_CHECK_INSERTED) { $obj = $block_object [$block]; $global_name = AI_BLOCK_COUNTER_NAME . $block; if ($obj->check_code_insertions !== null) { $block_insertion_log [] = sprintf ("% 2d BLOCK % 2d %s %s%s", $block, $block, 'CHECK', '('.$obj->check_code_insertions . ')', $ad_inserter_globals [$global_name] != 1 ? '['.$ad_inserter_globals [$global_name] . ']' : ''); return ''; } elseif ($obj->no_insertion_text != '') { $block_insertion_log [] = sprintf ("% 2d BLOCK % 2d %s %s", $block, $block, $obj->no_insertion_text, $ad_inserter_globals [$global_name] != 1 ? '['.$ad_inserter_globals [$global_name] . ']' : ''); return ''; } } return ai_log_block_insertion_status ($block, $ai_last_check); } function ai_log_block_insertion_status ($block, $ai_last_check) { global $block_insertion_log, $ad_inserter_globals; if ($block < 1) return 'NO BLOCK SHORTCODE'; $global_name = AI_BLOCK_COUNTER_NAME . $block; $block_status = ai_block_insertion_status ($block, $ai_last_check); $block_insertion_log [] = sprintf ("% 2d BLOCK % 2d %s %s", $block, $block, $block_status, $ai_last_check == AI_CHECK_INSERTED && $ad_inserter_globals [$global_name] != 1 ? '['.$ad_inserter_globals [$global_name] . ']' : ''); return "BLOCK $block " . $block_status . "\n"; } function ai_log ($message = "") { global $ai_last_time, $ai_processing_log; if ($message != "") { if ($message [strlen ($message) - 1] == "\n") { ai_log_message (str_replace ("\n", "", $message)); $ai_processing_log []= ""; } else ai_log_message ($message); } else $ai_processing_log []= ""; $ai_last_time = microtime (true); } function remove_debug_parameters_from_url ($url = false) { if (defined ('AI_DEBUGGING_DEMO')) { $parameters = array (AI_URL_DEBUG, AI_URL_DEBUG_PROCESSING, AI_URL_DEBUG_PROCESSING_FE); } else { $parameters = array ( AI_URL_DEBUG, AI_URL_DEBUG_PROCESSING, AI_URL_DEBUG_PROCESSING_FE, AI_URL_DEBUG_PHP, AI_URL_DEBUG_BLOCKS, AI_URL_DEBUG_CODE, AI_URL_DEBUG_USER, AI_URL_DEBUG_TAGS, AI_URL_DEBUG_POSITIONS, AI_URL_DEBUG_NO_INSERTION, AI_URL_DEBUG_JAVASCRIPT, AI_URL_DEBUG_AD_BLOCKING, AI_URL_DEBUG_AD_BLOCKING_STATUS, AI_URL_DEBUG_COUNTRY, AI_URL_DEBUG_IP_ADDRESS, AI_URL_DEBUG_DISABLE_CSS_CODE, AI_URL_DEBUG_DISABLE_JS_CODE, AI_URL_DEBUG_DISABLE_PHP_PROCESSING, AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS, AI_URL_DEBUG_DISABLE_HEADER_CODE, AI_URL_DEBUG_DISABLE_FOOTER_CODE, ); if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { $parameters = array_merge ($parameters, array (AI_URL_DEBUG_AD_BLOCKING, AI_URL_DEBUG_AD_BLOCKING_STATUS)); } } return remove_query_arg ($parameters, $url); } function set_url_parameter ($parameter, $value) { return add_query_arg ($parameter, $value, remove_debug_parameters_from_url ()); } function number_of_words (&$content) { $text = str_replace ("\r", "", $content); $text = str_replace (array ("\n", " "), " ", $text); $text = preg_replace('#<style.*?'.'>(.*?)</style>#i', '', $text); $text = preg_replace('#<script.*?'.'>(.*?)</script>#i', '', $text); $text = htmlspecialchars_decode ($text); $text = trim (strip_tags ($text)); $text = preg_replace ('#\s+#', ' ', $text); if ($text == '') return 0; return count (explode (' ', $text)); } function ai_loop_check ($query, $action) { global $ai_wp_data; $ai_wp_data [AI_CONTEXT] = $action == 'loop_start' ? AI_CONTEXT_BEFORE_POST : AI_CONTEXT_AFTER_POST; if ($ai_wp_data [AI_WP_AMP_PAGE]) return true; if ($action == 'loop_end' && !method_exists ($query, 'is_main_query') && method_exists ($wp_query, 'is_main_query')) { $query = $wp_query; } if (isset ($query) && method_exists ($query, 'is_main_query')) { if ($query->is_main_query()) { if (isset ($ai_wp_data [AI_HEAD]) && !$ai_wp_data [AI_HEAD]) { return true; } } } return false; } function ai_process_head_codes ($head) { global $ai_wp_data; if (!get_disable_header_code ()) { if (!empty ($ai_wp_data [AI_HEAD_CODES])) { $head = str_replace ("<!--[AI_HEAD_CODES]-->", implode ("\n", $ai_wp_data [AI_HEAD_CODES]) . "\n", $head); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) != 0) { $head = str_replace ("<!--[AI_HEAD_CODES]-->", '<span style=\'color: #00f;\'>' . str_replace (array ('<', '>'), array ('<', '>'), implode ("\\n", $ai_wp_data [AI_HEAD_CODES])) . '</span>', $head); } } foreach ($ai_wp_data [AI_HEAD_GROUPS] as $group_name => $group_codes) { $group_code = implode ("\n", $group_codes); $head = str_replace ("<!--[AI_HEAD_GROUPS $group_name]-->", $group_code, $head); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) != 0) { $head = str_replace ("<!--[AI_HEAD_GROUPS $group_name]-->", str_replace (array ('<', '>'), array ('<span style=\'color: #c0f;\'><', '></span>'), implode ("\\n", $group_codes)), $head); } } } $head = preg_replace ("#<!--\[AI(.+?)\]-->#", '', $head); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) != 0) { $head = preg_replace ("#<!--\[AI(.+?)\]-->#", '', $head); } $head = preg_replace ("#<script .+js/ai\-jquery\.js.+></script>\n#", '', $head); return ($head); } // Not used function ai_buffering_start_hook () { global $ai_wp_data; if (defined ('AI_BUFFERING')) { if (get_output_buffering ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_AJAX && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { ai_buffering_start (); } } } } function ai_buffering_start () { global $ai_wp_data; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("BUFFERING START: level " . ob_get_level () ); } ob_start (); if (!defined ('AI_BUFFERING_START')) define ('AI_BUFFERING_START', true); } function ai_buffering_end () { global $ai_wp_data, $ai_total_plugin_time, $ai_db_options_extract, $block_object, $ad_inserter_globals; if (!defined ('AI_BUFFERING_START')) return; $page = ob_get_clean(); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("BUFFERING END: level " . ob_get_level ()); $start_time = microtime (true); } $matches = preg_split ('/(<body.*?'.'>)/i', $page, - 1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("BUFFER body tag matches: " . (count ($matches) - 1) / 2); ai_log ("PHP VERSION COMPARE to 5.4: " . (version_compare (phpversion (), "5.4", ">=") ? 'YES' : 'NO')); if (count ($matches) > 3) { ai_log ("NO BUFFER PROCESSING - more than one body tag found"); } if (version_compare (phpversion (), "5.4", "<")) { ai_log ("NO BUFFER PROCESSING - PHP version below 5.4"); } } if (version_compare (phpversion (), "5.4", ">=") && count ($matches) == 3) { if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("BUFFER PROCESSING"); } $head = $matches [0]; $body_tag = $matches [1]; $body = $matches [2]; if (isset ($ai_wp_data [AI_BODY_STYLE])) { if (preg_match ('#style=[\'"](.*?)[\'"]#i', $body_tag, $body_style)) { $old_style = $body_style [1]; if ($old_style != '') { $old_style = trim ($old_style, ' ;'); if ($old_style != '') { $old_style .= '; '; } } $new_style = $old_style . $ai_wp_data [AI_BODY_STYLE]; $body_tag = str_ireplace ($body_style [0], 'style="'.$new_style.'"', $body_tag); } else { $body_tag = str_replace ('>', ' style="' . $ai_wp_data [AI_BODY_STYLE] . '">', $body_tag); } } $body = preg_replace ('/<!-- ' . AI_CONTENT_MARKER . " (\d+) -->\n/", '', $body); if (isset ($ai_db_options_extract [HTML_ELEMENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && class_exists ('DOMDocument')) { $php_version = explode ('.', PHP_VERSION); if ($php_version [0] >= 8) { // phpQuery for PHP 8 require_once ('includes/phpQuery_8.php'); } else // phpQuery for PHP 5.6 to PHP 7 require_once ('includes/phpQuery.php'); $no_closing_tag = array ('img', 'hr', 'br'); $multibyte = $ai_wp_data [AI_MBSTRING_LOADED] && get_paragraph_counting_functions() == AI_MULTIBYTE_PARAGRAPH_COUNTING_FUNCTIONS; foreach ($ai_db_options_extract [HTML_ELEMENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { $obj = $block_object [$block]; $obj->clear_code_cache (); switch ($obj->get_automatic_insertion ()) { case AI_AUTOMATIC_INSERTION_BEFORE_HTML_ELEMENT: $insertion_position = 'before'; break; case AI_AUTOMATIC_INSERTION_AFTER_HTML_ELEMENT: $insertion_position = 'after'; break; case AI_AUTOMATIC_INSERTION_INSIDE_HTML_ELEMENT: switch ($obj->get_inside_element ()) { case AI_HTML_PREPEND_CONTENT: $insertion_position = 'prepend'; break; case AI_HTML_APPEND_CONTENT: $insertion_position = 'append'; break; case AI_HTML_REPLACE_CONTENT: $insertion_position = 'replace-content'; break; case AI_HTML_REPLACE_ELEMENT: $insertion_position = 'replace-element'; break; } break; } $selector = $obj->get_html_selector (); libxml_use_internal_errors (true); $content = phpQuery::newDocumentHTML ($body); libxml_use_internal_errors (false); foreach (pq ($selector) as $element) { if (in_array ($element->tagName, $no_closing_tag)) { switch ($insertion_position) { case 'replace-content': case 'prepend': case 'append': $insertion_position = 'after'; break; } } switch ($insertion_position) { case 'before': pq ($element)->before (AI_MARKER_START.$element->tagName.AI_MARKER_END); break; case 'after': pq ($element)->after (AI_MARKER_START.$element->tagName.AI_MARKER_END); break; case 'prepend': pq ($element)->prepend (AI_MARKER_START.$element->tagName.AI_MARKER_END); break; case 'append': pq ($element)->append (AI_MARKER_START.$element->tagName.AI_MARKER_END); break; case 'replace-content': pq ($element)->prepend (AI_MARKER_START.'-'.$element->tagName.'-'.AI_MARKER_END); pq ($element)->append (AI_MARKER_START.'='.$element->tagName.'='.AI_MARKER_END); break; case 'replace-element': pq ($element)->before (AI_MARKER_START.'-'.$element->tagName.'-'.AI_MARKER_END); pq ($element)->after (AI_MARKER_START.'='.$element->tagName.'='.AI_MARKER_END); break; } } switch ($insertion_position) { case 'replace-content': case 'replace-element': $markers = preg_split ('/('.AI_MARKER_START.'-.*?-'.AI_MARKER_END.')/', $content->htmlOuter (), - 1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); $markers2 = preg_split ('/('.AI_MARKER_START.'=.*?='.AI_MARKER_END.')/', $content->htmlOuter (), - 1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); break; default: $markers = preg_split ('/('.AI_MARKER_START.'.*?'.AI_MARKER_END.')/', $content->htmlOuter (), - 1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); break; } $content_before = ''; $insertions = array (); foreach ($markers as $marker) { switch ($insertion_position) { case 'replace-content': case 'replace-element': $marker_start_string = AI_MARKER_START.'-'; break; default: $marker_start_string = AI_MARKER_START; break; } if (strpos ($marker, $marker_start_string) === 0) { switch ($insertion_position) { case 'replace-content': case 'replace-element': $tag = str_replace (array (AI_MARKER_START.'-', '-'.AI_MARKER_END), '', $marker); break; default: $tag = str_replace (array (AI_MARKER_START, AI_MARKER_END), '', $marker); break; } switch ($insertion_position) { case 'before': case 'replace-element': $tag_string = "<{$tag}"; break; case 'after': if (in_array ($tag, $no_closing_tag)) $tag_string = '>'; else $tag_string = "</{$tag}>"; break; case 'prepend': case 'replace-content': $tag_string = "<{$tag}[^>]*>"; break; case 'append': $tag_string = "</{$tag}>"; break; } preg_match_all ("#{$tag_string}#i", $content_before, $tag_matches); switch ($insertion_position) { case 'before': case 'replace-element': $insertions []= array ($tag_string, count ($tag_matches [0]) + 1); break; case 'after': $insertions []= array ($tag_string, count ($tag_matches [0])); break; case 'replace-content': case 'prepend': $insertions []= array ($tag_string, count ($tag_matches [0])); break; case 'append': $insertions []= array ($tag_string, count ($tag_matches [0]) + 1); break; } continue; } $content_before .= $marker; } switch ($insertion_position) { case 'replace-content': case 'replace-element': $content_before = ''; $insertions2 = array (); foreach ($markers2 as $marker) { if (strpos ($marker, AI_MARKER_START.'=') === 0) { $tag = str_replace (array (AI_MARKER_START.'=', '='.AI_MARKER_END), '', $marker); $tag_string = "</{$tag}>"; preg_match_all ("#{$tag_string}#i", $content_before, $tag_matches); switch ($insertion_position) { case 'replace-content': $insertions2 []= array ($tag_string, count ($tag_matches [0]) + 1); break; case 'replace-element': $insertions2 []= array ($tag_string, count ($tag_matches [0])); break; } continue; } $content_before .= $marker; } break; } $insertion_offsets = array (); foreach ($insertions as $insertion) { $tag = $insertion [0]; $tag_counter = $insertion [1]; preg_match_all ("#$tag#i", $body, $org_tag_matches, PREG_OFFSET_CAPTURE); if (isset ($org_tag_matches [0][$tag_counter - 1])) { switch ($insertion_position) { case 'before': case 'replace-element': $insertion_offsets []= $org_tag_matches [0][$tag_counter - 1][1]; break; case 'after': $insertion_offsets []= $org_tag_matches [0][$tag_counter - 1][1] + strlen ($tag); break; case 'prepend': case 'replace-content': $insertion_offsets []= $org_tag_matches [0][$tag_counter - 1][1] + strlen ($org_tag_matches [0][$tag_counter - 1][0]); break; case 'append': $insertion_offsets []= $org_tag_matches [0][$tag_counter - 1][1]; break; } } } sort ($insertion_offsets); switch ($insertion_position) { case 'replace-content': case 'replace-element': $insertion_offsets2 = array (); foreach ($insertions2 as $insertion) { $tag = $insertion [0]; $tag_counter = $insertion [1]; preg_match_all ("#$tag#i", $body, $org_tag_matches, PREG_OFFSET_CAPTURE); if (isset ($org_tag_matches [0][$tag_counter - 1])) { switch ($insertion_position) { case 'replace-content': $insertion_offsets2 []= $org_tag_matches [0][$tag_counter - 1][1]; break; case 'replace-element': $insertion_offsets2 []= $org_tag_matches [0][$tag_counter - 1][1] + strlen ($tag); break; } } } sort ($insertion_offsets2); break; } $new_content = ''; $current_offset = 0; switch ($insertion_position) { case 'before': $action = 'before_html_element'; // translators: Debugging position name Before HTML element $action_name = __('Before', 'ad-inserter') . ' ' . $selector; break; case 'after': $action = 'after_html_element'; // translators: Debugging position name After HTML element $action_name = __('After', 'ad-inserter') . ' ' . $selector; break; case 'prepend': $action = 'prepend_html_element'; // translators: Debugging position name Prepend content of HTML element (before the content of the HTML element) $action_name = __('Prepend content', 'ad-inserter') . ' ' . $selector; break; case 'append': $action = 'append_html_element'; // translators: Debugging position name Append content of HTML element (after the content of the HTML element) $action_name = __('Append content', 'ad-inserter') . ' ' . $selector; break; case 'replace-content': $action = 'replace_content_html_element'; // translators: Debugging position name Replace content of HTML element $action_name = __('Replace content', 'ad-inserter') . ' ' . $selector; break; case 'replace-element': // translators: Debugging position name Replace HTML element $action = 'replace_html_element'; $action_name = __('Replace', 'ad-inserter') . ' ' . $selector; break; } $globals_name = 'AI_' . strtoupper ($action) . '_COUNTER'; unset ($ad_inserter_globals [$globals_name]); $ai_db_options_extract [$action . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] = array ($block); foreach ($insertion_offsets as $index => $insertion_offset) { if ($multibyte) $new_content .= mb_substr ($body, $current_offset, $insertion_offset - $current_offset); $new_content .= substr ($body, $current_offset, $insertion_offset - $current_offset); switch ($insertion_position) { case 'replace-content': case 'replace-element': if (isset ($insertion_offsets2 [$index])) { $current_offset = $insertion_offsets2 [$index]; } else $current_offset = $insertion_offset; break; default: $current_offset = $insertion_offset; break; } ob_start (); // Dummy ai_custom_hook ($action, AI_AUTOMATIC_INSERTION_DISABLED, $action_name); $new_content .= ob_get_clean(); } unset ($ai_db_options_extract [$action . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]); $new_content .= substr ($body, $current_offset); $body = $new_content; } } $head = ai_process_head_codes ($head); echo $head, $body_tag; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { $class = AI_DEBUG_STATUS_CLASS.' status-ok'; // translators: Debugging message when output buffering is enabled echo "<section class='$class'>" . __('OUTPUT BUFFERING', 'ad-inserter') . '</section>'; } // translators: Debugging position ai_custom_hook ('above_header', AI_AUTOMATIC_INSERTION_ABOVE_HEADER, 'Above Header', __('Above Header', 'ad-inserter')); echo $body; } else echo $page; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("BUFFER PROCESSING END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); // $ai_wp_data [AI_PROCESSING_TIME] = false; } } function ai_post_check ($post, $action) { global $ai_wp_data, $ad_inserter_globals; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST) return false; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) return false; // Don't use the hook before the wp_head hook ends if (!isset ($ai_wp_data [AI_HEAD]) || $ai_wp_data [AI_HEAD]) { return false; } // in_the_loop () is not used on AMP pages (however, AMP plugin uses it) switch ($ai_wp_data [AI_WP_AMP_PAGE]) { case true: if ($ai_wp_data [AI_POST_POSITION] != AI_POST_POSITION_IN_POST) return false; // include_once (ABSPATH . 'wp-admin/includes/plugin.php'); // if (is_plugin_active ('amp/amp.php')) { // if (!in_the_loop()) return false; // } else { // // For other AMP plugins // if ($ai_wp_data [AI_POST_POSITION] != AI_POST_POSITION_IN_POST) return false; // } break; default: if (!in_the_loop()) return false; break; } // Skip insertion before the first post if (!defined ('AI_POST_CHECK')) { define ('AI_POST_CHECK', true); return false; } $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_BETWEEN_POSTS; return true; } function ai_content_marker () { global $ai_wp_data; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_AJAX || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_REST || get_disable_html_code ()) return; echo '<span class="ai-content"></span>', "\n"; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) != 0) { $debug_label = new ai_block_labels ('ai-debug-marker'); $marker_label = $debug_label->center_bar (__('CONTENT MARKER', 'ad-inserter')); echo $marker_label; } } function ai_mark_loop_start () { global $ai_wp_data; $ai_wp_data [AI_POST_POSITION] = AI_POST_POSITION_IN_POST; } function ai_mark_loop_end () { global $ai_wp_data; $ai_wp_data [AI_POST_POSITION] = AI_POST_POSITION_AFTER_POST; } function ai_hook_function_loop_start ($hook_parameter) { ai_custom_hook ('loop_start', AI_AUTOMATIC_INSERTION_BEFORE_POST, AI_TEXT_ENG_BEFORE_POST, AI_TEXT_BEFORE_POST, $hook_parameter, 'ai_loop_check'); } function ai_hook_function_loop_end ($hook_parameter) { ai_custom_hook ('loop_end', AI_AUTOMATIC_INSERTION_AFTER_POST, AI_TEXT_ENG_AFTER_POST, AI_TEXT_AFTER_POST, $hook_parameter, 'ai_loop_check'); } function ai_hook_function_post ($hook_parameter) { ai_custom_hook ('the_post', AI_AUTOMATIC_INSERTION_BETWEEN_POSTS, AI_TEXT_ENG_BETWEEN_POSTS, AI_TEXT_BETWEEN_POSTS, $hook_parameter, 'ai_post_check'); } function ai_hook_function_footer () { ai_custom_hook ('wp_footer', AI_AUTOMATIC_INSERTION_FOOTER, AI_TEXT_ENG_FOOTER, AI_TEXT_FOOTER); } // Code for PHP VERSION >= 5.3.0 //function ai_get_custom_hook_function ($action, $insertion_type, $name) { // return function () use ($action, $insertion_type, $name) { // ai_custom_hook ($action, $insertion_type, $name); // }; //} // Code for PHP VERSION < 5.3.0 function ai_custom_hook_function_0 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [0]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [0]['index'] - 1, $ai_custom_hooks [0]['name']); } function ai_custom_hook_function_1 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [1]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [1]['index'] - 1, $ai_custom_hooks [1]['name']); } function ai_custom_hook_function_2 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [2]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [2]['index'] - 1, $ai_custom_hooks [2]['name']); } function ai_custom_hook_function_3 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [3]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [3]['index'] - 1, $ai_custom_hooks [3]['name']); } function ai_custom_hook_function_4 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [4]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [4]['index'] - 1, $ai_custom_hooks [4]['name']); } function ai_custom_hook_function_5 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [5]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [5]['index'] - 1, $ai_custom_hooks [5]['name']); } function ai_custom_hook_function_6 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [6]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [6]['index'] - 1, $ai_custom_hooks [6]['name']); } function ai_custom_hook_function_7 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [7]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [7]['index'] - 1, $ai_custom_hooks [7]['name']); } function ai_custom_hook_function_8 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [8]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [8]['index'] - 1, $ai_custom_hooks [8]['name']); } function ai_custom_hook_function_9 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [9]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [9]['index'] - 1, $ai_custom_hooks [9]['name']); } function ai_custom_hook_function_10 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [10]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [10]['index'] - 1, $ai_custom_hooks [10]['name']); } function ai_custom_hook_function_11 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [11]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [11]['index'] - 1, $ai_custom_hooks [11]['name']); } function ai_custom_hook_function_12 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [12]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [12]['index'] - 1, $ai_custom_hooks [12]['name']); } function ai_custom_hook_function_13 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [13]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [13]['index'] - 1, $ai_custom_hooks [13]['name']); } function ai_custom_hook_function_14 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [14]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [14]['index'] - 1, $ai_custom_hooks [14]['name']); } function ai_custom_hook_function_15 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [15]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [15]['index'] - 1, $ai_custom_hooks [15]['name']); } function ai_custom_hook_function_16 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [16]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [16]['index'] - 1, $ai_custom_hooks [16]['name']); } function ai_custom_hook_function_17 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [17]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [17]['index'] - 1, $ai_custom_hooks [17]['name']); } function ai_custom_hook_function_18 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [18]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [18]['index'] - 1, $ai_custom_hooks [18]['name']); } function ai_custom_hook_function_19 () { global $ai_custom_hooks; ai_custom_hook ($ai_custom_hooks [19]['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $ai_custom_hooks [19]['index'] - 1, $ai_custom_hooks [19]['name']); } function ai_wp_hook () { global $ai_wp_data, $ai_db_options_extract, $ad_inserter_globals, $ai_total_plugin_time, $ai_walker, $ai_custom_hooks, $block_object; // if (!get_remote_debugging ()) { // unset ($_COOKIE ['AI_WP_DEBUGGING']); // ai_setcookie ('AI_WP_DEBUGGING', null, - 1, '/'); // } if (isset ($_GET ["ai-get-settings"])) { if (get_remote_debugging ()) { ai_disable_caching (); if (!function_exists ('get_editable_roles')) { include_once (ABSPATH . 'wp-admin/includes/user.php'); } ai_write_settings_string (); exit; } } if (defined ('AI_WP_HOOK')) return; define ('AI_WP_HOOK', true); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("WP HOOK START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } set_page_type (); set_user (); ai_http_header (); if (defined ('AI_NO_JQUERY')) { // Check again if the constant is defined in the wp_head hook $ai_wp_data [AI_NO_JQUERY_CODE] = true; } if (($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0 && get_disable_caching ()) ai_disable_caching (); if (($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0) { $ai_wp_data [AI_HTML_ELEMENT_SELECTION] = isset ($_POST ['html_element_selection']) ? (bool) $_POST ['html_element_selection'] : false; } if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_ADMIN && ($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0 && get_admin_toolbar_debugging () && (!is_multisite() || is_main_site () || multisite_settings_page_enabled ())) add_action ('admin_bar_menu', 'ai_toolbar', 9920); $url_debugging = get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0 || defined ('AI_DEBUGGING_DEMO'); if (!is_admin() || defined ('DOING_AJAX') || defined ('AI_DEBUGGING_DEMO')) { if (isset ($_GET [AI_URL_DEBUG]) && $_GET [AI_URL_DEBUG] == 0) { if (isset ($_COOKIE ['AI_WP_DEBUGGING'])) { unset ($_COOKIE ['AI_WP_DEBUGGING']); ai_setcookie ('AI_WP_DEBUGGING', '', time() - (15 * 60), COOKIEPATH); } if (isset ($_COOKIE ['AI_WP_DEBUG_BLOCK'])) { unset ($_COOKIE ['AI_WP_DEBUG_BLOCK']); ai_setcookie ('AI_WP_DEBUG_BLOCK', '', time() - (15 * 60), COOKIEPATH); } } else { $ai_wp_data [AI_WP_DEBUGGING] = isset ($_COOKIE ['AI_WP_DEBUGGING']) ? $ai_wp_data [AI_WP_DEBUGGING] | ($_COOKIE ['AI_WP_DEBUGGING'] & ~AI_DEBUG_PROCESSING) : $ai_wp_data [AI_WP_DEBUGGING]; $ai_wp_data [AI_WP_DEBUG_BLOCK] = isset ($_COOKIE ['AI_WP_DEBUG_BLOCK']) ? $_COOKIE ['AI_WP_DEBUG_BLOCK'] : 0; if (isset ($_GET [AI_URL_DEBUG_BLOCKS])) if ($_GET [AI_URL_DEBUG_BLOCKS] && $url_debugging) $ai_wp_data [AI_WP_DEBUGGING] |= AI_DEBUG_BLOCKS; else $ai_wp_data [AI_WP_DEBUGGING] &= ~AI_DEBUG_BLOCKS; if (isset ($_GET [AI_URL_DEBUG_TAGS])) if ($_GET [AI_URL_DEBUG_TAGS] && $url_debugging) $ai_wp_data [AI_WP_DEBUGGING] |= AI_DEBUG_TAGS; else $ai_wp_data [AI_WP_DEBUGGING] &= ~AI_DEBUG_TAGS; if (isset ($_GET [AI_URL_DEBUG_NO_INSERTION])) if ($_GET [AI_URL_DEBUG_NO_INSERTION] && $url_debugging) $ai_wp_data [AI_WP_DEBUGGING] |= AI_DEBUG_NO_INSERTION; else $ai_wp_data [AI_WP_DEBUGGING] &= ~AI_DEBUG_NO_INSERTION; if (isset ($_GET [AI_URL_DEBUG_AD_BLOCKING_STATUS])) if ($_GET [AI_URL_DEBUG_AD_BLOCKING_STATUS] && $url_debugging) $ai_wp_data [AI_WP_DEBUGGING] |= AI_DEBUG_AD_BLOCKING_STATUS; else $ai_wp_data [AI_WP_DEBUGGING] &= ~AI_DEBUG_AD_BLOCKING_STATUS; if (isset ($_GET [AI_URL_DEBUG_AD_BLOCKING])) if ($_GET [AI_URL_DEBUG_AD_BLOCKING] && $url_debugging) $ai_wp_data [AI_WP_DEBUGGING] |= AI_DEBUG_AD_BLOCKING; else $ai_wp_data [AI_WP_DEBUGGING] &= ~AI_DEBUG_AD_BLOCKING; if (isset ($_GET [AI_URL_DEBUG_POSITIONS])) { $secret = isset ($_GET ['ai-secret']) && $_GET ['ai-secret'] == ai_secret_key (); if ($secret) { ai_disable_caching (); } if ($_GET [AI_URL_DEBUG_POSITIONS] !== '' && ($url_debugging || $secret)) $ai_wp_data [AI_WP_DEBUGGING] |= AI_DEBUG_POSITIONS; else $ai_wp_data [AI_WP_DEBUGGING] &= ~AI_DEBUG_POSITIONS; if (is_numeric ($_GET [AI_URL_DEBUG_POSITIONS])) $ai_wp_data [AI_WP_DEBUG_BLOCK] = intval ($_GET [AI_URL_DEBUG_POSITIONS]); if ($ai_wp_data [AI_WP_DEBUG_BLOCK] < 0 || $ai_wp_data [AI_WP_DEBUG_BLOCK] > 96) $ai_wp_data [AI_WP_DEBUG_BLOCK] = 0; } if (!defined ('AI_DEBUGGING_DEMO')) { if ($ai_wp_data [AI_WP_DEBUGGING] != 0) { if (!isset ($_GET ['no-cookie'])) { ai_setcookie ('AI_WP_DEBUGGING', $ai_wp_data [AI_WP_DEBUGGING], time() + AI_COOKIE_TIME, COOKIEPATH); } } else if (isset ($_COOKIE ['AI_WP_DEBUGGING'])) ai_setcookie ('AI_WP_DEBUGGING', '', time() - (15 * 60), COOKIEPATH); if ($ai_wp_data [AI_WP_DEBUG_BLOCK] != 0) { if (!isset ($_GET ['no-cookie'])) { ai_setcookie ('AI_WP_DEBUG_BLOCK', $ai_wp_data [AI_WP_DEBUG_BLOCK], time() + AI_COOKIE_TIME, COOKIEPATH); } } else if (isset ($_COOKIE ['AI_WP_DEBUG_BLOCK'])) ai_setcookie ('AI_WP_DEBUG_BLOCK', '', time() - (15 * 60), COOKIEPATH); if ($ai_wp_data [AI_WP_DEBUGGING] != 0 || isset ($_GET [AI_URL_DEBUG]) || isset ($_GET [AI_URL_DEBUG_BLOCKS]) || isset ($_GET [AI_URL_DEBUG_POSITIONS]) || isset ($_GET [AI_URL_DEBUG_TAGS]) || isset ($_GET [AI_URL_DEBUG_PROCESSING_FE])) { ai_disable_caching (); } if ($ai_wp_data [AI_FRONTEND_JS_DEBUGGING] && ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) != 0 && get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_SERVER_SIDE_W3TC && !defined ('AI_NO_W3TC')) { $ai_wp_data [AI_W3TC_DEBUGGING] = true; } } else { if ($ai_wp_data [AI_WP_DEBUGGING] != 0) { ai_disable_caching (); } } } } if ($ai_wp_data [AI_HTML_ELEMENT_SELECTION]) { add_filter ('show_admin_bar', '__return_false', 999999); $ai_wp_data [AI_WP_DEBUGGING] = 0; } elseif (($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) == 0 && ((get_remote_debugging () && ($ai_wp_data [AI_WP_DEBUGGING] != 0 || (isset ($_GET [AI_URL_DEBUG]) && $_GET [AI_URL_DEBUG] == 1))) || defined ('AI_DEBUGGING_DEMO'))) { function ai_login_adminbar ($wp_admin_bar) { $wp_admin_bar->add_menu (array ('id' => 'ai-toolbar-login', 'title' => _x('Log In', 'Menu item', 'ad-inserter'), 'href' => wp_login_url())); } add_filter ('show_admin_bar', '__return_true', 999999); add_action ('admin_bar_menu', 'ai_toolbar', 9920); if (!defined ('AI_DEBUGGING_DEMO')) { add_action ('admin_bar_menu', 'ai_login_adminbar' ); } } if (($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0 && get_force_admin_toolbar ()) { add_filter ('show_admin_bar', '__return_true', 999999); } $debug_positions = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0; $debug_tags_positions = ($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_POSITIONS | AI_DEBUG_TAGS)) != 0; $debug_tags_positions_blocks = ($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_POSITIONS | AI_DEBUG_TAGS | AI_DEBUG_BLOCKS)) != 0; $plugin_priority = get_plugin_priority (); if (isset ($ai_db_options_extract [CONTENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [CONTENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_tags_positions) add_filter ('the_content', 'ai_content_hook', $plugin_priority); if (isset ($ai_db_options_extract [EXCERPT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [EXCERPT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_tags_positions_blocks) add_filter ('the_excerpt', 'ai_excerpt_hook', $plugin_priority); add_action ('loop_start', 'ai_mark_loop_start'); if (isset ($ai_db_options_extract [LOOP_START_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [LOOP_START_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_positions) add_action ('loop_start', 'ai_hook_function_loop_start'); add_action ('loop_end', 'ai_mark_loop_end'); if (isset ($ai_db_options_extract [LOOP_END_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [LOOP_END_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_positions) add_action ('loop_end', 'ai_hook_function_loop_end'); if (isset ($ai_db_options_extract [POST_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [POST_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_positions) add_action ('the_post', 'ai_hook_function_post'); if ((isset ($ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0) || (isset ($ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0) || (isset ($ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0) || $debug_positions) { $ai_wp_data [AI_NUMBER_OF_COMMENTS] = 0; add_filter ('comments_array' , 'ai_comments_array', 10, 2); add_filter ('wp_list_comments_args' , 'ai_wp_list_comments_args'); $ai_walker = new ai_Walker_Comment; } // Code for PHP VERSION >= 5.3.0 // foreach ($ai_custom_hooks as $index => $custom_hook) { // if (isset ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_positions) // add_action ($custom_hook ['action'], ai_get_custom_hook_function ($custom_hook ['action'], AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $custom_hook ['index'] - 1, $custom_hook ['name']), $custom_hook ['priority']); // } // Code for PHP VERSION < 5.3.0 foreach ($ai_custom_hooks as $index => $custom_hook) { if ($index >= 20) break; // Skip custom hooks on standard WP hooks - they will be processed anyway switch ($custom_hook ['action']) { case 'wp_footer': // case 'wp_head': // no block processing on wp_head case 'the_content': case 'the_excerpt': case 'loop_start': case 'loop_end': // case 'the_post': // ai_custom_hook distinguishes between custom hooks and Between posts continue 2; } $hook_number = $custom_hook ['index']; // if (isset ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_positions) { if (get_hook_enabled ($hook_number) && isset ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_positions) { // There might be more than one hook with the same action - block can use only one hook $hook_used = false; foreach ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { $obj = $block_object [$block]; if ($obj->get_automatic_insertion () == AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $hook_number - 1) { $hook_used = true; break; } } if ($hook_used) { add_action ($custom_hook ['action'], 'ai_custom_hook_function_' . $index, $custom_hook ['priority']); } } } if ($ai_wp_data [AI_STICK_TO_THE_CONTENT]) { if (trim (get_main_content_element () == '')) { if (!defined ('AI_CONTENT_MARKER_NO_LOOP_START')) { add_action ('loop_start', 'ai_content_marker'); } if (!defined ('AI_CONTENT_MARKER_NO_LOOP_END')) { add_action ('loop_end', 'ai_content_marker'); } if (!defined ('AI_CONTENT_MARKER_NO_GET_SIDEBAR')) { add_action ('get_sidebar', 'ai_content_marker'); } } } if ($ai_wp_data [AI_WP_AMP_PAGE] ) { // AMP, Accelerated Mobile Pages add_action ('amp_post_template_head', 'ai_amp_head_hook', 99999); add_action ('amp_post_template_css', 'ai_amp_css_hook', 99999); add_action ('wp_head', 'ai_amp_head_hook', 99999); add_action ('wp_head', 'ai_amp_css_hook_style', 99999); // WP AMP Ninja add_action ('wpamp_custom_script', 'ai_amp_head_hook', 99999); // No usable hook for custom CSS // add_action ('wpamp_custom_style', 'ai_amp_css_hook', 99999); // WP AMP - Accelerated Mobile Pages for WordPress add_action ('amphtml_template_head', 'ai_amp_head_hook', 99999); add_action ('amphtml_template_css', 'ai_amp_css_hook', 99999); // Better AMP - WordPress Complete AMP add_action ('better-amp/template/head', 'ai_amp_head_hook', 99999); // No usable hook for custom CSS // add_action ('better-amp/template/css', 'ai_amp_css_hook', 99999); // AMP WP - Google AMP For WordPress add_action ('amp_wp_template_head', 'ai_amp_head_hook', 99999); // No usable hook for custom CSS // add_action ('amp_wp_template_head', 'ai_amp_css_hook', 99999); } else // WP add_action ('wp_head', 'ai_wp_head_hook', 99999); $automatic_insertion_footer_hook = isset ($ai_db_options_extract [FOOTER_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [FOOTER_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) != 0 || $debug_positions; if ($ai_wp_data [AI_WP_AMP_PAGE]) { // AMP, Accelerated Mobile Pages if ($automatic_insertion_footer_hook) { add_action ('amp_post_template_footer', 'ai_hook_function_footer', 5); add_action ('wp_footer', 'ai_hook_function_footer', 5); } add_action ('amp_post_template_footer', 'ai_amp_footer_hook', 5); add_action ('wp_footer', 'ai_amp_footer_hook', 5); // WP AMP Ninja if ($automatic_insertion_footer_hook) add_action ('wpamp_google_analytics_code', 'ai_hook_function_footer', 5); add_action ('wpamp_google_analytics_code', 'ai_amp_footer_hook', 5); // WP AMP - Accelerated Mobile Pages for WordPress if ($automatic_insertion_footer_hook) add_action ('amphtml_after_footer', 'ai_hook_function_footer', 5); add_action ('amphtml_after_footer', 'ai_amp_footer_hook', 5); // Better AMP - WordPress Complete AMP if ($automatic_insertion_footer_hook) add_action ('better-amp/template/footer', 'ai_hook_function_footer', 5); add_action ('better-amp/template/footer', 'ai_amp_footer_hook', 5); // AMP WP - Google AMP For WordPress if ($automatic_insertion_footer_hook) add_action ('amp_wp_template_footer', 'ai_hook_function_footer', 5); add_action ('amp_wp_template_footer', 'ai_amp_footer_hook', 5); } else { // WP if ($automatic_insertion_footer_hook) add_action ('wp_footer', 'ai_hook_function_footer', 5); add_action ('wp_footer', 'ai_wp_footer_hook_end_buffering', 5); add_action ('wp_footer', 'ai_wp_footer_hook', 9999999); } if ($ai_wp_data [AI_WP_AMP_PAGE]) { // No scripts on AMP pages if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { $ai_wp_data [AI_ADB_DETECTION] = false; $ai_wp_data [AI_TRACKING] = false; } } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("WP HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } }; function ai_load_plugin_textdomain_hook () { unload_textdomain ('ad-inserter'); load_plugin_textdomain ('ad-inserter', false, basename (dirname (__FILE__)) . '/languages/'); } function ai_load_textdomain_mofile ($mo_file, $domain) { global $ai_wp_data; if (strpos ($mo_file, 'ad-inserter') !== false) { if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { $relative_mo_file = $mo_file; if (defined ('WP_CONTENT_DIR')) { $relative_mo_file = str_replace (WP_CONTENT_DIR, '', $relative_mo_file); } else { $wp_content_pos = strpos ($relative_mo_file, '/wp-content/'); if ($wp_content_pos !== false) { $relative_mo_file = substr ($relative_mo_file, $wp_content_pos); } } switch (file_exists ($mo_file)) { case true: ai_log ("TRANSLATION FILE: " . $relative_mo_file); break; default: ai_log ("FILE NOT FOUND: " . $relative_mo_file); break; } } $path = explode ('/', $mo_file); $new_mo_file = dirname (__FILE__) . '/languages/' . end ($path); if (file_exists ($new_mo_file)) { if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("USING FILE: " . $new_mo_file); } return ($new_mo_file); } } return ($mo_file); } function ai_plugins_loaded () { global $ai_wp_data, $ai_total_plugin_time; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("PLUGINS LOADED START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } add_shortcode ('adinserter', 'ai_process_shortcodes'); add_shortcode ('ADINSERTER', 'ai_process_shortcodes'); // TO DO: check referrer add_filter ('pre_do_shortcode_tag', 'ai_pre_do_shortcode_tag', 10, 4); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("PLUGINS LOADED END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } function ai_init_hook () { global $block_object, $ai_wp_data, $ai_db_options_extract, $ai_total_plugin_time; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("INIT HOOK START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } if ($ai_wp_data [AI_DISABLE_TRANSLATION]) { unload_textdomain ('ad-inserter'); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("TRANSLATION UNLOADED"); } } require_once AD_INSERTER_PLUGIN_DIR.'strings.php'; if (defined ('DOING_AJAX') && DOING_AJAX) { $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_AJAX; ai_load_extract (); ai_wp_hook (); } // Experimental elseif (is_rest ()) { $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_REST; ai_load_extract (); ai_wp_hook (); } if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { if ($ai_wp_data [AI_ADB_DETECTION]) { if (function_exists ('ai_check_files')) ai_check_files (); } } // add_shortcode ('adinserter', 'ai_process_shortcodes'); // add_shortcode ('ADINSERTER', 'ai_process_shortcodes'); // // TO DO: check referrer // add_filter ('pre_do_shortcode_tag', 'ai_pre_do_shortcode_tag', 10, 4); // if (defined ('AI_BUFFERING')) { // if (get_output_buffering ()) { // if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_AJAX && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { // ai_buffering_start (); // } // } // } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("INIT HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } //function ai_upgrader_process_complete_hook ($upgrader_object, $options) { // global $ai_db_options, $ai_db_options_extract; // if (is_array ($options) && array_key_exists ('action', $options) && $options ['action'] == 'update' && array_key_exists ('type', $options)) { // if ($options ['type'] == 'plugin' && array_key_exists ('plugins', $options) && is_array ($options ['plugins']) && !empty ($options ['plugins'])) { // $this_plugin = plugin_basename (__FILE__); // foreach ($options ['plugins'] as $plugin) { // if ($plugin == $this_plugin) { // if (defined ('AI_EXTRACT_GENERATED') && isset ($ai_db_options [AI_OPTION_GLOBAL]['VERSION'])) { // $ai_db_options [AI_OPTION_EXTRACT] = $ai_db_options_extract; // ai_update_option (AI_OPTION_NAME, $ai_db_options); // } // break; // } // } // } // } //} function ai_load_extract ($recreate = true) { global $ai_db_options, $ai_db_options_extract, $version_string, $subversion_string; if (isset ($ai_db_options_extract)) return true; $expected_extract_version = $version_string . $subversion_string . '-' . '96'; if (function_exists ('ai_system_output_check')) { $expected_extract_version .= 'P'; } if (isset ($ai_db_options [AI_OPTION_EXTRACT]['VERSION']) && $ai_db_options [AI_OPTION_EXTRACT]['VERSION'] == $expected_extract_version) { $ai_db_options_extract = $ai_db_options [AI_OPTION_EXTRACT]; return true; } else { if (($saved_extract = get_option (AI_EXTRACT_NAME)) === false || $saved_extract ['VERSION'] != $expected_extract_version) { if ($recreate) { $ai_db_options_extract = ai_generate_extract ($ai_db_options); $ai_db_options [AI_OPTION_EXTRACT] = $ai_db_options_extract; if (get_option (AI_OPTION_NAME) !== false && !defined ('AI_LOADED_REMOTE_SETTINGS')) { update_option (AI_EXTRACT_NAME, $ai_db_options_extract); } return true; } } else { $ai_db_options_extract = $saved_extract; $ai_db_options [AI_OPTION_EXTRACT] = $ai_db_options_extract; return true; } } return false; } function ai_wp_loaded_hook () { global $ai_total_plugin_time, $ai_wp_data; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("WP LOADED HOOK START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } ai_load_extract (); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } if (defined ('AI_EXTRACT_GENERATED')) ai_log ("EXTRACT GENERATED"); ai_log ("WP LOADED HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } function ai_admin_menu_hook () { global $ai_settings_page; if (is_multisite() && !is_main_site () && !multisite_settings_page_enabled ()) return; $menu_position = get_menu_position (); if (isset ($_POST [AI_FORM_SAVE])) { if (isset ($_POST ['menu-for-link'])) { $menu_position = $_POST ['menu-for-link']; } else $menu_position = DEFAULT_MENU_FOR_LINK; } if ($menu_position == AI_SETTINGS_SUBMENU) { // translators: %s: Ad Inserter $ai_settings_page = add_submenu_page ('options-general.php', sprintf (__('%s Settings', 'ad-inserter'), AD_INSERTER_NAME), AD_INSERTER_NAME, 'manage_options', basename (__FILE__), 'ai_settings', defined ('AI_SETTINGS_MENU_PRIORITY') ? AI_SETTINGS_MENU_PRIORITY : DEFAULT_SETTINGS_SUBMENU_PRIORITY); } else { // translators: %s: Ad Inserter $ai_settings_page = add_menu_page (sprintf (__('%s Settings', 'ad-inserter'), AD_INSERTER_NAME), AD_INSERTER_NAME, 'manage_options', basename (__FILE__), 'ai_settings', 'dashicons-layout', defined ('AI_SETTINGS_MENU_PRIORITY') ? AI_SETTINGS_MENU_PRIORITY : DEFAULT_SETTINGS_MENU_PRIORITY); } add_action ('admin_enqueue_scripts', 'ai_admin_enqueue_scripts'); add_action ('admin_enqueue_scripts', 'ai_admin_enqueue_scripts_late', 99999); add_action ('admin_enqueue_scripts', 'ai_admin_remove_scripts', 99999); add_action ('admin_head', 'ai_admin_head'); add_filter ('clean_url', 'ai_clean_url', 999999, 2); } function ai_admin_head () { global $ai_settings_page, $hook_suffix; if ($hook_suffix == $ai_settings_page && wp_is_mobile()) { echo '<meta name="viewport" content="width=762">', PHP_EOL; } } function ai_admin_enqueue_scripts ($hook_suffix) { global $ai_settings_page, $ai_admin_translations; if ($hook_suffix == $ai_settings_page) { wp_enqueue_style ('ai-admin-jquery-ui', plugins_url ('css/jquery-ui-1.10.3.custom.min.css', __FILE__), array (), null); wp_enqueue_style ('ai-colorpicker-css', plugins_url ('includes/colorpicker/css/bootstrap-colorpicker.min.css', AD_INSERTER_FILE), array (), AD_INSERTER_VERSION); if (function_exists ('ai_admin_enqueue_scripts_1')) ai_admin_enqueue_scripts_1 (); wp_enqueue_style ('ai-admin-multi-select', plugins_url ('css/multi-select.css', AD_INSERTER_FILE), array (), AD_INSERTER_VERSION); wp_enqueue_style ('ai-image-picker', plugins_url ('css/image-picker.css', __FILE__), array (), AD_INSERTER_VERSION); wp_add_inline_style ('ai-image-picker', '.thumbnail {border-radius: 6px;}'); wp_enqueue_style ('ai-combobox-css', plugins_url ('css/jquery.scombobox.min.css', __FILE__), array (), AD_INSERTER_VERSION); if (function_exists ('ai_admin_enqueue_scripts_2')) ai_admin_enqueue_scripts_2 (); wp_enqueue_script ('ai-colorpicker-js', plugins_url ('includes/colorpicker/js/bootstrap-colorpicker.min.js', AD_INSERTER_FILE ), array (), AD_INSERTER_VERSION, true); wp_enqueue_script ('ai-multi-select', plugins_url ('includes/js/jquery.multi-select.js', AD_INSERTER_FILE ), array (), AD_INSERTER_VERSION, true); wp_enqueue_script ('ai-quicksearch', plugins_url ('includes/js/jquery.quicksearch.js', AD_INSERTER_FILE ), array (), AD_INSERTER_VERSION, true); // Located in the header to load datepicker js file to prevent error when async tags used wp_enqueue_script ('ai-image-picker-js', plugins_url ('includes/js/image-picker.min.js', __FILE__ ), array ( 'jquery', 'jquery-ui-datepicker', ), AD_INSERTER_VERSION, false); if (AI_SYNTAX_HIGHLIGHTING && !defined ('AI_SAFE_MODE')) { wp_enqueue_script ('ai-ace', plugins_url ('includes/ace/ace.js', __FILE__ ), array (), AD_INSERTER_VERSION, true); // wp_enqueue_script ('ai-ace-ext-modelist', plugins_url ('includes/ace/ext-modelist.js', __FILE__ ), array (), AD_INSERTER_VERSION, true); wp_enqueue_script ('ai-ace-html', plugins_url ('includes/ace/mode-html.js', __FILE__ ), array (), AD_INSERTER_VERSION, true); wp_enqueue_script ('ai-ace-php', plugins_url ('includes/ace/mode-php.js', __FILE__ ), array (), AD_INSERTER_VERSION, true); if (get_syntax_highlighter_theme () == AI_SYNTAX_HIGHLIGHTER_THEME || isset ($_POST ["syntax-highlighter-theme"]) && $_POST ["syntax-highlighter-theme"] == AI_SYNTAX_HIGHLIGHTER_THEME) wp_enqueue_script ('ai-ace-theme', plugins_url ('includes/ace/theme-ad_inserter.js', __FILE__ ), array (), AD_INSERTER_VERSION, true); } wp_enqueue_script ('ai-combobox', plugins_url ('includes/js/jquery.scombobox.min.js', __FILE__), array ( 'jquery', ), AD_INSERTER_VERSION , true); $admin_script = get_backend_javascript_debugging () ? 'js/ad-inserter.js' : 'js/ad-inserter.min.js'; wp_enqueue_script ('ai-admin', plugins_url ($admin_script, __FILE__), array ( 'jquery', 'jquery-ui-tabs', 'jquery-ui-button', 'jquery-ui-tooltip', 'jquery-ui-datepicker', 'jquery-ui-dialog', ), AD_INSERTER_VERSION, true); wp_localize_script ('ai-admin', 'ai_admin', $ai_admin_translations); wp_enqueue_script ('ai-missed', plugins_url ('includes/js/missed.js', __FILE__), array (), AD_INSERTER_VERSION , true); } wp_enqueue_style ('ai-admin-gen', plugins_url ('css/ai-admin.css', __FILE__), array (), AD_INSERTER_VERSION); wp_enqueue_script ('ai-admin-gen', plugins_url ('includes/js/ai-admin.js', __FILE__ ), array (), AD_INSERTER_VERSION, true); } function ai_admin_enqueue_scripts_late ($hook_suffix) { global $ai_settings_page; if ($hook_suffix == $ai_settings_page) { // wp_enqueue_style ('ai-admin', plugins_url ('css/ad-inserter.css', __FILE__), array (), AD_INSERTER_VERSION); wp_enqueue_style ('ai-admin', plugins_url ('css/ai-settings.css', __FILE__), array (), AD_INSERTER_VERSION); wp_add_inline_style ('ai-admin', '.notice {margin: 5px 15px 15px 0;}'); } } function ai_admin_remove_scripts ($hook_suffix) { global $ai_settings_page; if ($hook_suffix == $ai_settings_page) { // Prevent converting emojis to images remove_action ('admin_print_scripts', 'print_emoji_detection_script'); // Fix for Publisher theme: remove scripts loaded on Ad Inserter admin page wp_deregister_script ('ace-editor-script'); wp_dequeue_script ('publisher-admin'); // Fix for Shell ClubSmart theme (titan framework) wp_dequeue_script ('tf-ace'); // Default settings wp_dequeue_script ('tf-ace-theme-chrome'); wp_dequeue_script ('tf-ace-mode-css'); // Fix for JNews theme wp_dequeue_style ('global-admin'); wp_dequeue_style ('selectize'); wp_dequeue_style ('select2'); wp_dequeue_style ('tooltipster'); wp_dequeue_style ('jnews-admin'); wp_dequeue_style ('vex'); // Fix for OptimizePress plugin: remove styles loaded on Ad Inserter admin page wp_dequeue_style ('optimizepress-admin-assets'); wp_dequeue_style ('optimizepress-admin-common'); wp_dequeue_style ('optimizepress-tiny-mce-css'); wp_dequeue_style ('optimizepress-dashicons'); // Fix for WP Nav Manager plugin: remove styles loaded on Ad Inserter admin page wp_dequeue_style ('wp-nav-manager-admin-style'); // Fix for Booking.com Product Helper plugin: remove styles loaded on Ad Inserter admin page wp_dequeue_style ('bookingcom-product-helper-css'); // Fix for WP BotWatch plugin: remove styles loaded on Ad Inserter admin page wp_dequeue_style ('wp-botwatch'); // Fix for All in One Schema.org Rich Snippets plugin: remove styles loaded on Ad Inserter admin page wp_dequeue_style ('admin_style'); wp_deregister_style ('admin_style'); // Fix for ACF for AMP plugin: remove styles loaded on Ad Inserter admin page wp_dequeue_style ('amp-acf-admin'); wp_deregister_style ('amp-acf-admin'); wp_dequeue_script ('ace_code_highlighter_js'); wp_dequeue_script ('ace_mode_js'); wp_dequeue_script ('custom_css_js'); wp_dequeue_script ('field-creator'); wp_dequeue_script ('amp_acf_field'); // Fix for WP Lightbox 2 plugin: remove styles loaded on Ad Inserter admin page wp_dequeue_style ('jquery-ui-style'); wp_deregister_style ('jquery-ui-style'); // Fix for Widget Options plugin: remove styles loaded on Ad Inserter admin page wp_dequeue_style ('widgetopts-jquery-ui'); wp_deregister_style ('widgetopts-jquery-ui'); } } function ai_set_footer_inline_scripts () { global $ai_wp_data; $adb_code = defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION && $ai_wp_data [AI_ADB_DETECTION] && !isset ($ai_wp_data [AI_ADB_SHORTCODE_DISABLED]); // Check again later in the footer $ai_wp_data [AI_FOOTER_INLINE_SCRIPTS] = get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_SHOW || get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_INSERT || // alerady in $ai_wp_data [AI_CLIENT_SIDE_INSERTION] isset ($ai_wp_data [AI_CLIENT_SIDE_ROTATION]) || ($ai_wp_data [AI_TRACKING] && !isset ($ai_wp_data [AI_TRACKING_SHORTCODE_DISABLED])) || $ai_wp_data [AI_STICKY_WIDGETS] || $ai_wp_data [AI_STICK_TO_THE_CONTENT] || $ai_wp_data [AI_ANIMATION] || $ai_wp_data [AI_CLOSE_BUTTONS] || $ai_wp_data [AI_HTML_ELEMENT_SELECTION] || $ai_wp_data [AI_LAZY_LOADING] || $ai_wp_data [AI_CLIENT_SIDE_INSERTION] || $adb_code || ($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_BLOCKS | AI_DEBUG_POSITIONS)) != 0 || $ai_wp_data [AI_FRONTEND_JS_DEBUGGING] || $ai_wp_data [AI_CHECK_BLOCK] || $ai_wp_data [AI_CLIENT_SIDE_FILTER_CHECKS] || $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] != ''; } function ai_wp_enqueue_scripts_hook () { global $ai_wp_data, $wp_version, $wp_scripts, $ai_front_translations; // TEST // wp_deregister_script ('jquery'); ai_set_footer_inline_scripts (); if (!wp_script_is ('jquery', 'registered') && !wp_script_is ('jquery', 'printed')) { $ai_wp_data [AI_NO_JQUERY_CODE] = true; } if ($ai_wp_data [AI_FOOTER_INLINE_SCRIPTS] || ($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_POSITIONS | AI_DEBUG_BLOCKS)) != 0 || !empty ($_GET) || get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0 || $ai_wp_data [AI_ANIMATION]) { // Need jQuery: // $ai_wp_data [AI_HTML_ELEMENT_SELECTION] if (!$ai_wp_data [AI_NO_JQUERY_CODE]) { // Load jQuery on frontend when needed if (!get_wait_for_jquery () && isset ($wp_scripts->registered ['jquery'])) { wp_enqueue_script ('jquery'); } } if ($ai_wp_data [AI_HTML_ELEMENT_SELECTION] && !$ai_wp_data [AI_NO_JQUERY_CODE]) { wp_enqueue_script ('ai-jquery-js', plugins_url ('includes/js/ai-jquery.js', __FILE__), array ('jquery', 'jquery-ui-button'), $wp_version . '+' . AD_INSERTER_VERSION); wp_enqueue_style ('ai-html-jquery-ui', plugins_url ('css/jquery-ui-1.10.3.custom.min.css', __FILE__), array (), null); } if (!get_disable_css_code () && (get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0)) { wp_enqueue_style ('dashicons'); if (get_remote_debugging () && isset ($_GET [AI_URL_DEBUG]) && $_GET [AI_URL_DEBUG]) { wp_enqueue_style ('ai-dashicons', includes_url ('css/dashicons.min.css'), array (), $wp_version); wp_enqueue_style ('ai-admin-bar', includes_url ('css/admin-bar.min.css'), array (), $wp_version); } } if (!get_disable_js_code () && $ai_wp_data [AI_ANIMATION]) { if (defined ('AI_STICKY_SETTINGS') && AI_STICKY_SETTINGS) { wp_enqueue_style ('ai-aos', plugins_url ('includes/aos/ai-aos.css', __FILE__), array (), AD_INSERTER_VERSION); wp_enqueue_script ('ai-aos-js', plugins_url ('includes/aos/aos.js', AD_INSERTER_FILE ), array (), AD_INSERTER_VERSION, true); } } } } function ai_clean_url ( $url, $original_url){ if (strpos ($url, 'async=') !== false && strpos ($url, '/plugins/ad-inserter') !== false) { // $url = $original_url; $url = str_replace ("' async='async", '', $url); } return $url; } function ai_get_client_side_styles () { return ".ai-rotate {position: relative;}\n" . ".ai-rotate-hidden {visibility: hidden;}\n" . ".ai-rotate-hidden-2 {position: absolute; top: 0; left: 0; width: 100%; height: 100%;}\n" . ".ai-list-data, .ai-ip-data, .ai-filter-check, .ai-fallback, .ai-list-block, .ai-list-block-ip, .ai-list-block-filter {".AI_ALIGNMENT_CSS_HIDDEN_LIST."}\n" . ".ai-list-data, .ai-ip-data, .ai-filter-check, .ai-fallback {min-width: 1px;}\n" . ""; } function ai_get_admin_toolbar_debugging_styles () { global $ai_wp_data; $css = ''; if (((get_admin_toolbar_debugging () && ((get_remote_debugging () && $ai_wp_data [AI_WP_DEBUGGING] != 0) || ($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0)) || defined ('AI_DEBUGGING_DEMO')) && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { $css .= "#wp-admin-bar-ai-toolbar-settings .ab-icon:before { content: '\\f538'; top: 2px; color: rgba(240,245,250,.6)!important; } #wp-admin-bar-ai-toolbar-settings-default .ab-icon:before { top: 0px; } #wp-admin-bar-ai-toolbar-settings .ab-icon.on:before { color: #00f200!important; } #wp-admin-bar-ai-toolbar-settings .ab-icon.red:before { color: #f22!important; } #wp-admin-bar-ai-toolbar-settings-default li, #wp-admin-bar-ai-toolbar-settings-default a, #wp-admin-bar-ai-toolbar-settings-default li:hover, #wp-admin-bar-ai-toolbar-settings-default a:hover { border: 1px solid transparent; } ul li#wp-admin-bar-ai-toolbar-status { margin: 0 0 5px 0; } #wp-admin-bar-ai-toolbar-off .ab-icon:before { content: '\\f153'; } #wp-admin-bar-ai-toolbar-blocks .ab-icon:before { content: '\\f135'; } #wp-admin-bar-ai-toolbar-positions .ab-icon:before { content: '\\f207'; } #wp-admin-bar-ai-toolbar-positions-default .ab-icon:before { content: '\\f522'; } #wp-admin-bar-ai-toolbar-tags .ab-icon:before { content: '\\f475'; } #wp-admin-bar-ai-toolbar-no-insertion .ab-icon:before { content: '\\f214'; } #wp-admin-bar-ai-toolbar-adb-status .ab-icon:before { content: '\\f223'; } #wp-admin-bar-ai-toolbar-adb .ab-icon:before { content: '\\f160'; } #wp-admin-bar-ai-toolbar-processing .ab-icon:before { content: '\\f464'; } #wp-admin-bar-ai-toolbar-processing-fe .ab-icon:before { content: '\\f464'; } #wp-admin-bar-ai-toolbar-positions span.up-icon { padding-top: 2px; } #wp-admin-bar-ai-toolbar-positions .up-icon:before { font: 400 20px/1 dashicons; } .ai-insertion-status { line-height: 26px!important; height: 26px!important; white-space: nowrap; min-width: 140px; } #wp-admin-bar-ai-toolbar-settings .ab-sub-wrapper { width: max-content; width: -moz-max-content; } "; } if (get_admin_toolbar_mobile () && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { $css .= "@media screen and (max-width: 782px) { #wpadminbar #wp-admin-bar-ai-toolbar-settings { display: block; position: static; } #wpadminbar #wp-admin-bar-ai-toolbar-settings > .ab-item { white-space: nowrap; overflow: hidden; width: 52px; padding: 0; color: #a0a5aa; position: relative; } #wpadminbar .quicklinks .menupop ul li .ab-item, #wpadminbar .quicklinks .menupop.hover ul li .ab-item { min-height: 28px; } } "; } return $css; } function add_head_inline_styles () { global $ai_wp_data; if (get_disable_css_code ()) return; // Needed for iframes? $ai_wp_data [AI_CODE_FOR_IFRAME] $debugging = $ai_wp_data [AI_WP_DEBUGGING] != 0 || (get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0) && (isset ($_GET [AI_URL_DEBUG_PROCESSING_FE]) && $_GET [AI_URL_DEBUG_PROCESSING_FE] != 0 || isset ($_GET [AI_URL_DEBUG_CODE])); if ($ai_wp_data [AI_CLIENT_SIDE_DETECTION] || get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_SHOW || isset ($ai_wp_data [AI_CLIENT_SIDE_ROTATION]) || $ai_wp_data [AI_CLOSE_BUTTONS] || $ai_wp_data [AI_PARALLAX] || $ai_wp_data [AI_HTML_ELEMENT_SELECTION] || !get_inline_styles () || get_admin_toolbar_debugging () && (get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0) || $debugging) { echo "<style>\n"; if ($ai_wp_data [AI_CLIENT_SIDE_DETECTION] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) echo get_viewport_css (); if (get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_SHOW || get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_INSERT || isset ($ai_wp_data [AI_CLIENT_SIDE_ROTATION])) { echo ai_get_client_side_styles (); $ai_wp_data [AI_CLIENT_SIDE_CSS] = true; } if ($ai_wp_data [AI_CLOSE_BUTTONS] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { echo ".ai-close {position: relative;}\n"; // Needed for close button bottom positions echo ".ai-close-button {position: absolute; top: -11px; right: -11px; width: 24px; height: 24px; background: url(".plugins_url ('css/images/close-button.png', AD_INSERTER_FILE).") no-repeat center center; cursor: pointer; z-index: 9; display: none;}\n"; echo ".ai-close-show {display: block;}\n"; echo ".ai-close-left {right: unset; left: -11px;}\n"; echo ".ai-close-bottom {top: unset; bottom: -10px;}\n"; echo ".ai-close-none {visibility: hidden;}\n"; } if ($ai_wp_data [AI_PARALLAX] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { echo ".ai-parallax {position: relative;}\n"; echo ".ai-parallax-background {position: absolute; width: 100%; height: 100%; background-attachment: fixed; background-position: center; background-repeat: no-repeat;}\n"; // CSS specific to iOS devices echo "@supports (-webkit-touch-callout: none) {.ai-parallax-background {background-attachment: scroll; }}\n"; // echo "@media (max-width: 768px) {.ai-parallax-background {background-attachment: scroll; }}"; // echo "@supports (-webkit-overflow-scrolling: touch) {.ai-parallax-background {background-attachment: scroll; }}"; } // Before alignment CSS to not override alignment margin if ($debugging) generate_debug_css_base (); if (!get_inline_styles () && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { echo get_alignment_css (); } // After alignment CSS to override width if ($ai_wp_data [AI_CLOSE_BUTTONS] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { echo ".ai-close-fit {width: fit-content; width: -moz-fit-content;}\n"; } if ($debugging) generate_debug_css (); if ($ai_wp_data [AI_HTML_ELEMENT_SELECTION]) generate_selection_css (); echo ai_get_admin_toolbar_debugging_styles (); echo "</style>\n"; } } function ai_get_js ($js_name, $replace_js_data = true) { global $ai_wp_data; $jq_js_name = $js_name . '.q'; if (!$ai_wp_data [AI_NO_JQUERY_CODE] && file_exists (AD_INSERTER_PLUGIN_DIR."includes/js/{$jq_js_name}.js")) { $js_name = $jq_js_name; } if ($ai_wp_data [AI_FRONTEND_JS_DEBUGGING] || !file_exists (AD_INSERTER_PLUGIN_DIR."includes/js/$js_name.min.js")) { $script = @file_get_contents (AD_INSERTER_PLUGIN_DIR."includes/js/$js_name.js"); } else $script = @file_get_contents (AD_INSERTER_PLUGIN_DIR."includes/js/$js_name.min.js"); $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($debug_processing) ai_log ('LOADING JS CODE: '. $js_name); if (!$replace_js_data) return $script; return ai_replace_js_data ($script); } function ai_randomize_properties ($style, $z_index_min = null, $z_index_max = null) { $style = str_replace (''', '\'', $style); $style_array = explode (';', trim ($style, ';')); foreach ($style_array as $index => $property) { $property = trim ($property); if ($z_index_min != null && $z_index_max != null && strpos ($property, 'z-index') === 0) { $style_array [$index] = 'z-index: ' . rand ($z_index_min, $z_index_max); } if (strpos ($property, 'opacity') === 0) { $value = str_replace (array ('opacity', ':', ' ', ';'), '', $property); if (is_numeric ($value)) { $value = 100 * $value - 5 + rand (0, 10); if ($value > 100) $value = 100; $style_array [$index] = 'opacity: ' . ($value / 100); } } elseif (strpos ($property, '50%') !== false) { $style_array [$index] = str_replace ('50%', (47 + rand (0, 6)) . '.' . rand (1, 99) . '%', $style_array [$index]); } elseif (strpos ($property, '100%') !== false) { $style_array [$index] = str_replace ('100%', '100.' . rand (1, 99) . '%', $style_array [$index]); } elseif (strpos ($property, '#000') !== false) { $color = rand (0, 2) . rand (0, 9); $style_array [$index] = str_replace ('#000', '#' . $color . $color . $color, $style_array [$index]); } } shuffle ($style_array); return trim (implode ('; ', $style_array)) . ';'; } function ai_replace_js_data ($js) { global $block_object, $ai_wp_data; if (preg_match_all ('/AI_CONST_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $constant) { if (defined ($constant)) $js = str_replace ($match [0][$index], constant ($constant), $js); } } if (preg_match_all ('/AI_DATA_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $constant) { if (defined ($constant) && isset ($ai_wp_data [constant ($constant)])) $js = str_replace ($match [0][$index], $ai_wp_data [constant ($constant)], $js); } } if (preg_match_all ('/AI_DATAB_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $constant) { if (defined ($constant) && isset ($ai_wp_data [constant ($constant)])) $js = str_replace ($match [0][$index], $ai_wp_data [constant ($constant)] ? 1 : 0, $js); } } if (preg_match_all ('/AI_DBG_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $constant) { if (defined ($constant)) $js = str_replace ($match [0][$index], ($ai_wp_data [AI_WP_DEBUGGING] & constant ($constant)) != 0 ? 1 : 0, $js); } } if (preg_match_all ('/AI_FUNC_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $function) { $function = strtolower ($function); if (function_exists ($function)) $js = str_replace ($match [0][$index], call_user_func ($function), $js); } } if (preg_match_all ('/AI_FUNCH_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $function) { $function = strtolower ($function); if (function_exists ($function)) $js = str_replace ($match [0][$index], html_entity_decode (call_user_func ($function)), $js); } } if (preg_match_all ('/AI_FUNCB_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $function) { $function = strtolower ($function); if (function_exists ($function)) $js = str_replace ($match [0][$index], call_user_func ($function) ? 1 : 0, $js); } } if (preg_match_all ('/AI_FUNCT_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $function) { $function = strtolower ($function); if (function_exists ($function)) $js = str_replace ($match [0][$index], call_user_func ($function, true), $js); } } if (preg_match_all ('/AI_POST_([_A-Z0-9]+)/', $js, $match)) { foreach ($match [1] as $index => $post) { $post_name = strtolower ($post); $js = str_replace ($match [0][$index], isset ($_POST [$post_name]) ? sanitize_text_field (urldecode ($_POST [$post_name])) : '', $js); } } if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { if (strpos ($js, 'AI_ADB_OVERLAY_WINDOW') !== false || strpos ($js, 'AI_ADB_MSG_HTML') !== false) { $adb = $block_object [AI_ADB_MESSAGE_OPTION_NAME]; $tags = array ('div', 'span', 'ins', 'section', 'kbd'); $message_tag = $tags [rand (0, count ($tags) - 1)]; $overlay_tag = $tags [rand (0, count ($tags) - 1)]; $basic_adb_overlay_css = AI_BASIC_ADB_OVERLAY_CSS; $basic_adb_message_css = AI_BASIC_ADB_MESSAGE_CSS; if (strpos ($js, 'AI_ADB_STATUS_MESSAGE') === false) { $basic_adb_overlay_css = str_replace ('pointer', 'no-drop', $basic_adb_overlay_css); $basic_adb_message_css = str_replace ('pointer', 'no-drop', $basic_adb_message_css); } // $overlay_code = "jQuery ('<".$overlay_tag.">', {attr: {'style': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_overlay_css, 1110002, 9914998)) . ai_randomize_properties (get_overlay_css ())) . "')}})"; $overlay_code = "var e = document.createElement ('".$overlay_tag."'); e.style = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_overlay_css, 1110002, 9914998)) . ai_randomize_properties (get_overlay_css ())) . "');"; for ($level = 1; $level <= 5; $level ++) { switch (rand (1, 10)) { case 1: case 2: case 3: case 4: $tag = 'div'; break; case 5: case 6: case 7: $tag = $tags [rand (0, count ($tags) - 1)]; break; default: continue 2; } // $overlay_code .= ".append (jQuery ('<div>')).append (jQuery ('<div>', {attr: {'style': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_overlay_css, 100, 99999))) . "')}}))"; $overlay_code .= "var f = document.createElement ('div'); f.style = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_overlay_css, 100, 99999))) . "');"; $overlay_code .= "e.append (f); e.append (document.createElement ('div'));"; // $overlay_code = "jQuery ('<".$tag.">').append (" . $overlay_code . ')'; $overlay_code .= "f = document.createElement ('".$tag."'); f.append (e); e = f;"; // if (rand (1, 10) > 5) $overlay_code .= ".append (jQuery ('<div>', {attr: {'style': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_overlay_css, 100, 99999))) . "')}}))"; if (rand (1, 10) > 5) $overlay_code .= "var f = document.createElement ('div'); f.style = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_overlay_css, 100, 99999))) . "'); e.append (f);"; // if (rand (1, 10) > 5) $overlay_code .= ".append (jQuery ('<div>'))"; if (rand (1, 10) > 5) $overlay_code .= "e.append (document.createElement ('div'));"; // if (rand (1, 10) > 5) $overlay_code .= ".prepend (jQuery ('<div>', {attr: {'style': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_overlay_css, 100, 99999))) . "')}}))"; if (rand (1, 10) > 5) $overlay_code .= "var f = document.createElement ('div'); f.style = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_overlay_css, 100, 99999))) . "'); e.prepend (f);"; // if (rand (1, 10) > 5) $overlay_code .= ".prepend (jQuery ('<div>'))"; if (rand (1, 10) > 5) $overlay_code .= "e.prepend (document.createElement ('div'));"; } $overlay_code = '(function () {' . $overlay_code . ' return e;})()'; $js = str_replace ('AI_ADB_OVERLAY_WINDOW', $overlay_code, $js); $message_code = "jQuery ('<".$message_tag.">', {attr: {'style': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 96610999, 99919998)) . ai_randomize_properties (get_message_css ())) . "')}, 'html': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), do_shortcode ($adb->ai_getCode ()))) . "')})"; $message_code = "var e = document.createElement ('".$message_tag."'); e.style = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 96610999, 99919998)) . ai_randomize_properties (get_message_css ())) . "');"; $message_code .= "e.innerHTML = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), do_shortcode ($adb->ai_getCode ()))) . "');"; for ($level = 1; $level <= 5; $level ++) { switch (rand (1, 10)) { case 1: case 2: case 3: $tag = 'div'; break; case 4: case 5: $tag = 'p'; break; case 6: case 7: $tag = $tags [rand (0, count ($tags) - 1)]; break; default: continue 2; } // $message_code .= ".append (jQuery ('<p>')).append (jQuery ('<div>', {attr: {'style': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 10000, 999999))) . "')}}))"; $message_code .= "var f = document.createElement ('div'); f.style = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 10000, 999999))) . "');"; $message_code .= "e.append (document.createElement ('p')); e.append (f);"; // $message_code = "jQuery ('<".$tag.">').append (" . $message_code . ')'; $message_code .= "f = document.createElement ('".$tag."'); f.append (e); e = f;"; // if (rand (1, 10) > 7) $message_code .= ".append (jQuery ('<div>', {attr: {'style': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 10000, 999999))) . "')}}))"; if (rand (1, 10) > 7) $message_code .= "var f = document.createElement ('div'); f.style = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 10000, 999999))) . "'); e.append (f);"; // if (rand (1, 10) > 7) $message_code .= ".append (jQuery ('<p>'))"; if (rand (1, 10) > 7) $message_code .= "e.append (document.createElement ('p'));"; // if (rand (1, 10) > 7) $message_code .= ".prepend (jQuery ('<div>', {attr: {'style': b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 10000, 999999))) . "')}}))"; if (rand (1, 10) > 7) $message_code .= "var f = document.createElement ('div'); f.style = b64d ('" . base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 10000, 999999))) . "'); e.prepend (f);"; // if (rand (1, 10) > 7) $message_code .= ".prepend (jQuery ('<p>'))"; if (rand (1, 10) > 7) $message_code .= "e.prepend (document.createElement ('p'));"; // if (rand (1, 10) > 3) $message_code .= ".prepend (jQuery ('<p>'))"; if (rand (1, 10) > 3) $message_code .= "e.prepend (document.createElement ('p'));"; } $message_code = '(function () {' . $message_code . ' return e;})()'; $js = str_replace ('AI_ADB_MESSAGE_WINDOW', $message_code, $js); // $js = str_replace ('AI_ADB_MSG_HTML', base64_encode (str_replace (array ("\r", "\n"), array ('', ''), do_shortcode ($adb->ai_getCode ()))), $js); $js = str_replace ('AI_ADB_MSG_HTML', str_replace (array ("\r", "\n", '"'), array ('', '', '"'), preg_replace ( '@<(script|style)[^>]*?'.'>.*?</\\1>@si', '', do_shortcode ($adb->ai_getCode ()))), $js); // $js = str_replace ('AI_ADB_MSG_STYLE', base64_encode (str_replace (array ("\r", "\n"), array ('', ''), ai_randomize_properties ($basic_adb_message_css, 100000, 9999999) . ai_randomize_properties (get_message_css ()))), $js); $js = str_replace ('AI_ADB_MSG_STYLE', str_replace (array ("\r", "\n", '"'), array ('', '', '"'), ai_randomize_properties ($basic_adb_message_css, 100000, 9999999) . ai_randomize_properties (get_message_css ())), $js); switch (rand (1, 20)) { case 1: $message_tag = 'section'; break; case 2: $message_tag = 'article'; break; case 3: $message_tag = 'span'; break; case 4: $message_tag = 'header'; break; case 5: $message_tag = 'footer'; break; case 6: $message_tag = 'nav'; break; case 7: $message_tag = 'aside'; break; case 8: $message_tag = 'h5'; break; case 9: $message_tag = 'h6'; break; default: $message_tag = 'div'; break; } $js = str_replace ('AI_ADB_MSG_TAG', $message_tag, $js); $js_name_node = 'n'.rand (10000, 10000000); $js_name_index = 'i'.rand (10000, 10000000); $html_tags = array (); if (rand (1, 10) > 3) $html_tags []= 'DIV'; if (rand (1, 10) > 4) $html_tags []= 'P'; if (rand (1, 10) > 5) $html_tags []= 'SPAN'; if (rand (1, 10) > 5) $html_tags []= 'A'; if (rand (1, 10) > 5) $html_tags []= 'ARTICLE'; if (rand (1, 10) > 5) $html_tags []= 'H1'; if (rand (1, 10) > 5) $html_tags []= 'H2'; if (rand (1, 10) > 5) $html_tags []= 'H3'; if (rand (1, 10) > 5) $html_tags []= 'H4'; if (rand (1, 10) > 5) $html_tags []= 'H5'; if (rand (1, 10) > 5) $html_tags []= 'H6'; if (rand (1, 10) > 5) $html_tags []= 'BUTTON'; if (rand (1, 10) > 6) $html_tags []= 'IFRAME'; if (rand (1, 10) > 6) $html_tags []= 'HEADER'; if (rand (1, 10) > 5) $html_tags []= 'FOOTER'; if (rand (1, 10) > 7) $html_tags []= 'UL'; if (rand (1, 10) > 7) $html_tags []= 'OL'; if (rand (1, 10) > 5) $html_tags []= 'LI'; if (rand (1, 10) > 5) $html_tags []= 'NAV'; if (rand (1, 10) > 5) $html_tags []= 'SECTION'; if (rand (1, 10) > 5) $html_tags []= 'ASIDE'; if (empty ($html_tags)) $html_tags = array ('DIV, P, LI'); shuffle ($html_tags); switch (rand (1, 10)) { case 1: $js_code_1 = 'var '.$js_name_node.' = document.getElementsByTagName ("'. ($html_tags [0]) .'"); for (var '.$js_name_index.'=0; '.$js_name_index.' < '.$js_name_node.'.length; '.$js_name_index.'++) {'; break; default: $js_code_1 = 'var '.$js_name_node.' = document.body.querySelectorAll ("'.(implode (', ', $html_tags)).'"); for (var '.$js_name_index.'=0; '.$js_name_index.' < '.$js_name_node.'.length; '.$js_name_index.'++) {'; break; } $js_code_3 = '}'; $js_code_css = array (); if (rand (1, 10) > 2) $js_code_css []= 'style.filter = "blur('.rand (1, 4).'px) brightness('.rand (60, 80).'%)"'; if (rand (1, 10) > 4) $js_code_css []= 'style.cursor = "no-drop"'; if (rand (1, 10) > 3) $js_code_css []= 'style.cursor = "grab"'; if (rand (1, 10) > 5) $js_code_css []= 'style.cursor = "grabbing"'; if (rand (1, 10) > 6) $js_code_css []= 'style.cursor = "wait"'; if (rand (1, 10) > 7) $js_code_css []= 'style.cursor = "not-allowed"'; if (rand (1, 10) > 8) $js_code_css []= 'style.cursor = "cell"'; if (rand (1, 10) > 9) $js_code_css []= 'style.cursor = "all-scroll"'; if (rand (1, 10) > 2) $js_code_css []= 'style.background = "rgba('.rand (31, 55).', '.rand (31, 55).', '.rand (31, 55).', '.(rand (50, 80)/100).')"'; if (rand (1, 10) > 6) $js_code_css []= 'style.opacity = "0.'.rand (55, 84).'"'; if (rand (1, 10) > 6) $js_code_css []= 'style.zIndex = "'.rand (1, 12345).'"'; if (rand (1, 10) > 7) $js_code_css []= 'style.textTransform = "uppercase"'; if (rand (1, 10) > 8) $js_code_css []= 'style.letterSpacing = "'.rand (0, 5).'px"'; if (rand (1, 10) > 8) $js_code_css []= 'style.border = "'.rand (2, 25).'px solid"'; if (rand (1, 10) > 8) $js_code_css []= 'style.color = "rgba('.rand (1, 255).', '.rand (1, 255).', '.rand (1, 255).', '.(rand (20, 50)/100).')"'; if (rand (1, 10) > 6) $js_code_css []= 'style.fontFamily = "sans-serif"'; if (rand (1, 10) > 7) $js_code_css []= 'style.fontFamily = "serif"'; if (rand (1, 10) > 8) $js_code_css []= 'style.fontFamily = "sans-serif"'; if (rand (1, 10) > 6) $js_code_css []= 'style.fontFamily = "arial"'; if (rand (1, 10) > 6) $js_code_css []= 'style.fontFamily = "monospace"'; if (rand (1, 10) > 8) $js_code_css []= 'style.visibility = "hidden"'; if (rand (1, 10) > 8) $js_code_css []= 'style.visibility = "collapse"'; if (rand (1, 10) > 9) $js_code_css []= 'style.display = "list-item"'; if (rand (1, 10) > 9) $js_code_css []= 'style.display = "inline"'; if (rand (1, 10) > 3) $js_code_css []= 'style.margin = "'.rand (500, 2345).'px"'; if (rand (1, 10) > 4) $js_code_css []= 'style.padding = "'.rand (500, 2345).'px"'; if (rand (1, 10) > 7) $js_code_css []= 'remove ()'; else if (rand (1, 10) > 7) $js_code_css []= 'parentNode.removeChild (@@)'; $js_code_2 = ''; foreach ($js_code_css as $js_code_css_line) { $js_code_css_line = str_replace ('@@', $js_name_node.'['.$js_name_index.']', $js_code_css_line); $js_code_2 .= $js_name_node.'['.$js_name_index.'].'.$js_code_css_line.';'; } // $js = str_replace ('AI_ADB_HTML', base64_encode ($js_code_1.$js_code_2.$js_code_3), $js); // $js = str_replace ('var AI_ADB_HTML=1;', $js_code_1.$js_code_2.$js_code_3, $js); $js = str_replace ('AI_ADB_HTML=1;', $js_code_1.$js_code_2.$js_code_3, $js); $body_js_code = ''; if (rand (1, 10) > 5) $body_js_code .= 'document.body.style.background = "rgba('.rand (11, 35).', '.rand (11, 35).', '.rand (11, 35).', '.(rand (60, 90)/100).')";'; if (rand (1, 10) > 6) $body_js_code .= 'document.body.style.backgroundColor = "rgba('.rand (21, 45).', '.rand (21, 45).', '.rand (21, 45).', '.(rand (60, 90)/100).')";'; if (rand (1, 10) > 6) $body_js_code .= 'document.body.style.margin = "'.rand (400, 4345).'px";'; // $js = str_replace ('var AI_ADB_HTML=2;', $body_js_code, $js); $js = str_replace ('AI_ADB_HTML=2', $body_js_code, $js); $js = str_replace ('AI_ADB_SELECTORS', get_adb_selectors (true), $js); $redirection_page = get_redirection_page (); if ($redirection_page != 0) $url = get_permalink ($redirection_page); else $url = trim (get_custom_redirection_url ()); $js = str_replace ('AI_ADB_REDIRECTION_PAGE', $url, $js); if (($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_AD_BLOCKING_STATUS | AI_DEBUG_POSITIONS | AI_DEBUG_BLOCKS)) != 0) { // translators: AD BLOCKING DETECTED, PAGE VIEWS: n - NO ACTION // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=1', '(jQuery("#ai-adb-status").text ("' . __('AD BLOCKING DETECTED, PAGE VIEWS', 'ad-inserter') . '" + ": " + window.ai_d1 + " - " + "' . __('NO ACTION', 'ad-inserter') . '"),jQuery("#ai-adb-bar").addClass ("adb-on"))', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=2', '(jQuery("#ai-adb-status").text ("' . __('AD BLOCKING DETECTED, COOKIE DETECTED - NO ACTION', 'ad-inserter') . '"),jQuery("#ai-adb-bar").addClass ("adb-on"))', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=3', '(jQuery("#ai-adb-status").text ("' . __('AD BLOCKING DETECTED - ACTION', 'ad-inserter') . '"),jQuery("#ai-adb-bar").addClass ("adb-on"))', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=4', '(jQuery("#ai-adb-status").text ("' . __('AD BLOCKING NOT DETECTED', 'ad-inserter') . '"),jQuery("#ai-adb-bar").addClass ("adb-off"))', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=5', '(jQuery("#ai-adb-status").text ("' . __('AD BLOCKING DETECTION COOKIES DELETED', 'ad-inserter') . '"))', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=6', '(jQuery("#ai-adb-status").text ("' . __('AD BLOCKING DETECTED - NO ACTION', 'ad-inserter') . '"),jQuery("#ai-adb-bar").addClass ("adb-on"))', $js); // translators: AD BLOCKING DETECTED, PAGE VIEWS: n - NO ACTION $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=1', 'if (document.querySelector("#ai-adb-status") != null) document.querySelector("#ai-adb-status").innerText = "' . __('AD BLOCKING DETECTED, PAGE VIEWS', 'ad-inserter') . '" + ": " + window.ai_d1 + " - " + "' . __('NO ACTION', 'ad-inserter') . '";if (document.querySelector("#ai-adb-bar") != null) document.querySelector("#ai-adb-bar").classList.add ("adb-on");', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=2', 'if (document.querySelector("#ai-adb-status") != null) document.querySelector("#ai-adb-status").innerText = "' . __('AD BLOCKING DETECTED, COOKIE DETECTED - NO ACTION', 'ad-inserter') . '"; if (document.querySelector("#ai-adb-bar") != null) document.querySelector("#ai-adb-bar").classList.add ("adb-on");', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=3', 'if (document.querySelector("#ai-adb-status") != null) document.querySelector("#ai-adb-status").innerText = "' . __('AD BLOCKING DETECTED - ACTION', 'ad-inserter') . '"; if (document.querySelector("#ai-adb-bar") != null) document.querySelector("#ai-adb-bar").classList.add ("adb-on");', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=4', 'if (document.querySelector("#ai-adb-status") != null) document.querySelector("#ai-adb-status").innerText = "' . __('AD BLOCKING NOT DETECTED', 'ad-inserter') . '"; if (document.querySelector("#ai-adb-bar") != null) document.querySelector("#ai-adb-bar").classList.add ("adb-off");', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=5', 'if (document.querySelector("#ai-adb-status") != null) document.querySelector("#ai-adb-status").innerText = "' . __('AD BLOCKING DETECTION COOKIES DELETED', 'ad-inserter') . '";', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=6', 'if (document.querySelector("#ai-adb-status") != null) document.querySelector("#ai-adb-status").innerText = "' . __('AD BLOCKING DETECTED - NO ACTION', 'ad-inserter') . '"; if (document.querySelector("#ai-adb-bar") != null) document.querySelector("#ai-adb-bar").classList.add ("adb-on");', $js); } else { // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=1', '(0)', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=2', '(0)', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=3', '(0)', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=4', '(0)', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=5', '(0)', $js); // $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=6', '(0)', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=1', '', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=2', '', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=3', '', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=4', '', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=5', '', $js); $js = str_replace ('window.AI_ADB_STATUS_MESSAGE=6', '', $js); } } } // $js = str_replace ('AI_ADB_ATTR_NAME', "b64d ('" . base64_encode ('data-'.(defined ('AI_ADB_ATTR') ? AI_ADB_ATTR : 'data-mask')) . "')", $js); $js = str_replace ('AI_ADB_ATTR_NAME', "'" . base64_encode ('data-'.(defined ('AI_ADB_ATTR') ? AI_ADB_ATTR : 'data-mask')) . "'", $js); $js = str_replace ('AI_NONCE', wp_create_nonce ("adinserter_data"), $js); $js = str_replace ('AI_AJAXURL', admin_url ('admin-ajax.php'), $js); $js = str_replace ('AI_SITE_URL', wp_make_link_relative (get_site_url()), $js); $js = str_replace ('AI_HOME_URL', home_url (), $js); if (defined ('AI_STATISTICS') && AI_STATISTICS) { $js = str_replace ('AI_INTERNAL_TRACKING', get_internal_tracking () == AI_ENABLED ? 1 : 0, $js); $js = str_replace ('AI_EXTERNAL_TRACKING', get_external_tracking () == AI_ENABLED ? 1 : 0, $js); $js = str_replace ('AI_DEBUG_TRACKING', isset ($_GET [AI_URL_DEBUG_TRACKING]) && $_GET [AI_URL_DEBUG_TRACKING] ? 1 : 0, $js); $js = str_replace ('AI_EXT_CATEGORY', get_external_tracking_category (), $js); $js = str_replace ('AI_EXT_ACTION', get_external_tracking_action (), $js); $js = str_replace ('AI_EXT_LABEL', get_external_tracking_label (), $js); $current_user = wp_get_current_user (); $wp_username = $current_user->user_login; $js = str_replace ('WP_USERNAME', $wp_username, $js); $js = str_replace ('AI_TRACK_PAGEVIEWS', get_track_pageviews () == AI_TRACKING_ENABLED && $ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_AJAX && $ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_REST && !$ai_wp_data [AI_CODE_FOR_IFRAME] ? 1 : 0, $js); $js = str_replace ('AI_ADVANCED_CLICK_DETECTION', get_click_detection () == AI_CLICK_DETECTION_ADVANCED ? 1 : 0, $js); if (!isset ($ai_wp_data [AI_VIEWPORT_WIDTHS])) { $viewport_data = array (); for ($viewport = 1; $viewport <= 6; $viewport ++) { $viewport_name = get_viewport_name ($viewport); $viewport_width = get_viewport_width ($viewport); if ($viewport_name != '') { $viewport_data []= array ('index' => $viewport, 'name' => $viewport_name, 'width' => $viewport_width); } } usort ($viewport_data, 'ai_compare_viewport'); $viewport_widthss = array (); $viewport_indexes = array (); $viewport_names = array (); foreach ($viewport_data as $viewport) { $viewport_widthss []= $viewport ['width']; $viewport_indexes []= $viewport ['index']; $viewport_names []= $viewport ['name']; } $ai_wp_data [AI_VIEWPORT_WIDTHS] = $viewport_widthss; $ai_wp_data [AI_VIEWPORT_INDEXES] = $viewport_indexes; $ai_wp_data [AI_VIEWPORT_NAMES] = $viewport_names; } $js = str_replace ('AI_VIEWPORT_WIDTHS', '[' . implode (',', $ai_wp_data [AI_VIEWPORT_WIDTHS]) . ']', $js); $js = str_replace ('AI_VIEWPORT_INDEXES', '[' . implode (',', $ai_wp_data [AI_VIEWPORT_INDEXES]) . ']', $js); $js = str_replace ('AI_VIEWPORT_NAMES', base64_encode ('["' . implode ('","', $ai_wp_data [AI_VIEWPORT_NAMES]) . '"]'), $js); } // Deprecated $js = str_replace ('AI_BLOCK_CLASS_NAME', get_block_class_name (true), $js); if (function_exists ('ai_replace_js_data_2')) ai_replace_js_data_2 ($js); else { $js = str_replace ('AI_ADB_CONTENT_CSS_BEGIN_CLASS', 'wp-slider0-pre90', $js); $js = str_replace ('AI_ADB_CONTENT_CSS_END_CLASS', 'wp-slider1-pre91', $js); $js = str_replace ('AI_ADB_CONTENT_DELETE_BEGIN_CLASS', 'wp-slider2-pre92', $js); $js = str_replace ('AI_ADB_CONTENT_DELETE_END_CLASS', 'wp-slider3-pre93', $js); $js = str_replace ('AI_ADB_CONTENT_REPLACE_BEGIN_CLASS', 'wp-slider4-pre94', $js); $js = str_replace ('AI_ADB_CONTENT_REPLACE_END_CLASS', 'wp-slider5-pre95', $js); $js = str_replace ('ai-adb-url', AD_INSERTER_PLUGIN_URL . 'js/', $js); } return $js; } function ai_adb_code () { return ai_get_js ('ai-adb', false); } //function ai_ao_override_js_replacetag ($replacetag) { // return array ("<span ai-ao></span>","replace"); //} function ai_adb_external_scripts () { $code = ''; // if (!defined ('AI_ADB_NO_DOUBLECLICK_NET')) { // $code .= '<object id="ai-adb-dblclk" data="https://securepubads.g.doubleclick.net/tag/js/gpt.js" style="position:absolute; z-index: -100; top: -1000px; left: -1000px; visibility: hidden;"></object>' . "\n"; // } if (!defined ('AI_ADB_NO_GOOGLE_ANALYTICS')) { $code .= '<object id="ai-adb-ga" data="https://www.google-analytics.com/analytics.js" style="position:absolute; z-index: -100; top: -1000px; left: -1000px; visibility: hidden;"></object>' . "\n"; } if (!defined ('AI_ADB_NO_MEDIA_NET')) { $code .= '<object id="ai-adb-mn" data="//contextual.media.net/dmedianet.js" style="position:absolute; z-index: -100; top: -1000px; left: -1000px; visibility: hidden;"></object>' . "\n"; } // if (!defined ('AI_ADB_NO_AMAZON-ADSYSTEM')) { // $code .= '<object id="ai-adb-am" data="https://z-na.amazon-adsystem.com/widgets/onejs" style="position:absolute; z-index: -100; top: -1000px; left: -1000px; visibility: hidden;"></object>' . "\n"; // } if (!defined ('AI_ADB_NO_EZOIC_CMP')) { $code .= '<object id="ai-adb-ez" data="https://g.ezodn.com/cmp/v2/v.js" style="position:absolute; z-index: -100; top: -1000px; left: -1000px; visibility: hidden;"></object>' . "\n"; } if (!defined ('AI_ADB_NO_QUANT')) { $code .= '<object id="ai-adb-qu" data="https://secure.quantserve.com/quant.js" style="position:absolute; z-index: -100; top: -1000px; left: -1000px; visibility: hidden;"></object>' . "\n"; } return $code; } //function ai_replace_prefix ($js_code) { // if (!defined ('AI_ADB_PREFIX')) { // $seed = date ('Y-m-d H'); // $key = $seed.'AI_'; // if (defined ('NONCE_KEY')) { // $key .= NONCE_KEY; // } // if (defined ('AUTH_KEY')) { // $key .= AUTH_KEY; // $auth_key = $seed.AUTH_KEY; // } else $auth_key = $seed.'#AI_'; // define ('AI_ADB_PREFIX', substr (substr (preg_replace ("/[^A-Za-z]+/", '', strtolower (md5 ($seed.$auth_key))), 0, 4) . preg_replace ("/[^A-Za-z0-9]+/", '', strtolower (md5 ($seed.$key))), 0, 8) . '_'); // } //// return preg_replace ("/ai_/", AI_ADB_PREFIX, $js_code); // return preg_replace ("/ai_adb/", AI_ADB_PREFIX, $js_code); //} function add_footer_inline_scripts () { global $ai_wp_data, $wp_version; if (get_disable_js_code ()) return; $adb_code = defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION && $ai_wp_data [AI_ADB_DETECTION] && !isset ($ai_wp_data [AI_ADB_SHORTCODE_DISABLED]) && !$ai_wp_data [AI_WP_AMP_PAGE]; if ($adb_code) { if (function_exists ('add_footer_inline_scripts_1')) add_footer_inline_scripts_1 (); else { echo '<!-- Code for ad blocking detection -->', "\n"; echo '<!--noptimize-->', "\n"; if (get_adb_external_scripts ()) { echo ai_adb_external_scripts (); } if (!defined ('AI_ADB_NO_BANNER_AD')) { echo '<div id="banner-advert-container" class="ad-inserter infolinks-ad" style="position:absolute; z-index: -10; height: 1px; width: 1px; top: -100px; left: -100px;"><img id="adsense" class="SponsorAds adsense" src="', AD_INSERTER_PLUGIN_IMAGES_URL, 'ads.png" width="1" height="1" alt="pixel"></div>', "\n"; } if (!defined ('AI_ADB_NO_ADS_JS')) { echo '<script async id="ai-adb-ads" src="', plugins_url ('js/ads.js', __FILE__ ), "?ver=", AD_INSERTER_VERSION, '"></script>', "\n"; } if (!defined ('AI_ADB_NO_SPONSORS_JS')) { echo '<script async id="ai-adb-sponsors" src="', plugins_url ('js/sponsors.js', __FILE__ ), "?ver=", AD_INSERTER_VERSION, '"></script>', "\n"; } if (!defined ('AI_ADB_NO_BANNER_JS')) { echo '<script async id="ai-adb-banner" src="', plugins_url ('js/banner.js', __FILE__ ), "?ver=", AD_INSERTER_VERSION, '"></script>', "\n"; } if (!defined ('AI_ADB_NO_300x250_JS')) { echo '<script async id="ai-adb-300x250" src="', plugins_url ('js/300x250.js', __FILE__ ), "?ver=", AD_INSERTER_VERSION, '"></script>', "\n"; } echo '<!--/noptimize-->', "\n"; echo '<!-- Code for ad blocking detection END -->', "\n"; } } // Use updated flags ai_set_footer_inline_scripts (); $inline_js = ai_inline_js (); if ($ai_wp_data [AI_FOOTER_INLINE_SCRIPTS]) { if (!$inline_js) { echo '<!--noptimize-->', "\n"; } echo "<script>\n"; $client_side_dynamic_blocks = get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_SHOW || get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_INSERT; $wait_for_jquery = get_wait_for_jquery () && !$ai_wp_data [AI_WP_AMP_PAGE]; ob_start (); if ($ai_wp_data [AI_FRONTEND_JS_DEBUGGING]) { $js_code = ""; if (function_exists ('add_footer_inline_scripts_3')) { $js_code .= add_footer_inline_scripts_3 ($js_code); } $js_code .= "ai_debugging = true;\n"; echo $js_code; } if ($client_side_dynamic_blocks || $ai_wp_data [AI_CLIENT_SIDE_DETECTION] || $ai_wp_data [AI_CLIENT_SIDE_INSERTION] || isset ($ai_wp_data [AI_CLIENT_SIDE_ROTATION]) || $ai_wp_data [AI_CLIENT_SIDE_DETECTION] || $inline_js && ($ai_wp_data [AI_CLOSE_BUTTONS] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) || $ai_wp_data [AI_PARALLAX] || $inline_js && $ai_wp_data [AI_CHECK_BLOCK] || $ai_wp_data [AI_LAZY_LOADING] || $inline_js && ($ai_wp_data [AI_TRACKING] && !isset ($ai_wp_data [AI_TRACKING_SHORTCODE_DISABLED])) || $adb_code ) { echo ai_get_js ('ai-base64'); } if ($adb_code) { if (get_adb_action () == AI_ADB_ACTION_MESSAGE && /*get_undismissible_message ()*/ !defined ('AI_ADB_NO_JS_CHECK')) { echo ai_get_js ('ai-adb-try'); // Prevent replacing prefix // echo '[[ai-adb-try]]'; } } echo ai_front_translations_code (); // Wait for jQuery if ($wait_for_jquery && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { $jquery_ready_code = explode ("AI_JS_CODE=1", ai_get_js ('ai-wait-jquery', false)); echo $jquery_ready_code [0]; } if ($ai_wp_data [AI_STICKY_WIDGETS] && get_sticky_widget_mode() == AI_STICKY_WIDGET_MODE_JS) { if ($inline_js) { echo ai_get_js ('ResizeSensor'); echo ai_get_js ('theia-sticky-sidebar'); } } if ($ai_wp_data [AI_STICKY_WIDGETS] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { echo ai_get_js ('ai-sidebar-data'); if ($inline_js) { echo ai_get_js ('ai-sidebar'); } } if (($ai_wp_data [AI_CLOSE_BUTTONS] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) || $ai_wp_data [AI_CHECK_BLOCK] || ($ai_wp_data [AI_TRACKING] && !isset ($ai_wp_data [AI_TRACKING_SHORTCODE_DISABLED])) || $adb_code || $client_side_dynamic_blocks || $ai_wp_data [AI_CLIENT_SIDE_DETECTION] || $ai_wp_data [AI_CLIENT_SIDE_INSERTION]) { echo ai_get_js ('ai-cookie-data'); if ($inline_js) { echo ai_get_js ('ai-cookie', false); } } if ($ai_wp_data [AI_CLIENT_SIDE_FILTER_CHECKS]) { echo ai_get_js ('ai-filter-data'); if ($inline_js) { echo ai_get_js ('ai-filter', false); } } if (($ai_wp_data [AI_CLIENT_SIDE_INSERTION] || $ai_wp_data [AI_CHECK_BLOCK])) { echo ai_get_js ('ai-insert-data'); if ($inline_js) { echo ai_get_js ('ai-insert', false); } } if (function_exists ('add_footer_inline_scripts_2') && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { if ($ai_wp_data [AI_LAZY_LOADING]) { echo ai_get_js ('ai-load-data'); if ($inline_js) { echo ai_get_js ('ai-load'); } } if ($ai_wp_data [AI_STICK_TO_THE_CONTENT] || $ai_wp_data [AI_ANIMATION]) { echo ai_get_js ('ai-sticky-data'); if ($inline_js) { echo ai_get_js ('ai-sticky'); } } } if (function_exists ('add_footer_inline_scripts_2') && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { if ($ai_wp_data [AI_PARALLAX]) { if ($inline_js) { echo ai_get_js ('ai-parallax'); } } } if ($client_side_dynamic_blocks || isset ($ai_wp_data [AI_CLIENT_SIDE_ROTATION])) { echo ai_get_js ('ai-rotation-data'); if ($inline_js) { echo ai_get_js ('ai-rotation'); } } // VIEWPORT separators or CHECK viewport if ($client_side_dynamic_blocks || $ai_wp_data [AI_CLIENT_SIDE_DETECTION] || $ai_wp_data [AI_CLIENT_SIDE_INSERTION] || $adb_code) { if ($inline_js) { echo ai_get_js ('ai-mobile-detect'); } echo ai_get_js ('ai-lists-data'); if ($inline_js) { echo ai_get_js ('ai-lists'); } } if ($ai_wp_data [AI_CLOSE_BUTTONS] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { if ($inline_js) { echo ai_get_js ('ai-close'); } } if ($ai_wp_data [AI_HTML_ELEMENT_SELECTION]) { echo ai_get_js ('ai-select-data'); if ($inline_js) { echo ai_get_js ('ai-select'); } } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) != 0) { if (defined ('AI_ADSENSE_OVERLAY') && !(isset ($_GET ["hide-debug-labels"]) && $_GET ["hide-debug-labels"] == 1)) { echo ai_get_js ('ai-ads-data'); if ($inline_js) { echo ai_get_js ('ai-ads'); echo ai_get_js ('ai-auto-ads', false); } } } // Always inline if ($adb_code) { if (!function_exists ('add_footer_inline_scripts_2')) { echo ai_get_js ('ai-adb-data'); // echo ai_replace_js_data (ai_adb_code ()); echo ai_replace_js_data (ai_adb_code (), false); } } if (function_exists ('add_footer_inline_scripts_2')) { add_footer_inline_scripts_2 (); } if ($ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] != '') { $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] = ai_get_js ('ai-errors', false) . $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY]; if ($ai_wp_data [AI_FRONTEND_JS_DEBUGGING]) { $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] = " var ai_debug = typeof ai_debugging !== 'undefined'; if (typeof ai_debugging !== 'undefined') console.log ('AI DOM READY JS CODE RUN'); " . $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] . "if (typeof ai_debugging !== 'undefined') console.log ('AI DOM READY JS CODE END'); "; } echo ai_js_dom_ready ("\n".$ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY], false); } echo ("\nai_js_code = true;"); // Wait for jQuery - for iframe pages it is always loaded if ($wait_for_jquery && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { global $wp_scripts; if (isset ($wp_scripts->registered ['jquery']->ver)) { $ver = $wp_scripts->registered ['jquery']->ver; } else { $ver = $wp_version; } echo str_replace (array ( 'AI_JS_JQUERY0', 'AI_JS_JQUERY1', // "AI_JS_CODE=2" ), array ( includes_url ('js/jquery/jquery.min.js') . '?ver=' . $ver, includes_url ('js/jquery/jquery-migrate.min.js') . '?ver=' . $wp_version, // trim (ai_front_translations_code ()) ), $jquery_ready_code [1]); } $footer_js_code = ob_get_clean (); if (function_exists ('check_footer_inline_scripts')) { $footer_js_code = check_footer_inline_scripts ($footer_js_code); } echo $footer_js_code; echo "\n</script>\n"; if (!$inline_js) { echo '<!--/noptimize-->', "\n"; } } if (!$inline_js) { if ($ai_wp_data [AI_FRONTEND_JS_DEBUGGING] || !file_exists (AD_INSERTER_PLUGIN_DIR."js/ai-functions.min.js")) { $script = 'ai-functions.js'; } else $script = 'ai-functions.min.js'; echo '<script async id="ai-functions" src="', plugins_url ('js/' . $script, __FILE__ ), "?ver=", AD_INSERTER_VERSION . ($ai_wp_data [AI_FRONTEND_JS_DEBUGGING] ? '-'.time () : ''), '"></script>', "\n"; } } function ai_admin_notice_hook () { global $current_screen, $ai_db_options, $ai_wp_data, $ai_db_options_extract; global $ai_settings_page, $hook_suffix; // $sidebar_widgets = wp_get_sidebars_widgets(); // $sidebars_with_deprecated_widgets = array (); // foreach ($sidebar_widgets as $sidebar_widget_index => $sidebar_widget) { // if (is_array ($sidebar_widget)) // foreach ($sidebar_widget as $widget) { // if (preg_match ("/ai_widget([\d]+)/", $widget, $widget_number)) { // if (isset ($widget_number [1]) && is_numeric ($widget_number [1])) { // $is_widget = $ai_db_options [$widget_number [1]][AI_OPTION_AUTOMATIC_INSERTION] == AD_SELECT_WIDGET; // } else $is_widget = false; // $sidebar_name = $GLOBALS ['wp_registered_sidebars'][$sidebar_widget_index]['name']; // if ($is_widget && $sidebar_name != "") // $sidebars_with_deprecated_widgets [$sidebar_widget_index] = $sidebar_name; // } // } // } // if (!empty ($sidebars_with_deprecated_widgets)) { // echo "<div class='notice notice-warning'><p><strong>Warning</strong>: You are using deprecated Ad Inserter widgets in the following sidebars: ", // implode (", ", $sidebars_with_deprecated_widgets), // ". Please replace them with the new 'Ad Inserter' code block widget. See <a href='https://wordpress.org/plugins/ad-inserter/faq/' target='_blank'>FAQ</a> for details.</p></div>"; // } if (function_exists ('ai_admin_notices')) ai_admin_notices (); else { if (/*$hook_suffix == $ai_settings_page &&*/ is_super_admin () && !wp_is_mobile () && isset ($ai_wp_data [AI_DAYS_SINCE_INSTAL])) { if (isset ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) && is_string ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) && strlen ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) != 0) { $used_blocks = count (unserialize ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS])); } else $used_blocks = 0; $notice_option = get_option ('ai-notice-review'); if ($notice_option === false && $ai_wp_data [AI_DAYS_SINCE_INSTAL] > 20) $notice_option = 'later'; if (($notice_option === false && $used_blocks >= 2 && $ai_wp_data [AI_DAYS_SINCE_INSTAL] > 2) || ($notice_option == 'later' && $used_blocks >= 2 && $ai_wp_data [AI_DAYS_SINCE_INSTAL] > 20)) { if ($notice_option == 'later') { // Translators: 1: number of blocks, 2: Ad Inserter $message = sprintf (_n('Hey, you are now using %1$s %2$s block.', 'Hey, you are now using %1$s %2$s blocks.', $used_blocks, 'ad-inserter'), "<strong>{$used_blocks}</strong>", "<strong>Ad Inserter</strong>"); $option = '<div class="ai-notice-text-button ai-notice-dismiss" data-notice="no"> <button class="button-primary ai-notice-dismiss" data-notice="no"> <a href="https://adinserter.pro/contact?ref=notice#help" class="ai-notice-dismiss" target="_blank" data-notice="no">' . __("Please help me to solve a problem first", "ad-inserter") . '</a> </button> </div><div class="ai-notice-text-button ai-notice-dismiss" data-notice="no"> <button class="button-primary ai-notice-dismiss" data-notice="no"> ' . __("Maybe later", "ad-inserter") . ' </button> </div>'; } else { // Translators: %s: Ad Inserter $message = sprintf (__("Hey, you are using %s and I hope you're happy with it.", 'ad-inserter'), '<strong>Ad Inserter</strong>'); $option = '<div class="ai-notice-text-button ai-notice-dismiss" data-notice="later"> <button class="button-primary ai-notice-dismiss" data-notice="later"> <a href="https://adinserter.pro/contact?ref=notice#help" class="ai-notice-dismiss" target="_blank" data-notice="later">' . __("OK, but please help me with the settings first", "ad-inserter") . '</a> </button> </div>'; } ?> <div class="notice notice-info ai-notice ai-no-phone" style="display: none;" data-notice="review" data-value="<?php echo base64_encode (wp_create_nonce ("adinserter_data")); ?>" nonce="<?php echo wp_create_nonce ("adinserter_data"); ?>" > <div class="ai-notice-element"> <img src="<?php echo AD_INSERTER_PLUGIN_IMAGES_URL; ?>icon-50x50.jpg" style="width: 50px; margin: 5px 10px 0px 10px;" /> </div> <div class="ai-notice-element" style="width: 100%; padding: 0 10px 0;"> <p><?php echo $message, ' '; _e("Please take a moment to rate the plugin. When you rate it with 5 stars it's like saying 'Thank you'. Somebody will be happy.", 'ad-inserter'); echo '<br />'; _e("Positive reviews are a great incentive to fix bugs and to add new features for better monetization of your website.", 'ad-inserter'); ?></p> </div> <div class="ai-notice-element ai-notice-buttons last"> <div class="ai-notice-text-button ai-notice-dismiss" data-notice="yes"> <button class="button-primary ai-notice-dismiss" data-notice="yes"> <a href="https://wordpress.org/support/plugin/ad-inserter/reviews/?filter=5#new-post" class="ai-notice-dismiss" target="_blank" data-notice="yes"><?php _e ("Sure", 'ad-inserter'); ?></a> </button> </div> <?php echo $option; ?> </div> </div> <?php } } } if ($hook_suffix == $ai_settings_page) { if (ai_ampforwp_check_disabled ()) { echo '<div class="notice notice-warning is-dismissible" style="margin: 5px 15px 2px 0px;"><p>', /* translators: 1: AMPforWP Plugin Manager, 2: Ad Inserter */ sprintf (__('Warning: %1$s %3$s disabled %4$s %2$s on AMP pages.', 'ad-inserter'), 'AMPforWP Plugin Manager', AD_INSERTER_NAME, '<a href="https://adinserter.pro/documentation/amp-pages#ampforwp" target="_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>'), '</p></div>'; } if (version_compare (phpversion (), "5.6", "<")) { echo '<div class="notice notice-warning is-dismissible" style="margin: 5px 15px 2px 0px;"><p>', /* translators: 1: Ad Inserter, 2, 3: HTML tags */ sprintf (__('Warning: %1$s requires PHP 5.6 or newer. %2$s Please update! %3$s', 'ad-inserter'), AD_INSERTER_NAME, '<a href="https://wordpress.org/support/update-php/" target="_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>'), '</p></div>'; } if (defined ('AI_SETTINGS_ERROR')) { echo '<div class="notice notice-error is-dismissible" style="margin: 5px 15px 2px 0px;"><p>', /* translators: 1: Ad Inserter, 2, 3: HTML tags */ _e ('Error: plugin settings corrupt', 'ad-inserter'), '</p></div>'; } } } function ai_plugin_action_links ($links) { if (is_multisite() && !is_main_site () && !multisite_settings_page_enabled ()) return $links; $settings_page = get_menu_position () == AI_SETTINGS_SUBMENU ? 'options-general.php?page=ad-inserter.php' : 'admin.php?page=ad-inserter.php'; $settings_link = '<a href="'.admin_url ($settings_page).'">'._x('Settings', 'Menu item', 'ad-inserter') . '</a>'; array_unshift ($links, $settings_link); return $links; } function ai_after_plugin_row_1 ($plugin_file, $plugin_data, $status) { global $ad_inserter_globals; if (ai_ampforwp_check_disabled ()) { $plugins_css = "\n" . '<style> .plugins tr.active[data-slug=ad-inserter] th, .plugins tr.active[data-slug=ad-inserter] td {box-shadow: none;} </style>'."\n"; echo $plugins_css; echo '<tr class="plugin-update-tr active'; if (isset ($plugin_data ['update']) && $plugin_data ['update']) echo ' update'; echo '"><td colspan="4" class="plugin-update colspanchange ai-message"><div class="update-message notice inline notice-warning notice-alt"><p> ', /* translators: 1: AMPforWP Plugin Manager, 2: Ad Inserter, 3, 4: HTML tags */ sprintf (__('Warning: %1$s %3$s disabled %4$s %2$s on AMP pages.', 'ad-inserter'), 'AMPforWP Plugin Manager', AD_INSERTER_NAME, '<a href="https://adinserter.pro/documentation/amp-pages#ampforwp" target="_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>'), '</p></div></td></tr>'; } } function ai_set_plugin_meta ($links, $file) { if ($file == plugin_basename (__FILE__)) { if (is_multisite() && !is_main_site ()) { foreach ($links as $index => $link) { if (stripos ($link, "update") !== false) unset ($links [$index]); } } if (!is_multisite () || is_main_site ()) { $settings_page = get_menu_position () == AI_SETTINGS_SUBMENU ? 'options-general.php?page=ad-inserter.php' : 'admin.php?page=ad-inserter.php'; $inserted = '<a href="'.admin_url ($settings_page . '&ai-safe-mode').'" title="'.__('Load settings page in safe mode to avoid collisions with other plugins or theme', 'ad-inserter').'">' . __('Safe mode', 'ad-inserter') . '</a>'; array_splice ($links, 4, 0, $inserted); if (function_exists ('ai_set_plugin_meta_2')) { ai_set_plugin_meta_2 ($links); } elseif (file_exists (AD_INSERTER_PLUGIN_DIR.'includes/js/ai-load.js')) { $inserted = 'WP'; array_splice ($links, 1, 0, $inserted); } } } return $links; } function current_user_role ($user_role_name = "") { $role_values = array ("super-admin" => 6, "administrator" => 5, "editor" => 4, "author" => 3, "contributor" => 2, "subscriber" => 1); global $wp_roles; if ($user_role_name != "") { return isset ($role_values [$user_role_name]) ? $role_values [$user_role_name] : 0; } $user_role = 0; $current_user = wp_get_current_user(); $roles = $current_user->roles; // Fix for empty roles if (isset ($current_user->caps) && count ($current_user->caps) != 0) { $caps = $current_user->caps; foreach ($role_values as $role_name => $role_value) { if (isset ($caps [$role_name]) && $caps [$role_name]) $roles []= $role_name; } } foreach ($roles as $role) { $current_user_role = isset ($role_values [$role]) ? $role_values [$role] : 0; if ($current_user_role > $user_role) $user_role = $current_user_role; } return $user_role; } function ai_current_user_role_ok () { return current_user_role () >= current_user_role (get_minimum_user_role ()); } function ai_add_meta_box_hook() { global $ai_wp_data, $block_object; if (!ai_current_user_role_ok ()) return; if (is_multisite() && !is_main_site () && !multisite_exceptions_enabled ()) return; $exceptions_posts = false; $exceptions_pages = false; for ($block = 1; $block <= 96; $block ++) { $obj = $block_object [$block]; if ($obj->get_exceptions_enabled ()) { if ($obj->get_display_settings_post ()) { $exceptions_posts = true; } if ($obj->get_display_settings_page ()) { $exceptions_pages = true; } if ($exceptions_posts && $exceptions_pages) { break; } } } $screens = array (); if ($exceptions_posts) { $screens []= 'post'; } if ($exceptions_pages) { $screens []= 'page'; } if (empty ($screens)) return; $args = array ( 'public' => true, '_builtin' => false ); $custom_post_types = get_post_types ($args, 'names', 'and'); $screens = array_values (array_merge ($screens, $custom_post_types)); foreach ($screens as $screen) { add_meta_box ( 'adinserter_sectionid', // translators: %s: Ad Inserter sprintf (_x('%s Individual Exceptions', 'Meta box name', 'ad-inserter'), AD_INSERTER_NAME), 'ai_meta_box_callback', $screen ); } } function ai_meta_box_callback ($post) { global $block_object; // Add an nonce field so we can check for it later. wp_nonce_field ('adinserter_meta_box', 'adinserter_meta_box_nonce'); $post_type = get_post_type ($post); $post_type_object = get_post_type_object ($post_type); $page_type_name = $post_type_object->labels->name; $page_type_name1 = $post_type_object->labels->singular_name; /* * Use get_post_meta() to retrieve an existing value * from the database and use the value for the form. */ $post_meta = get_post_meta ($post->ID, '_adinserter_block_exceptions', true); $selected_blocks = explode (",", $post_meta); ob_start (); echo '<table>'; echo '<thead style="font-weight: bold;">'; echo ' <td>', __('Block', 'ad-inserter') . '</td>'; echo ' <td style="padding: 0 10px 0 10px;">', __('Name', 'ad-inserter') . '</td>'; // echo ' <td style="padding: 0 10px 0 10px;">', __('Automatic insertion', 'ad-inserter') . '</td>'; echo ' <td style="padding: 0 10px 0 10px;">', __('Default insertion', 'ad-inserter') . '</td>'; // translators: For this post or page if ($post_type == 'page') echo ' <td style="padding: 0 10px 0 10px;">', _x('For this', 'Page', 'ad-inserter'), ' ', $page_type_name1, '</td>'; else echo ' <td style="padding: 0 10px 0 10px;">', _x('For this', 'Post', 'ad-inserter'), ' ', $page_type_name1, '</td>'; echo '</thead>'; echo '<tbody>'; $rows = 0; for ($block = 1; $block <= 96; $block ++) { $obj = $block_object [$block]; $exceptions_enabled = $obj->get_exceptions_enabled (); $exceptions_function = $obj->get_exceptions_function (); if ($post_type == 'page') { $page_name1 = _x('pages', 'Enabled/disabled on all', 'ad-inserter'); $general_enabled = $obj->get_display_settings_page(); } else { $page_name1 = _x('posts', 'Enabled/disabled on all', 'ad-inserter'); $general_enabled = $obj->get_display_settings_post(); } if (!$general_enabled || !$exceptions_enabled) continue; $individual_option_enabled = $general_enabled && $exceptions_enabled; $individual_text_enabled = $exceptions_function == AI_DEFAULT_INSERTION_ENABLED; if ($rows % 2 != 0) $background = "#F0F0F0"; else $background = "#FFF"; echo '<tr style="background: ', $background, ';">'; echo ' <td style="text-align: right; padding: 0 10px 0 0;">', $obj->number, '</td>'; $settings_page = get_menu_position () == AI_SETTINGS_SUBMENU ? 'options-general.php?page=ad-inserter.php' : 'admin.php?page=ad-inserter.php'; echo ' <td style="padding: 0 10px 0 10px;"><a href="', admin_url ($settings_page), '&start=' . (intval (($block - 1) / 16) * 16 + 1), '&tab=', $block, '" style="text-decoration: none; box-shadow: 0 0 0;" target="_blank">', $obj->get_ad_name(), '</a></td>'; // echo ' <td style="padding: 0 10px 0 10px;">', $obj->get_automatic_insertion_text(), '</td>'; echo ' <td style="padding: 0 10px 0 10px; text-align: left;">'; if ($individual_option_enabled) { if ($individual_text_enabled) echo __('Enabled', 'ad-inserter'); else echo __('Disabled', 'ad-inserter'); } else { if ($general_enabled) echo __('No individual exceptions', 'ad-inserter'); else // translators: Not enabled for pages or posts echo __('Not enabled for', 'ad-inserter') . ' ', $page_name1; } echo ' </td>'; echo ' <td style="padding: 0 10px 0 10px; text-align: left;">'; if ($individual_option_enabled) { echo '<input type="checkbox" style="border-radius: 5px;" name="adinserter_selected_block_', $block, '" id="ai-selected-block-', $block, '" value="1"', in_array ($block, $selected_blocks) ? ' checked': '', ' />'; echo '<label for="ai-selected-block-', $block, '">'; if (!$individual_text_enabled) echo __('Enabled', 'ad-inserter'); else echo __('Disabled', 'ad-inserter'); echo '</label>'; } else { if (in_array ($block, $selected_blocks)) { echo '<span style="margin-left: 6px;">•</span>'; } } echo ' </td>'; echo '</tr>'; $rows ++; } echo '</tbody>'; echo '</table>'; $exceptions_table = ob_get_clean (); if ($rows == 0) { // translators: No individual exceptions enabled for pages or posts echo '<p><strong>', __('No block has individual exceptions enabled', 'ad-inserter'), '</strong></p>'; } else echo $exceptions_table; $settings_page = get_menu_position () == AI_SETTINGS_SUBMENU ? 'options-general.php?page=ad-inserter.php' : 'admin.php?page=ad-inserter.php'; // translators: 1: Ad Inserter Settings (page), 2: Tag / Archive pages echo '<p>', //; sprintf (__('Default insertion can be configured for each block on %1$s page - button next to %2$s checkbox.', 'ad-inserter'), // translators: %s: Ad Inserter '<a href="' . admin_url ($settings_page) . '" style="text-decoration: none; box-shadow: 0 0 0;" target="_blank">' . sprintf (__('%s Settings', 'ad-inserter'), AD_INSERTER_NAME) . '</a>', '<strong>'.__('Tag / Archive pages', 'ad-inserter').'</strong>'), '<br />', __('When individual exceptions for a block are enabled, a checkbox will be listed here to change default insertion for this post or page.', 'ad-inserter'), '<br />', __('This way you can individually enable or disable blocks on specific posts or pages.', 'ad-inserter'), '<br />'; printf (__('For more information check page %s', 'ad-inserter'), // translators: Ad Inserter Exceptions documentation page '<a href="https://adinserter.pro/documentation/individual-post-and-page-exceptions" style="text-decoration: none; box-shadow: 0 0 0;" target="_blank">Ad Inserter ' . __('Individual Exceptions', 'ad-inserter') . '</a>.</p>'); } function ai_save_meta_box_data_hook ($post_id) { // Check if our nonce is set. if (!isset ($_POST ['adinserter_meta_box_nonce'])) return; // Verify that the nonce is valid. if (!wp_verify_nonce ($_POST ['adinserter_meta_box_nonce'], 'adinserter_meta_box')) return; // If this is an autosave, our form has not been submitted, so we don't want to do anything. if (defined ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; // Check the user's permissions. if (isset ($_POST ['post_type'])) { if ($_POST ['post_type'] == 'page') { if (!current_user_can ('edit_page', $post_id)) return; } else { if (!current_user_can ('edit_post', $post_id)) return; } } /* OK, it's safe for us to save the data now. */ $selected = array (); for ($block = 1; $block <= 96; $block ++) { $option_name = 'adinserter_selected_block_' . $block; if (isset ($_POST [$option_name]) && $_POST [$option_name]) $selected []= $block; } if (!empty ($selected)) { // Update the meta field in the database. update_post_meta ($post_id, '_adinserter_block_exceptions', implode (",", $selected)); } else delete_post_meta ($post_id, '_adinserter_block_exceptions'); } function ai_widgets_init_hook () { if (is_multisite() && !is_main_site () && !multisite_widgets_enabled ()) return; register_widget ('ai_widget'); // AI widget PHP class name } function get_page_type_debug_info ($text = '') { global $ai_wp_data; switch ($ai_wp_data [AI_WP_PAGE_TYPE]) { case AI_PT_STATIC: $page_type = __('STATIC PAGE', 'ad-inserter'); break; case AI_PT_POST: $page_type = __('POST', 'ad-inserter'); break; case AI_PT_HOMEPAGE: $page_type = __('HOMEPAGE', 'ad-inserter'); break; case AI_PT_CATEGORY: $page_type = __('CATEGORY PAGE', 'ad-inserter'); break; case AI_PT_SEARCH: $page_type = __('SEARCH PAGE', 'ad-inserter'); break; case AI_PT_ARCHIVE: $page_type = __('ARCHIVE PAGE', 'ad-inserter'); break; case AI_PT_404: $page_type = __('ERROR 404 PAGE', 'ad-inserter'); break; case AI_PT_AJAX: $page_type = __('AJAX CALL', 'ad-inserter'); break; case AI_PT_REST: $page_type = __('REST CALL', 'ad-inserter'); break; default: $page_type = __('UNKNOWN PAGE TYPE', 'ad-inserter'); break; } $class = AI_DEBUG_PAGE_TYPE_CLASS; $page_type = "<section class='$class'>".$text.$page_type."</section>"; return $page_type; } function get_adb_status_debug_info () { global $ai_wp_data; $page_type = ''; if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { if ($ai_wp_data [AI_ADB_DETECTION]) { $title = __('Click to delete ad blocking detection cokies', 'ad-inserter'); $status = __('AD BLOCKING STATUS UNKNOWN', 'ad-inserter'); $events = ''; if (isset ($_GET ['ai-debug-adb-events']) && $_GET ['ai-debug-adb-events']) { $events = "<span id='ai-adb-events'></span>"; } $page_type = "<section id='ai-adb-bar' class='".AI_DEBUG_STATUS_CLASS.' '.AI_DEBUG_ADB_CLASS."' title='$title'><span id='ai-adb-status'>$status</span>$events</section>"; } } return $page_type; } function ai_header_noindex () { global $ai_wp_data; if ($ai_wp_data [AI_WP_DEBUGGING] != 0 || $ai_wp_data [AI_CODE_FOR_IFRAME]) { echo '<meta name="robots" content="noindex">'; if ($ai_wp_data [AI_WP_DEBUGGING] != 0) { echo ' <!-- ', AD_INSERTER_NAME, ' debugging enabled (', substr ('00000000' . strtoupper (decbin ($ai_wp_data [AI_WP_DEBUGGING])), - 8), ') -->'; } echo "\n"; } } function get_code_debug_block ($name, $message, $right_text, $code, $inserted_code, $javascript = false) { if (strpos ($code, 'enable_page_level_ads') !== false) // translators: %s: AdSense Auto Ads $message = sprintf (__('Code for %s detected - Code will automatically insert AdSense ads at optimal positions', 'ad-inserter') . ' ', '<a style="text-decoration: none; color: #fff; font-weight: bold; box-shadow: none;" href="https://adinserter.pro/documentation/adsense-ads#auto-ads" target="_blank">AdSense Auto Ads</a>'); $debug_script = new ai_block_labels ('ai-debug-script'); $debug_block_start = $debug_script->block_start (); $debug_block_start .= $debug_script->bar ($name, '', $message, $right_text); if ($javascript) $debug_block_start = str_replace (array ('"', "\n", "\r"), array ("'", "\\n", ''), $debug_block_start); $debug_block_end = $debug_script->block_end (); if ($javascript) $debug_block_end = str_replace (array ('"', "\n", "\r"), array ("'", "\\n", ''), $debug_block_end); $html_code = htmlspecialchars ($code); if ($javascript) $html_code = str_replace (array ("\n", "\r"), array ("\\n", ''), $html_code); $html_inserted_code = htmlspecialchars ($inserted_code); if ($javascript) $html_inserted_code = str_replace (array ("\n", "\r"), array ("\\n", ''), $html_inserted_code); return $debug_block_start . "<pre class='ai-debug-code ai-code-org'>" . $html_code . "</pre><pre class='ai-debug-code ai-code-inserted'>" . $html_inserted_code . "</pre><div style='clear: both;'></div>" . $debug_block_end; } function ai_http_header () { global $block_object, $ai_wp_data; $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_HTTP_HEADER; $obj = $block_object [AI_HEADER_OPTION_NAME]; $obj->clear_code_cache (); if ($obj->get_enable_manual ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_404 || $obj->get_enable_404()) { // Prevent group activation when processing code for HTTP headers $ai_wp_data [AI_NO_GROUP_ACTIVATION] = true; $processed_code = do_shortcode ($obj->ai_getCode ()); unset ($ai_wp_data [AI_NO_GROUP_ACTIVATION]); if (strpos ($processed_code, AD_HTTP_SEPARATOR) !== false) { $codes = explode (AD_HTTP_SEPARATOR, $processed_code); $processed_code = $codes [0]; } else $processed_code = ''; $header_lines = explode ("\n", $processed_code); foreach ($header_lines as $header_line) { if (trim ($header_line) != '' && strpos ($header_line, ':') !== false) { header (trim ($header_line)); } } } } } function ai_wp_head_hook () { global $block_object, $ai_wp_data, $ai_total_plugin_time/*, $ai_front_translations*/; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("HEAD HOOK START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } $ai_wp_data [AI_HEAD] = true; // $adb_code = defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION && $ai_wp_data [AI_ADB_DETECTION] && !isset ($ai_wp_data [AI_ADB_SHORTCODE_DISABLED]); if (defined ('AI_BUFFERING')) { if (get_output_buffering ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_AJAX && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { ai_buffering_start (); } } } if (!get_disable_js_code () && (get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0) && (($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_POSITIONS | AI_DEBUG_BLOCKS)) != 0 || (isset ($_GET [AI_URL_DEBUG_PROCESSING_FE]) && $_GET [AI_URL_DEBUG_PROCESSING_FE] != 0))) { echo '<!--noptimize-->', "\n"; // if ($adb_code) { // echo "<script>\n", ai_replace_prefix (ai_get_js ('ai-errors-head', false)), "</script>\n"; // } else { echo "<script>\n", ai_get_js ('ai-errors-head', false), "</script>\n"; // } echo '<!--/noptimize-->', "\n"; } $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_NONE; ai_header_noindex (); add_head_inline_styles (); $header_code = ''; $header = $block_object [AI_HEADER_OPTION_NAME]; if ($header->get_enable_manual ()) { if (!$header->get_debug_disable_insertion () && !get_disable_header_code ()) { if ($header->check_server_side_detection ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_404 || $header->get_enable_404()) { $processed_code = do_shortcode ($header->ai_getCode ()); if (strpos ($processed_code, AD_HTTP_SEPARATOR) !== false) { $codes = explode (AD_HTTP_SEPARATOR, $processed_code); $processed_code = ltrim ($codes [1]); } if (strpos ($processed_code, AD_AMP_SEPARATOR) !== false) { $codes = explode (AD_AMP_SEPARATOR, $processed_code); $processed_code = $codes [0]; } elseif ($ai_wp_data [AI_WP_AMP_PAGE]) $processed_code = ''; $header_code = $processed_code; echo $processed_code; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (strlen ($processed_code) != 0) ai_log ("HEAD CODE: " . strlen ($processed_code) . ' characters'); } } } } else { if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ('HEAD CODE DEBUG NO INSERTION'); } } } if (defined ('AI_BUFFERING')) { if (get_output_buffering () && !get_disable_header_code ()) { $ai_head_codes = "<!--[AI_HEAD_CODES]-->"; echo $ai_head_codes; // $header_code .= $ai_head_codes; // Don't count this code } } if (!$ai_wp_data [AI_CODE_FOR_IFRAME]) { if ($ai_wp_data [AI_WP_DEBUGGING] != 0 && isset ($_GET ['ai-debug-code']) && !defined ('AI_DEBUGGING_DEMO')) { if (is_numeric ($_GET ['ai-debug-code']) && $_GET ['ai-debug-code'] >= 1 && $_GET ['ai-debug-code'] <= 96) { $obj = $block_object [(int) $_GET ['ai-debug-code']]; $block_name = $obj->number . ' ' . $obj->get_ad_name (); if (!$header->get_debug_disable_insertion ()) { $ai_wp_debugging = $ai_wp_data [AI_WP_DEBUGGING]; $ai_wp_data [AI_WP_DEBUGGING] = 0; $code_for_insertion = $obj->get_code_for_insertion (); $ai_wp_data [AI_WP_DEBUGGING] = $ai_wp_debugging; } else $code_for_insertion = ''; // $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= " jQuery('body').prepend (\"" . get_code_debug_block (' ' . $block_name, '', __('Code for insertion', 'ad-inserter') . ' ' . strlen ($code_for_insertion) . ' ' . _n('character', 'characters', strlen ($code_for_insertion), 'ad-inserter') . ' ', $obj->ai_getCode (), $code_for_insertion, true) . "\"); $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= "document.querySelector ('body').insertAdjacentHTML ('afterbegin', \"" . get_code_debug_block (' ' . $block_name, '', __('Code for insertion', 'ad-inserter') . ' ' . strlen ($code_for_insertion) . ' ' . _n('character', 'characters', strlen ($code_for_insertion), 'ad-inserter') . ' ', $obj->ai_getCode (), $code_for_insertion, true) . "\"); "; } } if (!get_disable_js_code () && $ai_wp_data [AI_IFRAMES]) { echo "<script>\n", ai_get_js ('ai-iframes', false), "</script>\n"; } if (!ai_inline_js () /*&& $ai_wp_data [AI_IFRAMES]*/) { echo "<script>\n", ai_get_js ('ai-wait-functions', false), "</script>\n"; } if (!get_disable_js_code () && ($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_POSITIONS | AI_DEBUG_BLOCKS)) != 0) { // $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= ' setTimeout (function(){jQuery(\'body\').prepend ("' . get_page_type_debug_info () . '");}, 1); $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= 'setTimeout (function(){document.querySelector (\'body\').insertAdjacentHTML (\'afterbegin\', "' . get_page_type_debug_info () . '");}, 1); '; } if (!get_disable_header_code () && isset ($_GET ['ai-debug-code']) && !defined ('AI_DEBUGGING_DEMO')) { // $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= " jQuery('body').prepend (\"" . get_code_debug_block (' ' . __('Header code', 'ad-inserter') . ' ' . ($header->get_enable_manual () ? '' : ' ' . _x('DISABLED', 'Header code', 'ad-inserter')), '<head>...</head>', strlen ($header_code) . ' ' . _n('character inserted', 'characters inserted', strlen ($header_code), 'ad-inserter') . ' ', $header->ai_getCode (), $header_code, true) . "\"); $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= "document.querySelector ('body').insertAdjacentHTML ('afterbegin', \"" . get_code_debug_block (' ' . __('Header code', 'ad-inserter') . ' ' . ($header->get_enable_manual () ? '' : ' ' . _x('DISABLED', 'Header code', 'ad-inserter')), '<head>...</head>', strlen ($header_code) . ' ' . _n('character inserted', 'characters inserted', strlen ($header_code), 'ad-inserter') . ' ', $header->ai_getCode (), $header_code, true) . "\"); "; } } // After Header code info if (!$ai_wp_data [AI_CODE_FOR_IFRAME]) { if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { // No scripts on AMP pages if (($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_AD_BLOCKING_STATUS | AI_DEBUG_POSITIONS | AI_DEBUG_BLOCKS)) != 0 && $ai_wp_data [AI_ADB_DETECTION]) { // $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= " jQuery('body').prepend (\"" . get_adb_status_debug_info () . "\"); $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= "document.querySelector ('body').insertAdjacentHTML ('afterbegin', \"" . get_adb_status_debug_info () . "\"); "; } } if (($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_AD_BLOCKING_STATUS | AI_DEBUG_BLOCKS)) != 0) { // $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= " jQuery('body').prepend (\"<section id='ai-iab-tcf-bar' class='".AI_DEBUG_STATUS_CLASS."' style='cursor: pointer; display: none;' title='". __('Click to delete the cookie for the consents', 'ad-inserter') ."'><span id='ai-iab-tcf-status'>IAB TCF 2.0</span></section>\"); $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= "document.querySelector ('body').insertAdjacentHTML ('afterbegin', \"<section id='ai-iab-tcf-bar' class='".AI_DEBUG_STATUS_CLASS."' style='cursor: pointer; display: none;' title='". __('Click to delete the cookie for the consents', 'ad-inserter') ."'><span id='ai-iab-tcf-status'>IAB TCF 2.0</span></section>\"); "; if (!$ai_wp_data [AI_UNFILTERED_HTML]) { // $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= " jQuery('body').prepend (\"<section class='".AI_DEBUG_STATUS_CLASS." status-error'>".__('UNFILTERED HTML DISABLED', 'ad-inserter')."</section>\"); $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= "document.querySelector ('body').insertAdjacentHTML ('afterbegin', \"<section class='".AI_DEBUG_STATUS_CLASS." status-error'>".__('UNFILTERED HTML DISABLED', 'ad-inserter')."</section>\"); "; } } } // if (!get_disable_js_code () && $ai_wp_data [AI_CODE_FOR_IFRAME]) { // echo '<script>', "\n", ai_front_translations_code (), '</script>', "\n"; // } $ai_wp_data [AI_HEAD] = false; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("HEAD HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } function ai_amp_head_hook () { global $block_object, $ai_wp_data, $ai_total_plugin_time; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("AMP HEAD HOOK START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } $ai_wp_data [AI_HEAD] = true; if (defined ('AI_BUFFERING')) { if (get_output_buffering ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_AJAX) { ai_buffering_start (); } } } $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_NONE; ai_header_noindex (); $header = $block_object [AI_HEADER_OPTION_NAME]; if ($header->get_enable_manual ()) { if (!$header->get_debug_disable_insertion () && !get_disable_header_code ()) { if ($header->check_server_side_detection ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_404 || $header->get_enable_404()) { $processed_code = do_shortcode ($header->ai_getCode ()); if (strpos ($processed_code, AD_HTTP_SEPARATOR) !== false) { $codes = explode (AD_HTTP_SEPARATOR, $processed_code); $processed_code = ltrim ($codes [1]); } // ai_log ("ai_amp_head_hook "); if (strpos ($processed_code, AD_AMP_SEPARATOR) !== false) { $codes = explode (AD_AMP_SEPARATOR, $processed_code); $processed_code = ltrim ($codes [1]); echo $processed_code; // ai_log ("ai_amp_head_hook " . $processed_code); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (strlen ($processed_code) != 0) ai_log ("HEAD CODE: " . strlen ($processed_code) . ' bytes'); } } } } } } if (defined ('AI_BUFFERING')) { if (get_output_buffering () && !get_disable_header_code ()) { $ai_head_codes = "<!--[AI_HEAD_CODES]-->"; echo $ai_head_codes; } } $ai_wp_data [AI_HEAD] = false; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("AMP HEAD HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } function ai_front_translations_code () { global $ai_front_translations, $ai_wp_data; // if (get_disable_js_code () || (!$ai_wp_data [AI_HTML_ELEMENT_SELECTION] && $ai_wp_data [AI_WP_DEBUGGING] == 0)) return ''; // if (!$ai_wp_data [AI_HTML_ELEMENT_SELECTION] /*&& $ai_wp_data [AI_WP_DEBUGGING] == 0*/) return ''; $object_name = 'ai_front'; $l10n = $ai_front_translations; $code = '/* <![CDATA[ */ '; foreach ($l10n as $key => $value) { if (!is_scalar ($value)) continue; $l10n [$key] = html_entity_decode ((string) $value, ENT_QUOTES, 'UTF-8'); } // $code .= "var $object_name = " . wp_json_encode ($l10n) . ";\n"; $code .= "$object_name = " . wp_json_encode ($l10n) . ";\n"; $code .= '/* ]]> */ '; return ($code); } function ai_amp_css_hook () { global $ai_wp_data; if (get_disable_css_code ()) return; $ai_wp_data [AI_AMP_CSS] = 'AMP CSS HOOK'; if ($ai_wp_data [AI_CLIENT_SIDE_DETECTION] && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { $viewport_css = get_viewport_css (); $viewport_css = str_replace ('!important', '', $viewport_css); echo $viewport_css; } if (defined ('AI_AMP_HEADER_STYLES') && AI_AMP_HEADER_STYLES || $ai_wp_data [AI_WP_DEBUGGING] != 0) { if (defined ('AI_AMP_HEADER_STYLES') && AI_AMP_HEADER_STYLES) { if ($ai_wp_data [AI_WP_DEBUGGING] != 0) generate_debug_css_base (); echo get_alignment_css (); echo str_replace ('!important', '', ai_get_admin_toolbar_debugging_styles ()); echo ".ai-align-left * {margin: 0 auto 0 0; text-align: left;}\n"; echo ".ai-align-right * {margin: 0 0 0 auto; text-align: right;}\n"; echo ".ai-center * {margin: 0 auto; text-align: center; }\n"; } if ($ai_wp_data [AI_WP_DEBUGGING] != 0) generate_debug_css (); } } function ai_amp_css_hook_style () { echo "<style>\n"; ai_amp_css_hook (); echo "</style>\n"; } function ai_wp_footer_hook_end_buffering () { global $ai_wp_data, $ai_total_plugin_time; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("FOOTER HOOK TO END BUFFERING START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } if (defined ('AI_BUFFERING')) { if (get_output_buffering ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_AJAX && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { ai_buffering_end (); } } } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("FOOTER HOOK TO END BUFFERING END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } function ai_wp_footer_hook () { global $block_object, $ai_wp_data, $ad_inserter_globals, $ai_total_plugin_time; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("FOOTER HOOK START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } // if (defined ('AI_BUFFERING')) { // if (get_output_buffering ()) { // if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_AJAX && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { // ai_buffering_end (); // } // } // } if ($ai_wp_data [AI_DISABLE_CACHING]) ai_disable_caching (); $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_FOOTER; $footer_code = ''; if (function_exists ('add_footer_scripts')) { add_footer_scripts (); } $footer = $block_object [AI_FOOTER_OPTION_NAME]; $footer->clear_code_cache (); if ($footer->get_enable_manual ()) { if (!$footer->get_debug_disable_insertion () && !get_disable_footer_code ()) { if ($footer->check_server_side_detection ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_404 || $footer->get_enable_404()) { $processed_code = do_shortcode ($footer->ai_getCode ()); if (strpos ($processed_code, AD_AMP_SEPARATOR) !== false) { $codes = explode (AD_AMP_SEPARATOR, $processed_code); $processed_code = $codes [0]; } elseif ($ai_wp_data [AI_WP_AMP_PAGE]) $processed_code = ''; $footer_code = $processed_code; echo $processed_code; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (strlen ($processed_code) != 0) ai_log ("FOOTER CODE: " . strlen ($processed_code) . ' characters'); } } } } else { if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ('FOOTER CODE DEBUG NO INSERTION'); } } } if (!$ai_wp_data [AI_CODE_FOR_IFRAME]) { if (!get_disable_footer_code () && isset ($_GET ['ai-debug-code']) && !defined ('AI_DEBUGGING_DEMO')) { echo get_code_debug_block (' ' . __('Footer code', 'ad-inserter') . ' ' . ($footer->get_enable_manual () ? '' : ' ' . _x('DISABLED', 'Footer code', 'ad-inserter')), '...</body>', strlen ($footer_code).' ' . _n('character inserted', 'characters inserted', strlen ($footer_code), 'ad-inserter'), $footer->ai_getCode (), $footer_code); } if (!get_disable_js_code () && (get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0) && (($ai_wp_data [AI_WP_DEBUGGING] & (AI_DEBUG_POSITIONS | AI_DEBUG_BLOCKS)) != 0 || (isset ($_GET [AI_URL_DEBUG_PROCESSING_FE]) && $_GET [AI_URL_DEBUG_PROCESSING_FE] != 0))) { if (!$ai_wp_data [AI_UNFILTERED_HTML]) { echo "<section class='".AI_DEBUG_STATUS_CLASS." status-error'>".__('UNFILTERED HTML DISABLED', 'ad-inserter')."</section>\n"; } $class_0 = AI_DEBUG_STATUS_CLASS.' status-error'; $class_1 = AI_DEBUG_STATUS_CLASS.' status-ok'; $javascript_text = "<section class='ai-js-0 $class_0'>" . __('JAVASCRIPT NOT WORKING', 'ad-inserter') . "</section><section class='ai-js-1 $class_1' style='display: none;'>" . __('NO JAVASCRIPT ERRORS', 'ad-inserter') . "</section><section class='ai-js-2 $class_0' style='display: none;'>" . __('JAVASCRIPT ERRORS', 'ad-inserter') . "</section>"; $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] .= str_replace ('AI_HTML_CODE', $javascript_text, ai_get_js ('ai-errors-footer', false)); echo $javascript_text, "\n"; echo get_page_type_debug_info () , "\n"; // if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0 && isset ($_GET [AI_URL_DEBUG_PROCESSING_FE]) && $_GET [AI_URL_DEBUG_PROCESSING_FE] != 0) { // echo "\n<pre class='ai-processing-log'>\n\n"; // ai_write_debug_info (true); // echo "\n</pre>\n"; // } } } if (!(defined ('DOING_AJAX') && DOING_AJAX) || $ai_wp_data [AI_CODE_FOR_IFRAME]) { add_footer_inline_scripts (); if (function_exists ('ai_add_footer_html')) { ai_add_footer_html (); } } if (function_exists ('ai_debug_footer')) { ai_debug_footer (); } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("FOOTER HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } if (!$ai_wp_data [AI_CODE_FOR_IFRAME]) { if ((get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0)) { if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0 && isset ($_GET [AI_URL_DEBUG_PROCESSING_FE]) && $_GET [AI_URL_DEBUG_PROCESSING_FE] != 0) { echo "\n<pre class='ai-processing-log'>\n\n"; ai_write_debug_info (true); echo "\n</pre>\n"; } } } } function ai_amp_footer_hook () { global $block_object, $ai_wp_data, $ai_total_plugin_time; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("AMP FOOTER HOOK START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } if (defined ('AI_BUFFERING')) { if (get_output_buffering ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_AJAX) { ai_buffering_end (); } } } $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_FOOTER; $footer = $block_object [AI_FOOTER_OPTION_NAME]; $footer->clear_code_cache (); if ($footer->get_enable_manual ()) { if (!$footer->get_debug_disable_insertion () && !get_disable_footer_code ()) { if ($footer->check_server_side_detection ()) { if ($ai_wp_data [AI_WP_PAGE_TYPE] != AI_PT_404 || $footer->get_enable_404()) { $processed_code = do_shortcode ($footer->ai_getCode ()); if (strpos ($processed_code, AD_AMP_SEPARATOR) !== false) { $codes = explode (AD_AMP_SEPARATOR, $processed_code); $processed_code = ltrim ($codes [1]); echo $processed_code; } } } } } if (!isset ($ai_wp_data [AI_AMP_CSS])) { if (ai_amp_plugin_custom_css ()) { ai_amp_css_hook_style (); $ai_wp_data [AI_AMP_CSS] = 'AMP FOOTER STYLE'; } } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { echo get_page_type_debug_info ('AMP ') , "\n"; } if ((get_remote_debugging () || ($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0) && ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0 && isset ($_GET [AI_URL_DEBUG_PROCESSING_FE]) && $_GET [AI_URL_DEBUG_PROCESSING_FE] != 0) { echo "\n<pre class='ai-processing-log'>\n\n"; ai_write_debug_info (true); echo "\n</pre>\n"; } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("AMP FOOTER HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } function ai_write_debug_info ($write_processing_log = false) { global $block_object, $ai_last_time, $ai_total_plugin_time, $ai_total_block_php_time, $ai_total_hook_php_time, $ai_processing_log, $ai_db_options_extract, $ai_wp_data, $ai_db_options, $block_insertion_log, $ai_custom_hooks, $version_string, $subversion_string, $filter_hooks, $wpdb; ob_start (); echo sprintf ("%-25s%s", AD_INSERTER_NAME, AD_INSERTER_VERSION); if (function_exists ('ai_debug_log')) { ai_debug_log (); } echo "\n\n"; if (($install_timestamp = get_option (AI_INSTALL_NAME)) !== false) { echo "INSTALLED: ", date ("Y-m-d H:i:s", $install_timestamp + get_option ('gmt_offset') * 3600); if (isset ($ai_wp_data [AI_INSTALL_TIME_DIFFERENCE])) { printf (' (%04d-%02d-%02d %02d:%02d:%02d, %d days ago)', $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE]->y, $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE]->m, $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE]->d, $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE]->h, $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE]->i, $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE]->s, isset ($ai_wp_data [AI_DAYS_SINCE_INSTAL]) ? $ai_wp_data [AI_DAYS_SINCE_INSTAL] : null); } echo "\n"; } echo "GENERATED (WP time): ", date ("Y-m-d H:i:s", time() + get_option ('gmt_offset') * 3600), "\n"; echo "GENERATED (Server time): ", date ("Y-m-d H:i:s", time()), "\n"; echo "PLUGIN CODE PROCESSING: ", number_format (($ai_total_plugin_time - $ai_total_block_php_time - $ai_total_hook_php_time) * 1000, 2, '.' , ''), " ms\n"; echo "PLUGIN HOOKS PROCESSING: ", number_format ($ai_total_hook_php_time * 1000, 2, '.' , ''), " ms\n"; echo "BLOCK CODE PROCESSING: ", number_format ($ai_total_block_php_time * 1000, 2, '.' , ''), " ms\n"; echo "TOTAL PROCESSING TIME: ", number_format ($ai_total_plugin_time * 1000, 2, '.' , ''), " ms\n"; // echo "MEMORY USED: ", number_format (memory_get_usage (true) / 1024 / 1024, 2, '.' , ''), " MB\n"; // echo "PEAK MEMORY USED: ", number_format (memory_get_peak_usage (true) / 1024 / 1024, 2, '.' , ''), " MB\n"; echo "SETTINGS: "; if (isset ($ai_db_options [AI_OPTION_GLOBAL]['VERSION'])) echo (int) ($ai_db_options [AI_OPTION_GLOBAL]['VERSION'][0].$ai_db_options [AI_OPTION_GLOBAL]['VERSION'][1]), '.', (int) ($ai_db_options [AI_OPTION_GLOBAL]['VERSION'][2].$ai_db_options [AI_OPTION_GLOBAL]['VERSION'][3]), '.', (int) ($ai_db_options [AI_OPTION_GLOBAL]['VERSION'][4].$ai_db_options [AI_OPTION_GLOBAL]['VERSION'][5]); echo "\n"; echo "SETTINGS SIZE: ", strlen (serialize (ai_get_option (AI_OPTION_NAME))), "\n"; echo "SETTINGS TIMESTAMP: "; echo isset ($ai_db_options [AI_OPTION_GLOBAL]['TIMESTAMP']) ? date ("Y-m-d H:i:s", $ai_db_options [AI_OPTION_GLOBAL]['TIMESTAMP'] + get_option ('gmt_offset') * 3600) : "", "\n"; $expected_extract_version = $version_string . $subversion_string . '-' . '96'; if (function_exists ('ai_system_output_check')) { $expected_extract_version .= 'P'; } $extract_source = ''; $saved_settings = ai_get_option (AI_OPTION_NAME); if (isset ($saved_settings [AI_OPTION_EXTRACT]['VERSION']) && $saved_settings [AI_OPTION_EXTRACT]['VERSION'] == $expected_extract_version) { $saved_extract = $saved_settings [AI_OPTION_EXTRACT]; $extract_source = 'SAVED SETTINGS'; } else { $saved_extract = get_option (AI_EXTRACT_NAME); $extract_source = defined ('AI_EXTRACT_GENERATED') ? "REGENERATED" : 'SAVED EXTRACT'; } echo "SETTINGS EXTRACT: "; if (isset ($saved_extract ['VERSION'])) { $extract_subversion_blocks = explode ('-', $saved_extract ['VERSION']); array_shift ($extract_subversion_blocks); echo (int) ($saved_extract ['VERSION'][0].$saved_extract ['VERSION'][1]), '.', (int) ($saved_extract ['VERSION'][2].$saved_extract ['VERSION'][3]), '.', (int) ($saved_extract ['VERSION'][4].$saved_extract ['VERSION'][5]), '-', implode ('-', $extract_subversion_blocks); } echo"\n"; echo "EXTRACT TIMESTAMP: "; echo isset ($saved_extract ['TIMESTAMP']) ? date ("Y-m-d H:i:s", $saved_extract ['TIMESTAMP'] + get_option ('gmt_offset') * 3600) : "", "\n"; echo "EXTRACT SOURCE: ", $extract_source, "\n"; echo "USER: "; if (($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) == AI_USER_LOGGED_IN) echo "LOGGED-IN "; else echo "NOT LOGGED-IN "; if (($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) == AI_USER_ADMINISTRATOR) echo "ADMINISTRATOR"; $current_user = wp_get_current_user(); echo "\n"; echo "USERNAME: ", $current_user->user_login, "\n"; echo 'USER ROLES: ', implode (', ', $current_user->roles), "\n"; echo 'MIN.USER FOR EXCEPTIONS: ', get_minimum_user_role (), "\n"; echo "PAGE TYPE: "; switch ($ai_wp_data [AI_WP_PAGE_TYPE]) { case AI_PT_STATIC: echo "STATIC PAGE"; break; case AI_PT_POST: echo "POST"; break; case AI_PT_HOMEPAGE: echo "HOMEPAGE"; break; case AI_PT_CATEGORY: echo "CATEGORY PAGE"; break; case AI_PT_ARCHIVE: echo "ARCHIVE PAGE"; break; case AI_PT_SEARCH: echo "SEARCH PAGE"; break; case AI_PT_404: echo "404 PAGE"; break; case AI_PT_ADMIN: echo "ADMIN"; break; case AI_PT_FEED: echo "FEED"; break; case AI_PT_AJAX: echo "AJAX"; break; case AI_PT_REST: echo "REST"; break; case AI_PT_ANY: echo "ANY ?"; break; case AI_PT_NONE: echo "NONE ?"; break; default: echo "?"; break; } echo "\n"; switch ($ai_wp_data [AI_WP_PAGE_TYPE]) { case AI_PT_STATIC: case AI_PT_POST: $queried_object_id = ''; $queried_object = get_queried_object (); if ($queried_object) { $queried_object_id = $queried_object->ID; } echo 'PUBLISHED: ', date ("Y-m-d H:i:s", get_the_date ('U')), "\n"; echo 'ID: ', ai_get_post_id (); echo " (get_the_ID: ", get_the_ID (), ", get_queried_object: ", $queried_object_id, defined ('AI_USE_GET_QUERIED_OBJECT') && AI_USE_GET_QUERIED_OBJECT ? ', AI_USE_GET_QUERIED_OBJECT SET' : "", ")"; echo "\n"; echo 'POST TYPE: ', get_post_type (), "\n"; echo 'AUTHOR: ', strtolower (get_the_author_meta ('user_login')), ' (', get_the_author_meta ('display_name'), ")\n"; // $author = get_the_author_meta ('display_name'); // $author_login = get_the_author_meta ('user_login'); // $author_name = get_the_author_meta ('first_name') . " " . get_the_author_meta ('last_name'); $category_data = get_the_category(); $categories = array (); foreach ($category_data as $category) { $categories []= $category->name . ' ('.$category->slug.')'; } echo 'CATEGORIES: ', implode (', ', $categories), "\n"; $category_data = get_categories (); $categories = array (); foreach ($category_data as $category) { if (ai_post_is_in_child_categories ($category->slug)) { $categories []= $category->name . ' ('.$category->slug.')'; } } echo 'PARENT CATEGORIES: ', implode (', ', $categories), "\n"; echo 'PRIMARY CATEGORY: ', ai_primary_category (), "\n"; $tag_data = wp_get_post_tags (get_the_ID()); $tags = array (); foreach ($tag_data as $tag) { $tags []= $tag->name . ' ('.$tag->slug.')'; } echo 'TAGS: ', implode (', ', $tags), "\n"; $taxonomies = array (); $taxonomy_names = get_post_taxonomies (); foreach ($taxonomy_names as $taxonomy_name) { $terms = get_the_terms (0, $taxonomy_name); if (is_array ($terms)) { foreach ($terms as $term) { $taxonomies [] = strtolower ($term->taxonomy) . ':' . strtolower ($term->slug); } } } echo 'TAXONOMIES: ', implode (', ', $taxonomies), "\n"; $taxonomy_data = get_taxonomies (); $taxonomies = array (); foreach ($taxonomy_data as $taxonomy) { $terms = get_terms ($taxonomy); foreach ($terms as $term) { if (ai_post_is_in_child_taxonomies ($taxonomy, $term->slug)) { $taxonomies []= $term->name . ' ('.$taxonomy.':'.$term->slug.')'; } } } echo 'PARENT TAXONOMIES: ', implode (', ', $taxonomies), "\n"; if (isset ($_GET [AI_URL_DEBUG_META])) { $post_meta = get_post_meta (get_the_ID()); $meta_string = array (); foreach ($post_meta as $key => $post_meta_field) { foreach ($post_meta_field as $post_meta_field_item) { $meta_string []= $key . ':' . $post_meta_field_item; } } echo 'POST META: ', str_replace (array ("<!--", "-->", "\n", "\r"), array ("[!--", "--]", "*n", "*r"), implode (', ', $meta_string)), "\n"; } break; case AI_PT_CATEGORY: $category_data = get_queried_object(); $categories = array (); if ($category_data instanceof WP_Term) { $categories []= $category_data->slug; } echo 'CATEGORY: ', implode (', ', $categories), "\n"; break; case AI_PT_ARCHIVE: $tag_data = wp_get_post_tags (get_the_ID()); $tags = array (); foreach ($tag_data as $tag) { $tags []= $tag->slug; } echo 'TAG: ', implode (', ', $tags), "\n"; break; } echo 'AMP PAGE: ', ($ai_wp_data [AI_WP_AMP_PAGE] ? 'YES' : 'NO'), "\n"; if ($ai_wp_data [AI_WP_AMP_PAGE]) { echo 'AMP CSS: ', (isset ($ai_wp_data [AI_AMP_CSS]) ? $ai_wp_data [AI_AMP_CSS] : ''), "\n"; } echo 'URL: ', esc_attr ($ai_wp_data [AI_WP_URL]), "\n"; echo 'REFERRER: ', isset ($_SERVER['HTTP_REFERER']) ? strtolower (parse_url ($_SERVER['HTTP_REFERER'], PHP_URL_HOST)) . ' ('. remove_debug_parameters_from_url ($_SERVER['HTTP_REFERER']).')' : "", "\n"; if (function_exists ('ai_debug')) ai_debug (); if ($ai_wp_data [AI_CLIENT_SIDE_DETECTION] || 1) { for ($viewport = 1; $viewport <= 6; $viewport ++) { $viewport_name = get_viewport_name ($viewport); $viewport_width = get_viewport_width ($viewport); if ($viewport_name != '') { echo 'VIEWPORT ', $viewport, ': ', sprintf ("%-16s min width %s", $viewport_name.' ', $viewport_width), " px\n"; } } } echo 'SERVER-SIDE DETECTION: ', $ai_wp_data [AI_SERVER_SIDE_DETECTION] ? 'USED' : "NOT USED", "\n"; if ($ai_wp_data [AI_SERVER_SIDE_DETECTION]) { echo 'SERVER-SIDE DEVICE: '; if (AI_DESKTOP) echo "DESKTOP\n"; elseif (AI_TABLET) echo "TABLET\n"; elseif (AI_PHONE) echo "PHONE\n"; else echo "?\n"; } echo 'CLIENT-SIDE DETECTION: ', $ai_wp_data [AI_CLIENT_SIDE_DETECTION] ? 'USED' : "NOT USED", "\n"; echo 'DISABLE CACHING: ', $ai_wp_data [AI_DISABLE_CACHING] ? 'USED' : "NOT USED", "\n"; echo 'STICKY WIDGETS: ', $ai_wp_data [AI_STICKY_WIDGETS] ? 'USED' : "NOT USED", "\n"; if (function_exists ('ai_debug_features')) ai_debug_features (); $enabled_custom_hooks = array (); foreach ($ai_custom_hooks as $ai_custom_hook) { $hook = $ai_custom_hook ['index']; $enabled_custom_hooks [] = $ai_custom_hook ['action']; } for ($hook = 1; $hook <= 20; $hook ++) { $name = str_replace (array ('<', '>'), array ('<', '>'), get_hook_name ($hook)); $action = get_hook_action ($hook); if (get_hook_enabled ($hook) /*&& $name != '' && $action != ''*/) { $priority = get_hook_priority ($hook); echo 'CUSTOM HOOK ', sprintf ("%2d", $hook), ': ', sprintf ("%-30s %-35s %d %s", $name, $action, $priority, !in_array ($action, $enabled_custom_hooks) ? 'INVALID' : ''), "\n"; } } if (!empty ($ai_wp_data [AI_ACTIVE_GROUP_NAMES])) { echo 'ACTIVE GROUPS: ' . implode (', ', $ai_wp_data [AI_ACTIVE_GROUP_NAMES]) . "\n"; } echo 'BLOCK CLASS NAME: ', get_block_class_name (), "\n"; echo 'INLINE STYLES: ', get_inline_styles () ? 'ENABLED' : 'DISABLED', "\n"; echo 'DYNAMIC BLOCKS: '; switch (get_dynamic_blocks()) { case AI_DYNAMIC_BLOCKS_SERVER_SIDE: echo AI_TEXT_ENG_SERVER_SIDE; break; case AI_DYNAMIC_BLOCKS_SERVER_SIDE_W3TC: echo AI_TEXT_ENG_SERVER_SIDE_W3TC; break; case AI_DYNAMIC_BLOCKS_CLIENT_SIDE_SHOW: echo AI_TEXT_ENG_CLIENT_SIDE_SHOW; break; case AI_DYNAMIC_BLOCKS_CLIENT_SIDE_INSERT: echo AI_TEXT_ENG_CLIENT_SIDE_INSERT; break; } echo "\n"; echo 'STICKY WIDGET MODE: '; switch (get_sticky_widget_mode ()) { case AI_STICKY_WIDGET_MODE_CSS: echo AI_TEXT_CSS; break; case AI_STICKY_WIDGET_MODE_CSS_PUSH: echo AI_TEXT_CSS_PUSH; break; case AI_STICKY_WIDGET_MODE_JS: echo AI_TEXT_JS; break; } echo "\n"; echo 'PARAGRAPH COUNTING: '; switch (get_paragraph_counting_functions()) { case AI_STANDARD_PARAGRAPH_COUNTING_FUNCTIONS: echo AI_TEXT_ENG_STANDARD; break; case AI_MULTIBYTE_PARAGRAPH_COUNTING_FUNCTIONS: echo AI_TEXT_ENG_MULTIBYTE; break; } echo "\n"; echo 'NO PAR. COUNTING INSIDE: ', get_no_paragraph_counting_inside (), "\n"; if (defined ('AI_BUFFERING')) { echo 'OUTPUT BUFFERING: '; switch (get_output_buffering()) { case AI_OUTPUT_BUFFERING_DISABLED: echo AI_TEXT_ENG_DISABLED; break; case AI_OUTPUT_BUFFERING_ENABLED: echo AI_TEXT_ENG_ENABLED; break; } echo "\n"; } echo 'AD LABEL: ', get_ad_label (), "\n"; echo 'AD LABEL HTML CODE: ', trim (ai_ad_label_code (), "\n"), "\n"; if (defined ('AI_STICKY_SETTINGS') && AI_STICKY_SETTINGS) { echo 'MAIN CONTENT: ', get_main_content_element (), "\n"; } echo 'PLUGIN PRIORITY: ', get_plugin_priority (), "\n"; echo 'MAX LIST ITEMS: ', get_max_list_items (), "\n"; echo 'TAB SETUP DELAY: ', get_tab_setup_delay (), "\n"; echo 'ADMIN DISABLE CACHING: ', get_disable_caching () ? 'ENABLED' : 'DISABLED', "\n"; echo 'DON\'T USE jQuery CODE: ', defined ('AI_NO_JQUERY') ? 'PHP CONSTANT' : (isset ($_GET [AI_URL_DEBUG_NO_JQUERY]) && !empty ($_GET [AI_URL_DEBUG_NO_JQUERY]) ? 'URL PARAMETER' : 'NOT SET'), "\n"; echo 'WAIT FOR JQUERY: ', get_wait_for_jquery () ? 'ENABLED' : 'DISABLED', "\n"; echo 'jQuery LOADED: ', wp_script_is ('jquery', 'registered') || wp_script_is ('jquery', 'printed') ? 'YES' : 'NO', "\n"; echo 'PLAIN JS CODE: ', $ai_wp_data [AI_NO_JQUERY_CODE] ? 'YES' : 'NO', "\n"; echo 'JAVASCRIPT CODE: ', get_javascript_code_mode () == AI_JAVASCRIPT_CODE_INLINE ? AI_TEXT_ENG_INLINE : AI_TEXT_ENG_FILE, "\n"; echo 'DO NOT CACHE CONSTANTS: ', defined ('DONOTCACHEPAGE') ? 'DONOTCACHEPAGE ' : '', defined ('DONOTCACHEOBJECT') ? 'DONOTCACHEOBJECT ' : '', defined ('DONOTCACHEDB') ? 'DONOTCACHEDB ' : '', "\n"; $virtual_ads_txt = get_option (AI_ADS_TXT_NAME); $virtual_ads_txt_lines = explode ("\n", $virtual_ads_txt); echo 'VIRTUAL ADS.TXT: ', $virtual_ads_txt !== false ? count ($virtual_ads_txt_lines). ' LINES' : 'NOT USED', "\n"; echo 'HEADER: ', $block_object [AI_HEADER_OPTION_NAME]->get_enable_manual () ? 'ENABLED' : 'DISABLED', "\n"; echo 'FOOTER: ', $block_object [AI_FOOTER_OPTION_NAME]->get_enable_manual () ? 'ENABLED' : 'DISABLED', "\n"; if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { echo 'AD BLOCKING DETECTION: ', $ai_wp_data [AI_ADB_DETECTION] ? 'ENABLED' : 'DISABLED', "\n"; echo 'DISABLED BY SHORTCODE: ', isset ($ai_wp_data [AI_ADB_SHORTCODE_DISABLED]) ? 'YES' : "NO", "\n"; if ($ai_wp_data [AI_ADB_DETECTION]) { echo 'ADB ACTION: '; switch (get_adb_action (true)) { case AI_ADB_ACTION_NONE: echo AI_TEXT_ENG_NONE; break; case AI_ADB_ACTION_MESSAGE: echo AI_TEXT_ENG_POPUP_MESSAGE; break; case AI_ADB_ACTION_REDIRECTION: echo AI_TEXT_ENG_REDIRECTION; break; } echo "\n"; echo 'ADB NO ACTION: '; switch (get_adb_no_action (true)) { case AI_ADB_NO_ACTION_NONE: echo AI_TEXT_ENG_NONE; break; case AI_ADB_NO_ACTION_LOGGED_IN: echo AI_TEXT_ENG_DISPLAY_LOGGED_IN_USERS; break; case AI_ADB_NO_ACTION_ADMINISTRATORS: echo AI_TEXT_ENG_DISPLAY_ADMINISTRATORS; break; } echo "\n"; echo 'ADB DELAY ACTION: ', get_delay_action (), "\n"; echo 'ADB NO ACTION PERIOD: ', get_no_action_period (), "\n"; echo 'ADB SELECTORS: ', get_adb_selectors (true), "\n"; if (function_exists ('ai_debug')) { echo 'ADB DETECTION: ', get_adb_detection () == AI_ADB_DETECTION_ADVANCED ? 'ADVANCED' : 'STANDARD', "\n"; } echo 'ADB EXTERNAL SCRIPTS: ', get_adb_external_scripts () ? 'ON' : 'OFF', "\n"; $redirection_page = get_redirection_page (); echo 'ADB REDIRECTION PAGE: ', $redirection_page != 0 ? get_the_title ($redirection_page) . ' (' . get_permalink ($redirection_page) . ')' : 'Custom Url', "\n"; echo 'ADB REDIRECTION URL: ', get_custom_redirection_url (), "\n"; echo 'ADB MESSAGE: ', str_replace (array ("<!--", "-->"), array ("<!++", "++>"), $block_object [AI_ADB_MESSAGE_OPTION_NAME]->ai_getCode ()), "\n"; echo 'ADB MESSAGE CSS: ', get_message_css (), "\n"; echo 'ADB OVERLAY CSS: ', get_overlay_css (), "\n"; echo 'ADB UNDISMISSIBLE: ', get_undismissible_message (true) ? 'ON' : 'OFF', "\n"; } } if (isset ($_SERVER ['HTTP_USER_AGENT'])) { echo 'USER AGENT: ', $_SERVER ['HTTP_USER_AGENT'], "\n"; } if (isset ($_SERVER ['HTTP_ACCEPT_LANGUAGE'])) { echo 'LANGUAGE: ', $_SERVER ['HTTP_ACCEPT_LANGUAGE'], "\n"; } if (isset ($ai_wp_data [AI_CLIENTS]) && isset ($ai_wp_data [AI_AGENT])) { $agent = $ai_wp_data [AI_AGENT]; if (!empty ($ai_wp_data [AI_CLIENTS])) { $ai_wp_data [AI_CLIENTS] = array_unique ($ai_wp_data [AI_CLIENTS]); foreach ($ai_wp_data [AI_CLIENTS] as $client) { echo sprintf (" %-23s", $client.':'), check_client_list ($client, true) ? 'YES' : 'NO', "\n"; } } } if (!empty ($filter_hooks)) { echo "\n"; foreach ($filter_hooks as $filter_hook) { echo "ACTIVE FILTER HOOK: "; foreach ($filter_hook as $index => $filter_hook_data) { if ($index != 0) echo ", "; echo $filter_hook_data; } echo "\n"; } } if (isset ($_GET [AI_URL_DEBUG_TRACKING]) && $_GET [AI_URL_DEBUG_TRACKING]) { if ($log = get_transient ('ai_debug_tracking')) { echo 'TRACKING LOG: ', "\n"; echo $log; echo "\n"; } } echo "\n"; // if ($block_object [AI_HEADER_OPTION_NAME]->get_enable_manual ()) { // echo "HEADER CODE ========================================================\n"; // echo ai_dump_code ($block_object [AI_HEADER_OPTION_NAME]->ai_getCode ()); // echo "\n====================================================================\n\n"; // } // if ($block_object [AI_FOOTER_OPTION_NAME]->get_enable_manual ()) { // echo "FOOTER CODE ========================================================\n"; // echo ai_dump_code ($block_object [AI_FOOTER_OPTION_NAME]->ai_getCode ()); // echo "\n====================================================================\n\n"; // } $default = new ai_Block (1); echo "BLOCK SETTINGS Po Pa Ho Ca Ar Sr AMP Aj RE Fe 404 Wi Sh PHP\n"; echo " st ge me t ch ch ax ST ed dg or PHP\n"; for ($block = 1; $block <= 96; $block ++) { $obj = $block_object [$block]; $settings = ""; $insertion_settings = ''; $alignment_settings = ''; $default_settings = true; // $display_type = ''; foreach (array_keys ($default->wp_options) as $key){ switch ($key) { case AI_OPTION_CODE: case AI_OPTION_BLOCK_NAME: continue 2; case AI_OPTION_DISPLAY_ON_PAGES: case AI_OPTION_DISPLAY_ON_POSTS: case AI_OPTION_DISPLAY_ON_HOMEPAGE: case AI_OPTION_DISPLAY_ON_CATEGORY_PAGES: case AI_OPTION_DISPLAY_ON_SEARCH_PAGES: case AI_OPTION_DISPLAY_ON_ARCHIVE_PAGES: case AI_OPTION_ENABLE_AMP: case AI_OPTION_ENABLE_AJAX: case AI_OPTION_ENABLE_REST: case AI_OPTION_ENABLE_FEED: case AI_OPTION_ENABLE_404: case AI_OPTION_ENABLE_MANUAL: case AI_OPTION_ENABLE_WIDGET: case AI_OPTION_ENABLE_PHP_CALL: if ($obj->wp_options [$key] != $default->wp_options [$key]) $default_settings = false; continue 2; } // if (gettype ($obj->wp_options [$key]) == 'string' && gettype ($default->wp_options [$key]) == 'integer') { // $default->wp_options [$key] = strval ($default->wp_options [$key]); // } // elseif (gettype ($obj->wp_options [$key]) == 'integer' && gettype ($default->wp_options [$key]) == 'string') { // $default->wp_options [$key] = intval ($default->wp_options [$key]); // } // if ($obj->wp_options [$key] !== $default->wp_options [$key]) { if ($obj->wp_options [$key] != $default->wp_options [$key]) { $default_settings = false; switch ($key) { case AI_OPTION_AUTOMATIC_INSERTION: $insertion_settings = $obj->get_automatic_insertion_text (false, false); break; case AI_OPTION_SERVER_SIDE_INSERTION: $settings .= "[" . $key . ": " . $obj->get_automatic_insertion_text (true, false) . ']'; break; case AI_OPTION_ALIGNMENT_TYPE: $alignment_settings = $obj->get_alignment_type_text (false); break; case AI_OPTION_ENABLED_ON_WHICH_PAGES: $settings .= "[" . $key . ": " . $obj->get_ad_enabled_on_which_pages_text (false) . ']'; break; case AI_OPTION_ENABLED_ON_WHICH_POSTS: $settings .= "[" . $key . ": " . $obj->get_ad_enabled_on_which_posts_text (false) . ']'; break; case AI_OPTION_EXCEPTIONS_FUNCTION: $settings .= "[" . $key . ": " . $obj->get_exceptions_function_text (false) . ']'; break; case AI_OPTION_FILTER_TYPE: $settings .= "[" . $key . ": " . $obj->get_filter_type_text (false) . ']'; break; case AI_OPTION_AVOID_ACTION: $settings .= "[" . $key . ": " . $obj->get_avoid_action_text (false) . ']'; break; case AI_OPTION_AVOID_DIRECTION: $settings .= "[" . $key . ": " . $obj->get_avoid_direction_text (false) . ']'; break; case AI_OPTION_DIRECTION_TYPE: $settings .= "[" . $key . ": " . $obj->get_direction_type_text (false) . ']'; break; case AI_OPTION_PARAGRAPH_TEXT_TYPE: $settings .= "[" . $key . ": " . $obj->get_paragraph_text_type_text (false) . ']'; break; case AI_OPTION_COUNT_INSIDE: $settings .= "[" . $key . ": " . $obj->get_count_inside_text (false) . ']'; break; case AI_OPTION_COUNT_INSIDE_ELEMENTS_CONTAIN: $settings .= "[" . $key . ": " . $obj->get_count_inside_elements_contain_text (false) . ']'; break; case AI_OPTION_DISPLAY_FOR_USERS: $settings .= "[" . $key . ": " . $obj->get_display_for_users_text (false) . ']'; break; case AI_OPTION_DISPLAY_FOR_DEVICES: $settings .= "[" . $key . ": " . $obj->get_display_for_devices_text (false) . ']'; break; case AI_OPTION_PARAGRAPH_TEXT: case AI_OPTION_COUNT_INSIDE_ELEMENTS_TEXT: case AI_OPTION_AVOID_TEXT_ABOVE: case AI_OPTION_AVOID_TEXT_BELOW: case AI_OPTION_HTML_SELECTOR: if ($write_processing_log) $settings .= "[" . $key . ": " . ai_log_filter_content (html_entity_decode ($obj->wp_options [$key])) . ']'; else $settings .= "[" . $key . ": " . $obj->wp_options [$key] . ']'; break; default: $settings .= "[" . $key . ": " . $obj->wp_options [$key] . ']'; break; } // $settings .= ' ['.gettype ($obj->wp_options [$key]).':'.$obj->wp_options [$key].'#'.gettype ($default->wp_options [$key]).':'.$default->wp_options [$key].'] '; } else switch ($key) { case AI_OPTION_AUTOMATIC_INSERTION: $insertion_settings = $obj->get_automatic_insertion_text (false, false); break; case AI_OPTION_ALIGNMENT_TYPE: $alignment_settings = $obj->get_alignment_type_text (false); break; } } if ($default_settings && $settings == '') continue; $settings = ' [' . $insertion_settings . '][' . $alignment_settings . ']' . $settings; echo sprintf ("%2d %-21s ", $block, $ai_wp_data [AI_MBSTRING_LOADED] ? mb_substr ($obj->get_ad_name(), 0, 21) : substr ($obj->get_ad_name(), 0, 21)); echo $obj->get_display_settings_post() ? "o" : ".", " "; echo $obj->get_display_settings_page() ? "o" : ".", " "; echo $obj->get_display_settings_home() ? "o" : ".", " "; echo $obj->get_display_settings_category() ? "o" : ".", " "; echo $obj->get_display_settings_archive() ? "o" : ".", " "; echo $obj->get_display_settings_search() ? "o" : ".", " "; echo $obj->get_enable_amp() ? "o" : ".", " "; echo $obj->get_enable_ajax() ? "o" : ".", " "; echo $obj->get_enable_rest() ? "o" : ".", " "; echo $obj->get_enable_feed() ? "o" : ".", " "; echo $obj->get_enable_404() ? "o" : ".", " "; echo $obj->get_enable_widget() ? "x" : ".", " "; echo $obj->get_enable_manual() ? "x" : ".", " "; echo $obj->get_enable_php_call() ? "x" : ".", " "; echo $settings, "\n"; } echo "\n"; $args = array ( 'public' => true, '_builtin' => false ); $custom_post_types = get_post_types ($args, 'names', 'and'); $screens = array_values (array_merge (array ('post', 'page'), $custom_post_types)); $args = array ( 'posts_per_page' => AI_LIST_EXCEPTIONS_LIMIT, 'offset' => 0, 'category' => '', 'category_name' => '', 'orderby' => 'type', 'order' => 'ASC', 'include' => '', 'exclude' => '', 'meta_query' => array ( array ( 'key' => '_adinserter_block_exceptions', 'value' => '', 'compare' => '!=' ) ), 'post_type' => $screens, 'post_mime_type' => '', 'post_parent' => '', 'author' => '', 'author_name' => '', 'post_status' => '', 'suppress_filters' => true ); $posts_pages = get_posts ($args); if (count ($posts_pages) != 0) { echo "EXCEPTIONS FOR BLOCKS ID TYPE TITLE URL\n"; foreach ($posts_pages as $page) { $post_meta = get_post_meta ($page->ID, '_adinserter_block_exceptions', true); if ($post_meta == '') continue; $post_type_object = get_post_type_object ($page->post_type); echo sprintf ("%-24s %-6s %-24s %-64s %s", $post_meta, $page->ID, $post_type_object->labels->singular_name, mb_substr ($page->post_title, 0, 64), get_permalink ($page->ID)), "\n"; } echo "\n"; } echo "TOTAL BLOCKS\n"; if (count ($ai_db_options_extract [ABOVE_HEADER_HOOK_BLOCKS][AI_PT_ANY])) echo "ABOVE HEADER: ", implode (", ", $ai_db_options_extract [ABOVE_HEADER_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [CONTENT_HOOK_BLOCKS][AI_PT_ANY])) echo "CONTENT HOOK: ", implode (", ", $ai_db_options_extract [CONTENT_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [EXCERPT_HOOK_BLOCKS][AI_PT_ANY])) echo "EXCERPT HOOK: ", implode (", ", $ai_db_options_extract [EXCERPT_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [LOOP_START_HOOK_BLOCKS][AI_PT_ANY])) echo "LOOP START HOOK: ", implode (", ", $ai_db_options_extract [LOOP_START_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [LOOP_END_HOOK_BLOCKS][AI_PT_ANY])) echo "LOOP END HOOK: ", implode (", ", $ai_db_options_extract [LOOP_END_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [POST_HOOK_BLOCKS][AI_PT_ANY])) echo "POST HOOK: ", implode (", ", $ai_db_options_extract [POST_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][AI_PT_ANY])) echo "BEFORE COMMENTS HOOK: ", implode (", ", $ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][AI_PT_ANY])) echo "BETWEEN COMMENTS HOOK ", implode (", ", $ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][AI_PT_ANY])) echo "AFTER COMMENTS HOOK: ", implode (", ", $ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][AI_PT_ANY]), "\n"; if (count ($ai_db_options_extract [FOOTER_HOOK_BLOCKS][AI_PT_ANY])) echo "FOOTER HOOK: ", implode (", ", $ai_db_options_extract [FOOTER_HOOK_BLOCKS][AI_PT_ANY]), "\n"; foreach ($ai_custom_hooks as $index => $custom_hook) { switch ($custom_hook ['action']) { case 'wp_footer': // case 'wp_head': case 'the_content': case 'the_excerpt': case 'loop_start': case 'loop_end': // case 'the_post': continue 2; } if (count ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][AI_PT_ANY])) { $blocks_using_hook = array (); foreach ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { $obj = $block_object [$block]; if ($obj->get_automatic_insertion () == AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $custom_hook ['index'] - 1) { $blocks_using_hook [] = $block; } } if (!empty ($blocks_using_hook)) { echo substr (strtoupper (str_replace (array ('<', '>'), array ('<', '>'), get_hook_name ($custom_hook ['index']))) . " HOOK: ", 0, 25), implode (", ", $blocks_using_hook), "\n"; } } } if (count ($ai_db_options_extract [HTML_ELEMENT_HOOK_BLOCKS][AI_PT_ANY])) echo "HTML ELEMENT: ", implode (", ", $ai_db_options_extract [HTML_ELEMENT_HOOK_BLOCKS][AI_PT_ANY]), "\n"; echo "\nBLOCKS FOR THIS PAGE TYPE\n"; if (isset ($ai_db_options_extract [ABOVE_HEADER_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [ABOVE_HEADER_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "ABOVE HEADER: ", implode (", ", $ai_db_options_extract [ABOVE_HEADER_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [CONTENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [CONTENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "CONTENT HOOK: ", implode (", ", $ai_db_options_extract [CONTENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [EXCERPT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [EXCERPT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "EXCERPT HOOK: ", implode (", ", $ai_db_options_extract [EXCERPT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [LOOP_START_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [LOOP_START_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "LOOP START HOOK: ", implode (", ", $ai_db_options_extract [LOOP_START_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [LOOP_END_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [LOOP_END_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "LOOP END HOOK: ", implode (", ", $ai_db_options_extract [LOOP_END_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [POST_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [POST_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "POST HOOK: ", implode (", ", $ai_db_options_extract [POST_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "AFTER COMMENTS HOOK: ", implode (", ", $ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "BETWEEN COMMENTS HOOK: ", implode (", ", $ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "AFTER COMMENTS HOOK: ", implode (", ", $ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; if (isset ($ai_db_options_extract [FOOTER_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [FOOTER_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "FOOTER HOOK ", implode (", ", $ai_db_options_extract [FOOTER_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; foreach ($ai_custom_hooks as $index => $custom_hook) { switch ($custom_hook ['action']) { case 'wp_footer': // case 'wp_head': case 'the_content': case 'the_excerpt': case 'loop_start': case 'loop_end': // case 'the_post': continue 2; } if (isset ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) { $blocks_using_hook = array (); foreach ($ai_db_options_extract [$custom_hook ['action'] . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { $obj = $block_object [$block]; if ($obj->get_automatic_insertion () == AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + $custom_hook ['index'] - 1) { $blocks_using_hook [] = $block; } } if (!empty ($blocks_using_hook)) { echo substr (strtoupper (str_replace (array ('<', '>'), array ('<', '>'), get_hook_name ($custom_hook ['index']))) . " HOOK: ", 0, 25), implode (", ", $blocks_using_hook), "\n"; } } } if (isset ($ai_db_options_extract [HTML_ELEMENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && count ($ai_db_options_extract [HTML_ELEMENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) echo "HTML ELEMENT: ", implode (", ", $ai_db_options_extract [HTML_ELEMENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]), "\n"; echo "\nDISABLED BLOCKS: ", isset ($ai_wp_data [AI_DISABLED_BLOCKS]) ? implode (', ', $ai_wp_data [AI_DISABLED_BLOCKS]) : '', "\n"; if ($write_processing_log) { echo "\nTIME EVENT\n"; echo "======================================\n"; foreach ($ai_processing_log as $log_line) { echo $log_line, "\n"; } sort ($block_insertion_log); echo "\nINSERTION SUMMARY\n"; echo "======================================\n"; foreach ($block_insertion_log as $log_line) { echo substr ($log_line, 3), "\n"; } echo "\n\n"; echo "SERVER_ADDR: ", isset ($_SERVER ['SERVER_ADDR']) ? $_SERVER ['SERVER_ADDR'] : '', "\n"; echo "HTTP_CF_CONNECTING_IP: ", isset ($_SERVER ['HTTP_CF_CONNECTING_IP']) ? $_SERVER ['HTTP_CF_CONNECTING_IP'] : '', "\n"; echo "HTTP_CLIENT_IP: ", isset ($_SERVER ['HTTP_CLIENT_IP']) ? $_SERVER ['HTTP_CLIENT_IP'] : '', "\n"; echo "HTTP_INCAP_CLIENT_IP: ", isset ($_SERVER ['HTTP_INCAP_CLIENT_IP']) ? $_SERVER ['HTTP_INCAP_CLIENT_IP'] : '', "\n"; echo "HTTP_X_FORWARDED_FOR: ", isset ($_SERVER ['HTTP_X_FORWARDED_FOR']) ? $_SERVER ['HTTP_X_FORWARDED_FOR'] : '', "\n"; echo "HTTP_X_FORWARDED: ", isset ($_SERVER ['HTTP_X_FORWARDED']) ? $_SERVER ['HTTP_X_FORWARDED'] : '', "\n"; echo "HTTP_X_CLUSTER_CLIENT_IP:", isset ($_SERVER ['HTTP_X_CLUSTER_CLIENT_IP']) ? $_SERVER ['HTTP_X_CLUSTER_CLIENT_IP'] : '', "\n"; echo "HTTP_FORWARDED_FOR: ", isset ($_SERVER ['HTTP_FORWARDED_FOR']) ? $_SERVER ['HTTP_FORWARDED_FOR'] : '', "\n"; echo "HTTP_FORWARDED: ", isset ($_SERVER ['HTTP_FORWARDED']) ? $_SERVER ['HTTP_FORWARDED'] : '', "\n"; echo "REMOTE_ADDR: ", isset ($_SERVER ['REMOTE_ADDR']) ? $_SERVER ['REMOTE_ADDR'] : '', "\n"; echo "\n"; echo 'AI_NO_PHP_PROCESSING: ', defined ('AI_NO_PHP_PROCESSING') ? 'SET' : "NO", "\n"; echo 'DISALLOW_FILE_EDIT: ', defined ('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT ? 'SET' : "NO", "\n"; echo 'DISALLOW_FILE_MODS: ', defined ('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS ? 'SET' : "NO", "\n"; echo 'DISALLOW_UNFILTERED_HTML:', defined ('DISALLOW_UNFILTERED_HTML') && DISALLOW_UNFILTERED_HTML ? 'SET' : "NO", "\n"; echo 'AI_NO_ADSENSE_API: ', defined ('AI_NO_ADSENSE_API') ? 'SET' : "NO", "\n"; echo "\n"; echo 'W3TC_DYNAMIC_SECURITY: ', defined ('W3TC_DYNAMIC_SECURITY') ? 'SET' : "NO", "\n"; echo "\n"; echo "MULTISITE: ", is_multisite() ? "YES" : "NO", "\n"; if (is_multisite()) { echo "MAIN SITE: ", is_main_site () ? "YES" : "NO", "\n"; echo "SITE COUNT: ", get_blog_count(), "\n"; } echo "OPTIONS DATABASE TABLE: ", $wpdb->prefix, "options\n"; if (function_exists ('ai_debug_features_2')) ai_debug_features_2 (); else echo "\n"; echo "mbstring: ", $ai_wp_data [AI_MBSTRING_LOADED] ? 'LOADED' : 'NO', "\n"; echo "Default charset: ", ini_get ("default_charset"), "\n"; echo "Memory Limit: ", ini_get ('memory_limit'), "\n"; echo "Upload Max Filesize: ", ini_get ('upload_max_filesize'), "\n"; echo "Post Max Size: ", ini_get ('post_max_size'), "\n"; echo "Max Execution Time: ", ini_get ('max_execution_time'), "\n"; echo "Max Input Vars: ", ini_get ('max_input_vars'), "\n"; echo "Display Errors: ", ini_get ('display_errors'), "\n"; echo "cURL: ", function_exists ('curl_version') ? 'ENABLED' : 'DISABLED', "\n"; echo "fsockopen: ", function_exists ('fsockopen') ? 'ENABLED' : 'DISABLED', "\n"; echo "DOMDocument: ", class_exists ('DOMDocument') ? 'YES' : 'NO', "\n"; echo "\n\n"; global $wp_version; echo "Wordpress: ", $wp_version, "\n"; $current_theme = wp_get_theme(); echo "Current Theme: ", $current_theme->get ('Name') . " " . $current_theme->get ('Version'), "\n"; if (function_exists ('ai_debug_features_3')) ai_debug_features_3 (); } $log = ob_get_clean (); $log = str_replace (array ('<', '>'), array ('<', '>'), $log); echo $log; } function ai_shutdown_hook () { global $ai_wp_data, $ad_inserter_globals; $global_name = implode ('_', array ( 'AI', 'STATUS') ); if (function_exists ('ai_system_output')) ai_system_output (); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0 && (get_remote_debugging () || (isset ($ad_inserter_globals [$global_name]) && $ad_inserter_globals [$global_name] == 1) || ($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0)) { if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_HOMEPAGE || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_CATEGORY || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_SEARCH || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_ARCHIVE || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_404 || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_NONE || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_REST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_ANY) { echo "\n<!--\n\n"; ai_write_debug_info (true); echo "\n-->\n"; } } } function ai_activation_hook () { ai_add_rewrite_rules (); flush_rewrite_rules(); } function ai_deactivation_hook () { flush_rewrite_rules(); } function ai_check_multisite_options (&$multisite_options) { if (!isset ($multisite_options ['MULTISITE_SETTINGS_PAGE'])) $multisite_options ['MULTISITE_SETTINGS_PAGE'] = DEFAULT_MULTISITE_SETTINGS_PAGE; if (!isset ($multisite_options ['MULTISITE_WIDGETS'])) $multisite_options ['MULTISITE_WIDGETS'] = DEFAULT_MULTISITE_WIDGETS; if (!isset ($multisite_options ['MULTISITE_PHP_PROCESSING'])) $multisite_options ['MULTISITE_PHP_PROCESSING'] = DEFAULT_MULTISITE_PHP_PROCESSING; if (!isset ($multisite_options ['MULTISITE_EXCEPTIONS'])) $multisite_options ['MULTISITE_EXCEPTIONS'] = DEFAULT_MULTISITE_EXCEPTIONS; if (!isset ($multisite_options ['MULTISITE_MAIN_FOR_ALL_BLOGS'])) $multisite_options ['MULTISITE_MAIN_FOR_ALL_BLOGS'] = DEFAULT_MULTISITE_MAIN_FOR_ALL_BLOGS; if (!isset ($multisite_options ['MULTISITE_SITE_ADMIN_PAGE'])) $multisite_options ['MULTISITE_SITE_ADMIN_PAGE'] = DEFAULT_MULTISITE_SITE_ADMIN_PAGE; if (function_exists ('ai_check_multisite_options_2')) ai_check_multisite_options_2 ($multisite_options); } function ai_check_limits ($value, $min, $max, $default) { if (!is_numeric ($value)) { $value = $default; } $value = intval ($value); if ($value < $min) { $value = $min; } if ($value > $max) { $value = $max; } return $value; } function ai_check_plugin_options ($plugin_options = array ()) { global $version_string; $plugin_options ['VERSION'] = $version_string; if (!isset ($plugin_options ['SYNTAX_HIGHLIGHTER_THEME'])) $plugin_options ['SYNTAX_HIGHLIGHTER_THEME'] = DEFAULT_SYNTAX_HIGHLIGHTER_THEME; if (!isset ($plugin_options ['BLOCK_CLASS_NAME'])) $plugin_options ['BLOCK_CLASS_NAME'] = DEFAULT_BLOCK_CLASS_NAME; if (!isset ($plugin_options ['BLOCK_CLASS'])) $plugin_options ['BLOCK_CLASS'] = DEFAULT_BLOCK_CLASS; if (!isset ($plugin_options ['BLOCK_NUMBER_CLASS'])) $plugin_options ['BLOCK_NUMBER_CLASS'] = DEFAULT_BLOCK_NUMBER_CLASS; if (!isset ($plugin_options ['BLOCK_NAME_CLASS'])) $plugin_options ['BLOCK_NAME_CLASS'] = DEFAULT_BLOCK_NAME_CLASS; if (!isset ($plugin_options ['INLINE_STYLES'])) $plugin_options ['INLINE_STYLES'] = DEFAULT_INLINE_STYLES; if (!isset ($plugin_options ['MINIMUM_USER_ROLE'])) $plugin_options ['MINIMUM_USER_ROLE'] = DEFAULT_MINIMUM_USER_ROLE; if (!isset ($plugin_options ['STICKY_WIDGET_MODE'])) $plugin_options ['STICKY_WIDGET_MODE'] = DEFAULT_STICKY_WIDGET_MODE; if (!isset ($plugin_options ['STICKY_WIDGET_MARGIN'])) $plugin_options ['STICKY_WIDGET_MARGIN'] = DEFAULT_STICKY_WIDGET_MARGIN; $plugin_options ['STICKY_WIDGET_MARGIN'] = ai_check_limits ($plugin_options ['STICKY_WIDGET_MARGIN'], 0, 999, DEFAULT_STICKY_WIDGET_MARGIN); if (!isset ($plugin_options ['LAZY_LOADING_OFFSET'])) $plugin_options ['LAZY_LOADING_OFFSET'] = DEFAULT_LAZY_LOADING_OFFSET; $plugin_options ['LAZY_LOADING_OFFSET'] = ai_check_limits ($plugin_options ['LAZY_LOADING_OFFSET'], 0, 9999, DEFAULT_LAZY_LOADING_OFFSET); if (!isset ($plugin_options ['MAX_PAGE_BLOCKS'])) $plugin_options ['MAX_PAGE_BLOCKS'] = DEFAULT_MAX_PAGE_BLOCKS; $plugin_options ['MAX_PAGE_BLOCKS'] = ai_check_limits ($plugin_options ['MAX_PAGE_BLOCKS'], 0, 9999, DEFAULT_MAX_PAGE_BLOCKS); if (!isset ($plugin_options ['PLUGIN_PRIORITY'])) $plugin_options ['PLUGIN_PRIORITY'] = DEFAULT_PLUGIN_PRIORITY; $plugin_options ['PLUGIN_PRIORITY'] = ai_check_limits ($plugin_options ['PLUGIN_PRIORITY'], 0, 999999, DEFAULT_PLUGIN_PRIORITY); if (!isset ($plugin_options ['MAX_LIST_ITEMS'])) $plugin_options ['MAX_LIST_ITEMS'] = DEFAULT_MAX_LIST_ITEMS; $plugin_options ['MAX_LIST_ITEMS'] = ai_check_limits ($plugin_options ['MAX_LIST_ITEMS'], 100, 99999, DEFAULT_MAX_LIST_ITEMS); if (!isset ($plugin_options ['TAB_SETUP_DELAY'])) $plugin_options ['TAB_SETUP_DELAY'] = DEFAULT_TAB_SETUP_DELAY; $plugin_options ['TAB_SETUP_DELAY'] = ai_check_limits ($plugin_options ['TAB_SETUP_DELAY'], 0, 9999, DEFAULT_TAB_SETUP_DELAY); if (!isset ($plugin_options ['CLICK_FRAUD_PROTECTION'])) $plugin_options ['CLICK_FRAUD_PROTECTION'] = DEFAULT_CLICK_FRAUD_PROTECTION; if (!isset ($plugin_options ['CLICK_FRAUD_PROTECTION_TIME'])) $plugin_options ['CLICK_FRAUD_PROTECTION_TIME'] = DEFAULT_CLICK_FRAUD_PROTECTION_TIME; if (!isset ($plugin_options ['GLOBAL_VISITOR_LIMIT_CPT'])) $plugin_options ['GLOBAL_VISITOR_LIMIT_CPT'] = DEFAULT_GLOBAL_VISITOR_LIMIT_CPT; if (!isset ($plugin_options ['GLOBAL_VISITOR_LIMIT_TIME'])) $plugin_options ['GLOBAL_VISITOR_LIMIT_TIME'] = DEFAULT_GLOBAL_VISITOR_LIMIT_TIME; if (!isset ($plugin_options ['CFP_BLOCK_IP_ADDRESS'])) $plugin_options ['CFP_BLOCK_IP_ADDRESS'] = DEFAULT_CFP_BLOCK_IP_ADDRESS; if (!isset ($plugin_options ['DYNAMIC_BLOCKS'])) $plugin_options ['DYNAMIC_BLOCKS'] = DEFAULT_DYNAMIC_BLOCKS; if (!isset ($plugin_options ['PARAGRAPH_COUNTING_FUNCTIONS'])) $plugin_options ['PARAGRAPH_COUNTING_FUNCTIONS'] = DEFAULT_PARAGRAPH_COUNTING_FUNCTIONS; if (!isset ($plugin_options ['OUTPUT_BUFFERING'])) $plugin_options ['OUTPUT_BUFFERING'] = DEFAULT_OUTPUT_BUFFERING; if (!isset ($plugin_options ['DISABLE_CACHING'])) $plugin_options ['DISABLE_CACHING'] = DEFAULT_DISABLE_CACHING; if (!isset ($plugin_options ['MENU_FOR_LINK'])) $plugin_options ['MENU_FOR_LINK'] = DEFAULT_MENU_FOR_LINK; if (!isset ($plugin_options ['WAIT_FOR_JQUERY'])) $plugin_options ['WAIT_FOR_JQUERY'] = DEFAULT_WAIT_FOR_JQUERY; if (!isset ($plugin_options ['JAVASCRIPT_CODE_MODE'])) $plugin_options ['JAVASCRIPT_CODE_MODE'] = DEFAULT_JAVASCRIPT_CODE_MODE; if (!isset ($plugin_options ['NO_PARAGRAPH_COUNTING_INSIDE'])) $plugin_options ['NO_PARAGRAPH_COUNTING_INSIDE'] = DEFAULT_NO_PARAGRAPH_COUNTING_INSIDE; if (!isset ($plugin_options ['AD_LABEL'])) $plugin_options ['AD_LABEL'] = DEFAULT_AD_TITLE; if (!isset ($plugin_options ['MAIN_CONTENT_ELEMENT'])) $plugin_options ['MAIN_CONTENT_ELEMENT'] = DEFAULT_MAIN_CONTENT_ELEMENT; if (!isset ($plugin_options ['ADB_DEVICES'])) $plugin_options ['ADB_DEVICES'] = AI_DEFAULT_ADB_DEVICES; if (!isset ($plugin_options ['ADB_ACTION'])) $plugin_options ['ADB_ACTION'] = AI_DEFAULT_ADB_ACTION; if (!isset ($plugin_options ['ADB_NO_ACTION'])) $plugin_options ['ADB_NO_ACTION'] = AI_DEFAULT_ADB_NO_ACTION; if (!isset ($plugin_options ['ADB_DELAY_ACTION'])) $plugin_options ['ADB_DELAY_ACTION'] = ''; if (!isset ($plugin_options ['ADB_NO_ACTION_PERIOD'])) $plugin_options ['ADB_NO_ACTION_PERIOD'] = AI_DEFAULT_ADB_NO_ACTION_PERIOD; if (!isset ($plugin_options ['ADB_SELECTORS'])) $plugin_options ['ADB_SELECTORS'] = ''; if (!isset ($plugin_options ['ADB_REDIRECTION_PAGE'])) $plugin_options ['ADB_REDIRECTION_PAGE'] = AI_DEFAULT_ADB_REDIRECTION_PAGE; if (!isset ($plugin_options ['ADB_CUSTOM_REDIRECTION_URL'])) $plugin_options ['ADB_CUSTOM_REDIRECTION_URL'] = ''; if (!isset ($plugin_options ['ADB_OVERLAY_CSS'])) $plugin_options ['ADB_OVERLAY_CSS'] = AI_DEFAULT_ADB_OVERLAY_CSS; if (!isset ($plugin_options ['ADB_MESSAGE_CSS'])) $plugin_options ['ADB_MESSAGE_CSS'] = AI_DEFAULT_ADB_MESSAGE_CSS; if (!isset ($plugin_options ['ADB_UNDISMISSIBLE_MESSAGE'])) $plugin_options ['ADB_UNDISMISSIBLE_MESSAGE'] = AI_DEFAULT_ADB_UNDISMISSIBLE_MESSAGE; if (!isset ($plugin_options ['ADB_EXTERNAL_SCRIPTS'])) $plugin_options ['ADB_EXTERNAL_SCRIPTS'] = AI_DEFAULT_ADB_EXTERNAL_SCRIPTS; if (!isset ($plugin_options ['ADB_NO_UNDISMISSIBLE_MESSAGE'])) $plugin_options ['ADB_NO_UNDISMISSIBLE_MESSAGE'] = AI_DEFAULT_ADB_NO_UNDISMISSIBLE_MESSAGE; if (!isset ($plugin_options ['ADMIN_TOOLBAR_DEBUGGING'])) $plugin_options ['ADMIN_TOOLBAR_DEBUGGING'] = DEFAULT_ADMIN_TOOLBAR_DEBUGGING; if (!isset ($plugin_options ['ADMIN_TOOLBAR_MOBILE'])) $plugin_options ['ADMIN_TOOLBAR_MOBILE'] = DEFAULT_ADMIN_TOOLBAR_MOBILE; if (!isset ($plugin_options ['FORCE_ADMIN_TOOLBAR'])) $plugin_options ['FORCE_ADMIN_TOOLBAR'] = DEFAULT_FORCE_ADMIN_TOOLBAR; if (!isset ($plugin_options ['REMOTE_DEBUGGING'])) $plugin_options ['REMOTE_DEBUGGING'] = DEFAULT_REMOTE_DEBUGGING; if (!isset ($plugin_options ['DISABLE_TRANSLATION'])) $plugin_options ['DISABLE_TRANSLATION'] = DEFAULT_DISABLE_TRANSLATION; if (!isset ($plugin_options ['BACKEND_JS_DEBUGGING'])) $plugin_options ['BACKEND_JS_DEBUGGING'] = DEFAULT_BACKEND_JS_DEBUGGING; if (!isset ($plugin_options ['FRONTEND_JS_DEBUGGING'])) $plugin_options ['FRONTEND_JS_DEBUGGING'] = DEFAULT_FRONTEND_JS_DEBUGGING; if (!isset ($plugin_options ['DISABLE_BLOCK_INSERTIONS'])) $plugin_options ['DISABLE_BLOCK_INSERTIONS'] = DEFAULT_DISABLE_BLOCK_INSERTIONS; if (!isset ($plugin_options ['DISABLE_PHP_PROCESSING'])) $plugin_options ['DISABLE_PHP_PROCESSING'] = DEFAULT_DISABLE_PHP_PROCESSING; if (!isset ($plugin_options ['DISABLE_HTML_CODE'])) $plugin_options ['DISABLE_HTML_CODE'] = DEFAULT_DISABLE_HTML_CODE; if (!isset ($plugin_options ['DISABLE_CSS_CODE'])) $plugin_options ['DISABLE_CSS_CODE'] = DEFAULT_DISABLE_CSS_CODE; if (!isset ($plugin_options ['DISABLE_JS_CODE'])) $plugin_options ['DISABLE_JS_CODE'] = DEFAULT_DISABLE_JS_CODE; if (!isset ($plugin_options ['DISABLE_HEADER_CODE'])) $plugin_options ['DISABLE_HEADER_CODE'] = DEFAULT_DISABLE_HEADER_CODE; if (!isset ($plugin_options ['DISABLE_FOOTER_CODE'])) $plugin_options ['DISABLE_FOOTER_CODE'] = DEFAULT_DISABLE_FOOTER_CODE; $min_width_0_defined = false; for ($viewport = 1; $viewport <= 6; $viewport ++) { $viewport_name_option_name = 'VIEWPORT_NAME_' . $viewport; $viewport_width_option_name = 'VIEWPORT_WIDTH_' . $viewport; if (!isset ($plugin_options [$viewport_name_option_name])) $plugin_options [$viewport_name_option_name] = defined ("DEFAULT_VIEWPORT_NAME_" . $viewport) ? constant ("DEFAULT_VIEWPORT_NAME_" . $viewport) : ""; if ($viewport == 1 && $plugin_options [$viewport_name_option_name] == '') $plugin_options [$viewport_name_option_name] = constant ("DEFAULT_VIEWPORT_NAME_1"); if ($plugin_options [$viewport_name_option_name] != '') { $last_viewport_width_option_name = $viewport_width_option_name; if (!isset ($plugin_options [$viewport_width_option_name])) $plugin_options [$viewport_width_option_name] = defined ("DEFAULT_VIEWPORT_WIDTH_" . $viewport) ? constant ("DEFAULT_VIEWPORT_WIDTH_" . $viewport) : 0; $viewport_width = $plugin_options [$viewport_width_option_name]; if ($viewport > 1) { $previous_viewport_option_width = $plugin_options ['VIEWPORT_WIDTH_' . ($viewport - 1)]; } if (!is_numeric ($viewport_width)) { if ($viewport == 1) $viewport_width = constant ("DEFAULT_VIEWPORT_WIDTH_1"); else $viewport_width = $previous_viewport_option_width - 1; } if ($viewport_width > 9999) { $viewport_width = 9999; } // if ($viewport > 1) { // if ($viewport_width >= $previous_viewport_option_width) // $viewport_width = $previous_viewport_option_width - 1; // } $viewport_width = intval ($viewport_width); if ($viewport_width < 0) { $viewport_width = 0; } if ($viewport_width == 0) { $min_width_0_defined = true; } $plugin_options [$viewport_width_option_name] = $viewport_width; } else $plugin_options [$viewport_width_option_name] = ''; } if (!$min_width_0_defined) { $plugin_options [$last_viewport_width_option_name] = 0; } for ($constant = 1; $constant <= 6; $constant ++) { $constant_name_option_name = 'CONSTANT_NAME_' . $constant; $constant_value_option_name = 'CONSTANT_VALUE_' . $constant; if (!isset ($plugin_options [$constant_name_option_name])) $plugin_options [$constant_name_option_name] = ""; if (!isset ($plugin_options [$constant_value_option_name])) $plugin_options [$constant_value_option_name] = ""; } for ($hook = 1; $hook <= 20; $hook ++) { $hook_enabled_settins_name = 'HOOK_ENABLED_' . $hook; $hook_name_settins_name = 'HOOK_NAME_' . $hook; $hook_action_settins_name = 'HOOK_ACTION_' . $hook; $hook_priority_settins_name = 'HOOK_PRIORITY_' . $hook; if (!isset ($plugin_options [$hook_enabled_settins_name])) $plugin_options [$hook_enabled_settins_name] = AI_DISABLED; if (!isset ($plugin_options [$hook_name_settins_name])) $plugin_options [$hook_name_settins_name] = ''; if (!isset ($plugin_options [$hook_action_settins_name])) $plugin_options [$hook_action_settins_name] = ''; if (!isset ($plugin_options [$hook_priority_settins_name]) || !is_numeric ($plugin_options [$hook_priority_settins_name])) $plugin_options [$hook_priority_settins_name] = DEFAULT_CUSTOM_HOOK_PRIORITY; } if (function_exists ('ai_check_options')) ai_check_options ($plugin_options); return ($plugin_options); } function option_stripslashes (&$options) { $options = wp_unslash ($options); } // Deprecated function ai_get_old_option ($option_name) { $options = get_option ($option_name); option_stripslashes ($options); return ($options); } function ai_get_option ($option_name, $default = false) { $ai_db_options = get_option ($option_name, $default); if ($ai_db_options === false) { return $ai_db_options; } if (is_string ($ai_db_options) && substr ($ai_db_options, 0, 4) === ':AI:') { $ai_db_options = unserialize (base64_decode (substr ($ai_db_options, 4), true)); } return $ai_db_options; } function ai_update_option ($option_name, $value) { update_option ($option_name, ':AI:'. base64_encode (serialize ($value))); } function ai_save_options ($options, $multisite_options = null, $blocks_org = null, $blocks_new = null) { if (function_exists ('ai_save_remote_settings')) { if (ai_save_remote_settings ($options, $multisite_options, $blocks_org, $blocks_new)) return; } $options = apply_filters ('ai_save_options', $options); $multisite_options = apply_filters ('ai_save_multisite_options', $multisite_options); // Generate and save extract ai_update_option (AI_OPTION_NAME, $options); ai_load_settings (); $options [AI_OPTION_EXTRACT] = ai_generate_extract ($options); $ai_db_options_extract = $options [AI_OPTION_EXTRACT]; $options [AI_OPTION_GLOBAL]['VIEWPORT_CSS'] = generate_viewport_css (); $options [AI_OPTION_GLOBAL]['ALIGNMENT_CSS'] = generate_alignment_css (); $options [AI_OPTION_GLOBAL]['TIMESTAMP'] = time (); if (!get_option (AI_INSTALL_NAME)) { update_option (AI_INSTALL_NAME, time ()); } if (is_multisite () && !is_main_site ()) { unset ($options [AI_OPTION_GLOBAL]['PLUGIN_TYPE']); unset ($options [AI_OPTION_GLOBAL]['PLUGIN_STATUS']); unset ($options [AI_OPTION_GLOBAL]['PLUGIN_STATUS_COUNTER']); } ai_update_option (AI_OPTION_NAME, $options); update_option (AI_EXTRACT_NAME, $ai_db_options_extract); // Multisite if (is_array ($multisite_options) && is_multisite () && is_main_site ()) { update_site_option (AI_OPTION_NAME, $multisite_options); } ai_load_settings (); if (is_array ($blocks_org) && is_array ($blocks_new)) { ai_update_block_numbers ($blocks_org, $blocks_new); } } function ai_load_options () { global $ai_db_options, $ai_db_options_multisite, $ai_wp_data; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("LOAD OPTIONS START"); if (function_exists ('ai_load_remote_settings')) { if (ai_load_remote_settings ()) { if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("LOAD OPTIONS END"); return; } } if (is_multisite ()) { $ai_db_options_multisite = get_site_option (AI_OPTION_NAME, array ()); option_stripslashes ($ai_db_options_multisite); } if (is_multisite () && multisite_main_for_all_blogs () && defined ('BLOG_ID_CURRENT_SITE')) { $ai_db_options = get_blog_option (BLOG_ID_CURRENT_SITE, AI_OPTION_NAME, array ()); if (is_string ($ai_db_options) && substr ($ai_db_options, 0, 4) === ':AI:') { $ai_db_options = unserialize (base64_decode (substr ($ai_db_options, 4), true)); } option_stripslashes ($ai_db_options); } else { $ai_db_options = ai_get_option (AI_OPTION_NAME, array ()); option_stripslashes ($ai_db_options); } if (is_multisite () && !is_main_site () && defined ('BLOG_ID_CURRENT_SITE')) { $ai_db_options_main = get_blog_option (BLOG_ID_CURRENT_SITE, AI_OPTION_NAME, array ()); if (is_string ($ai_db_options_main) && substr ($ai_db_options_main, 0, 4) === ':AI:') { $ai_db_options_main = unserialize (base64_decode (substr ($ai_db_options_main, 4), true)); } if (isset ($ai_db_options_main [AI_OPTION_GLOBAL]['PLUGIN_TYPE'])) $ai_db_options [AI_OPTION_GLOBAL]['PLUGIN_TYPE'] = $ai_db_options_main [AI_OPTION_GLOBAL]['PLUGIN_TYPE']; if (isset ($ai_db_options_main [AI_OPTION_GLOBAL]['PLUGIN_STATUS'])) $ai_db_options [AI_OPTION_GLOBAL]['PLUGIN_STATUS'] = $ai_db_options_main [AI_OPTION_GLOBAL]['PLUGIN_STATUS']; if (isset ($ai_db_options_main [AI_OPTION_GLOBAL]['PLUGIN_STATUS_COUNTER'])) $ai_db_options [AI_OPTION_GLOBAL]['PLUGIN_STATUS_COUNTER'] = $ai_db_options_main [AI_OPTION_GLOBAL]['PLUGIN_STATUS_COUNTER']; } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("LOAD OPTIONS END"); } function get_viewport_css () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['VIEWPORT_CSS'])) $ai_db_options [AI_OPTION_GLOBAL]['VIEWPORT_CSS'] = generate_viewport_css (); return ($ai_db_options [AI_OPTION_GLOBAL]['VIEWPORT_CSS']); } function get_alignment_css () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ALIGNMENT_CSS']) || isset ($ai_db_options [AI_OPTION_GLOBAL]['VERSION']) && $ai_db_options [AI_OPTION_GLOBAL]['VERSION'] < '020211' ) $ai_db_options [AI_OPTION_GLOBAL]['ALIGNMENT_CSS'] = generate_alignment_css (); return (str_replace (''', "'", $ai_db_options [AI_OPTION_GLOBAL]['ALIGNMENT_CSS'])); } function get_syntax_highlighter_theme () { global $ai_db_options; // return 'ad-inserter'; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['SYNTAX_HIGHLIGHTER_THEME'])) $ai_db_options [AI_OPTION_GLOBAL]['SYNTAX_HIGHLIGHTER_THEME'] = DEFAULT_SYNTAX_HIGHLIGHTER_THEME; return ($ai_db_options [AI_OPTION_GLOBAL]['SYNTAX_HIGHLIGHTER_THEME']); } function get_block_class_name ($default_if_empty = false) { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['BLOCK_CLASS_NAME'])) $ai_db_options [AI_OPTION_GLOBAL]['BLOCK_CLASS_NAME'] = DEFAULT_BLOCK_CLASS_NAME; if ($default_if_empty && $ai_db_options [AI_OPTION_GLOBAL]['BLOCK_CLASS_NAME'] == '') return (DEFAULT_BLOCK_CLASS_NAME); return ($ai_db_options [AI_OPTION_GLOBAL]['BLOCK_CLASS_NAME']); } function get_block_class () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['BLOCK_CLASS'])) $ai_db_options [AI_OPTION_GLOBAL]['BLOCK_CLASS'] = DEFAULT_BLOCK_CLASS; return ($ai_db_options [AI_OPTION_GLOBAL]['BLOCK_CLASS']); } function get_block_number_class () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['BLOCK_NUMBER_CLASS'])) $ai_db_options [AI_OPTION_GLOBAL]['BLOCK_NUMBER_CLASS'] = DEFAULT_BLOCK_NUMBER_CLASS; return ($ai_db_options [AI_OPTION_GLOBAL]['BLOCK_NUMBER_CLASS']); } function get_block_name_class () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['BLOCK_NAME_CLASS'])) $ai_db_options [AI_OPTION_GLOBAL]['BLOCK_NAME_CLASS'] = DEFAULT_BLOCK_NAME_CLASS; return ($ai_db_options [AI_OPTION_GLOBAL]['BLOCK_NAME_CLASS']); } function get_inline_styles () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['INLINE_STYLES'])) $ai_db_options [AI_OPTION_GLOBAL]['INLINE_STYLES'] = DEFAULT_INLINE_STYLES; return ($ai_db_options [AI_OPTION_GLOBAL]['INLINE_STYLES']); } function get_minimum_user_role () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['MINIMUM_USER_ROLE'])) $ai_db_options [AI_OPTION_GLOBAL]['MINIMUM_USER_ROLE'] = DEFAULT_MINIMUM_USER_ROLE; return ($ai_db_options [AI_OPTION_GLOBAL]['MINIMUM_USER_ROLE']); } function get_sticky_widget_mode () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['STICKY_WIDGET_MODE'])) $ai_db_options [AI_OPTION_GLOBAL]['STICKY_WIDGET_MODE'] = DEFAULT_STICKY_WIDGET_MODE; return ($ai_db_options [AI_OPTION_GLOBAL]['STICKY_WIDGET_MODE']); } function get_sticky_widget_margin () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['STICKY_WIDGET_MARGIN'])) $ai_db_options [AI_OPTION_GLOBAL]['STICKY_WIDGET_MARGIN'] = DEFAULT_STICKY_WIDGET_MARGIN; return ($ai_db_options [AI_OPTION_GLOBAL]['STICKY_WIDGET_MARGIN']); } function get_lazy_loading_offset () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['LAZY_LOADING_OFFSET'])) $ai_db_options [AI_OPTION_GLOBAL]['LAZY_LOADING_OFFSET'] = DEFAULT_LAZY_LOADING_OFFSET; return ($ai_db_options [AI_OPTION_GLOBAL]['LAZY_LOADING_OFFSET']); } function get_click_fraud_protection () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['CLICK_FRAUD_PROTECTION'])) $ai_db_options [AI_OPTION_GLOBAL]['CLICK_FRAUD_PROTECTION'] = DEFAULT_CLICK_FRAUD_PROTECTION; return ($ai_db_options [AI_OPTION_GLOBAL]['CLICK_FRAUD_PROTECTION']); } function get_click_fraud_protection_time () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['CLICK_FRAUD_PROTECTION_TIME'])) $ai_db_options [AI_OPTION_GLOBAL]['CLICK_FRAUD_PROTECTION_TIME'] = DEFAULT_CLICK_FRAUD_PROTECTION_TIME; return ($ai_db_options [AI_OPTION_GLOBAL]['CLICK_FRAUD_PROTECTION_TIME']); } function get_global_visitor_limit_clicks_per_time_period () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['GLOBAL_VISITOR_LIMIT_CPT'])) $ai_db_options [AI_OPTION_GLOBAL]['GLOBAL_VISITOR_LIMIT_CPT'] = DEFAULT_GLOBAL_VISITOR_LIMIT_CPT; $option = $ai_db_options [AI_OPTION_GLOBAL]['GLOBAL_VISITOR_LIMIT_CPT']; if ($option == '0') $option = ''; return ($option); } function get_global_visitor_limit_clicks_time_period () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['GLOBAL_VISITOR_LIMIT_TIME'])) $ai_db_options [AI_OPTION_GLOBAL]['GLOBAL_VISITOR_LIMIT_TIME'] = DEFAULT_GLOBAL_VISITOR_LIMIT_TIME; $option = $ai_db_options [AI_OPTION_GLOBAL]['GLOBAL_VISITOR_LIMIT_TIME']; if ($option == '0') $option = ''; return ($option); } function get_cfp_block_ip_address () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['CFP_BLOCK_IP_ADDRESS'])) $ai_db_options [AI_OPTION_GLOBAL]['CFP_BLOCK_IP_ADDRESS'] = DEFAULT_CFP_BLOCK_IP_ADDRESS; return ($ai_db_options [AI_OPTION_GLOBAL]['CFP_BLOCK_IP_ADDRESS']); } function get_max_page_blocks () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['MAX_PAGE_BLOCKS'])) $ai_db_options [AI_OPTION_GLOBAL]['MAX_PAGE_BLOCKS'] = DEFAULT_MAX_PAGE_BLOCKS; return ($ai_db_options [AI_OPTION_GLOBAL]['MAX_PAGE_BLOCKS']); } function get_plugin_priority () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['PLUGIN_PRIORITY'])) $ai_db_options [AI_OPTION_GLOBAL]['PLUGIN_PRIORITY'] = DEFAULT_PLUGIN_PRIORITY; return ($ai_db_options [AI_OPTION_GLOBAL]['PLUGIN_PRIORITY']); } function get_max_list_items () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['MAX_LIST_ITEMS'])) $ai_db_options [AI_OPTION_GLOBAL]['MAX_LIST_ITEMS'] = DEFAULT_MAX_LIST_ITEMS; return ($ai_db_options [AI_OPTION_GLOBAL]['MAX_LIST_ITEMS']); } function get_tab_setup_delay () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['TAB_SETUP_DELAY'])) $ai_db_options [AI_OPTION_GLOBAL]['TAB_SETUP_DELAY'] = DEFAULT_TAB_SETUP_DELAY; return ($ai_db_options [AI_OPTION_GLOBAL]['TAB_SETUP_DELAY']); } function get_dynamic_blocks(){ global $ai_db_options, $ai_wp_data; if (isset ($ai_wp_data [AI_DYNAMIC_BLOCKS])) { return ($ai_wp_data [AI_DYNAMIC_BLOCKS]); } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DYNAMIC_BLOCKS'])) $ai_db_options [AI_OPTION_GLOBAL]['DYNAMIC_BLOCKS'] = DEFAULT_DYNAMIC_BLOCKS; return ($ai_db_options [AI_OPTION_GLOBAL]['DYNAMIC_BLOCKS']); } function get_paragraph_counting_functions(){ global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['PARAGRAPH_COUNTING_FUNCTIONS'])) $ai_db_options [AI_OPTION_GLOBAL]['PARAGRAPH_COUNTING_FUNCTIONS'] = DEFAULT_PARAGRAPH_COUNTING_FUNCTIONS; return ($ai_db_options [AI_OPTION_GLOBAL]['PARAGRAPH_COUNTING_FUNCTIONS']); } function get_output_buffering(){ global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['OUTPUT_BUFFERING'])) $ai_db_options [AI_OPTION_GLOBAL]['OUTPUT_BUFFERING'] = DEFAULT_OUTPUT_BUFFERING; return ($ai_db_options [AI_OPTION_GLOBAL]['OUTPUT_BUFFERING']); } function get_menu_position (){ global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['MENU_FOR_LINK'])) $ai_db_options [AI_OPTION_GLOBAL]['MENU_FOR_LINK'] = DEFAULT_MENU_FOR_LINK; return ($ai_db_options [AI_OPTION_GLOBAL]['MENU_FOR_LINK']); } function get_disable_caching (){ global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_CACHING'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_CACHING'] = DEFAULT_DISABLE_CACHING; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_CACHING']); } function get_wait_for_jquery (){ global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['WAIT_FOR_JQUERY'])) $ai_db_options [AI_OPTION_GLOBAL]['WAIT_FOR_JQUERY'] = DEFAULT_WAIT_FOR_JQUERY; return ($ai_db_options [AI_OPTION_GLOBAL]['WAIT_FOR_JQUERY']); } function get_javascript_code_mode (){ global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['JAVASCRIPT_CODE_MODE'])) $ai_db_options [AI_OPTION_GLOBAL]['JAVASCRIPT_CODE_MODE'] = DEFAULT_JAVASCRIPT_CODE_MODE; return ($ai_db_options [AI_OPTION_GLOBAL]['JAVASCRIPT_CODE_MODE']); } function get_no_paragraph_counting_inside () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['NO_PARAGRAPH_COUNTING_INSIDE'])) $ai_db_options [AI_OPTION_GLOBAL]['NO_PARAGRAPH_COUNTING_INSIDE'] = DEFAULT_NO_PARAGRAPH_COUNTING_INSIDE; return (str_replace (array ('<', '>'), '', $ai_db_options [AI_OPTION_GLOBAL]['NO_PARAGRAPH_COUNTING_INSIDE'])); } function get_ad_label ($decode = false) { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['AD_LABEL'])) $ai_db_options [AI_OPTION_GLOBAL]['AD_LABEL'] = DEFAULT_AD_TITLE; if ($decode) return (html_entity_decode ($ai_db_options [AI_OPTION_GLOBAL]['AD_LABEL'])); return ($ai_db_options [AI_OPTION_GLOBAL]['AD_LABEL']); } function get_main_content_element () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['MAIN_CONTENT_ELEMENT'])) $ai_db_options [AI_OPTION_GLOBAL]['MAIN_CONTENT_ELEMENT'] = DEFAULT_MAIN_CONTENT_ELEMENT; return ($ai_db_options [AI_OPTION_GLOBAL]['MAIN_CONTENT_ELEMENT']); } function get_force_admin_toolbar () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['FORCE_ADMIN_TOOLBAR'])) $ai_db_options [AI_OPTION_GLOBAL]['FORCE_ADMIN_TOOLBAR'] = DEFAULT_FORCE_ADMIN_TOOLBAR; return ($ai_db_options [AI_OPTION_GLOBAL]['FORCE_ADMIN_TOOLBAR']); } function get_admin_toolbar_debugging () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADMIN_TOOLBAR_DEBUGGING'])) $ai_db_options [AI_OPTION_GLOBAL]['ADMIN_TOOLBAR_DEBUGGING'] = DEFAULT_ADMIN_TOOLBAR_DEBUGGING; return ($ai_db_options [AI_OPTION_GLOBAL]['ADMIN_TOOLBAR_DEBUGGING']); } function get_admin_toolbar_mobile () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADMIN_TOOLBAR_MOBILE'])) $ai_db_options [AI_OPTION_GLOBAL]['ADMIN_TOOLBAR_MOBILE'] = DEFAULT_ADMIN_TOOLBAR_MOBILE; return ($ai_db_options [AI_OPTION_GLOBAL]['ADMIN_TOOLBAR_MOBILE']); } function get_remote_debugging () { global $ai_db_options; if (function_exists ('ai_remote_debugging')) return ai_remote_debugging (); if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['REMOTE_DEBUGGING'])) $ai_db_options [AI_OPTION_GLOBAL]['REMOTE_DEBUGGING'] = DEFAULT_REMOTE_DEBUGGING; return ($ai_db_options [AI_OPTION_GLOBAL]['REMOTE_DEBUGGING']); } function get_disable_translation () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_TRANSLATION'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_TRANSLATION'] = DEFAULT_DISABLE_TRANSLATION; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_TRANSLATION']); } function get_backend_javascript_debugging () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['BACKEND_JS_DEBUGGING'])) $ai_db_options [AI_OPTION_GLOBAL]['BACKEND_JS_DEBUGGING'] = DEFAULT_BACKEND_JS_DEBUGGING; return ($ai_db_options [AI_OPTION_GLOBAL]['BACKEND_JS_DEBUGGING']); } function get_frontend_javascript_debugging () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['FRONTEND_JS_DEBUGGING'])) $ai_db_options [AI_OPTION_GLOBAL]['FRONTEND_JS_DEBUGGING'] = DEFAULT_FRONTEND_JS_DEBUGGING; return ($ai_db_options [AI_OPTION_GLOBAL]['FRONTEND_JS_DEBUGGING']); } function get_disable_block_insertions () { global $ai_db_options; if (isset ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]) && $_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS] == 'all' && get_remote_debugging ()) return true; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_BLOCK_INSERTIONS'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_BLOCK_INSERTIONS'] = DEFAULT_DISABLE_BLOCK_INSERTIONS; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_BLOCK_INSERTIONS']); } function get_disable_php_processing () { global $ai_db_options; if (isset ($_GET [AI_URL_DEBUG_DISABLE_PHP_PROCESSING]) && $_GET [AI_URL_DEBUG_DISABLE_PHP_PROCESSING] && get_remote_debugging ()) return true; if (isset ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]) && get_remote_debugging ()) { if ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS] == 'php') return true; if (strpos ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS], '-') !== false) { $blocks = explode ('-', $_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]); if (in_array ('php', $blocks)) return true; } } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_PHP_PROCESSING'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_PHP_PROCESSING'] = DEFAULT_DISABLE_PHP_PROCESSING; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_PHP_PROCESSING']); } function get_disable_html_code () { global $ai_db_options; if (isset ($_GET [AI_URL_DEBUG_DISABLE_HTML_CODE]) && $_GET [AI_URL_DEBUG_DISABLE_HTML_CODE] && get_remote_debugging ()) return true; if (isset ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]) && get_remote_debugging ()) { if ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS] == 'html') return true; if (strpos ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS], '-') !== false) { $blocks = explode ('-', $_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]); if (in_array ('html', $blocks)) return true; } } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_HTML_CODE'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_HTML_CODE'] = DEFAULT_DISABLE_CSS_CODE; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_HTML_CODE']); } function get_disable_css_code () { global $ai_db_options; if (isset ($_GET [AI_URL_DEBUG_DISABLE_CSS_CODE]) && $_GET [AI_URL_DEBUG_DISABLE_CSS_CODE] && get_remote_debugging ()) return true; if (isset ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]) && get_remote_debugging ()) { if ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS] == 'css') return true; if (strpos ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS], '-') !== false) { $blocks = explode ('-', $_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]); if (in_array ('css', $blocks)) return true; } } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_CSS_CODE'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_CSS_CODE'] = DEFAULT_DISABLE_CSS_CODE; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_CSS_CODE']); } function get_disable_js_code () { global $ai_db_options; if (isset ($_GET [AI_URL_DEBUG_DISABLE_JS_CODE]) && $_GET [AI_URL_DEBUG_DISABLE_JS_CODE] && get_remote_debugging ()) return true; if (isset ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]) && get_remote_debugging ()) { if ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS] == 'js') return true; if (strpos ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS], '-') !== false) { $blocks = explode ('-', $_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]); if (in_array ('js', $blocks)) return true; } } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_JS_CODE'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_JS_CODE'] = DEFAULT_DISABLE_JS_CODE; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_JS_CODE']); } function get_disable_header_code () { global $ai_db_options; if (isset ($_GET [AI_URL_DEBUG_DISABLE_HEADER_CODE]) && $_GET [AI_URL_DEBUG_DISABLE_HEADER_CODE] && get_remote_debugging ()) return true; if (isset ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]) && get_remote_debugging ()) { if ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS] == 'h') return true; if (strpos ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS], '-') !== false) { $blocks = explode ('-', $_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]); if (in_array ('h', $blocks)) return true; } } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_HEADER_CODE'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_HEADER_CODE'] = DEFAULT_DISABLE_HEADER_CODE; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_HEADER_CODE']); } function get_disable_footer_code () { global $ai_db_options; if (isset ($_GET [AI_URL_DEBUG_DISABLE_FOOTER_CODE]) && $_GET [AI_URL_DEBUG_DISABLE_FOOTER_CODE] && get_remote_debugging ()) return true; if (isset ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]) && get_remote_debugging ()) { if ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS] == 'f') return true; if (strpos ($_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS], '-') !== false) { $blocks = explode ('-', $_GET [AI_URL_DEBUG_DISABLE_BLOCK_INSERTIONS]); if (in_array ('f', $blocks)) return true; } } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_FOOTER_CODE'])) $ai_db_options [AI_OPTION_GLOBAL]['DISABLE_FOOTER_CODE'] = DEFAULT_DISABLE_FOOTER_CODE; return ($ai_db_options [AI_OPTION_GLOBAL]['DISABLE_FOOTER_CODE']); } function get_blocks_sticky () { if (!function_exists ('ai_block_list_buttons')) return false; $current_flags = get_option (AI_FLAGS_NAME, 0); return (($current_flags & AD_FLAGS_BLOCKS_STICKY) != 0); } function get_settings_hidden () { if (!function_exists ('ai_block_list_buttons')) return false; $current_flags = get_option (AI_FLAGS_NAME, 0); return (($current_flags & AD_FLAGS_SETTINGS_HIDDEN) != 0); } function get_viewport_name ($viewport_number) { global $ai_db_options; $viewport_settins_name = 'VIEWPORT_NAME_' . $viewport_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$viewport_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$viewport_settins_name] = defined ("DEFAULT_VIEWPORT_NAME_" . $viewport_number) ? constant ("DEFAULT_VIEWPORT_NAME_" . $viewport_number) : ""; return ($ai_db_options [AI_OPTION_GLOBAL][$viewport_settins_name]); } function get_viewport_width ($viewport_number) { global $ai_db_options; $viewport_settins_name = 'VIEWPORT_WIDTH_' . $viewport_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$viewport_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$viewport_settins_name] = defined ("DEFAULT_VIEWPORT_WIDTH_" . $viewport_number) ? constant ("DEFAULT_VIEWPORT_WIDTH_" . $viewport_number) : ""; return ($ai_db_options [AI_OPTION_GLOBAL][$viewport_settins_name]); } function get_constant_name ($constant_number) { global $ai_db_options; $constant_settins_name = 'CONSTANT_NAME_' . $constant_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$constant_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$constant_settins_name] = ""; return ($ai_db_options [AI_OPTION_GLOBAL][$constant_settins_name]); } function get_constant_value ($constant_number) { global $ai_db_options; $constant_settins_name = 'CONSTANT_VALUE_' . $constant_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$constant_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$constant_settins_name] = ""; return ($ai_db_options [AI_OPTION_GLOBAL][$constant_settins_name]); } function get_hook_enabled ($hook_number) { global $ai_db_options; $hook_settins_name = 'HOOK_ENABLED_' . $hook_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name] = AI_DISABLED; return ($ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name]); } function get_hook_name ($hook_number) { global $ai_db_options; $hook_settins_name = 'HOOK_NAME_' . $hook_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name] = ""; return ($ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name]); } function get_hook_action ($hook_number) { global $ai_db_options; $hook_settins_name = 'HOOK_ACTION_' . $hook_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name] = ""; return ($ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name]); } function get_hook_priority ($hook_number) { global $ai_db_options; $hook_settins_name = 'HOOK_PRIORITY_' . $hook_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name] = DEFAULT_CUSTOM_HOOK_PRIORITY; return ($ai_db_options [AI_OPTION_GLOBAL][$hook_settins_name]); } function get_country_group_name ($group_number) { global $ai_db_options; $country_group_settins_name = 'COUNTRY_GROUP_NAME_' . $group_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$country_group_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$country_group_settins_name] = DEFAULT_COUNTRY_GROUP_NAME . ' ' . $group_number; return ($ai_db_options [AI_OPTION_GLOBAL][$country_group_settins_name]); } function get_group_country_list ($group_number) { global $ai_db_options; $group_countries_settins_name = 'GROUP_COUNTRIES_' . $group_number; if (!isset ($ai_db_options [AI_OPTION_GLOBAL][$group_countries_settins_name])) $ai_db_options [AI_OPTION_GLOBAL][$group_countries_settins_name] = ''; return ($ai_db_options [AI_OPTION_GLOBAL][$group_countries_settins_name]); } function multisite_settings_page_enabled () { global $ai_db_options_multisite; if (ai_remote ('multisite', is_multisite ())) { if (!isset ($ai_db_options_multisite ['MULTISITE_SETTINGS_PAGE'])) $ai_db_options_multisite ['MULTISITE_SETTINGS_PAGE'] = DEFAULT_MULTISITE_SETTINGS_PAGE; if ($ai_db_options_multisite ['MULTISITE_SETTINGS_PAGE'] == '') $ai_db_options_multisite ['MULTISITE_SETTINGS_PAGE'] = DEFAULT_MULTISITE_SETTINGS_PAGE; if (multisite_main_for_all_blogs ()) $ai_db_options_multisite ['MULTISITE_SETTINGS_PAGE'] = AI_DISABLED; elseif (current_user_can ('manage_network_plugins')) $ai_db_options_multisite ['MULTISITE_SETTINGS_PAGE'] = AI_ENABLED; return ($ai_db_options_multisite ['MULTISITE_SETTINGS_PAGE']); } return DEFAULT_MULTISITE_SETTINGS_PAGE; } function multisite_widgets_enabled () { global $ai_db_options_multisite; if (ai_remote ('multisite', is_multisite ())) { if (!isset ($ai_db_options_multisite ['MULTISITE_WIDGETS'])) $ai_db_options_multisite ['MULTISITE_WIDGETS'] = DEFAULT_MULTISITE_WIDGETS; if ($ai_db_options_multisite ['MULTISITE_WIDGETS'] == '') $ai_db_options_multisite ['MULTISITE_WIDGETS'] = DEFAULT_MULTISITE_WIDGETS; return ($ai_db_options_multisite ['MULTISITE_WIDGETS']); } return DEFAULT_MULTISITE_WIDGETS; } function multisite_php_processing () { global $ai_db_options_multisite; if (ai_remote ('multisite', is_multisite ())) { if (function_exists ('ai_filter_multisite_settings')) { if (!isset ($ai_db_options_multisite ['MULTISITE_PHP_PROCESSING'])) $ai_db_options_multisite ['MULTISITE_PHP_PROCESSING'] = DEFAULT_MULTISITE_PHP_PROCESSING; if ($ai_db_options_multisite ['MULTISITE_PHP_PROCESSING'] == '') $ai_db_options_multisite ['MULTISITE_PHP_PROCESSING'] = DEFAULT_MULTISITE_PHP_PROCESSING; return ($ai_db_options_multisite ['MULTISITE_PHP_PROCESSING']); } return AI_ENABLED; } return DEFAULT_MULTISITE_PHP_PROCESSING; } function multisite_exceptions_enabled () { global $ai_db_options_multisite; if (ai_remote ('multisite', is_multisite ())) { if (!isset ($ai_db_options_multisite ['MULTISITE_EXCEPTIONS'])) $ai_db_options_multisite ['MULTISITE_EXCEPTIONS'] = DEFAULT_MULTISITE_EXCEPTIONS; if ($ai_db_options_multisite ['MULTISITE_EXCEPTIONS'] == '') $ai_db_options_multisite ['MULTISITE_EXCEPTIONS'] = DEFAULT_MULTISITE_EXCEPTIONS; return ($ai_db_options_multisite ['MULTISITE_EXCEPTIONS']); } return DEFAULT_MULTISITE_EXCEPTIONS; } function multisite_main_for_all_blogs () { global $ai_db_options_multisite; if (ai_remote ('multisite', is_multisite ())) { if (!isset ($ai_db_options_multisite ['MULTISITE_MAIN_FOR_ALL_BLOGS'])) $ai_db_options_multisite ['MULTISITE_MAIN_FOR_ALL_BLOGS'] = DEFAULT_MULTISITE_MAIN_FOR_ALL_BLOGS; if ($ai_db_options_multisite ['MULTISITE_MAIN_FOR_ALL_BLOGS'] == '') $ai_db_options_multisite ['MULTISITE_MAIN_FOR_ALL_BLOGS'] = DEFAULT_MULTISITE_MAIN_FOR_ALL_BLOGS; return ($ai_db_options_multisite ['MULTISITE_MAIN_FOR_ALL_BLOGS']); } return DEFAULT_MULTISITE_MAIN_FOR_ALL_BLOGS; } function multisite_site_admin_page () { global $ai_db_options_multisite; if (ai_remote ('multisite', is_multisite ())) { if (!isset ($ai_db_options_multisite ['MULTISITE_SITE_ADMIN_PAGE'])) $ai_db_options_multisite ['MULTISITE_SITE_ADMIN_PAGE'] = DEFAULT_MULTISITE_SITE_ADMIN_PAGE; if (multisite_main_for_all_blogs ()) $ai_db_options_multisite ['MULTISITE_SITE_ADMIN_PAGE'] = AI_DISABLED; return ($ai_db_options_multisite ['MULTISITE_SITE_ADMIN_PAGE']); } return DEFAULT_MULTISITE_SITE_ADMIN_PAGE; } function get_adb_devices () { global $ai_db_options, $ai_wp_data; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_DEVICES'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_DEVICES'] = AI_DEFAULT_ADB_DEVICES; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_DEVICES']); } function get_adb_action ($saved_value = false) { global $ai_db_options, $ai_wp_data; if (!$saved_value) { if ($ai_wp_data [AI_CODE_FOR_IFRAME]) return AI_ADB_ACTION_NONE; switch (get_adb_no_action ()) { case AI_ADB_NO_ACTION_LOGGED_IN: if (($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0) return AI_ADB_ACTION_NONE; break; case AI_ADB_NO_ACTION_ADMINISTRATORS: if (($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0) return AI_ADB_ACTION_NONE; break; } if (isset ($ai_wp_data [AI_ADB_SHORTCODE_ACTION])) return ($ai_wp_data [AI_ADB_SHORTCODE_ACTION]); } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_ACTION'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_ACTION'] = AI_DEFAULT_ADB_ACTION; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_ACTION']); } function get_adb_no_action ($saved_value = false) { global $ai_db_options, $ai_wp_data; if (!$saved_value) { if ($ai_wp_data [AI_CODE_FOR_IFRAME]) return AI_ADB_NO_ACTION_NONE; } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_ACTION'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_ACTION'] = AI_DEFAULT_ADB_NO_ACTION; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_ACTION']); } function get_delay_action ($return_number = false) { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_DELAY_ACTION'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_DELAY_ACTION'] = ''; if ($return_number) { $value = trim ($ai_db_options [AI_OPTION_GLOBAL]['ADB_DELAY_ACTION']); if ($value == '') $value = 0; // if (is_numeric ($value)) return $value; else return 0; } return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_DELAY_ACTION']); } function get_no_action_period ($return_number = false) { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_ACTION_PERIOD'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_ACTION_PERIOD'] = AI_DEFAULT_ADB_NO_ACTION_PERIOD; if ($return_number) { $value = trim ($ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_ACTION_PERIOD']); if ($value == '') $value = 0; if (is_numeric ($value)) return $value; else return AI_DEFAULT_ADB_NO_ACTION_PERIOD; } return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_ACTION_PERIOD']); } function get_adb_selectors ($decode = false) { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_SELECTORS'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_SELECTORS'] = ''; if ($decode) return (html_entity_decode ($ai_db_options [AI_OPTION_GLOBAL]['ADB_SELECTORS'])); else return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_SELECTORS']); } function get_redirection_page ($return_number = false) { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_REDIRECTION_PAGE'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_REDIRECTION_PAGE'] = AI_DEFAULT_ADB_REDIRECTION_PAGE; if ($return_number) { $value = trim ($ai_db_options [AI_OPTION_GLOBAL]['ADB_REDIRECTION_PAGE']); if ($value == '') $value = 0; if (is_numeric ($value)) return $value; else return AI_DEFAULT_ADB_REDIRECTION_PAGE; } return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_REDIRECTION_PAGE']); } function get_custom_redirection_url () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_CUSTOM_REDIRECTION_URL'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_CUSTOM_REDIRECTION_URL'] = ''; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_CUSTOM_REDIRECTION_URL']); } function get_adb_external_scripts () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_EXTERNAL_SCRIPTS'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_EXTERNAL_SCRIPTS'] = AI_DEFAULT_ADB_EXTERNAL_SCRIPTS; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_EXTERNAL_SCRIPTS']); } function get_message_css () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_MESSAGE_CSS'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_MESSAGE_CSS'] = AI_DEFAULT_ADB_MESSAGE_CSS; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_MESSAGE_CSS']); } function get_overlay_css () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_OVERLAY_CSS'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_OVERLAY_CSS'] = AI_DEFAULT_ADB_OVERLAY_CSS; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_OVERLAY_CSS']); } function get_undismissible_message ($saved_value = false) { global $ai_db_options, $ai_wp_data; if (!$saved_value) { switch (get_no_undismissible_message ()) { case AI_ADB_NO_ACTION_LOGGED_IN: if (($ai_wp_data [AI_WP_USER] & AI_USER_LOGGED_IN) != 0) return AI_DISABLED; break; case AI_ADB_NO_ACTION_ADMINISTRATORS: if (($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0) return AI_DISABLED; break; } } if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_UNDISMISSIBLE_MESSAGE'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_UNDISMISSIBLE_MESSAGE'] = AI_DEFAULT_ADB_UNDISMISSIBLE_MESSAGE; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_UNDISMISSIBLE_MESSAGE']); } function get_no_undismissible_message () { global $ai_db_options; if (!isset ($ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_UNDISMISSIBLE_MESSAGE'])) $ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_UNDISMISSIBLE_MESSAGE'] = AI_DEFAULT_ADB_NO_UNDISMISSIBLE_MESSAGE; return ($ai_db_options [AI_OPTION_GLOBAL]['ADB_NO_UNDISMISSIBLE_MESSAGE']); } function filter_html_class ($str){ $str = str_replace (array ("\\\""), array ("\""), $str); $str = sanitize_html_class ($str); return $str; } function filter_string ($str){ $str = str_replace (array ("\\\""), array ("\""), $str); $str = str_replace (array ("\"", "<", ">"), "", $str); $str = trim (esc_html ($str)); return $str; } function filter_string_tags ($str){ $str = str_replace (array ("\\\""), array ("\""), $str); $str = str_replace (array ("\""), "", $str); $str = str_replace (array ("<", ">"), array ("<", ">"), $str); $str = trim (esc_html ($str)); return $str; } function filter_option ($option, $value, $delete_escaped_backslashes = true){ if ($delete_escaped_backslashes) $value = str_replace (array ("\\\""), array ("\""), $value); if ($option == 'ADB_SELECTORS' || $option == AI_OPTION_HTML_SELECTOR || $option == AI_OPTION_ANIMATION_TRIGGER_VALUE || $option == 'MAIN_CONTENT_ELEMENT') { $value = str_replace (array ("\\", "/", "?", "\"", "'", "'", '"'), "", $value); $value = esc_html ($value); } elseif ($option == AI_OPTION_DOMAIN_LIST || $option == 'NO_PARAGRAPH_COUNTING_INSIDE' || $option == AI_OPTION_BACKGROUND_COLOR || $option == AI_OPTION_BLOCK_BACKGROUND_COLOR || $option == AI_OPTION_PARAGRAPH_TAGS || $option == AI_OPTION_COUNT_INSIDE_ELEMENTS || $option == AI_OPTION_IP_ADDRESS_LIST || $option == AI_OPTION_COUNTRY_LIST) { $value = str_replace (array ("\\", "/", "?", "\"", "'", "<", ">", "[", "]", "'", '"'), "", $value); $value = esc_html ($value); } elseif ($option == AI_OPTION_BLOCK_WIDTH || $option == AI_OPTION_BLOCK_HEIGHT) { $value = str_replace (array ("\"", "'", "<", ">", "[", "]", "'", '"'), "", $value); $value = esc_html ($value); } elseif ( $option == AI_OPTION_PARAGRAPH_TEXT || $option == AI_OPTION_COUNT_INSIDE_ELEMENTS_TEXT || $option == AI_OPTION_AVOID_TEXT_ABOVE || $option == AI_OPTION_AVOID_TEXT_BELOW || $option == AI_OPTION_CLIENT_LIST ) { $value = esc_html ($value); } elseif ($option == AI_OPTION_BLOCK_NAME || $option == AI_OPTION_GENERAL_TAG || $option == AI_OPTION_DOMAIN_LIST || $option == AI_OPTION_CATEGORY_LIST || $option == AI_OPTION_TAG_LIST || $option == AI_OPTION_TAXONOMY_LIST || $option == AI_OPTION_ID_LIST || $option == AI_OPTION_URL_LIST || $option == AI_OPTION_MIN_PARAGRAPHS || $option == AI_OPTION_MAX_PARAGRAPHS || $option == AI_OPTION_SKIP_FIRST_PARAGRAPHS || $option == AI_OPTION_SKIP_LAST_PARAGRAPHS || $option == AI_OPTION_MIN_WORDS_ABOVE || $option == AI_OPTION_AVOID_PARAGRAPHS_ABOVE || $option == AI_OPTION_AVOID_PARAGRAPHS_BELOW || $option == AI_OPTION_AVOID_TRY_LIMIT || $option == AI_OPTION_MIN_WORDS || $option == AI_OPTION_MAX_WORDS || $option == AI_OPTION_MIN_PARAGRAPH_WORDS || $option == AI_OPTION_MAX_PARAGRAPH_WORDS || $option == AI_OPTION_MAXIMUM_INSERTIONS || $option == AI_OPTION_AFTER_DAYS || $option == AI_OPTION_START_DATE || $option == AI_OPTION_END_DATE || $option == AI_OPTION_SCHEDULING_FALLBACK || $option == AI_OPTION_LIMITS_FALLBACK || $option == AI_OPTION_EXCERPT_NUMBER || $option == AI_OPTION_WAIT_FOR_DELAY || $option == AI_OPTION_HORIZONTAL_MARGIN || $option == AI_OPTION_VERTICAL_MARGIN || $option == AI_OPTION_ANIMATION_TRIGGER_OFFSET || $option == AI_OPTION_ANIMATION_TRIGGER_DELAY || $option == AI_OPTION_IFRAME_WIDTH || $option == AI_OPTION_IFRAME_HEIGHT || $option == AI_OPTION_STICKY_HEIGHT || $option == AI_OPTION_AUTO_CLOSE_TIME || $option == AI_OPTION_STAY_CLOSED_TIME || $option == AI_OPTION_DELAY_SHOWING || $option == AI_OPTION_SHOW_EVERY || $option == AI_OPTION_VISITOR_MAX_IMPRESSIONS || $option == AI_OPTION_VISITOR_LIMIT_IMPRESSIONS_PER_TIME_PERIOD || $option == AI_OPTION_VISITOR_LIMIT_IMPRESSIONS_TIME_PERIOD || $option == AI_OPTION_MAX_IMPRESSIONS || $option == AI_OPTION_LIMIT_IMPRESSIONS_PER_TIME_PERIOD || $option == AI_OPTION_LIMIT_IMPRESSIONS_TIME_PERIOD || $option == AI_OPTION_VISITOR_MAX_CLICKS || $option == AI_OPTION_VISITOR_LIMIT_CLICKS_PER_TIME_PERIOD || $option == AI_OPTION_VISITOR_LIMIT_CLICKS_TIME_PERIOD || $option == AI_OPTION_MAX_CLICKS || $option == AI_OPTION_LIMIT_CLICKS_PER_TIME_PERIOD || $option == AI_OPTION_LIMIT_CLICKS_TIME_PERIOD || $option == AI_OPTION_BACKGROUND_IMAGE || $option == AI_OPTION_PARALLAX . '_1' || $option == AI_OPTION_PARALLAX . '_2' || $option == AI_OPTION_PARALLAX . '_3' || $option == AI_OPTION_PARALLAX_IMAGE . '_1' || $option == AI_OPTION_PARALLAX_IMAGE . '_2' || $option == AI_OPTION_PARALLAX_IMAGE . '_3' || $option == AI_OPTION_PARALLAX_SHIFT . '_1' || $option == AI_OPTION_PARALLAX_SHIFT . '_2' || $option == AI_OPTION_PARALLAX_SHIFT . '_3' || $option == AI_OPTION_PARALLAX_LINK || $option == 'CLICK_FRAUD_PROTECTION_TIME' || $option == 'GLOBAL_VISITOR_LIMIT_CPT' || $option == 'GLOBAL_VISITOR_LIMIT_TIME' || $option == 'ADB_DELAY_ACTION' || $option == 'ADB_NO_ACTION_PERIOD' || $option == 'ADB_REDIRECTION_PAGE' || $option == 'ADB_CUSTOM_REDIRECTION_URL' || $option == AI_OPTION_CUSTOM_CSS || $option == 'HOOK_PRIORITY' || $option == 'ADB_OVERLAY_CSS' || $option == 'ADB_MESSAGE_CSS') { $value = str_replace (array ("\"", "<", ">", "[", "]"), "", $value); $value = esc_html ($value); } elseif ($option == AI_OPTION_PARAGRAPH_NUMBER) { $value = str_replace (array ("\"", "<", ">"), "", $value); $value = esc_html ($value); } elseif ($option == AI_OPTION_URL_PARAMETER_LIST || $option == AI_OPTION_COOKIE_LIST) { $value = str_replace (array ("\"", "<", ">"), "", $value); $value = esc_html ($value); } elseif ($option == 'AD_LABEL') { $value = str_replace (array ("\\"), "", $value); $value = esc_html ($value); } elseif ($option == 'REPORT_HEADER_TITLE' || $option == 'REPORT_HEADER_DESCRIPTION' || $option == 'EXTERNAL_TRACKING_CATEGORY' || $option == 'EXTERNAL_TRACKING_ACTION' || $option == 'EXTERNAL_TRACKING_LABEL' || $option == 'REPORT_FOOTER') { $value = str_replace (array ("\\", "?"), "", $value); $value = esc_html ($value); } elseif ( $option == 'REPORT_HEADER_IMAGE') { $value = str_replace (home_url () . '/', '', $value); $value = str_replace (array ("http://", "https://", ":". "\"", "<", ">", "[", "]"), "", $value); $value = esc_html ($value); } elseif ( $option == 'RECAPTCHA_THRESHOLD' ) { $value = str_replace (array (":". "\"", "<", ">", "[", "]"), "", $value); $value = esc_html ($value); } elseif ( $option == 'MAXMIND_LICENSE_KEY' || $option == 'GEO_DB' ) { $value = str_replace (array (":". "\"", "<", ">", "[", "]"), "", $value); } return $value; } function filter_option_hf ($option, $value){ $value = str_replace (array ("\\\""), array ("\""), $value); // if ($option == AI_OPTION_CODE ) { // } elseif ($option == AI_OPTION_ENABLE_MANUAL) { // } elseif ($option == AI_OPTION_PROCESS_PHP) { // } elseif ($option == AI_OPTION_ENABLE_404) { // } elseif ($option == AI_OPTION_DETECT_SERVER_SIDE) { // } elseif ($option == AI_OPTION_DISPLAY_FOR_DEVICES) { // } return $value; } function ai_write_settings_string () { if (get_remote_debugging ()) { global $ai_wp_data, $ai_db_options, $ai_db_options_multisite; if (isset ($_GET ["ai-show-errors"])) { ini_set ('display_errors', 1); error_reporting (E_ALL); } if (function_exists ('ai_check_remote_settings')) { ai_check_remote_settings (); } $tracking = false; if (defined ('AI_PLUGIN_TRACKING') && AI_PLUGIN_TRACKING) { global $ai_dst; if (isset ($ai_dst) && is_object ($ai_dst) && $ai_dst->get_plugin_tracking () !== null) { $tracking = $ai_dst->get_tracking (); } } $current_theme = wp_get_theme (); $plugin_data = array ( 'version' => AD_INSERTER_NAME . ' ' . AD_INSERTER_VERSION, 'install' => get_option (AI_INSTALL_NAME), 'install-time' => isset ($ai_wp_data [AI_INSTALL_TIME_DIFFERENCE]) ? $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE] : '', 'since-install' => isset ($ai_wp_data [AI_DAYS_SINCE_INSTAL]) ? $ai_wp_data [AI_DAYS_SINCE_INSTAL] : null, 'tracking' => $tracking, 'review' => get_option ('ai-notice-review', ''), 'pro' => false, 'write' => false, 'sidebar-widgets' => get_sidebar_widgets (), 'exceptions' => ai_get_exceptions (/*ai_current_user_role_ok () && */(!is_multisite() || is_main_site () || multisite_exceptions_enabled ())), 'current-theme' => array ('name' => $current_theme->get ('Name'), 'version' => $current_theme->get ('Version')), 'virtual-ads-txt' => get_option (AI_ADS_TXT_NAME) !== false, 'categories' => ai_get_category_list (), 'tags' => ai_get_tag_list (), 'post-ids' => ai_get_post_id_list (), 'license-key' => '', 'type' => '', 'status' => '', 'last-update' => '', 'client' => false, 'counter' => '', ); if (function_exists ('ai_plugin_data')) { ai_plugin_data ($plugin_data); } else $plugin_data ['taxonomies'] = ai_get_taxonomy_list (true); echo '#', base64_encode (serialize ($plugin_data)), '#'; if (is_multisite()) { echo base64_encode (serialize ($ai_db_options_multisite)); } echo "#"; if (is_multisite() && multisite_main_for_all_blogs () && defined ('BLOG_ID_CURRENT_SITE')) { echo BLOG_ID_CURRENT_SITE; } echo "#"; if (function_exists ('ai_filter_remote_settings')) { ai_filter_remote_settings ($ai_db_options); } echo base64_encode (serialize ($ai_db_options)); } } function ai_ajax () { global $ai_wp_data; // check_ajax_referer ("adinserter_data", "ai_check"); // check_admin_referer ("adinserter_data", "ai_check"); if (isset ($_POST ["adsense-ad-units"])) { if (defined ('AI_ADSENSE_API')) { adsense_ad_name (); } } elseif (isset ($_GET ["block"])) { $block = sanitize_text_field ((int) $_GET ["block"]); if (is_numeric ($block) && $block >= 1 && $block <= 96) { global $block_object; $block = $block_object [$block]; if (isset ($_GET ["cookie_check"]) && $_GET ["cookie_check"] == 1) { $block->client_side_cookie_check = true; } if (isset ($_GET ["cookie_check_url"]) && $_GET ["cookie_check_url"] == 1) { $block->client_side_cookie_check_url = true; } if (isset ($_GET ["hide-debug-labels"]) && $_GET ["hide-debug-labels"] == 1) { $block->hide_debug_labels = true; } if ($block->get_iframe ()) echo $block->get_iframe_page (); } } elseif (isset ($_GET ["ads-txt"])) { $ads_txt = get_option (AI_ADS_TXT_NAME); if ($ads_txt === false) { wp_die ('Page not found', 404); } header ('Content-Type: text/plain'); echo esc_html ($ads_txt); wp_die (); } elseif (isset ($_GET ["remote-ads-txt"]) && !function_exists ('ai_ajax_processing_2')) { if (get_remote_debugging ()) { // Read-only access if ($_GET ["remote-ads-txt"] == 'save') { wp_die (); } $_GET ["virtual"] = get_option (AI_ADS_TXT_NAME) !== false ? '1' : '0'; ads_txt (sanitize_text_field ($_GET ["remote-ads-txt"])); } } elseif (isset ($_GET ["ai-get-settings"])) { ai_write_settings_string (); } elseif (isset ($_GET ["check-page"])) { if (get_remote_debugging ()) { ai_check_page (); } } elseif (function_exists ('ai_ajax_processing_2')) { ai_ajax_processing_2 (); } wp_die (); } function ai_ajax_backend () { global $preview_name, $preview_alignment, $preview_css; // check_ajax_referer ("adinserter_data", "ai_check"); check_admin_referer ("adinserter_data", "ai_check"); if (is_multisite() && !is_main_site () && !multisite_settings_page_enabled ()) { wp_die (); } if (!current_user_can ('manage_options')) { wp_die (); } if (isset ($_POST ["preview"])) { $block = urldecode ((int) $_POST ["preview"]); if (is_numeric ($block) && $block >= 1 && $block <= 96) { $preview_parameters = array (); if (isset ($_POST ['name'])) $preview_parameters ['name'] = base64_decode ($_POST ['name']); if (isset ($_POST ['code'])) $preview_parameters ['code'] = base64_decode ($_POST ['code']); if (isset ($_POST ['alignment'])) $preview_parameters ['alignment'] = base64_decode ($_POST ['alignment']); if (isset ($_POST ['horizontal'])) $preview_parameters ['horizontal'] = base64_decode ($_POST ['horizontal']); if (isset ($_POST ['vertical'])) $preview_parameters ['vertical'] = base64_decode ($_POST ['vertical']); if (isset ($_POST ['horizontal_margin'])) $preview_parameters ['horizontal_margin'] = base64_decode ($_POST ['horizontal_margin']); if (isset ($_POST ['vertical_margin'])) $preview_parameters ['vertical_margin'] = base64_decode ($_POST ['vertical_margin']); if (isset ($_POST ['animation'])) $preview_parameters ['animation'] = base64_decode ($_POST ['animation']); if (isset ($_POST ['alignment_css'])) $preview_parameters ['alignment_css'] = base64_decode ($_POST ['alignment_css']); if (isset ($_POST ['custom_css'])) $preview_parameters ['custom_css'] = base64_decode ($_POST ['custom_css']); if (isset ($_POST ['php'])) $preview_parameters ['php'] = $_POST ['php']; if (isset ($_POST ['close'])) $preview_parameters ['close'] = $_POST ['close']; if (isset ($_POST ['background'])) $preview_parameters ['background'] = $_POST ['background']; if (isset ($_POST ['body_background'])) $preview_parameters ['body_background'] = $_POST ['body_background']; if (isset ($_POST ['background_image'])) $preview_parameters ['background_image'] = base64_decode ($_POST ['background_image']); if (isset ($_POST ['background_color'])) $preview_parameters ['background_color'] = base64_decode ($_POST ['background_color']); if (isset ($_POST ['background_size'])) $preview_parameters ['background_size'] = base64_decode ($_POST ['background_size']); if (isset ($_POST ['background_repeat'])) $preview_parameters ['background_repeat'] = base64_decode ($_POST ['background_repeat']); if (isset ($_POST ['label'])) $preview_parameters ['label'] = $_POST ['label']; if (isset ($_POST ['sticky_block'])) $preview_parameters ['sticky_block'] = $_POST ['sticky_block']; if (isset ($_POST ['sticky_height'])) $preview_parameters ['sticky_height'] = $_POST ['sticky_height']; if (isset ($_POST ['read_only'])) $preview_parameters ['read_only'] = $_POST ['read_only']; if (isset ($_POST ['iframe'])) $preview_parameters ['iframe'] = $_POST ['iframe']; if (isset ($_POST ['check'])) $preview_parameters ['check'] = $_POST ['check']; if (isset ($_POST ['count'])) $preview_parameters ['count'] = $_POST ['count']; if (isset ($_POST ['rotate'])) $preview_parameters ['rotate'] = $_POST ['rotate']; if (isset ($_POST ['viewport'])) $preview_parameters ['viewport'] = $_POST ['viewport']; if (isset ($_POST ['fallback'])) $preview_parameters ['fallback'] = $_POST ['fallback']; if (function_exists ('ai_remote_preview')) { ai_remote_preview ($block, $preview_parameters); } require_once AD_INSERTER_PLUGIN_DIR.'includes/preview.php'; generate_code_preview ( $block, $preview_parameters ); } elseif ($_POST ["preview"] == 'adb') { require_once AD_INSERTER_PLUGIN_DIR.'includes/preview-adb.php'; $message = base64_decode ($_POST ["code"]); $process_php = isset ($_POST ["php"]) && $_POST ["php"] == 1; $head = null; $processed_message = null; $footer = null; if (function_exists ('ai_remote_preview_adb')) { ai_remote_preview_adb ($message, $process_php, $head, $processed_message, $footer); } generate_code_preview_adb ($message, $process_php, false, $head, $processed_message, $footer); } elseif ($_POST ["preview"] == 'adsense') { if (defined ('AI_ADSENSE_API')) { require_once AD_INSERTER_PLUGIN_DIR.'includes/preview.php'; require_once AD_INSERTER_PLUGIN_DIR.'includes/adsense-api.php'; if (defined ('AI_ADSENSE_AUTHORIZATION_CODE')) { $adsense = new adsense_api(); $adsense_code = $adsense->getAdCode (base64_decode ($_POST ["slot_id"])); $adsense_error = $adsense->getError (); $preview_parameters = array ( "name" => isset ($_POST ["name"]) ? base64_decode ($_POST ["name"]) : 'ADSENSE CODE', "alignment" => '', "horizontal" => '', "vertical" => '', "alignment_css" => '', "custom_css" => '', "code" => $adsense_error == '' ? $adsense_code : '<div style="color: red;">'.$adsense_error.'</div>', "php" => false, "label" => false, "close" => AI_CLOSE_NONE, "read_only" => true, ); generate_code_preview ( 0, // Default settings $preview_parameters ); } } } } elseif (isset ($_POST ["edit"])) { if (is_numeric ($_POST ["edit"]) && $_POST ["edit"] >= 1 && $_POST ["edit"] <= 96) { require_once AD_INSERTER_PLUGIN_DIR.'includes/editor.php'; $process_php = isset ($_POST ["php"]) && $_POST ["php"] == 1; generate_code_editor ((int) $_POST ["edit"], base64_decode ($_POST ["code"]), $process_php); } } if (isset ($_POST ["placeholder"])) { $block = urldecode ((int) $_POST ["block"]); if (is_numeric ($block) && $block >= 1 && $block <= 96) { require_once AD_INSERTER_PLUGIN_DIR.'includes/placeholders.php'; generate_placeholder_editor (str_replace (array ('"', "\\'"), array ('"', '''), urldecode ($_POST ["placeholder"])), $block); } } elseif (isset ($_POST ["generate-code"])) { $code_generator = new ai_code_generator (); echo json_encode ($code_generator->generate ($_POST)); } elseif (isset ($_POST ["import-code"])) { $code_generator = new ai_code_generator (); echo json_encode ($code_generator->import (base64_decode ($_POST ["import-code"]))); } elseif (isset ($_POST ["import-rotation-code"])) { $code_generator = new ai_code_generator (); echo json_encode ($code_generator->import_rotation (base64_decode ($_POST ["import-rotation-code"]))); } elseif (isset ($_POST ["generate-rotation-code"])) { $code_generator = new ai_code_generator (); echo json_encode ($code_generator->generate_rotation (json_decode (base64_decode ($_POST ['generate-rotation-code']), true))); } elseif (isset ($_GET ["image"])) { $filename = sanitize_file_name ($_GET ["image"]); header ("Content-Type: image/png"); header ("Content-Length: " . filesize (AD_INSERTER_PLUGIN_DIR.'images/'.$filename)); readfile (AD_INSERTER_PLUGIN_DIR.'images/'.$filename); } elseif (isset ($_GET ["css"])) { $filename = sanitize_file_name ($_GET ["css"]); header ("Content-Type: text/css"); header ("Content-Length: " . filesize (AD_INSERTER_PLUGIN_DIR.'css/'.$filename)); readfile (AD_INSERTER_PLUGIN_DIR.'css/'.$filename); } elseif (isset ($_GET ["js"])) { $filename = sanitize_file_name ($_GET ["js"]); header ("Content-Type: application/javascript"); header ("Content-Length: " . filesize (AD_INSERTER_PLUGIN_DIR.'js/'.$filename)); readfile (AD_INSERTER_PLUGIN_DIR.'js/'.$filename); } elseif (isset ($_GET ["rating"])) { $cache_time = $_GET ["rating"] == 'update' ? 0 * 60 : AI_TRANSIENT_RATING_EXPIRATION; if (!get_transient (AI_TRANSIENT_RATING) || !($transient_timeout = get_option ('_transient_timeout_' . AI_TRANSIENT_RATING)) || AI_TRANSIENT_RATING_EXPIRATION - ($transient_timeout - time ()) > $cache_time) { $args = (object) array ('slug' => 'ad-inserter'); $request = array ('action' => 'plugin_information', 'timeout' => 5, 'request' => serialize ($args)); $url = 'http://api.wordpress.org/plugins/info/1.0/'; $response = wp_remote_post ($url, array ('body' => $request)); $plugin_info = @unserialize ($response ['body']); if (isset ($plugin_info->ratings)) { $total_rating = 0; $total_count = 0; foreach ($plugin_info->ratings as $rating => $count) { $total_rating += $rating * $count; $total_count += $count; } $rating = number_format ($total_rating / $total_count, 4); set_transient (AI_TRANSIENT_RATING, $rating, AI_TRANSIENT_RATING_EXPIRATION); } } if ($rating = get_transient (AI_TRANSIENT_RATING)) { if ($rating > 1 && $rating <= 5) echo $rating; } } elseif (isset ($_POST ["notice"])) { update_option ('ai-notice-' . esc_html ($_POST ["notice"]), esc_html ($_POST ["click"])); } elseif (isset ($_POST ["notice-check"])) { echo esc_html ($_POST ["notice-check"]); } elseif (isset ($_GET ["list"])) { $search_text = esc_html (trim ($_GET ["list"])); $show_all_blocks = isset ($_GET ["all"]) && $_GET ["all"]; $start = (int) $_GET ["start"]; if ($start < 1 || $start > 96) $start = 1; $end = (int) $_GET ["end"]; if ($end < 1 || $end > 96 || $end < $start) $end = 16; $active = (int) $_GET ["active"]; if ($active < 1 || $active > 96) $active = 1; code_block_list ($start, $end, $search_text, $show_all_blocks, $active); } elseif (isset ($_GET ["adsense-list"])) { if (defined ('AI_ADSENSE_API')) { adsense_list (); } } elseif (isset ($_GET ["adsense-code"])) { if (defined ('AI_ADSENSE_API')) { ai_adsense_code (esc_html ($_GET ["adsense-code"])); } } elseif (isset ($_GET ["adsense-authorization-code"])) { if (defined ('AI_ADSENSE_API')) { if ($_GET ['adsense-authorization-code'] == '') { delete_option (AI_ADSENSE_CLIENT_IDS); delete_option (AI_ADSENSE_AUTH_CODE); delete_option (AI_ADSENSE_OWN_IDS); delete_transient (AI_TRANSIENT_ADSENSE_TOKEN_1); delete_transient (AI_TRANSIENT_ADSENSE_TOKEN); delete_transient (AI_TRANSIENT_ADSENSE_ADS); } elseif (base64_decode ($_GET ['adsense-authorization-code']) == 'own-ids') { update_option (AI_ADSENSE_OWN_IDS, '1'); delete_option (AI_ADSENSE_CLIENT_IDS); delete_option (AI_ADSENSE_AUTH_CODE); delete_transient (AI_TRANSIENT_ADSENSE_TOKEN_1); delete_transient (AI_TRANSIENT_ADSENSE_TOKEN); delete_transient (AI_TRANSIENT_ADSENSE_ADS); } // else update_option (AI_ADSENSE_AUTH_CODE, base64_decode ($_GET ['adsense-authorization-code'])); } } elseif (isset ($_GET ["adsense-client-id"])) { if (defined ('AI_ADSENSE_API')) { if ($_GET ['adsense-client-id'] == '') { delete_option (AI_ADSENSE_CLIENT_IDS); delete_option (AI_ADSENSE_AUTH_CODE); delete_transient (AI_TRANSIENT_ADSENSE_TOKEN_1); delete_transient (AI_TRANSIENT_ADSENSE_TOKEN); delete_transient (AI_TRANSIENT_ADSENSE_ADS); } else update_option (AI_ADSENSE_CLIENT_IDS, array ('ID' => base64_decode ($_GET ['adsense-client-id']), 'SECRET' => base64_decode ($_GET ['adsense-client-secret']))); } } elseif (isset ($_GET ["ads-txt"])) { if (!is_multisite() || is_main_site ()) { if (function_exists ('ai_remote_ads_txt') && ai_remote_ads_txt ()) { wp_die (); } ads_txt (esc_html ($_GET ["ads-txt"])); } } elseif (isset ($_GET ["settings"])) { generate_settings_form (); } elseif (isset ($_GET ["list-options"])) { generate_list_options (esc_html ($_GET ["list-options"])); } elseif (isset ($_GET ["update"])) { if ($_GET ["update"] == 'block-code-demo') { ai_block_code_demo (urldecode ($_GET ["block_class_name"]), esc_html ($_GET ["block_class"]), esc_html ($_GET ["block_number_class"]), esc_html ($_GET ["block_name_class"]), esc_html ($_GET ["inline_styles"])); } elseif (function_exists ('ai_ajax_backend_2')) { ai_ajax_backend_2 (); } } elseif (isset ($_GET ["check-page"])) { if (function_exists ('ai_check_remote_page') && ai_check_remote_page ()) { wp_die (); } ai_check_page (); } elseif (function_exists ('ai_ajax_backend_2')) { ai_ajax_backend_2 (); } wp_die (); } function ai_generate_extract (&$settings) { global $ai_custom_hooks, $ai_wp_data, $version_string, $subversion_string; if (!defined ('AI_EXTRACT_GENERATED')) define ('AI_EXTRACT_GENERATED', true); $obj = new ai_Block (1); $extract = array (); if (defined ('AI_BUFFERING')) { $above_header_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $html_element_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); } $content_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $excerpt_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $loop_start_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $loop_end_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $post_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $before_comments_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $between_comments_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $after_comments_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $footer_hook_blocks = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); $custom_hook_blocks = array (); for ($custom_hook = 1; $custom_hook <= 20; $custom_hook ++) { $custom_hook_blocks [] = array (AI_PT_ANY => array (), AI_PT_HOMEPAGE => array(), AI_PT_CATEGORY => array(), AI_PT_SEARCH => array(), AI_PT_ARCHIVE => array(), AI_PT_STATIC => array(), AI_PT_POST => array(), AI_PT_404 => array(), AI_PT_FEED => array(), AI_PT_AJAX => array(), AI_PT_REST => array()); } // Get blocks used in sidebar widgets $sidebar_widgets = wp_get_sidebars_widgets(); // 'widget_' + registered AI widget name $widget_options = get_option ('widget_ai_widget'); $widget_blocks = array (); foreach ($sidebar_widgets as $sidebar_index => $sidebar_widget) { if (is_array ($sidebar_widget) && isset ($GLOBALS ['wp_registered_sidebars'][$sidebar_index]['name'])) { $sidebar_name = $GLOBALS ['wp_registered_sidebars'][$sidebar_index]['name']; if ($sidebar_name != "") { foreach ($sidebar_widget as $widget) { if (preg_match ("/ai_widget-([\d]+)/", $widget, $widget_id)) { if (isset ($widget_id [1]) && is_numeric ($widget_id [1])) { $widget_option = $widget_options [$widget_id [1]]; $widget_block = $widget_option ['block']; if ($widget_block >= 1 && $widget_block <= 96) { $widget_blocks [] = $widget_block; } } } } } } } $widget_blocks = array_unique ($widget_blocks); // Generate extracted data $active_blocks = array (); $temp_ai_wp_data = $ai_wp_data; $ai_wp_data [AI_MOBILE_DETECT_JS] = false; $ai_wp_data [AI_SERVER_SIDE_DETECTION] = false; $ai_wp_data [AI_CLIENT_SIDE_DETECTION] = false; $ai_wp_data [AI_CLIENT_SIDE_INSERTION] = get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_INSERT; $ai_wp_data [AI_STICK_TO_THE_CONTENT] = false; $ai_wp_data [AI_TRACKING] = false; $ai_wp_data [AI_CLOSE_BUTTONS] = false; $ai_wp_data [AI_PARALLAX] = false; $ai_wp_data [AI_CHECK_BLOCK] = false; $ai_wp_data [AI_IFRAMES] = false; $ai_wp_data [AI_ANIMATION] = false; $ai_wp_data [AI_LAZY_LOADING] = false; $ai_wp_data [AI_GEOLOCATION] = false; for ($block = 1; $block <= 96; $block ++) { if (!isset ($settings [$block])) continue; $obj->number = $block; $obj->wp_options = $settings [$block]; $page_types = array (); if ($obj->get_display_settings_home()) $page_types []= AI_PT_HOMEPAGE; if ($obj->get_display_settings_page()) $page_types []= AI_PT_STATIC; if ($obj->get_display_settings_post()) $page_types []= AI_PT_POST; if ($obj->get_display_settings_category()) $page_types []= AI_PT_CATEGORY; if ($obj->get_display_settings_search()) $page_types []= AI_PT_SEARCH; if ($obj->get_display_settings_archive()) $page_types []= AI_PT_ARCHIVE; if ($obj->get_enable_ajax()) $page_types []= AI_PT_AJAX; if ($obj->get_enable_rest()) $page_types []= AI_PT_REST; if ($obj->get_enable_feed()) $page_types []= AI_PT_FEED; if ($obj->get_enable_404()) $page_types []= AI_PT_404; $automatic_insertion = $obj->get_automatic_insertion(); $enabled_insertion = $obj->get_disable_insertion() == AI_DISABLED; if ($page_types && $enabled_insertion) { // Change insertion position to actual server-side insertion position switch ($automatic_insertion) { case AI_AUTOMATIC_INSERTION_BEFORE_HTML_ELEMENT: case AI_AUTOMATIC_INSERTION_INSIDE_HTML_ELEMENT: case AI_AUTOMATIC_INSERTION_AFTER_HTML_ELEMENT: switch ($obj->get_html_element_insertion ()) { case AI_HTML_INSERTION_SEREVR_SIDE: $automatic_insertion = AI_AUTOMATIC_INSERTION_OUTPUT_BUFFERING; break; default: $automatic_insertion = $obj->get_server_side_insertion (); break; } break; } switch ($automatic_insertion) { case AI_AUTOMATIC_INSERTION_ABOVE_HEADER: if (defined ('AI_BUFFERING')) { foreach ($page_types as $block_page_type) $above_header_hook_blocks [$block_page_type][]= $block; $above_header_hook_blocks [AI_PT_ANY][]= $block; } break; case AI_AUTOMATIC_INSERTION_OUTPUT_BUFFERING: if (defined ('AI_BUFFERING')) { foreach ($page_types as $block_page_type) $html_element_hook_blocks [$block_page_type][]= $block; $html_element_hook_blocks [AI_PT_ANY][]= $block; } break; case AI_AUTOMATIC_INSERTION_BEFORE_PARAGRAPH: case AI_AUTOMATIC_INSERTION_AFTER_PARAGRAPH: case AI_AUTOMATIC_INSERTION_BEFORE_IMAGE: case AI_AUTOMATIC_INSERTION_AFTER_IMAGE: case AI_AUTOMATIC_INSERTION_BEFORE_CONTENT: case AI_AUTOMATIC_INSERTION_AFTER_CONTENT: foreach ($page_types as $block_page_type) $content_hook_blocks [$block_page_type][]= $block; $content_hook_blocks [AI_PT_ANY][]= $block; break; case AI_AUTOMATIC_INSERTION_BEFORE_EXCERPT: case AI_AUTOMATIC_INSERTION_AFTER_EXCERPT: foreach ($page_types as $block_page_type) $excerpt_hook_blocks [$block_page_type][]= $block; $excerpt_hook_blocks [AI_PT_ANY][]= $block; break; case AI_AUTOMATIC_INSERTION_BEFORE_POST: foreach ($page_types as $block_page_type) $loop_start_hook_blocks [$block_page_type][]= $block; $loop_start_hook_blocks [AI_PT_ANY][]= $block; break; case AI_AUTOMATIC_INSERTION_AFTER_POST: foreach ($page_types as $block_page_type) $loop_end_hook_blocks [$block_page_type][]= $block; $loop_end_hook_blocks [AI_PT_ANY][]= $block; break; case AI_AUTOMATIC_INSERTION_BETWEEN_POSTS: foreach ($page_types as $block_page_type) $post_hook_blocks [$block_page_type][]= $block; $post_hook_blocks [AI_PT_ANY][]= $block; break; case AI_AUTOMATIC_INSERTION_BEFORE_COMMENTS: foreach ($page_types as $block_page_type) $before_comments_hook_blocks [$block_page_type][]= $block; $before_comments_hook_blocks [AI_PT_ANY][]= $block; break; case AI_AUTOMATIC_INSERTION_BETWEEN_COMMENTS: foreach ($page_types as $block_page_type) $between_comments_hook_blocks [$block_page_type][]= $block; $between_comments_hook_blocks [AI_PT_ANY][]= $block; break; case AI_AUTOMATIC_INSERTION_AFTER_COMMENTS: foreach ($page_types as $block_page_type) $after_comments_hook_blocks [$block_page_type][]= $block; $after_comments_hook_blocks [AI_PT_ANY][]= $block; break; case AI_AUTOMATIC_INSERTION_FOOTER: foreach ($page_types as $block_page_type) $footer_hook_blocks [$block_page_type][]= $block; $footer_hook_blocks [AI_PT_ANY][]= $block; break; default: if ($automatic_insertion >= AI_AUTOMATIC_INSERTION_CUSTOM_HOOK && $automatic_insertion < AI_AUTOMATIC_INSERTION_CUSTOM_HOOK + 20) { $hook_index = $automatic_insertion - AI_AUTOMATIC_INSERTION_CUSTOM_HOOK; foreach ($page_types as $block_page_type) $custom_hook_blocks [$hook_index][$block_page_type][]= $block; $custom_hook_blocks [$hook_index][AI_PT_ANY][]= $block; } break; } } $automatic = $automatic_insertion != AI_AUTOMATIC_INSERTION_DISABLED; $manual_widget = $obj->get_enable_widget() == AI_ENABLED; $manual_shortcode = $obj->get_enable_manual() == AI_ENABLED; $manual_php_function = $obj->get_enable_php_call() == AI_ENABLED; if ($enabled_insertion && ($automatic || ($manual_widget && in_array ($block, $widget_blocks)) || $manual_shortcode || $manual_php_function)) { $active_blocks []= $block; $obj->extract_features (); } } $extract [AI_EXTRACT_USED_BLOCKS] = serialize ($active_blocks); if (isset ($settings [AI_HEADER_OPTION_NAME])) { $obj->wp_options = $settings [AI_HEADER_OPTION_NAME]; if ($obj->get_enable_manual () && $obj->get_detection_server_side()) $ai_wp_data [AI_SERVER_SIDE_DETECTION] = true; } if (isset ($settings [AI_FOOTER_OPTION_NAME])) { $obj->wp_options = $settings [AI_FOOTER_OPTION_NAME]; if ($obj->get_enable_manual () && $obj->get_detection_server_side()) $ai_wp_data [AI_SERVER_SIDE_DETECTION] = true; } if (function_exists ('ai_global_extract_features')) { ai_global_extract_features (); } $extract [AI_EXTRACT_FEATURES] = array ( AI_MOBILE_DETECT_JS => $ai_wp_data [AI_MOBILE_DETECT_JS], AI_SERVER_SIDE_DETECTION => $ai_wp_data [AI_SERVER_SIDE_DETECTION], AI_CLIENT_SIDE_DETECTION => $ai_wp_data [AI_CLIENT_SIDE_DETECTION], AI_CLIENT_SIDE_INSERTION => $ai_wp_data [AI_CLIENT_SIDE_INSERTION], AI_STICK_TO_THE_CONTENT => $ai_wp_data [AI_STICK_TO_THE_CONTENT], AI_TRACKING => $ai_wp_data [AI_TRACKING], AI_CLOSE_BUTTONS => $ai_wp_data [AI_CLOSE_BUTTONS], AI_PARALLAX => $ai_wp_data [AI_PARALLAX], AI_CHECK_BLOCK => $ai_wp_data [AI_CHECK_BLOCK], AI_IFRAMES => $ai_wp_data [AI_IFRAMES], AI_ANIMATION => $ai_wp_data [AI_ANIMATION], AI_LAZY_LOADING => $ai_wp_data [AI_LAZY_LOADING], AI_GEOLOCATION => $ai_wp_data [AI_GEOLOCATION] ); $ai_wp_data = $temp_ai_wp_data; if (defined ('AI_BUFFERING')) { $extract [ABOVE_HEADER_HOOK_BLOCKS] = $above_header_hook_blocks; $extract [HTML_ELEMENT_HOOK_BLOCKS] = $html_element_hook_blocks; } $extract [CONTENT_HOOK_BLOCKS] = $content_hook_blocks; $extract [EXCERPT_HOOK_BLOCKS] = $excerpt_hook_blocks; $extract [LOOP_START_HOOK_BLOCKS] = $loop_start_hook_blocks; $extract [LOOP_END_HOOK_BLOCKS] = $loop_end_hook_blocks; $extract [POST_HOOK_BLOCKS] = $post_hook_blocks; $extract [BEFORE_COMMENTS_HOOK_BLOCKS] = $before_comments_hook_blocks; $extract [BETWEEN_COMMENTS_HOOK_BLOCKS] = $between_comments_hook_blocks; $extract [AFTER_COMMENTS_HOOK_BLOCKS] = $after_comments_hook_blocks; $extract [FOOTER_HOOK_BLOCKS] = $footer_hook_blocks; for ($custom_hook = 1; $custom_hook <= 20; $custom_hook ++) { $action = get_hook_action ($custom_hook); if (get_hook_enabled ($custom_hook) && get_hook_name ($custom_hook) != '' && $action != '') { $custom_hook_extract_index = $action . CUSTOM_HOOK_BLOCKS; if (isset ($extract [$custom_hook_extract_index])) { // Custom hook on WP hook used by the plugin - merge blocks foreach ($extract [$custom_hook_extract_index] as $page_type => $blocks) { $extract [$custom_hook_extract_index][$page_type] = array_merge ($blocks, $custom_hook_blocks [$custom_hook - 1][$page_type]); } } else $extract [$custom_hook_extract_index] = $custom_hook_blocks [$custom_hook - 1]; } } $extract_version = $version_string . $subversion_string . '-' . '96'; if (function_exists ('ai_system_output_check')) { $extract_version .= 'P'; } $extract ['VERSION'] = $extract_version; $extract ['TIMESTAMP'] = time (); return ($extract); } function ai_load_settings () { global $ai_db_options, $block_object, $ai_wp_data, $version_string, $ai_custom_hooks; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("LOAD SETTINGS START"); if (get_option (AI_OPTION_NAME) === false) { $initial_settings = ''; $initial_settings = apply_filters ('ai_initial_settings', $initial_settings); if (is_string ($initial_settings) && substr ($initial_settings, 0, 4) === ':AI:') { update_option (AI_OPTION_NAME, $initial_settings); } elseif (is_array ($initial_settings)) { $ai_db_options = $initial_settings; ai_save_options ($ai_db_options); } } ai_load_options (); if (!is_array ($ai_db_options)) { $ai_db_options = array (); define ('AI_SETTINGS_ERROR', true); } $extract_ok = ai_load_extract (false); $ai_custom_hooks = array (); for ($hook = 1; $hook <= 20; $hook ++) { $name = get_hook_name ($hook); $action = get_hook_action ($hook); if (get_hook_enabled ($hook) && $name != '' && $action != '') { $ai_custom_hooks [] = array ('index' => $hook, 'name' => $name, 'action' => $action, 'priority' => get_hook_priority ($hook)); } } $features_in_extract = $extract_ok && isset ($ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES]); if (isset ($ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_USED_BLOCKS]) && is_string ($ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_USED_BLOCKS]) && strlen ($ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_USED_BLOCKS]) != 0) { $used_blocks = @unserialize ($ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_USED_BLOCKS]); } else $used_blocks = false; $obj = new ai_Block (0); // translators: block name (block with default settings) $obj->wp_options [AI_OPTION_BLOCK_NAME] = _x('Default', 'Block name', 'ad-inserter'); $block_object [0] = $obj; for ($block = 1; $block <= 96; $block ++) { $obj = new ai_Block ($block); $obj->load_options ($block); $block_object [$block] = $obj; if (!$features_in_extract && (!is_array ($used_blocks) || in_array ($block, $used_blocks))) $obj->extract_features (); } $adH = new ai_AdH(); $adF = new ai_AdF(); $adH->load_options (AI_HEADER_OPTION_NAME); $adF->load_options (AI_FOOTER_OPTION_NAME); $block_object [AI_HEADER_OPTION_NAME] = $adH; $block_object [AI_FOOTER_OPTION_NAME] = $adF; if ($features_in_extract) { $ai_wp_data [AI_MOBILE_DETECT_JS] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_MOBILE_DETECT_JS]; $ai_wp_data [AI_SERVER_SIDE_DETECTION] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_SERVER_SIDE_DETECTION]; $ai_wp_data [AI_CLIENT_SIDE_DETECTION] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_CLIENT_SIDE_DETECTION]; $ai_wp_data [AI_CLIENT_SIDE_INSERTION] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_CLIENT_SIDE_INSERTION]; $ai_wp_data [AI_STICK_TO_THE_CONTENT] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_STICK_TO_THE_CONTENT]; $ai_wp_data [AI_TRACKING] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_TRACKING]; $ai_wp_data [AI_CLOSE_BUTTONS] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_CLOSE_BUTTONS]; $ai_wp_data [AI_PARALLAX] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_PARALLAX]; $ai_wp_data [AI_CHECK_BLOCK] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_CHECK_BLOCK]; $ai_wp_data [AI_IFRAMES] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_IFRAMES]; $ai_wp_data [AI_ANIMATION] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_ANIMATION]; $ai_wp_data [AI_LAZY_LOADING] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_LAZY_LOADING]; $ai_wp_data [AI_GEOLOCATION] = $ai_db_options [AI_OPTION_EXTRACT][AI_EXTRACT_FEATURES][AI_GEOLOCATION]; } else { if ($adH->get_enable_manual () && $adH->get_detection_server_side()) $ai_wp_data [AI_SERVER_SIDE_DETECTION] = true; if ($adF->get_enable_manual () && $adF->get_detection_server_side()) $ai_wp_data [AI_SERVER_SIDE_DETECTION] = true; } if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { $adA = new ai_AdA(); $adA->load_options (AI_ADB_MESSAGE_OPTION_NAME); $block_object [AI_ADB_MESSAGE_OPTION_NAME] = $adA; $ai_wp_data [AI_ADB_DETECTION] = $adA->get_enable_manual (); } if (($install_timestamp = get_option (AI_INSTALL_NAME)) !== false) { $install = new DateTime (date('Y-m-d H:i:s', $install_timestamp)); $now = new DateTime (date('Y-m-d H:i:s', time())); if (method_exists ($install, 'diff')) { $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE] = $install->diff ($now); $ai_wp_data [AI_DAYS_SINCE_INSTAL] = $ai_wp_data [AI_INSTALL_TIME_DIFFERENCE]->days; } } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("LOAD SETTINGS END"); } function ai_compare_viewport ($a, $b) { if ($a ['width'] == $b ['width']) return 0; return ($a ['width'] > $b ['width']) ? - 1 : 1; } function generate_viewport_css () { $viewports = array (); for ($viewport = 1; $viewport <= 6; $viewport ++) { $viewport_name = get_viewport_name ($viewport); $viewport_width = get_viewport_width ($viewport); if ($viewport_name != '') { $viewports []= array ('index' => $viewport, 'name' => $viewport_name, 'width' => $viewport_width); } } usort ($viewports, 'ai_compare_viewport'); $viewport_styles = ''; $number_of_viewports = count ($viewports); if ($number_of_viewports != 0) { $viewport_styles = ".ai-viewports {--ai: 1;}\n"; // Mark unprocessed block for viewports, also dummy style to prevent not loading viewport rules when optimizers join them with other (broken) styles on the page foreach ($viewports as $index => $viewport) { if ($index == 0) { foreach (array_reverse ($viewports) as $index2 => $viewport2) { if ($index2 != $number_of_viewports - 1) { $viewport_styles .= ".ai-viewport-" . $viewport2 ['index'] . " { display: none !important;}\n"; } } $viewport_styles .= ".ai-viewport-".$viewports [0]['index']." { display: inherit !important;}\n"; $viewport_styles .= ".ai-viewport-0 { display: none !important;}\n"; } else { $viewport_styles .= "@media "; if ($viewport ['width'] != 0) $viewport_styles .= "(min-width: " . $viewport ['width'] . "px) and "; $viewport_styles .= "(max-width: " . ($viewports [$index - 1]['width'] - 1) . "px) {\n"; foreach ($viewports as $index2 => $viewport2) { if ($index2 == 0) $viewport_styles .= ".ai-viewport-" . $viewport2 ['index'] . " { display: none !important;}\n"; elseif ($index == $index2) $viewport_styles .= ".ai-viewport-" . $viewport2 ['index'] . " { display: inherit !important;}\n"; } $viewport_styles .= "}\n"; } } } return ($viewport_styles); } function get_main_alignment_css ($alt_styles_text) { if (strpos ($alt_styles_text, "||") !== false) { $styles = explode ("||", $alt_styles_text); return $styles [0]; } return $alt_styles_text; } function ai_change_css ($css, $property, $value) { $styles = explode (';', $css); $replaced = false; foreach ($styles as $index => $style) { if (strpos (trim ($style), $property) === 0) { $styles [$index] = preg_replace ('/\:\s*(.+)/', ': ' . $value, $styles [$index]); $replaced = true; break; } } $new_style = implode (';', $styles); if (!$replaced) { $new_style = rtrim ($new_style, '; '); return $new_style . '; ' . $property . ': ' . $value . ';'; } return $new_style; } function generate_alignment_css () { global $ai_db_options_extract, $block_object; $block_class_name = get_block_class_name (true) . '-'; $styles = array (); $styles [AI_ALIGNMENT_DEFAULT] = array (AI_TEXT_ENG_DEFAULT, get_main_alignment_css (AI_ALIGNMENT_CSS_DEFAULT)); $styles [AI_ALIGNMENT_LEFT] = array (AI_TEXT_ENG_LEFT, get_main_alignment_css (AI_ALIGNMENT_CSS_LEFT)); $styles [AI_ALIGNMENT_RIGHT] = array (AI_TEXT_ENG_RIGHT, get_main_alignment_css (AI_ALIGNMENT_CSS_RIGHT)); $styles [AI_ALIGNMENT_CENTER] = array (AI_TEXT_ENG_CENTER, get_main_alignment_css (AI_ALIGNMENT_CSS_CENTER)); $styles [AI_ALIGNMENT_FLOAT_LEFT] = array (AI_TEXT_ENG_FLOAT_LEFT, get_main_alignment_css (AI_ALIGNMENT_CSS_FLOAT_LEFT)); $styles [AI_ALIGNMENT_FLOAT_RIGHT] = array (AI_TEXT_ENG_FLOAT_RIGHT, get_main_alignment_css (AI_ALIGNMENT_CSS_FLOAT_RIGHT)); if (function_exists ('generate_alignment_css_2')) $styles = array_replace ($styles, generate_alignment_css_2 ()); $alignment_css = ''; $alignments = array (); if (isset ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) && is_string ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) && strlen ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) != 0) { $used_blocks = unserialize ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]); foreach ($used_blocks as $used_block) { $obj = $block_object [$used_block]; $alignment_type = $obj->get_alignment_type (); switch ($alignment_type) { case AI_ALIGNMENT_DEFAULT: case AI_ALIGNMENT_LEFT: case AI_ALIGNMENT_RIGHT: case AI_ALIGNMENT_CENTER: case AI_ALIGNMENT_FLOAT_LEFT: case AI_ALIGNMENT_FLOAT_RIGHT: // case AI_ALIGNMENT_STICKY_LEFT: // case AI_ALIGNMENT_STICKY_RIGHT: // case AI_ALIGNMENT_STICKY_TOP: // case AI_ALIGNMENT_STICKY_BOTTOM: $alignment_name = strtolower ($styles [$alignment_type][0]); if (!in_array ($alignment_name, $alignments)) { $alignments []= $alignment_name; $alignment_css .= '.' . $block_class_name . str_replace (' ', '-', $alignment_name) .' {' . $styles [$alignment_type][1] . "}\n"; } break; case AI_ALIGNMENT_STICKY: $sticky_css = $obj->alignment_style ($alignment_type); $alignment_name = strtolower (md5 ($sticky_css)); if (!in_array ($alignment_name, $alignments)) { $alignments []= $alignment_name; // $alignment_css .= '.' . $block_class_name . str_replace (' ', '-', $alignment_name) .' {' . $sticky_css . "}\n"; $alignment_css .= '.' . $block_class_name . $alignment_name .' {' . $sticky_css . "}\n"; } break; case AI_ALIGNMENT_CUSTOM_CSS: $custom_css = $obj->get_custom_css (); $alignment_name = strtolower (md5 ($custom_css)); if (!in_array ($alignment_name, $alignments)) { $alignments []= $alignment_name; // $alignment_css .= '.' . $block_class_name . str_replace (' ', '-', $alignment_name) .' {' . str_replace (''', "'", $custom_css) . "}\n"; $alignment_css .= '.' . $block_class_name . $alignment_name .' {' . str_replace (''', "'", $custom_css) . "}\n"; } break; } if ($alignment_type != AI_ALIGNMENT_CUSTOM_CSS) { $size_css = $obj->size_background_style (); // $size_name = strtolower (md5 ($size_css)); $size_name = ai_css_to_name ($size_css); if (!in_array ($size_name, $alignments)) { $alignments []= $size_name; $alignment_css .= '.' . $block_class_name . $size_name .' {' . str_replace (''', "'", $size_css) . "}\n"; } } } } return $alignment_css; } function generate_debug_css_base () { ?> .ai-debug-block {padding: 0; margin: 0;} <?php } function generate_debug_css () { ?> .ai-debug-tags {font-weight: bold; color: white; padding: 2px;} .ai-debug-positions {clear: both; text-align: center; padding: 10px 0; font-family: arial; font-weight: bold; line-height: 20px; border: 1px solid blue; color: blue; background: #eef;} .ai-debug-positions.ai-images {border: 1px solid #444; color: #444; background: #fff9ab;} .ai-debug-page-type {text-align: center; padding: 10px 0; font-family: arial; font-weight: bold; line-height: 20px; border: 1px solid #000; color: #000; background: #fff;} .ai-debug-status {clear: both; text-align: center; padding: 10px 0; font-family: arial; font-weight: bold; line-height: 20px; border: 1px solid #eee; color: #666; background: #eee;} .ai-debug-status.status-ok, .ai-debug-status.adb-off {border: 1px solid green; color: green; background: #efe;} .ai-debug-status.status-error, .ai-debug-status.adb-on {border: 1px solid red; color: red; background: #fee;} .ai-debug-adb {opacity: 0.85; cursor: pointer;} .ai-debug-widget {margin: 0; padding: 0 5px; font-size: 10px; white-space: pre; overflow-x: auto; overflow-y: hidden;} a.ai-debug-left {float: left; cursor: default; font-size: 10px; text-decoration: none; color: transparent; padding: 0px 10px 0 0; border: 0; box-shadow: none;} a.ai-debug-right {float: right; cursor: default; font-size: 10px; text-decoration: none; color: #88f; padding: 0px 10px 0 0; border: 0; box-shadow: none;} a.ai-debug-center {text-align: center; cursor: default; font-size: 10px; text-decoration: none; color: white; padding: 0px 10px 0 0; border: 0; box-shadow: none;} .ai-debug-invisible {display: none;} .ai-debug-content-hook-positions {color: blue;} .ai-debug-removed-html-tags {color: red;} .ai-debug-rnrn {background: #0ff; color: #000;} .ai-debug-p {background: #0a0;} .ai-debug-div {background: #46f;} .ai-debug-h {background: #d4e;} .ai-debug-img {background: #ee0; color: #000;} .ai-debug-pre {background: #222;} .ai-debug-span {background: #cff; color: #000;} .ai-debug-special {background: #fb0; color: #000;} .ai-debug-ad-overlay {position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #8f8; opacity: 0.6; z-index: 999999990} .ai-debug-block ins.adsbygoogle[data-ad-status="unfilled"] .ai-debug-ad-overlay {display: none;} .ai-debug-block ins.adsbygoogle[data-ad-status="unfilled"] {background: url(https://via.placeholder.com/800x800/aaffaa/000000.png?text=NO%20AD%20SERVED); background-size: cover; background-repeat: no-repeat; background-position: center;} .ai-auto-ads {background-color: #84f;} .ai-no-slot {background-color: #48f;} .ai-debug-ad-info {position: absolute; top: 0; left: 0; overflow: hidden; width: auto; height: auto; font-family: arial; font-size: 11px; line-height: 11px; text-align: left; z-index: 999999991;} .ai-info {display: inline-block; padding: 2px 4px;} .ai-info-1 {background: #000; color: #fff;} .ai-info-2 {background: #fff; color: #000;} .ai-debug-block {outline: 1px solid;} .ai-debug-bar {background: #666;} .ai-debug-block kbd kbd {font-weight: normal;} .ai-debug-code {margin: 0; padding: 0; border: 0; font-family: monospace, sans-serif; font-size: 12px; line-height: 13px; background: #fff; color: #000;} .ai-debug-code.ai-code-org {float: left; max-width: 47%;} .ai-debug-code.ai-code-inserted {float: right; max-width: 47%;} .ai-debug-block.ai-debug-default {border-color: #e00; outline-color: #e00;} .ai-debug-bar.ai-debug-default {background: #e00;} .ai-debug-bar.ai-debug-no-wrapping kbd {color: #ff0;} .ai-debug-block.ai-debug-viewport-invisible {border-color: #00f; outline-color: #00f;} .ai-debug-bar.ai-debug-viewport-invisible {background: #00f;} .ai-debug-block.ai-debug-amp {border-color: #0c0; outline-color: #0c0;} .ai-debug-bar.ai-debug-amp {background: #0c0;} .ai-debug-block.ai-debug-fallback {border-color: #a0f; outline-color: #a0f;} .ai-debug-bar.ai-debug-fallback {background: #a0f;} .ai-debug-block.ai-debug-script {border-color: #00bae6; outline-color: #00bae6; background: #eee;} .ai-debug-bar.ai-debug-script {background: #00bae6;} .ai-debug-block.ai-debug-cookie {border-color: #9be3ff; outline-color: #9be3ff; background: #eee;} .ai-debug-bar.ai-debug-cookie {background: #9be3ff;} .ai-debug-bar.ai-debug-cookie kbd {color: #000;} .ai-debug-block.ai-debug-filter {border-color: #9be3ff; outline-color: #9be3ff; background: #eee;} .ai-debug-bar.ai-debug-filter {background: #9be3ff;} .ai-debug-bar.ai-debug-filter kbd {color: #000;} .ai-debug-block.ai-debug-adb-status {border-color: #000; outline-color: #000;} .ai-debug-bar.ai-debug-adb-status {background: #000;} .ai-debug-block.ai-debug-adsense {border-color: #e0a; outline-color: #e0a;} .ai-debug-bar.ai-debug-adsense {background: #e0a;} .ai-debug-block.ai-debug-marker {border-color: #a0f; outline-color: #a0f;} .ai-debug-bar.ai-debug-marker {background: #a0f; display: inline;} .ai-debug-block.ai-debug-adsense.ai-adsense-auto-ads {position: absolute; top: -20px; width: 100%;} .ai-debug-block.ai-debug-ajax {border-color: #ffd600; outline-color: #ffd600;} .ai-debug-bar.ai-debug-ajax {background: #ffd600;} .ai-debug-bar.ai-debug-ajax kbd {color: #000;} .ai-debug-block.ai-debug-iframe {border-color: #ff9e38; outline-color: #ff9e38; line-height: 1px;} .ai-debug-bar.ai-debug-iframe {background: #ff9e38;} .ai-debug-bar.ai-debug-iframe kbd {color: #000;} .ai-debug-block.ai-debug-iframe .ai-attributes {line-height: initial;} .ai-debug-adb-status.on kbd {color: #f00;} .ai-debug-adb-status.off kbd {color: #0f0;} .ai-debug-block.ai-debug-lists {border-color: #00c5be; outline-color: #00c5be;} .ai-debug-bar.ai-debug-lists {background: #00c5be;} .ai-debug-block.ai-debug-scheduling {border-color: #00c5be; outline-color: #00c5be;} .ai-debug-bar.ai-debug-scheduling {background: #00c5be;} .ai-debug-adb-hidden {visibility: hidden; display: none;} .ai-debug-adb-center {text-align: center; font-weight: bold; margin: 0; padding: 4px 0;} .ai-debug-bar {margin: 0; padding: 1px 0 1px 5px; color: white; font-size: 12px; font-family: arial; font-weight: normal; line-height: 20px; text-align: center; overflow: hidden; word-break: break-word;} .ai-debug-bar .ai-debug-text-left {float: left; text-align: left; margin-top: 3px;} .ai-debug-bar .ai-debug-text-right {float: right; text-align: right; padding-right: 3px; margin-top: 3px;} .ai-debug-bar .ai-debug-text-center {text-align: center;} .ai-debug-lists .ai-debug-text-left, .ai-debug-viewport-invisible .ai-debug-text-left, .ai-debug-filter .ai-debug-text-left {min-width: 40%;} .ai-debug-lists .ai-debug-text-right, .ai-debug-viewport-invisible .ai-debug-text-right, .ai-debug-filter .ai-debug-text-right {min-width: 40%;} .ai-debug-message {text-align: center; font-weight: bold;} .ai-debug-bar kbd {margin: 0; padding: 0; color: #fff; font-size: inherit; font-family: arial; background-color: transparent; text-shadow: none; border: 0; box-shadow: none;} .ai-debug-visibility-hidden {visibility: hidden} .ai-debug-display-none {display: none} .ai-debug-block pre {direction: ltr; text-align: left; margin: 0; padding: 2px 5px 2px; line-height: 14px; background: #fff; color: #000; font-family: monospace; font-size: 12px;} pre.ai-w3tc-debug {font-size: 12px;} pre.ai-w3tc-debug.ai-w3tc-run {color: #00f;} pre.ai-processing-log {direction: ltr; text-align: left; padding: 10px; background: #eee; color: #000; font-family: monospace; font-size: 12px; line-height: 18px; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;} .ai-debug-bar.ai-debug-lists.ai-debug-iab-tcf-2 kbd.ai-debug-text-left, .ai-debug-bar.ai-debug-lists.ai-debug-iab-tcf-2 kbd.ai-debug-text-right { min-width: 10%; } <?php } function ai_css_to_name ($css) { // return strtolower (rtrim (str_replace (array ('width', 'height', 'background', ' ', ':', ';', '#'), array ('w', 'h', 'b', '', '-', '-', ''), $css), '-')); return strtolower (rtrim (str_replace (array ('width', 'height', 'background-color', 'background', ' ', ':', ';', '#', '(', ')', ','), array ('w', 'h', 'bc', 'b', '', '-', '-', '', '-', '-', '-'), $css), '-')); } function generate_selection_css () { ?> #ai-selector-data { position: fixed; top: 0; z-index: 999999; background: #fff; width: 100%; border: 1px solid #000; } #ai-selector-data kbd { background-color: #fff; box-shadow: none; } #ai-selector-data table { width: 100%; margin: 5px; } #ai-selector-data td { padding: 5px 10px; vertical-align: middle; } #ai-selector-data td button { margin: 0 15px; } #ai-selector-data .ui-button-text-only .ui-button-text { padding: 3px 10px; } #ai-selector-data td.data-name { width: 100px; } #ai-selector-element, #ai-selector-path { user-select: text; } #ai-selector { width: 100%; display: inline-block; border-radius: 4px; font-size: 12px; font-family: Courier, 'Courier New', monospace; font-weight: bold; } .ai-highlighted { outline: 3px dashed #00f; background: rgba(50, 140, 220, 0.2); cursor: default; } .ai-selected { outline: 3px dashed #f00; background: rgba(255, 0, 0, 0.2); } .ai-highlighted.ai-selected { } .ai-html-element { color: #00a; cursor: pointer; } .ai-html-element:hover { color: #00f; } #ai-selector-data .ui-button.ui-corner-all.ui-widget { border: 1px solid #d3d3d3; background: #e6e6e6 url(<?php echo plugins_url ('css/images/ui-bg_glass_75_e6e6e6_1x400.png', __FILE__); ?>) 50% 50% repeat-x; color: rgb(85, 85, 85); } <?php } function ai_settings () { global $ai_db_options, $block_object, $wpdb, $ai_db_options_extract; if (is_multisite() && !is_main_site () && !multisite_settings_page_enabled ()) return; if (!current_user_can ('manage_options')) { return; } $settings_data_valid = true; if (function_exists ('ai_check_remote_connection')) { if (!ai_check_remote_connection ()) { if (isset ($_POST [AI_FORM_SAVE]) || isset ($_POST [AI_FORM_CLEAR]) || isset ($_POST [AI_FORM_CLEAR_EXCEPTIONS]) || isset ($_POST [AI_FORM_CLEAR_STATISTICS]) ) { // translators: %s: Ad Inserter echo '<div class="notice notice-error is-dismissible" style="margin: 5px 15px 2px 0px;"><p>' . sprintf (__('Invalid data received - %s settings not saved.', 'ad-inserter'), AD_INSERTER_NAME) . '</p></div>'; } $settings_data_valid = false; } } if (isset ($_POST [AI_FORM_SAVE]) && $settings_data_valid) { check_admin_referer ('save_adinserter_settings'); $subpage = 'main'; $start = 1; $end = 16; $button_keys = array (AI_FORM_SAVE, AI_FORM_CLEAR_EXCEPTIONS); $settings_ok = true; $settings_errors = array (); if (isset ($_GET ['start']) && is_numeric ($start) && $start >= 1 && $start <= 96) $start = (int) $_GET ['start']; else $start = 1; $end = min ($start + 15, 96); $invalid_blocks = array (); $import_switch_name = AI_OPTION_IMPORT . WP_FORM_FIELD_POSTFIX . '0'; if (isset ($_POST [$import_switch_name]) && $_POST [$import_switch_name] == "1") { // Import Ad Inserter settings $settings = str_replace (array ("\\\""), array ("\""), $_POST ["export_settings_0"]); if (substr ($settings, 0, 4) === ':AI:') { $settings = substr ($settings, 4); } $ai_options = ai_unserialize (base64_decode ($settings)); if ($ai_options === false) { // Use saved settings $ai_options = wp_slash ($ai_db_options); $invalid_blocks []= 0; $settings_ok = false; $settings_errors []= 'Import plugin settings: unserialize failed'; } else $ai_options = wp_slash ($ai_options); } else { // Try to import individual settings $ai_options = array (); $default_block = new ai_Block (1); for ($block = 1; $block <= 96; $block ++) { if (isset ($ai_db_options [$block])) $saved_settings = wp_slash ($ai_db_options [$block]); else $saved_settings = array (); if ($block < $start || $block > $end) { // Block not on the settings page $ai_options [$block] = $saved_settings; continue; } $import_switch_name = AI_OPTION_IMPORT . WP_FORM_FIELD_POSTFIX . $block; $import_name_switch_name = AI_OPTION_IMPORT_NAME . WP_FORM_FIELD_POSTFIX . $block; if (isset ($_POST [$import_switch_name]) && $_POST [$import_switch_name] == "1") { // Try to import block settings $exported_settings = ai_unserialize (base64_decode (str_replace (array ("\\\""), array ("\""), $_POST ["export_settings_" . $block]))); if ($exported_settings !== false) { $exported_settings = wp_slash ($exported_settings); foreach (array_keys ($default_block->wp_options) as $key){ if ($key == AI_OPTION_BLOCK_NAME && isset ($_POST [$import_name_switch_name]) && $_POST [$import_name_switch_name] != "1") { $form_field_name = $key . WP_FORM_FIELD_POSTFIX . $block; if (isset ($_POST [$form_field_name])){ $ai_options [$block][$key] = filter_option ($key, $_POST [$form_field_name]); } } else { if (isset ($exported_settings [$key])) { $ai_options [$block][$key] = filter_option ($key, $exported_settings [$key], false); } } } } else { // Block import failed - use existing settings $ai_options [$block] = $saved_settings; $invalid_blocks []= $block; } } else { // Process block settings foreach (array_keys ($default_block->wp_options) as $key){ $form_field_name = $key . WP_FORM_FIELD_POSTFIX . $block; if (isset ($_POST [$form_field_name])){ $field_value = $_POST [$form_field_name]; // if ($key == AI_OPTION_CODE && strpos ($field_value, ':AI:') === 0) { if ($key == AI_OPTION_CODE && substr ($field_value, 0, 4) === ':AI:') { $code = base64_decode (substr ($field_value, 4), true); if ($code !== false) { $field_value = wp_slash ($code); } else { $field_value = ''; $settings_ok = false; $settings_errors []= "Block $block code: base64_decode failed"; } } $ai_options [$block][$key] = filter_option ($key, $field_value); } } if (!isset ($ai_options [$block]) || count ($ai_options [$block]) == 0) { if (isset ($_POST ['block-parameters-' . $block])) { $block_options = json_decode (base64_decode ($_POST ['block-parameters-' . $block])); if (is_array ($block_options)) { foreach ($button_keys as $button_key) { $button_index = array_search ($button_key, $block_options); if ($button_index !== false) { unset ($block_options [$button_index]); } } if (count ($block_options) != 0) { $settings_ok = false; $settings_errors []= "Missing settings for block $block: " . implode (', ', $block_options); } } else { $settings_ok = false; $settings_errors []= "Invalid parameter names for block $block"; } } else { $settings_ok = false; $settings_errors []= "Missing parameter names for block $block"; } } } delete_option (str_replace ("#", $block, AD_ADx_OPTIONS)); } $default_block_H = new ai_AdH(); $wp_options = array (); foreach(array_keys ($default_block_H->wp_options) as $key){ $form_field_name = $key . WP_FORM_FIELD_POSTFIX . AI_HEADER_OPTION_NAME; if(isset ($_POST [$form_field_name])){ $field_value = $_POST [$form_field_name]; if ($key == AI_OPTION_CODE && strpos ($field_value, ':AI:') === 0) { $code = base64_decode (substr ($field_value, 4), true); if ($code !== false) { $field_value = wp_slash ($code); } else { $field_value = ''; $settings_ok = false; $settings_errors []= "Header code: base64_decode failed"; } } $wp_options [$key] = filter_option_hf ($key, $field_value); } } $ai_options [AI_HEADER_OPTION_NAME] = $wp_options; $default_block_F = new ai_AdF(); $wp_options = array (); foreach(array_keys($default_block_F->wp_options) as $key){ $form_field_name = $key . WP_FORM_FIELD_POSTFIX . AI_FOOTER_OPTION_NAME; if(isset ($_POST [$form_field_name])){ $field_value = $_POST [$form_field_name]; if ($key == AI_OPTION_CODE && strpos ($field_value, ':AI:') === 0) { $code = base64_decode (substr ($field_value, 4), true); if ($code !== false) { $field_value = wp_slash ($code); } else { $field_value = ''; $settings_ok = false; $settings_errors []= "Footer code: base64_decode failed"; } } $wp_options [$key] = filter_option_hf ($key, $field_value); } } $ai_options [AI_FOOTER_OPTION_NAME] = $wp_options; if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { $default_block_A = new ai_AdA(); $wp_options = array (); foreach(array_keys($default_block_A->wp_options) as $key){ $form_field_name = $key . WP_FORM_FIELD_POSTFIX . AI_ADB_MESSAGE_OPTION_NAME; if(isset ($_POST [$form_field_name])){ $field_value = $_POST [$form_field_name]; if ($key == AI_OPTION_CODE && strpos ($field_value, ':AI:') === 0) { $code = base64_decode (substr ($field_value, 4), true); if ($code !== false) { $field_value = wp_slash ($code); } else { $field_value = ''; $settings_ok = false; $settings_errors []= "Ad blocking message code: base64_decode failed"; } } $wp_options [$key] = filter_option_hf ($key, $field_value); } } $ai_options [AI_ADB_MESSAGE_OPTION_NAME] = $wp_options; } $options = array (); $ai_options = apply_filters ('ai_save_settings', $ai_options); if (function_exists ('ai_filter_global_settings')) ai_filter_global_settings ($options); if (isset ($_POST ['syntax-highlighter-theme'])) $options ['SYNTAX_HIGHLIGHTER_THEME'] = filter_string ($_POST ['syntax-highlighter-theme']); if (isset ($_POST ['block-class-name'])) $options ['BLOCK_CLASS_NAME'] = filter_html_class ($_POST ['block-class-name']); if (isset ($_POST ['block-class'])) $options ['BLOCK_CLASS'] = filter_option ('BLOCK_CLASS', $_POST ['block-class']); if (isset ($_POST ['block-number-class'])) $options ['BLOCK_NUMBER_CLASS'] = filter_option ('BLOCK_NUMBER_CLASS', $_POST ['block-number-class']); if (isset ($_POST ['block-name-class'])) $options ['BLOCK_NAME_CLASS'] = filter_option ('BLOCK_NAME_CLASS', $_POST ['block-name-class']); if (isset ($_POST ['inline-styles'])) $options ['INLINE_STYLES'] = filter_option ('INLINE_STYLES', $_POST ['inline-styles']); if (isset ($_POST ['minimum-user-role'])) $options ['MINIMUM_USER_ROLE'] = filter_string ($_POST ['minimum-user-role']); if (isset ($_POST ['sticky-widget-mode'])) $options ['STICKY_WIDGET_MODE'] = filter_option ('STICKY_WIDGET_MODE', $_POST ['sticky-widget-mode']); if (isset ($_POST ['sticky-widget-margin'])) $options ['STICKY_WIDGET_MARGIN'] = filter_option ('STICKY_WIDGET_MARGIN', $_POST ['sticky-widget-margin']); if (isset ($_POST ['lazy-loading-offset'])) $options ['LAZY_LOADING_OFFSET'] = filter_option ('LAZY_LOADING_OFFSET', $_POST ['lazy-loading-offset']); if (isset ($_POST ['cfp'])) $options ['CLICK_FRAUD_PROTECTION'] = filter_option ('CLICK_FRAUD_PROTECTION', $_POST ['cfp']); if (isset ($_POST ['cfp-time'])) $options ['CLICK_FRAUD_PROTECTION_TIME'] = filter_option ('CLICK_FRAUD_PROTECTION_TIME', $_POST ['cfp-time']); if (isset ($_POST ['global-visitor-limit-cpt'])) $options ['GLOBAL_VISITOR_LIMIT_CPT'] = filter_option ('GLOBAL_VISITOR_LIMIT_CPT', $_POST ['global-visitor-limit-cpt']); if (isset ($_POST ['global-visitor-limit-time'])) $options ['GLOBAL_VISITOR_LIMIT_TIME'] = filter_option ('GLOBAL_VISITOR_LIMIT_TIME', $_POST ['global-visitor-limit-time']); if (isset ($_POST ['cfp-block-ip-address'])) $options ['CFP_BLOCK_IP_ADDRESS'] = filter_option ('CFP_BLOCK_IP_ADDRESS', $_POST ['cfp-block-ip-address']); if (isset ($_POST ['max-page-blocks'])) $options ['MAX_PAGE_BLOCKS'] = filter_option ('MAX_PAGE_BLOCKS', $_POST ['max-page-blocks']); if (isset ($_POST ['plugin_priority'])) $options ['PLUGIN_PRIORITY'] = filter_option ('PLUGIN_PRIORITY', $_POST ['plugin_priority']); if (isset ($_POST ['max-list-items'])) $options ['MAX_LIST_ITEMS'] = filter_option ('MAX_LIST_ITEMS', $_POST ['max-list-items']); if (isset ($_POST ['tab-setup-delay'])) $options ['TAB_SETUP_DELAY'] = filter_option ('TAB_SETUP_DELAY', $_POST ['tab-setup-delay']); if (isset ($_POST ['dynamic_blocks'])) $options ['DYNAMIC_BLOCKS'] = filter_option ('DYNAMIC_BLOCKS', $_POST ['dynamic_blocks']); if (isset ($_POST ['paragraph_counting_functions'])) $options ['PARAGRAPH_COUNTING_FUNCTIONS'] = filter_option ('PARAGRAPH_COUNTING_FUNCTIONS', $_POST ['paragraph_counting_functions']); if (isset ($_POST ['output-buffering'])) $options ['OUTPUT_BUFFERING'] = filter_option ('OUTPUT_BUFFERING', $_POST ['output-buffering']); if (isset ($_POST ['disable-caching-admin'])) $options ['DISABLE_CACHING'] = filter_option ('DISABLE_CACHING', $_POST ['disable-caching-admin']); if (isset ($_POST ['menu-for-link'])) $options ['MENU_FOR_LINK'] = filter_option ('MENU_FOR_LINK', $_POST ['menu-for-link']); if (isset ($_POST ['wait-for-jquery'])) $options ['WAIT_FOR_JQUERY'] = filter_option ('WAIT_FOR_JQUERY', $_POST ['wait-for-jquery']); if (isset ($_POST ['javascript-code'])) $options ['JAVASCRIPT_CODE_MODE'] = filter_option ('JAVASCRIPT_CODE_MODE', $_POST ['javascript-code']); if (isset ($_POST ['no-paragraph-counting-inside'])) $options ['NO_PARAGRAPH_COUNTING_INSIDE'] = filter_option ('NO_PARAGRAPH_COUNTING_INSIDE', $_POST ['no-paragraph-counting-inside']); if (isset ($_POST ['ad-label'])) $options ['AD_LABEL'] = filter_option ('AD_LABEL', $_POST ['ad-label']); if (isset ($_POST ['main-content-element'])) $options ['MAIN_CONTENT_ELEMENT'] = filter_option ('MAIN_CONTENT_ELEMENT', $_POST ['main-content-element']); if (isset ($_POST [AI_OPTION_ADB_DEVICES])) $options ['ADB_DEVICES'] = filter_option ('ADB_DEVICES', $_POST [AI_OPTION_ADB_DEVICES]); if (isset ($_POST [AI_OPTION_ADB_ACTION])) $options ['ADB_ACTION'] = filter_option ('ADB_ACTION', $_POST [AI_OPTION_ADB_ACTION]); if (isset ($_POST [AI_OPTION_ADB_NO_ACTION])) $options ['ADB_NO_ACTION'] = filter_option ('ADB_NO_ACTION', $_POST [AI_OPTION_ADB_NO_ACTION]); if (isset ($_POST [AI_OPTION_ADB_DELAY_ACTION])) $options ['ADB_DELAY_ACTION'] = filter_option ('ADB_DELAY_ACTION', $_POST [AI_OPTION_ADB_DELAY_ACTION]); if (isset ($_POST [AI_OPTION_ADB_NO_ACTION_PERIOD])) $options ['ADB_NO_ACTION_PERIOD'] = filter_option ('ADB_NO_ACTION_PERIOD', $_POST [AI_OPTION_ADB_NO_ACTION_PERIOD]); if (isset ($_POST [AI_OPTION_ADB_SELECTORS])) $options ['ADB_SELECTORS'] = filter_option ('ADB_SELECTORS', $_POST [AI_OPTION_ADB_SELECTORS]); if (isset ($_POST [AI_OPTION_ADB_REDIRECTION_PAGE])) $options ['ADB_REDIRECTION_PAGE'] = filter_option ('ADB_REDIRECTION_PAGE', $_POST [AI_OPTION_ADB_REDIRECTION_PAGE]); if (isset ($_POST [AI_OPTION_ADB_CUSTOM_REDIRECTION_URL])) $options ['ADB_CUSTOM_REDIRECTION_URL'] = filter_option ('ADB_CUSTOM_REDIRECTION_URL', $_POST [AI_OPTION_ADB_CUSTOM_REDIRECTION_URL]); if (isset ($_POST [AI_OPTION_ADB_MESSAGE_CSS])) $options ['ADB_MESSAGE_CSS'] = filter_option ('ADB_MESSAGE_CSS', $_POST [AI_OPTION_ADB_MESSAGE_CSS]); if (isset ($_POST [AI_OPTION_ADB_OVERLAY_CSS])) $options ['ADB_OVERLAY_CSS'] = filter_option ('ADB_OVERLAY_CSS', $_POST [AI_OPTION_ADB_OVERLAY_CSS]); if (isset ($_POST [AI_OPTION_ADB_UNDISMISSIBLE_MESSAGE])) $options ['ADB_UNDISMISSIBLE_MESSAGE'] = filter_option ('ADB_UNDISMISSIBLE_MESSAGE', $_POST [AI_OPTION_ADB_UNDISMISSIBLE_MESSAGE]); if (isset ($_POST [AI_OPTION_ADB_EXTERNAL_SCRIPTS])) $options ['ADB_EXTERNAL_SCRIPTS'] = filter_option ('ADB_EXTERNAL_SCRIPTS', $_POST [AI_OPTION_ADB_EXTERNAL_SCRIPTS]); if (isset ($_POST [AI_OPTION_ADB_NO_UNDISMISSIBLE_MESSAGE]))$options ['ADB_NO_UNDISMISSIBLE_MESSAGE'] = filter_option ('ADB_NO_UNDISMISSIBLE_MESSAGE', $_POST [AI_OPTION_ADB_NO_UNDISMISSIBLE_MESSAGE]); if (isset ($_POST ['force_admin_toolbar'])) $options ['FORCE_ADMIN_TOOLBAR'] = filter_option ('FORCE_ADMIN_TOOLBAR', $_POST ['force_admin_toolbar']); if (isset ($_POST ['admin_toolbar_debugging'])) $options ['ADMIN_TOOLBAR_DEBUGGING'] = filter_option ('ADMIN_TOOLBAR_DEBUGGING', $_POST ['admin_toolbar_debugging']); if (isset ($_POST ['admin_toolbar_mobile'])) $options ['ADMIN_TOOLBAR_MOBILE'] = filter_option ('ADMIN_TOOLBAR_MOBILE', $_POST ['admin_toolbar_mobile']); if (isset ($_POST ['remote_debugging'])) $options ['REMOTE_DEBUGGING'] = filter_option ('REMOTE_DEBUGGING', $_POST ['remote_debugging']); if (isset ($_POST ['disable_translation'])) $options ['DISABLE_TRANSLATION'] = filter_option ('DISABLE_TRANSLATION', $_POST ['disable_translation']); if (isset ($_POST ['backend_js_debugging'])) $options ['BACKEND_JS_DEBUGGING'] = filter_option ('BACKEND_JS_DEBUGGING', $_POST ['backend_js_debugging']); if (isset ($_POST ['frontend_js_debugging'])) $options ['FRONTEND_JS_DEBUGGING'] = filter_option ('FRONTEND_JS_DEBUGGING', $_POST ['frontend_js_debugging']); if (isset ($_POST ['disable-blocks'])) $options ['DISABLE_BLOCK_INSERTIONS'] = filter_option ('DISABLE_BLOCK_INSERTIONS', $_POST ['disable-blocks']); if (isset ($_POST ['disable-php-processing'])) $options ['DISABLE_PHP_PROCESSING'] = filter_option ('DISABLE_PHP_PROCESSING', $_POST ['disable-php-processing']); if (isset ($_POST ['disable-html-code'])) $options ['DISABLE_HTML_CODE'] = filter_option ('DISABLE_HTML_CODE', $_POST ['disable-html-code']); if (isset ($_POST ['disable-css-code'])) $options ['DISABLE_CSS_CODE'] = filter_option ('DISABLE_CSS_CODE', $_POST ['disable-css-code']); if (isset ($_POST ['disable-js-code'])) $options ['DISABLE_JS_CODE'] = filter_option ('DISABLE_JS_CODE', $_POST ['disable-js-code']); if (isset ($_POST ['disable-footer-code'])) $options ['DISABLE_FOOTER_CODE'] = filter_option ('DISABLE_FOOTER_CODE', $_POST ['disable-footer-code']); if (isset ($_POST ['disable-header-code'])) $options ['DISABLE_HEADER_CODE'] = filter_option ('DISABLE_HEADER_CODE', $_POST ['disable-header-code']); for ($viewport = 1; $viewport <= 6; $viewport ++) { if (isset ($_POST ['viewport-name-'.$viewport])) $options ['VIEWPORT_NAME_'.$viewport] = filter_string ($_POST ['viewport-name-'.$viewport]); if (isset ($_POST ['viewport-width-'.$viewport])) $options ['VIEWPORT_WIDTH_'.$viewport] = filter_option ('viewport_width', $_POST ['viewport-width-'.$viewport]); } for ($constant = 1; $constant <= 6; $constant ++) { if (isset ($_POST ['constant-name-'.$constant])) $options ['CONSTANT_NAME_'.$constant] = filter_string ($_POST ['constant-name-'.$constant]); if (isset ($_POST ['constant-value-'.$constant])) $options ['CONSTANT_VALUE_'.$constant] = filter_string ($_POST ['constant-value-'.$constant]); } for ($hook = 1; $hook <= 20; $hook ++) { if (isset ($_POST ['hook-enabled-'.$hook])) $options ['HOOK_ENABLED_'.$hook] = filter_option ('HOOK_ENABLED', $_POST ['hook-enabled-'.$hook]); if (isset ($_POST ['hook-name-'.$hook])) $options ['HOOK_NAME_'.$hook] = filter_string_tags ($_POST ['hook-name-'.$hook]); if (isset ($_POST ['hook-action-'.$hook])) $options ['HOOK_ACTION_'.$hook] = filter_string ($_POST ['hook-action-'.$hook]); if (isset ($_POST ['hook-priority-'.$hook])) $options ['HOOK_PRIORITY_'.$hook] = filter_option ('HOOK_PRIORITY', $_POST ['hook-priority-'.$hook]); } $ai_options [AI_OPTION_GLOBAL] = ai_check_plugin_options ($options); } if (!empty ($invalid_blocks)) { if ($invalid_blocks [0] == 0) { // translators: %s: Ad Inserter echo '<div class="notice notice-error is-dismissible" style="margin: 5px 15px 2px 0px;"><p>'. sprintf (__('Error importing %s settings.', 'ad-inserter'), AD_INSERTER_NAME) . '</p></div>'; } else echo '<div class="notice notice-error is-dismissible" style="margin: 5px 15px 2px 0px;"><p>'. _n('Error importing settings for block', 'Error importing settings for blocks:', count ($invalid_blocks), 'ad-inserter') , ' ', implode (', ', $invalid_blocks) . '</p></div>'; } if ($settings_ok) { // Multisite $multisite_options = array (); if (function_exists ('ai_filter_multisite_settings')) ai_filter_multisite_settings ($multisite_options); ai_check_multisite_options ($multisite_options); ai_save_options ($ai_options, $multisite_options); if (function_exists ('ai_load_globals')) ai_load_globals (); if (defined ('AI_PLUGIN_TRACKING') && AI_PLUGIN_TRACKING) { if (isset ($_POST ['plugin-usage-tracking'])) { global $ai_dst; if (isset ($ai_dst) && is_object ($ai_dst)) { $ai_dst->set_tracking ((bool) $_POST ['plugin-usage-tracking']); } } } echo '<div class="notice notice-success is-dismissible" style="margin: 5px 15px 2px 0px;"><p>' . __('Settings saved.', 'ad-inserter') . '</p></div>'; } else { // translators: %s: Ad Inserter echo '<div class="notice notice-error is-dismissible" style="margin: 5px 15px 2px 0px;"><p>' . sprintf (__('Invalid data received - %s settings not saved.', 'ad-inserter'), AD_INSERTER_NAME) . '</p>'; if (!empty ($settings_errors)) { foreach ($settings_errors as $settings_error) { echo '<div>', $settings_error, '</div>'; } } echo '</div>'; } } elseif (isset ($_POST [AI_FORM_CLEAR]) && $settings_data_valid) { check_admin_referer ('save_adinserter_settings'); if (function_exists ('ai_clear_settings_2')) { $remote_cleared = ai_clear_settings_2 (); } else $remote_cleared = false; if (!$remote_cleared) { ai_clear_settings (); } echo '<div class="notice notice-warning is-dismissible" style="margin: 5px 15px 2px 0px;"><p><strong>' . __('Settings cleared.', 'ad-inserter') . '</strong></p></div>'; } elseif (isset ($_POST [AI_FORM_CLEAR_EXCEPTIONS]) && $settings_data_valid) { check_admin_referer ('save_adinserter_settings'); if (ai_current_user_role_ok () && (!is_multisite() || is_main_site () || multisite_exceptions_enabled ())) { if (function_exists ('ai_clear_exceptions_2')) { $remote_cleared = ai_clear_exceptions_2 (); } else $remote_cleared = false; if (!$remote_cleared) { ai_clear_exceptions (); } } } elseif (isset ($_POST [AI_FORM_CLEAR_STATISTICS]) && is_numeric ($_POST [AI_FORM_CLEAR_STATISTICS]) && $settings_data_valid) { check_admin_referer ('save_adinserter_settings'); if (function_exists ('ai_clear_statistics_2')) { $remote_cleared = ai_clear_statistics_2 (); } else $remote_cleared = false; if (!$remote_cleared) { ai_clear_statistics (); } } generate_settings_form (); } function ai_adinserter ($block_parameter, $options, &$block) { global $block_object, $ad_inserter_globals, $ai_wp_data, $ai_last_check; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($block_parameter == "") return ""; $block_number = $block_parameter; if (!is_numeric ($block_parameter)) { $function_block_parameter = strtolower ($block_parameter); for ($counter = 1; $counter <= 96; $counter ++) { $obj = $block_object [$counter]; $ad_name = strtolower (trim ($obj->get_ad_name())); if ($function_block_parameter == $ad_name) { $block_number = $counter; break; } } } if (!is_numeric ($block_number)) return ""; $block = (int) $block_number; if ($block < 1 || $block > 96) return ""; $globals_name = AI_PHP_FUNCTION_CALL_COUNTER_NAME . $block; if (!isset ($ad_inserter_globals [$globals_name])) { $ad_inserter_globals [$globals_name] = 1; } else $ad_inserter_globals [$globals_name] ++; if ($debug_processing) ai_log ("PHP FUNCTION CALL adinserter ($block_parameter".($options == '' ? '' : (', \''.$options.'\''))."), block $block [" . $ad_inserter_globals [$globals_name] . ']'); $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_PHP_FUNCTION; $options_array = array (); if (trim ($options) != '') { $options_array = explode (",", str_replace (" ", "", $options)); if (in_array ("server-side", $options_array)) { $ai_wp_data [AI_DYNAMIC_BLOCKS] = AI_DYNAMIC_BLOCKS_SERVER_SIDE; } elseif (in_array ("client-side-show", $options_array)) { $ai_wp_data [AI_DYNAMIC_BLOCKS] = AI_DYNAMIC_BLOCKS_CLIENT_SIDE_SHOW; } elseif (in_array ("client-side-insert", $options_array)) { $ai_wp_data [AI_DYNAMIC_BLOCKS] = AI_DYNAMIC_BLOCKS_CLIENT_SIDE_INSERT; } elseif (in_array ("server-side-w3c", $options_array)) { $ai_wp_data [AI_DYNAMIC_BLOCKS] = AI_DYNAMIC_BLOCKS_SERVER_SIDE_W3TC; } } $obj = $block_object [$block]; $obj->clear_code_cache (); $ai_last_check = AI_CHECK_ENABLED_PHP; if (!$obj->get_enable_php_call ()) return ""; if (!$obj->check_server_side_detection ()) return ""; /* Deprecated */ if (!$obj->check_page_types_lists_users (in_array ("page-type", $options_array) || in_array ("ignore-page-type", $options_array))) return ""; if (!$obj->check_filter ($ad_inserter_globals [$globals_name])) return ""; if (!$obj->check_number_of_words ()) return ""; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) { // $meta_value = get_post_meta (get_the_ID (), '_adinserter_block_exceptions', true); $meta_value = ai_get_post_meta (); $selected_blocks = explode (",", $meta_value); if (!$obj->check_post_page_exceptions ($selected_blocks)) return ""; } $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) return ""; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) return ""; // Last check before counter check before insertion // $ai_last_check = AI_CHECK_CODE; // if ($obj->ai_getCode () == '') return ""; if ($obj->empty_code ()) return ""; $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) return ""; } if (!$obj->check_filter_hook ($debug_processing)) return ""; // Last check before insertion if (!$obj->check_and_increment_block_counter ()) return ""; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if ($obj->get_debug_disable_insertion ()) return ""; $code = $obj->get_code_for_serverside_insertion (); // Must be after get_code_for_serverside_insertion () $ai_last_check = AI_CHECK_INSERTED; unset ($ai_wp_data [AI_DYNAMIC_BLOCKS]); return $code; } function adinserter ($block = '', $options = '') { global $ai_last_check, $ai_wp_data, $ai_total_plugin_time; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($debug_processing) { $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } $ai_last_check = AI_CHECK_NONE; $block_number = 0; $code = ai_adinserter ($block, $options, $block_number); if ($debug_processing) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } if ($ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($block_number, $ai_last_check)); ai_log ("PHP FUNCTION CALL END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } return $code; } function ai_content_hook ($content = '') { global $block_object, $ad_inserter_globals, $ai_db_options_extract, $ai_wp_data, $ai_last_check, $ai_total_plugin_time, $special_element_tags; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_ADMIN) return $content; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; $globals_name = AI_CONTENT_COUNTER_NAME; if (!isset ($ad_inserter_globals [$globals_name])) { $ad_inserter_globals [$globals_name] = 1; } else $ad_inserter_globals [$globals_name] ++; if (!is_string ($content)) { if ($debug_processing) { ai_log ("CONTENT HOOK START [" . $ad_inserter_globals [$globals_name] . (in_the_loop () ? ', IN THE LOOP' : ', NOT IN THE LOOP') . '] - CONTENT NOT STRING - NO PROCESING'); ai_log (""); } return $content; } // TEMP CHECK if (get_plugin_priority () % 2 == 1) { if (strpos ($content, '<!-- ' . AI_CONTENT_MARKER) !== false) { if ($debug_processing) { ai_log ("THE CONTENT ALREADY PROCESSED\n"); } return $content; } } $special_element_tags = explode (',', str_replace (' ', '', get_no_paragraph_counting_inside ())); if ($debug_processing) { ai_log ("CONTENT HOOK START [" . $ad_inserter_globals [$globals_name] . (in_the_loop () ? ', IN THE LOOP' : ', NOT IN THE LOOP') . ']'); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_CONTENT; $content_words = number_of_words ($content); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { $preview = $block_object [0]; $positions_inserted = false; if ($ai_wp_data [AI_WP_DEBUG_BLOCK] == 0) { $content = $preview->before_paragraph ($content, true); $content = $preview->after_paragraph ($content, true); $positions_inserted = true; } $content = $preview->before_paragraph ($content, true, true); $content = $preview->after_paragraph ($content, true, true); } if ($ai_db_options_extract [CONTENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) { if ($debug_processing) ai_log_content ($content); if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) { // $meta_value = get_post_meta (get_the_ID (), '_adinserter_block_exceptions', true); $meta_value = ai_get_post_meta (); $selected_blocks = explode (",", $meta_value); ai_log ("INDIVIDUAL EXCEPTIONS [" . $meta_value . ']'); } else $selected_blocks = array (); $ai_last_check = AI_CHECK_NONE; $current_block = 0; $in_the_loop = in_the_loop (); if (isset ($ai_db_options_extract [CONTENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) foreach ($ai_db_options_extract [CONTENT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if (!isset ($block_object [$block])) continue; $ai_last_check = AI_CHECK_NONE; $current_block = $block; $obj = $block_object [$block]; $obj->clear_code_cache (); if ($in_the_loop || !$obj->get_only_in_the_loop ()) { if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0 && !$positions_inserted && $ai_wp_data [AI_WP_DEBUG_BLOCK] <= $block) { $preview = $block_object [$ai_wp_data [AI_WP_DEBUG_BLOCK]]; $content = $preview->before_paragraph ($content, true); $content = $preview->after_paragraph ($content, true); $positions_inserted = true; } if (!$obj->check_server_side_detection ()) continue; if (!$obj->check_page_types_lists_users ()) continue; if (!$obj->check_post_page_exceptions ($selected_blocks)) continue; if (!$obj->check_filter ($ad_inserter_globals [$globals_name])) continue; if (!$obj->check_number_of_words ($content, $content_words)) continue; $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) continue; // Deprecated if ($obj->display_disabled ($content)) continue; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) continue; // Last check before counter check before insertion if ($obj->empty_code ()) continue; $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) continue; } if (!$obj->check_filter_hook ($debug_processing)) continue; $automatic_insertion = $obj->get_automatic_insertion(); if ($automatic_insertion == AI_AUTOMATIC_INSERTION_BEFORE_PARAGRAPH) { $ai_last_check = AI_CHECK_PARAGRAPH_COUNTING; $content = $obj->before_paragraph ($content); } elseif ($automatic_insertion == AI_AUTOMATIC_INSERTION_AFTER_PARAGRAPH) { $ai_last_check = AI_CHECK_PARAGRAPH_COUNTING; $content = $obj->after_paragraph ($content); } if ($automatic_insertion == AI_AUTOMATIC_INSERTION_BEFORE_IMAGE) { $ai_last_check = AI_CHECK_IMAGE_COUNTING; $content = $obj->before_image ($content); } elseif ($automatic_insertion == AI_AUTOMATIC_INSERTION_AFTER_IMAGE) { $ai_last_check = AI_CHECK_IMAGE_COUNTING; $content = $obj->after_image ($content); } elseif ($automatic_insertion == AI_AUTOMATIC_INSERTION_BEFORE_CONTENT) { // Last check before insertion if (!$obj->check_and_increment_block_counter ()) continue; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { $content = $obj->get_code_for_serverside_insertion () . $content; $ai_last_check = AI_CHECK_INSERTED; } } elseif ($automatic_insertion == AI_AUTOMATIC_INSERTION_AFTER_CONTENT) { // Last check before insertion if (!$obj->check_and_increment_block_counter ()) continue; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { $content = $content . $obj->get_code_for_serverside_insertion (); $ai_last_check = AI_CHECK_INSERTED; } } } } if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); } if (function_exists ('ai_content')) ai_content ($content); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_TAGS) != 0) { $class = AI_DEBUG_TAGS_CLASS; $content = preg_replace ("/\r\n\r\n/", "\r\n\r\n<kbd class='$class ai-debug-rnrn'>\\r\\n\\r\\n</kbd>", $content); // $content = preg_replace ("/<p>/i", "<p><kbd class='$class ai-debug-p'><p></kbd>", $content); // $content = preg_replace ("/<p ([^>]*?)>/i", "<p$1><kbd class='$class ai-debug-p'><p$1></kbd>", $content); // Full p tags $content = preg_replace ("/<p([^>]*?)>/i", "<p$1><kbd class='$class ai-debug-p'><p></kbd>", $content); // $content = preg_replace ("/<div([^>]*?)>/i", "<div$1><kbd class='$class ai-debug-div'><div$1></kbd>", $content); // Full div tags $content = preg_replace ("/<div([^>]*?)>/i", "<div$1><kbd class='$class ai-debug-div'><div></kbd>", $content); $content = preg_replace ("/<h([1-6])([^>]*?)>/i", "<h$1$2><kbd class='$class ai-debug-h'><h$1></kbd>", $content); $content = preg_replace ("/<img([^>]*?)>/i", "<img$1><kbd class='$class ai-debug-img'><img$1></kbd>", $content); $content = preg_replace ("/<pre([^>]*?)>/i", "<pre$1><kbd class='$class ai-debug-pre'><pre></kbd>", $content); $content = preg_replace ("/<span([^>]*?)>/i", "<kbd class='$class ai-debug-span'><span></kbd><span$1>", $content); $content = preg_replace ("/<(?!section|ins|script|kbd|a|strong|pre|span|p|div|h[1-6]|img)([a-z0-9]+)([^>]*?)>/i", "<$1$2><kbd class='$class ai-debug-special'><$1$2></kbd>", $content); $content = preg_replace ("/<\/p>/i", "<kbd class='$class ai-debug-p'></p></kbd></p>", $content); $content = preg_replace ("/<\/div>/i", "<kbd class='$class ai-debug-div'></div></kbd></div>", $content); $content = preg_replace ("/<\/h([1-6])>/i", "<kbd class='$class ai-debug-h'></h$1></kbd></h$1>", $content); $content = preg_replace ("/<\/pre>/i", "<kbd class='$class ai-debug-pre'></pre></kbd></pre>", $content); $content = preg_replace ("/<\/span>/i", "</span><kbd class='$class ai-debug-span'></span></kbd>", $content); $content = preg_replace ("/<\/(?!section|ins|script|kbd|a|strong|pre|span|p|div|h[1-6])([a-z0-9]+)>/i", "<kbd class='$class ai-debug-special'></$1></kbd></$1>", $content); } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { $class = AI_DEBUG_POSITIONS_CLASS; if (!$positions_inserted) { $preview = $block_object [$ai_wp_data [AI_WP_DEBUG_BLOCK]]; $content = $preview->before_paragraph ($content, true); $content = $preview->after_paragraph ($content, true); } if (preg_match_all ("/\[\[AI_BP([\d]+?)=([\d]+?)\]\]/", $content, $matches)) { foreach ($matches [0] as $index => $match) { $content = str_replace ($match, "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_BEFORE_PARAGRAPH ."' class='$class'><a href='#' class='ai-debug-left ai-debug-visibility-hidden'><span class='ai-debug-display-none'>[(]</span>" . $matches [2][$index] . " " . _n('word', 'words', $matches [2][$index], 'ad-inserter') . '<span class="ai-debug-display-none">[)]</span></a>' . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_BEFORE_PARAGRAPH) : strtoupper (AI_TEXT_BEFORE_PARAGRAPH)) . ' ' . $matches [1][$index] . "<a href='#' class='ai-debug-right'><span class='ai-debug-display-none'>[(]</span>" . $matches [2][$index] . ' ' . _n('word', 'words', $matches [2][$index], 'ad-inserter') . '<span class="ai-debug-display-none">[)]</span></a></section>', $content); } } if (preg_match_all ("/\[\[AI_BI([\d]+?)=([\d]+?)\]\]/", $content, $matches)) { foreach ($matches [0] as $index => $match) { $content = str_replace ($match, "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_BEFORE_IMAGE ."' class='$class ai-images'><a href='#' class='ai-debug-left ai-debug-visibility-hidden'><span class='ai-debug-display-none'>[(]</span>".'<span class="ai-debug-display-none">[)]</span></a>' . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_BEFORE_IMAGE) : strtoupper (AI_TEXT_BEFORE_IMAGE)) . ' ' . $matches [1][$index] . "<a href='#' class='ai-debug-right'><span class='ai-debug-display-none'>[(]</span>" . '<span class="ai-debug-display-none">[)]</span></a></section>', $content); } } // $content = preg_replace ("/\[\[AI_BP([\d]+?)=([\d]+?)\]\]/", "<section class='$class'><a class='ai-debug-left' style='visibility: hidden;'><span style='display: none'>[(]</span>$2 " . __('words', 'ad-inserter') . '[)]</a>' . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_BEFORE_PARAGRAPH) : strtoupper (AI_TEXT_BEFORE_PARAGRAPH)) . " $1<a class='ai-debug-right'><span style='display: none'>[(]</span>$2 " . __('word', 'words', 'ad-inserter') . '<span style="display: none">[)]</span></a></section>', $content); $content = preg_replace ("/\[\[AI_AP([\d]+?)\]\]/", "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_AFTER_PARAGRAPH ."' class='$class'>" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_AFTER_PARAGRAPH) : strtoupper (AI_TEXT_AFTER_PARAGRAPH)) . " $1</section>", $content); $content = preg_replace ("/\[\[AI_AI([\d]+?)\]\]/", "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_AFTER_IMAGE ."' class='$class ai-images'>" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_AFTER_IMAGE) : strtoupper (AI_TEXT_AFTER_IMAGE)) . " $1</section>", $content); $counter = $ad_inserter_globals [$globals_name]; if ($counter == 1) $counter = ''; $content = "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_BEFORE_CONTENT ."' class='$class'><a href='#' class='ai-debug-left ai-debug-visibility-hidden'><span class='ai-debug-display-none'>[(]</span>".$content_words . ' ' . _n('word', 'words', $content_words, 'ad-inserter') . '</a> ' . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_BEFORE_CONTENT): strtoupper (AI_TEXT_BEFORE_CONTENT)) . ' '.$counter."<a href='#' class='ai-debug-right'>".$content_words.' ' . _n('word', 'words', $content_words, 'ad-inserter') . '<span class="ai-debug-display-none">[)]</span></a></section>'. $content; if ($ai_wp_data [AI_WP_AMP_PAGE]) { $content = get_page_type_debug_info ('AMP ') . $content; } $content = $content . "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_AFTER_CONTENT ."' class='$class'>" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_AFTER_CONTENT) : strtoupper (AI_TEXT_AFTER_CONTENT)) . ' '.$counter."</section>"; if ($ai_wp_data [AI_WP_AMP_PAGE]) { $content = $content . get_page_type_debug_info ('AMP '); } else $content = $content . get_page_type_debug_info (''); } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_TAGS) != 0) { $content = '<kbd class="ai-debug-invisible">[' . __('HTML TAGS REMOVED', 'ad-inserter') . ']</kbd>' . $content; } if (($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_AJAX || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_REST) && !$ai_wp_data [AI_CODE_FOR_IFRAME]) { if ($ai_wp_data [AI_CLOSE_BUTTONS]) { $content .= '<script>if (typeof ai_install_close_buttons == "function") {ai_install_close_buttons (document);}</script>'; } } $content .= '<!-- ' . AI_CONTENT_MARKER . ' ' . $ad_inserter_globals [$globals_name] . " -->\n"; if ($debug_processing) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("CONTENT HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } return $content; } // Process Before/After Excerpt postion function ai_excerpt_hook ($content = '') { global $ad_inserter_globals, $block_object, $ai_db_options_extract, $ai_wp_data, $ai_last_check, $ai_total_plugin_time; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_ADMIN) return; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; $globals_name = AI_EXCERPT_COUNTER_NAME; if (!isset ($ad_inserter_globals [$globals_name])) { $ad_inserter_globals [$globals_name] = 1; } else $ad_inserter_globals [$globals_name] ++; if ($debug_processing) { ai_log ("EXCERPT HOOK START [" . $ad_inserter_globals [$globals_name] . ']'); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_EXCERPT; $ai_last_check = AI_CHECK_NONE; $current_block = 0; if (isset ($ai_db_options_extract [EXCERPT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) foreach ($ai_db_options_extract [EXCERPT_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if (!isset ($block_object [$block])) continue; $current_block = $block; $obj = $block_object [$block]; $obj->clear_code_cache (); if (!$obj->check_server_side_detection ()) continue; if (!$obj->check_page_types_lists_users ()) continue; if (!$obj->check_filter ($ad_inserter_globals [$globals_name])) continue; $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) continue; // Deprecated if ($obj->display_disabled ($content)) continue; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) continue; // Last check before counter check before insertion // $ai_last_check = AI_CHECK_CODE; // if ($obj->ai_getCode () == '') continue; if ($obj->empty_code ()) continue; $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) continue; } if (!$obj->check_filter_hook ($debug_processing)) continue; // Last check before insertion if (!$obj->check_and_increment_block_counter ()) continue; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { $automatic_insertion = $obj->get_automatic_insertion (); if ($automatic_insertion == AI_AUTOMATIC_INSERTION_BEFORE_EXCERPT) $content = $obj->get_code_for_serverside_insertion () . $content; else $content = $content . $obj->get_code_for_serverside_insertion (); $ai_last_check = AI_CHECK_INSERTED; } } if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { $class = AI_DEBUG_POSITIONS_CLASS; $content = "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_BEFORE_EXCERPT ."' class='$class'>" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_BEFORE_EXCERPT) : strtoupper (AI_TEXT_BEFORE_EXCERPT)) . ' ' . $ad_inserter_globals [$globals_name]."</section>". $content . "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_AFTER_EXCERPT ."' class='$class'>" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_AFTER_EXCERPT) : strtoupper (AI_TEXT_AFTER_EXCERPT)) . ' ' .$ad_inserter_globals [$globals_name]."</section>"; // Remove word counts $content = preg_replace ("/\[\(\](.+?)\[\)\]/", "", $content); $content = preg_replace ("/\[\(\].*/", "", $content); // Color positions from the content hook // $content = preg_replace ("/((BEFORE|AFTER) (CONTENT|PARAGRAPH) ?[\d]*)/", "<span class='ai-debug-content-hook-positions'> [$1] </span>", $content); $content = preg_replace ("/(" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_BEFORE_CONTENT) : strtoupper (AI_TEXT_BEFORE_CONTENT)) . " ?[\d]*)/", "<span class='ai-debug-content-hook-positions'> [$1] </span>", $content); $content = preg_replace ("/(" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_AFTER_CONTENT) : strtoupper (AI_TEXT_AFTER_CONTENT)) . " ?[\d]*)/", "<span class='ai-debug-content-hook-positions'> [$1] </span>", $content); $content = preg_replace ("/(" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_BEFORE_PARAGRAPH) : strtoupper (AI_TEXT_BEFORE_PARAGRAPH)) . " ?[\d]*)/", "<span class='ai-debug-content-hook-positions'> [$1] </span>", $content); $content = preg_replace ("/(" . ($ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper (AI_TEXT_AFTER_PARAGRAPH) : strtoupper (AI_TEXT_AFTER_PARAGRAPH)) . " ?[\d]*)/", "<span class='ai-debug-content-hook-positions'> [$1] </span>", $content); } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_TAGS) != 0) { // Remove marked tags from the content hook $content = preg_replace ("/<(.+?)>/", "", $content); // Color text to mark removed HTML tags $content = str_replace ('[' . __('HTML TAGS REMOVED', 'ad-inserter') . ']', '<span class="ai-debug-removed-html-tags">[' . __('HTML TAGS REMOVED', 'ad-inserter') . ']</span>', $content); } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) != 0) { // Remove block labels from the content hook if (strpos ($content, '>[AI]<') === false) $content = preg_replace ("/\[AI\](.+?)\[\/AI\]/", "", $content); } if ($debug_processing) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("EXCERPT HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } return $content; } function ai_comments_array ($comments , $post_id ){ global $ai_wp_data; $thread_comments = get_option ('thread_comments'); $comment_counter = 0; foreach ($comments as $comment) { if (!$thread_comments || empty ($comment->comment_parent)) $comment_counter ++; } $ai_wp_data [AI_NUMBER_OF_COMMENTS] = $comment_counter; return $comments; } function ai_wp_list_comments_args ($args) { global $ai_wp_data; // print_r ($args); // $args['per_page'] = 3; // $args['page'] = 2; $ai_wp_data ['AI_COMMENTS_SAVED_CALLBACK'] = $args ['callback']; $args ['callback'] = 'ai_comment_callback'; $ai_wp_data ['AI_COMMENTS_SAVED_END_CALLBACK'] = $args ['end-callback']; $args ['end-callback'] = 'ai_comment_end_callback'; return $args; } // Process comments counter + Before Comments postion function ai_comment_callback ($comment, $args, $depth) { global $block_object, $ad_inserter_globals, $ai_db_options_extract, $ai_wp_data, $ai_last_check, $ai_total_plugin_time, $ai_walker; if ($depth == 1) { if (!isset ($ad_inserter_globals [AI_COMMENT_COUNTER_NAME])) { $ad_inserter_globals [AI_COMMENT_COUNTER_NAME] = 1; } else $ad_inserter_globals [AI_COMMENT_COUNTER_NAME] ++; } $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($debug_processing) { ai_log ('COMMENT START HOOK START [' . $ad_inserter_globals [AI_COMMENT_COUNTER_NAME] . ':'. $depth . ']'); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } if ($depth == 1 && $ad_inserter_globals [AI_COMMENT_COUNTER_NAME] == 1) { $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_BEFORE_COMMENTS; if ($args ['style'] == 'div') $tag = 'div'; else $tag = 'li'; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { $class = AI_DEBUG_POSITIONS_CLASS; echo "<$tag>\n"; echo "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_BEFORE_COMMENTS ."' class='$class'>" . __('BEFORE COMMENTS', 'ad-inserter') . '</section>'; echo "</$tag>\n"; } $ad_code = ""; $ai_last_check = AI_CHECK_NONE; $current_block = 0; if (isset ($ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) foreach ($ai_db_options_extract [BEFORE_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if (!isset ($block_object [$block])) continue; $current_block = $block; $obj = $block_object [$block]; $obj->clear_code_cache (); if (!$obj->check_server_side_detection ()) continue; if (!$obj->check_page_types_lists_users ()) continue; // No filter check if (!$obj->check_number_of_words ()) continue; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) { $meta_value = ai_get_post_meta (); $selected_blocks = explode (",", $meta_value); if (!$obj->check_post_page_exceptions ($selected_blocks)) continue; } $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) continue; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) continue; // Last check before counter check before insertion // $ai_last_check = AI_CHECK_CODE; // if ($obj->ai_getCode () == '') continue; if ($obj->empty_code ()) continue; $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) continue; } if (!$obj->check_filter_hook ($debug_processing)) continue; // Last check before insertion if (!$obj->check_and_increment_block_counter ()) continue; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { $ad_code .= $obj->get_code_for_serverside_insertion (); $ai_last_check = AI_CHECK_INSERTED; } } if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if ($ad_code != '') { echo "<$tag>\n"; echo $ad_code; echo "</$tag>\n"; } } if ($debug_processing) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("COMMENT START HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } if (!empty ($ai_wp_data ['AI_COMMENTS_SAVED_CALLBACK'])) { echo call_user_func ($ai_wp_data ['AI_COMMENTS_SAVED_CALLBACK'], $comment, $args, $depth ); } else { $ai_walker->comment_callback ($comment, $args, $depth); } } // Process Between Comments postion function ai_comment_end_callback ($comment, $args, $depth) { global $block_object, $ad_inserter_globals, $ai_db_options_extract, $ai_wp_data, $ai_last_check, $ai_total_plugin_time; if ($args ['style'] == 'div') $tag = 'div'; else $tag = 'li'; if (!empty ($ai_wp_data ['AI_COMMENTS_SAVED_END_CALLBACK'])) { echo call_user_func ($ai_wp_data ['AI_COMMENTS_SAVED_END_CALLBACK'], $comment, $args, $depth); } else echo "</$tag><!-- #comment-## -->\n"; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($debug_processing) { ai_log ('COMMENT END HOOK START [' . $ad_inserter_globals [AI_COMMENT_COUNTER_NAME] . ':'. ($depth + 1) . ']'); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } if ($depth == 0) { if (!isset ($ai_wp_data [AI_NUMBER_OF_COMMENTS])) { $ai_wp_data [AI_NUMBER_OF_COMMENTS] = 0; } if (isset ($ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]]) && $ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] != 0 && !empty ($args ['per_page']) && !empty ($args ['page'])) { $number_of_comments_mod_per_page = $ai_wp_data [AI_NUMBER_OF_COMMENTS] % $args ['per_page']; if ($number_of_comments_mod_per_page != 0) { $last_page = (int) ($ai_wp_data [AI_NUMBER_OF_COMMENTS] / $args ['per_page']) + 1; $last_comment_number = $args ['page'] == $last_page ? $number_of_comments_mod_per_page : $args ['per_page']; } else $last_comment_number = $args ['per_page']; } else $last_comment_number = $ai_wp_data [AI_NUMBER_OF_COMMENTS]; if ($ad_inserter_globals [AI_COMMENT_COUNTER_NAME] == $last_comment_number) { $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_AFTER_COMMENTS; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { $class = AI_DEBUG_POSITIONS_CLASS; echo "<$tag>\n"; echo "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_AFTER_COMMENTS ."' class='$class'>" . __('AFTER COMMENTS', 'ad-inserter') . '</section>'; echo "</$tag>\n"; } $ad_code = ""; $ai_last_check = AI_CHECK_NONE; $current_block = 0; if (isset ($ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) foreach ($ai_db_options_extract [AFTER_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if (!isset ($block_object [$block])) continue; $current_block = $block; $obj = $block_object [$block]; $obj->clear_code_cache (); if (!$obj->check_server_side_detection ()) continue; if (!$obj->check_page_types_lists_users ()) continue; // No filter check if (!$obj->check_number_of_words ()) continue; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) { $meta_value = ai_get_post_meta (); $selected_blocks = explode (",", $meta_value); if (!$obj->check_post_page_exceptions ($selected_blocks)) continue; } $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) continue; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) continue; // Last check before counter check before insertion // $ai_last_check = AI_CHECK_CODE; // if ($obj->ai_getCode () == '') continue; if ($obj->empty_code ()) continue; $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) continue; } if (!$obj->check_filter_hook ($debug_processing)) continue; // Last check before insertion if (!$obj->check_and_increment_block_counter ()) continue; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { $ad_code .= $obj->get_code_for_serverside_insertion (); $ai_last_check = AI_CHECK_INSERTED; } } if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if ($ad_code != '') { echo "<$tag>\n"; echo $ad_code; echo "</$tag>\n"; } } else { $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_BETWEEN_COMMENTS; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { $class = AI_DEBUG_POSITIONS_CLASS; echo "<$tag>\n"; echo "<section data-ai-position='" .AI_AUTOMATIC_INSERTION_BETWEEN_COMMENTS ."' class='$class'>" . __('BETWEEN COMMENTS', 'ad-inserter') . ' ' . $ad_inserter_globals [AI_COMMENT_COUNTER_NAME]."</section>"; echo "</$tag>\n"; } $ad_code = ""; $ai_last_check = AI_CHECK_NONE; $current_block = 0; if (isset ($ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) foreach ($ai_db_options_extract [BETWEEN_COMMENTS_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if (!isset ($block_object [$block])) continue; $current_block = $block; $obj = $block_object [$block]; $obj->clear_code_cache (); if (!$obj->check_server_side_detection ()) continue; if (!$obj->check_page_types_lists_users ()) continue; if (!$obj->check_filter ($ad_inserter_globals [AI_COMMENT_COUNTER_NAME])) continue; if (!$obj->check_number_of_words ()) continue; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) { $meta_value = ai_get_post_meta (); $selected_blocks = explode (",", $meta_value); if (!$obj->check_post_page_exceptions ($selected_blocks)) continue; } $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) continue; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) continue; // Last check before counter check before insertion // $ai_last_check = AI_CHECK_CODE; // if ($obj->ai_getCode () == '') continue; if ($obj->empty_code ()) continue; $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) continue; } if (!$obj->check_filter_hook ($debug_processing)) continue; // Last check before insertion if (!$obj->check_and_increment_block_counter ()) continue; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { $ad_code .= $obj->get_code_for_serverside_insertion (); $ai_last_check = AI_CHECK_INSERTED; } } if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); if ($ad_code != '') { echo "<$tag>\n"; echo $ad_code; echo "</$tag>\n"; } } } if ($debug_processing) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("COMMENT END HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } function ai_custom_hook ($action, $insertion_type, $name, $translated_name = '', $hook_parameter = null, $hook_check = null) { global $block_object, $ad_inserter_globals, $ai_db_options_extract, $ai_wp_data, $ai_last_check, $ai_total_plugin_time; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_ADMIN) return; if (is_admin()) return; if ($insertion_type < AI_AUTOMATIC_INSERTION_CUSTOM_HOOK) { $globals_name = 'AI_' . strtoupper ($action) .'_COUNTER'; $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_NONE; } else { $globals_name = 'AI_' . strtoupper ($action) . '_' . $insertion_type . '_COUNTER'; $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_CUSTOM_HOOK + $insertion_type - AI_AUTOMATIC_INSERTION_CUSTOM_HOOK; } if (isset ($hook_check) && $insertion_type < AI_AUTOMATIC_INSERTION_CUSTOM_HOOK) { if (!call_user_func ($hook_check, $hook_parameter, $action)) return; } if ($debug_processing) { $hook_name = $ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper ($name) : strtoupper ($name); ai_log (str_replace (array ('<', '>'), array ('<', '>'), $hook_name) . " HOOK START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } if (!isset ($ad_inserter_globals [$globals_name])) { $ad_inserter_globals [$globals_name] = 1; } else $ad_inserter_globals [$globals_name] ++; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_POSITIONS) != 0) { $counter = $ad_inserter_globals [$globals_name]; if ($counter == 1) $counter = ''; $class = AI_DEBUG_POSITIONS_CLASS; if ($translated_name == '') $translated_name = $name; $translated_hook_name = $ai_wp_data [AI_MBSTRING_LOADED] ? mb_strtoupper ($translated_name) : strtoupper ($translated_name); echo "<section data-ai-position='$insertion_type' class='$class'>".$translated_hook_name." ".$counter."</section>"; } if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) { // $meta_value = get_post_meta (get_the_ID (), '_adinserter_block_exceptions', true); $meta_value = ai_get_post_meta (); $selected_blocks = explode (",", $meta_value); } else $selected_blocks = array (); $ad_code = ""; $ai_last_check = AI_CHECK_NONE; $current_block = 0; if (isset ($ai_db_options_extract [$action . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]])) foreach ($ai_db_options_extract [$action . CUSTOM_HOOK_BLOCKS][$ai_wp_data [AI_WP_PAGE_TYPE]] as $block) { if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); $ai_last_check = AI_CHECK_NONE; if (!isset ($block_object [$block])) continue; $current_block = $block; $obj = $block_object [$block]; if ($insertion_type >= AI_AUTOMATIC_INSERTION_CUSTOM_HOOK) { if ($obj->get_automatic_insertion () != $insertion_type) continue; } if (!in_the_loop () && $obj->get_only_in_the_loop ()) continue; $obj->clear_code_cache (); // Action can be called as insertion Between posts or as custom hook - uses the same $ai_db_options_extract index if ($action == 'the_post' && $insertion_type != $obj->get_automatic_insertion ()) continue; if (!$obj->check_server_side_detection ()) continue; if (!$obj->check_page_types_lists_users ()) continue; if (!$obj->check_post_page_exceptions ($selected_blocks)) continue; if (!$obj->check_filter ($ad_inserter_globals [$globals_name])) continue; if (!$obj->check_number_of_words ()) continue; $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) continue; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) continue; // Last check before counter check before insertion if ($obj->empty_code ()) continue; $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) continue; } if (!$obj->check_filter_hook ($debug_processing)) continue; // Last check before insertion if (!$obj->check_and_increment_block_counter ()) continue; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { $block_code = $obj->get_code_for_serverside_insertion (); if ($action == 'wp_head') { // Replace div tag in the head with meta tag $block_code = preg_replace ("#<div class='ai-dynamic (.+?)></div>#", "<meta class='ai-dynamic $1 />", $block_code); } $ad_code .= $block_code; $ai_last_check = AI_CHECK_INSERTED; } } if ($debug_processing && $ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($current_block, $ai_last_check)); echo $ad_code; if ($debug_processing) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log (str_replace (array ('<', '>'), array ('<', '>'), $hook_name) . " HOOK END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } function ai_pre_do_shortcode_tag ($return, $tag, $attr, $m) { global $ai_expand_only_rotate_count_check, $ai_wp_data; // Array //( // [0] => [ADINSERTER ROTATE='1'] // [1] => // [2] => ADINSERTER // [3] => ROTATE='1' // [4] => // [5] => // [6] => if ($ai_expand_only_rotate_count_check) { if (strtolower ($tag) == 'adinserter') { // Expand only ROTATE / COUNT / CHECK if (isset ($attr ['rotate']) || in_array ('ROTATE', $attr) || in_array ('rotate', $attr)) { return false; } elseif (isset ($attr ['count']) || in_array ('COUNT', $attr) || in_array ('count', $attr)) { return false; } elseif (isset ($attr ['check']) || in_array ('CHECK', $attr) || in_array ('check', $attr)) { return false; } else return $m [0]; } else return $m [0]; } return $return; } function ai_process_shortcode (&$block, $atts) { global $block_object, $ai_last_check, $ai_wp_data, $ad_inserter_globals; if ($atts == '') return ''; $parameters = shortcode_atts (array ( "block" => "", "code" => "", "name" => "", "group" => "", "ignore" => "", "disable" => "", "index" => "", "check" => "", "viewport" => "", "fallback" => "", "adb" => "", "tracking" => "", "css" => "", "text" => "", "selectors" => "", "amp" => "", "head" => "", "rotate" => "", "count" => "", "counter" => "", "http" => "", "custom-field" => "", "random" => "", "data" => "", "share" => "", "time" => "", "category" => "", "categories" => "", "tag" => "", "tags" => "", "taxonomy" => "", "taxonomies" => "", "id" => "", "ids" => "", "url" => "", "urls" => "", "url-parameter" => "", "url-parameters" => "", "cookie" => "", "cookies" => "", "referrer" => "", "referrers" => "", "client" => "", "clients" => "", "scheduling" => "", "ip-address" => "", "ip-addresses" => "", "country" => "", "countries" => "", ), $atts); $output = ""; if (function_exists ('ai_shortcode')) { $output = ai_shortcode ($parameters); if ($output != '') return $output; } if (($adb = trim ($parameters ['adb'])) != '') { // message html // message css // overlay css // undismissible // redirection page // redirection url switch (strtolower ($adb)) { case 'message': $ai_wp_data [AI_ADB_SHORTCODE_ACTION] = AI_ADB_ACTION_MESSAGE; break; case 'redirection': $ai_wp_data [AI_ADB_SHORTCODE_ACTION] = AI_ADB_ACTION_REDIRECTION; break; case 'no-action': $ai_wp_data [AI_ADB_SHORTCODE_ACTION] = AI_ADB_ACTION_NONE; break; case 'disabled': $ai_wp_data [AI_ADB_SHORTCODE_DISABLED] = true; break; case 'external-scripts': if (!get_adb_external_scripts ()) { return ai_adb_external_scripts (); } } return ""; } if (($tracking = trim ($parameters ['tracking'])) != '') { switch (strtolower ($tracking)) { case 'disabled': $ai_wp_data [AI_TRACKING_SHORTCODE_DISABLED] = true; break; } return ""; } $block = - 1; $code_only = false; $name_only = false; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($parameters ['block'] == '' && $parameters ['code'] != '' && !($parameters ['viewport'] != '' || in_array ('VIEWPORT', $atts) || in_array ('viewport', $atts))) { $parameters ['block'] = $parameters ['code']; $code_only = true; } // To convert name attribute to block elseif ($parameters ['block'] == '' && $parameters ['name'] != '' && !($parameters ['rotate'] != '' || in_array ('ROTATE', $atts) || in_array ('rotate', $atts))) { $parameters ['block'] = $parameters ['name']; $name_only = true; } if (is_numeric ($parameters ['block']) && !$name_only) { $block = intval ($parameters ['block']); // } elseif ($parameters ['name'] != '' && !($parameters ['rotate'] != '' || in_array ('ROTATE', $atts) || in_array ('rotate', $atts))) { // $shortcode_name = strtolower ($parameters ['name']); } elseif ($parameters ['block'] != '' && !($parameters ['rotate'] != '' || in_array ('ROTATE', $atts) || in_array ('rotate', $atts))) { $shortcode_name = strtolower ($parameters ['block']); for ($counter = 1; $counter <= 96; $counter ++) { $obj = $block_object [$counter]; $ad_name = strtolower (trim ($obj->get_ad_name())); if ($shortcode_name == $ad_name && $obj->get_enable_manual ()) { $block = $counter; break; } } if ($block == - 1) { // Check if it is a reusable block with this name $query = new WP_Query ( array ( 'post_type' => 'wp_block', // reusable block 'title' => $parameters ['block'], 'post_status' => 'published', 'posts_per_page' => 1, ) ); if (!empty ($query->post)) { // Return reusable block return $query->post->post_content; } } } if ($block == - 1) { if (function_exists ('ai_check_separators')) { if ($parameters ['check'] != '' || in_array ('CHECK', $atts) || in_array ('check', $atts)) { if (!isset ($ai_wp_data [AI_SHORTCODES]['check'])) $ai_wp_data [AI_SHORTCODES]['check'] = array (); $ai_wp_data [AI_SHORTCODES]['check'] []= $parameters; return AD_CHECK_SEPARATOR; } } if ($parameters ['viewport'] != '' || in_array ('VIEWPORT', $atts) || in_array ('viewport', $atts)) { if (!isset ($ai_wp_data [AI_SHORTCODES]['viewport'])) $ai_wp_data [AI_SHORTCODES]['viewport'] = array (); $ai_wp_data [AI_SHORTCODES]['viewport'] []= $parameters; return '|viewport'. (count ($ai_wp_data [AI_SHORTCODES]['viewport']) - 1). '|'; } if ($parameters ['count'] != '' || in_array ('COUNT', $atts) || in_array ('count', $atts)) { if (!isset ($ai_wp_data [AI_SHORTCODES]['count'])) $ai_wp_data [AI_SHORTCODES]['count'] = array (); $ai_wp_data [AI_SHORTCODES]['count'] []= $parameters; // return AD_COUNT_SEPARATOR; return '|count'. (count ($ai_wp_data [AI_SHORTCODES]['count']) - 1). '|'; } if ($parameters ['rotate'] != '' || in_array ('ROTATE', $atts) || in_array ('rotate', $atts)) { if (!isset ($ai_wp_data [AI_SHORTCODES]['rotate'])) $ai_wp_data [AI_SHORTCODES]['rotate'] = array (); $ai_wp_data [AI_SHORTCODES]['rotate'] []= $parameters; // return AD_ROTATE_SEPARATOR; return '|rotate'. (count ($ai_wp_data [AI_SHORTCODES]['rotate']) - 1). '|'; } if ($parameters ['amp'] != '' || in_array ('AMP', $atts) || in_array ('amp', $atts)) { return AD_AMP_SEPARATOR; } if ($parameters ['head'] != '' || in_array ('HEAD', $atts) || in_array ('head', $atts)) { if (!isset ($ai_wp_data [AI_SHORTCODES]['head'])) $ai_wp_data [AI_SHORTCODES]['head'] = array (); $ai_wp_data [AI_SHORTCODES]['head'] []= $parameters; return AD_HEAD_SEPARATOR; } if ($parameters ['http'] != '' || in_array ('HTTP', $atts) || in_array ('http', $atts)) { return AD_HTTP_SEPARATOR; } if ($parameters ['fallback'] != '' || in_array ('FALLBACK', $atts) || in_array ('fallback', $atts)) { if (!isset ($ai_wp_data [AI_SHORTCODES]['fallback'])) $ai_wp_data [AI_SHORTCODES]['fallback'] = array (); $ai_wp_data [AI_SHORTCODES]['fallback'] []= $parameters; return AD_FALLBACK_SEPARATOR; } if ($parameters ['group'] != '' || in_array ('GROUP', $atts) || in_array ('group', $atts)) { // Prevent group activation if (isset ($ai_wp_data [AI_NO_GROUP_ACTIVATION]) && $ai_wp_data [AI_NO_GROUP_ACTIVATION]) { return ''; } if ($parameters ['group'] != '') { $parameters ['group'] = mb_strtolower ($parameters ['group']); if (strpos ($parameters ['group'], ',') !== false) { $group_names = explode (',', $parameters ['group']); foreach ($group_names as $index => $group_name) { $group_names [$index] = trim ($group_names [$index]); } } else $group_names = array (trim ($parameters ['group'])); } else $group_names = array (); return '<span data-ai-groups="' . base64_encode (json_encode ($group_names)) . '"></span>'; } if ($parameters ['disable'] != '' || in_array ('DISABLE', $atts) || in_array ('disable', $atts)) { if (!isset ($ai_wp_data [AI_DISABLED_BLOCKS])) $ai_wp_data [AI_DISABLED_BLOCKS] = array (); $shortcode_disabled = explode (',', strtolower (str_replace (' ', '', $parameters ['disable']))); $ai_wp_data [AI_DISABLED_BLOCKS] = array_unique (array_merge ($ai_wp_data [AI_DISABLED_BLOCKS], $shortcode_disabled)); if ($debug_processing) { ai_log ('DISABLED BLOCKS: ' . implode (', ', $ai_wp_data [AI_DISABLED_BLOCKS])); } return ''; } if ($parameters ['custom-field'] != '') { $custom_field_name = trim ($parameters ['custom-field']); $default_value = null; if (trim ($parameters ['data']) != '') { $custom_field_value = trim ($parameters ['data']); if ($parameters ['data'][0] == ':') { $default_value = substr ($parameters ['data'], 1); } else { $ai_wp_data [AI_CUSTOM_FIELDS][$custom_field_name] = $custom_field_value; return ''; } } if (isset ($ai_wp_data [AI_CUSTOM_FIELDS][$custom_field_name])) { return $ai_wp_data [AI_CUSTOM_FIELDS][$custom_field_name]; } $post_meta = get_post_meta (get_the_ID (), $parameters ['custom-field']); if (is_array ($post_meta)) { $post_meta = implode (', ', $post_meta); } return empty ($post_meta) && $default_value !== null ? $default_value : $post_meta; } if ($parameters ['url-parameter'] != '') { $url_parameter = trim ($parameters ['url-parameter']); return isset ($_GET [$url_parameter]) && is_string ($_GET [$url_parameter]) ? htmlspecialchars ($_GET [$url_parameter]) : ''; } if ($parameters ['random'] != '' || isset ($atts ['RANDOM']) || isset ($atts ['random'])) { $random_value_limits = trim ($parameters ['random']); $random_value = ''; if ($random_value_limits == '') { // Not used $random_value = rand (); } else { if (strpos ($random_value_limits, ',') !== false) { $limits = explode (',', $random_value_limits); $random_value = rand ((int) $limits [0], (int) $limits [1]); } else $random_value = rand (0, (int) $random_value_limits); } return ($random_value); } if ($parameters ['data'] != '') { for ($constant = 1; $constant <= 6; $constant ++) { $constant_name = trim (get_constant_name ($constant)); if ($constant_name != '' && $parameters ['data'] == $constant_name) { return get_constant_value ($constant); } } if (strpos ($parameters ['data'], ',') !== false) { $data_tags = explode (',', $parameters ['data']); $data = array (); foreach ($data_tags as $data_tag) { $constant_found = false; for ($constant = 1; $constant <= 6; $constant ++) { $constant_name = trim (get_constant_name ($constant)); if ($constant_name != '' && $data_tag == $constant_name) { $data []= get_constant_value ($constant); $constant_found = true; break; } } if (!$constant_found) { $data []= replace_ai_tags ('{'.trim ($data_tag).'}'); } } return implode (', ', $data); } return replace_ai_tags ('{'.$parameters ['data'].'}'); } if ($parameters ['counter'] != '') { $counter_name = strtolower ($parameters ['counter']); $index = 0; if ($parameters ['index'] != '' && is_numeric ($parameters ['index'])) { $index = (int) $parameters ['index']; } switch ($counter_name) { case 'block': if (isset ($ai_wp_data [AI_CURRENT_BLOCK_NUMBER]) && isset ($ad_inserter_globals [AI_BLOCK_COUNTER_NAME . $ai_wp_data [AI_CURRENT_BLOCK_NUMBER]])) { return $ad_inserter_globals [AI_BLOCK_COUNTER_NAME . $ai_wp_data [AI_CURRENT_BLOCK_NUMBER]] + $index; } break; case 'content': if (isset ($ad_inserter_globals [AI_CONTENT_COUNTER_NAME])) { return $ad_inserter_globals [AI_CONTENT_COUNTER_NAME] + $index; } break; case 'excerpt': if (isset ($ad_inserter_globals [AI_EXCERPT_COUNTER_NAME])) { return $ad_inserter_globals [AI_EXCERPT_COUNTER_NAME] + $index; } break; case 'before-post': if (isset ($ad_inserter_globals [AI_LOOP_BEFORE_COUNTER_NAME])) { return $ad_inserter_globals [AI_LOOP_BEFORE_COUNTER_NAME] + $index; } break; case 'after-post': if (isset ($ad_inserter_globals [AI_LOOP_AFTER_COUNTER_NAME])) { return $ad_inserter_globals [AI_LOOP_AFTER_COUNTER_NAME] + $index; } break; case 'widget': if (isset ($ai_wp_data [AI_CURRENT_BLOCK_NUMBER]) && isset ($ad_inserter_globals [AI_WIDGET_COUNTER_NAME . $ai_wp_data [AI_CURRENT_BLOCK_NUMBER]])) { return $ad_inserter_globals [AI_WIDGET_COUNTER_NAME . $ai_wp_data [AI_CURRENT_BLOCK_NUMBER]] + $index; } break; case 'php': if (isset ($ai_wp_data [AI_CURRENT_BLOCK_NUMBER]) && isset ($ad_inserter_globals [AI_PHP_FUNCTION_CALL_COUNTER_NAME . $ai_wp_data [AI_CURRENT_BLOCK_NUMBER]])) { return $ad_inserter_globals [AI_PHP_FUNCTION_CALL_COUNTER_NAME . $ai_wp_data [AI_CURRENT_BLOCK_NUMBER]] + $index; } break; } return ''; } if ($parameters ['name'] != '') { $shortcode_name = strtolower ($parameters ['name']); switch ($shortcode_name) { case 'processing-log': if (/*get_remote_debugging () ||*/ ($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0) { ob_start (); echo "<pre style='", AI_DEBUG_WIDGET_STYLE, "'>\n"; ai_write_debug_info (); echo "</pre>"; return ob_get_clean (); } return ""; case 'debugging-tools': if (($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0 || defined ('AI_DEBUGGING_DEMO')) { ob_start (); ai_write_debugging_tools (); return ob_get_clean (); } default: if (defined ('AI_BUFFERING')) { if (get_output_buffering () && !get_disable_header_code ()) { return "<!--[AI_HEAD_GROUPS $shortcode_name]-->"; } } return ""; } } } $ai_last_check = AI_CHECK_SHORTCODE_ATTRIBUTES; if ($block < 1 || $block > 96) return ""; // if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("SHORTCODE $block (".($parameters ['block'] != '' ? 'block="'.$parameters ['block'].'"' : '').($parameters ['name'] != '' ? 'name="'.$parameters ['name'].'"' : '').")"); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("SHORTCODE ADINSERTER ".($parameters ['block'] != '' ? 'block="'.$block.'" ' : '').($parameters ['name'] != '' ? 'name="'.$parameters ['name'].'"' : '').""); // IGNORE SETTINGS // page-type // post-id // category // tag // taxonomy // *block-counter // CHECK SETTINGS // exceptions $ignore_array = array (); if (trim ($parameters ['ignore']) != '') { $ignore_array = explode (",", str_replace (" ", "", $parameters ['ignore'])); } $check_array = array (); if (trim ($parameters ['check']) != '') { $check_array = explode (",", str_replace (" ", "", $parameters ['check'])); } $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_SHORTCODE; $obj = $block_object [$block]; $obj->clear_code_cache (); $ai_last_check = AI_CHECK_ENABLED_SHORTCODE; if (!$obj->get_enable_manual ()) return ""; if (!$obj->check_server_side_detection ()) return ""; if (!$obj->check_page_types_lists_users (in_array ("page-type", $ignore_array), in_array ("category", $ignore_array), in_array ("tag", $ignore_array), in_array ("taxonomy", $ignore_array), in_array ("post-id", $ignore_array))) return ""; if (in_array ("exceptions", $check_array)) { if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) { // $meta_value = get_post_meta (get_the_ID (), '_adinserter_block_exceptions', true); $meta_value = ai_get_post_meta (); $selected_blocks = explode (",", $meta_value); if (!$obj->check_post_page_exceptions ($selected_blocks)) return ""; } } $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) return ""; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) return ""; // Last check before counter check before insertion // $ai_last_check = AI_CHECK_CODE; // if ($obj->ai_getCode () == '') return ""; if ($obj->empty_code ()) return ""; $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) return ""; } if (!$obj->check_filter_hook ($debug_processing)) return ""; // Last check before insertion if (!$obj->check_and_increment_block_counter ()) return ""; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { if (isset ($ai_wp_data [AI_SHORTCODES]['force_serverside'])) { $saved_force_serverside = $ai_wp_data [AI_SHORTCODES]['force_serverside']; } if (isset ($ai_wp_data [AI_SHORTCODES]['viewport'])) { $saved_viewport = $ai_wp_data [AI_SHORTCODES]['viewport']; } if (isset ($ai_wp_data [AI_SHORTCODES]['check'])) { $saved_check = $ai_wp_data [AI_SHORTCODES]['check']; } if (isset ($ai_wp_data [AI_SHORTCODES]['count'])) { $saved_count = $ai_wp_data [AI_SHORTCODES]['count']; } if (isset ($ai_wp_data [AI_SHORTCODES]['rotate'])) { $saved_rotate = $ai_wp_data [AI_SHORTCODES]['rotate']; } if (isset ($ai_wp_data [AI_SHORTCODES]['head'])) { $saved_head = $ai_wp_data [AI_SHORTCODES]['head']; } if (isset ($ai_wp_data [AI_SHORTCODES]['fallback'])) { $saved_fallback = $ai_wp_data [AI_SHORTCODES]['fallback']; } if (isset ($ai_wp_data [AI_SHORTCODES]['atts'])) { $saved_atts = $ai_wp_data [AI_SHORTCODES]['atts']; } $ai_wp_data [AI_SHORTCODES]['atts'] = $atts; if (isset ($ai_wp_data [AI_CURRENT_BLOCK_NUMBER])) { $saved_block_number = $ai_wp_data [AI_CURRENT_BLOCK_NUMBER]; } if (isset ($ai_wp_data [AI_CURRENT_BLOCK_NAME])) { $saved_block_name = $ai_wp_data [AI_CURRENT_BLOCK_NAME]; } $code = $obj->get_code_for_serverside_insertion (true, false, $code_only); if (isset ($saved_force_serverside)) { $ai_wp_data [AI_SHORTCODES]['force_serverside'] = $saved_force_serverside; } else unset ($ai_wp_data [AI_SHORTCODES]['force_serverside']); if (isset ($saved_viewport)) { $ai_wp_data [AI_SHORTCODES]['viewport'] = $saved_viewport; } else unset ($ai_wp_data [AI_SHORTCODES]['viewport']); if (isset ($saved_check)) { $ai_wp_data [AI_SHORTCODES]['check'] = $saved_check; } else unset ($ai_wp_data [AI_SHORTCODES]['check']); if (isset ($saved_count)) { $ai_wp_data [AI_SHORTCODES]['count'] = $saved_count; } else unset ($ai_wp_data [AI_SHORTCODES]['count']); if (isset ($saved_rotate)) { $ai_wp_data [AI_SHORTCODES]['rotate'] = $saved_rotate; } else unset ($ai_wp_data [AI_SHORTCODES]['rotate']); if (isset ($saved_fallback)) { $ai_wp_data [AI_SHORTCODES]['fallback'] = $saved_fallback; } else unset ($ai_wp_data [AI_SHORTCODES]['fallback']); if (isset ($saved_head)) { $ai_wp_data [AI_SHORTCODES]['head'] = $saved_head; } else unset ($ai_wp_data [AI_SHORTCODES]['head']); if (isset ($saved_atts)) { $ai_wp_data [AI_SHORTCODES]['atts'] = $saved_atts; } else unset ($ai_wp_data [AI_SHORTCODES]['atts']); if (isset ($saved_block_number)) { $ai_wp_data [AI_CURRENT_BLOCK_NUMBER] = $saved_block_number; } else unset ($ai_wp_data [AI_CURRENT_BLOCK_NUMBER]); if (isset ($saved_block_number)) { $ai_wp_data [AI_CURRENT_BLOCK_NAME] = $saved_block_name; } else unset ($ai_wp_data [AI_CURRENT_BLOCK_NAME]); // Must be after get_code_for_serverside_insertion () $ai_last_check = AI_CHECK_INSERTED; return $code; } } function ai_process_shortcodes ($atts, $content, $tag) { global $ai_last_check, $ai_wp_data, $ai_total_plugin_time; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($debug_processing) { $atts_string = ''; if (is_array ($atts)) foreach ($atts as $index => $att) { if (is_numeric ($index)) $atts_string .= $att.' '; else $atts_string .= $index.("='".$att."'").' '; } ai_log ("PROCESS SHORTCODES [$tag ".trim ($atts_string).']'); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } $ai_last_check = AI_CHECK_NONE; $block = - 1; $shortcode = ai_process_shortcode ($block, $atts); if ($debug_processing) { if ($block == - 1) { if (strlen ($shortcode) < 100) ai_log ('SHORTCODE TEXT: "' . ai_log_filter_content ($shortcode) . '"'); else ai_log ('SHORTCODE TEXT: "' . ai_log_filter_content (html_entity_decode (substr ($shortcode, 0, 60))) . ' ... ' . ai_log_filter_content (html_entity_decode (substr ($shortcode, - 60))) . '"'); } elseif ($ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($block, $ai_last_check)); if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("SHORTCODE END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } return $shortcode; } function ai_add_attr_data (&$tag, $attr, $new_data) { if (trim ($tag) != '' && strpos ($tag, '<!--') === false) { if (stripos ($tag, $attr."=") !== false) { preg_match ("/$attr=[\'\"](.+?)[\'\"]/", $tag, $classes); $tag = str_replace ($classes [1], $classes [1]. ' ' . $new_data, $tag); return true; } elseif (strpos ($tag, ">") !== false) { $tag = str_replace ('>', ' ' . $attr . '="' . $new_data . '">', $tag); return true; } } return false; } function ai_debug_widget_comment ($label, $end = false) { $end_label = ''; if ($end) { $end_label = '/'; } echo "<!-- {$end_label}AI $label -->"; } function ai_widget_draw ($args, $instance, &$block) { global $block_object, $ad_inserter_globals, $ai_wp_data, $ai_last_check; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; $block = isset ($instance ['block']) ? $instance ['block'] : 1; $sticky = isset ($instance ['sticky']) ? $instance ['sticky'] : 0; if ($block == 0 || $block == - 2) { if (!get_disable_block_insertions () && (($ai_wp_data [AI_WP_USER] & AI_USER_ADMINISTRATOR) != 0 || defined ('AI_DEBUGGING_DEMO'))) { ai_special_widget ($args, $instance, $block); } return; } if ($sticky) { $ai_wp_data [AI_STICKY_WIDGETS] = true; if ($block == - 1 && !get_disable_block_insertions ()) { // Dummy widget $before_widget = $args ['before_widget']; ai_add_attr_data ($before_widget, 'style', 'padding: 0; border: 0; margin: 0; color: transparent; background: transparent;'); ai_add_attr_data ($before_widget, 'class', 'ai-sticky-widget'); if ($debug_processing) echo ai_debug_widget_comment ('before_widget'); echo $before_widget; if ($debug_processing) echo ai_debug_widget_comment ('before_widget', true); if ($debug_processing) echo ai_debug_widget_comment ('after_widget'); // No sense for empty dummy widgets // if (get_sticky_widget_mode() == AI_STICKY_WIDGET_MODE_CSS_PUSH) { // echo '<div class="ai-sticky-space" style="height: 1500px;"></div>'; // } echo $args ['after_widget']; if ($debug_processing) echo ai_debug_widget_comment ('after_widget', true); return; } } if ($block < 1 || $block > 96) return; $title = !empty ($instance ['widget-title']) ? $instance ['widget-title'] : ''; $obj = $block_object [$block]; $obj->clear_code_cache (); $globals_name = AI_WIDGET_COUNTER_NAME . $block; if (!isset ($ad_inserter_globals [$globals_name])) { $ad_inserter_globals [$globals_name] = 1; } else $ad_inserter_globals [$globals_name] ++; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("WIDGET (". $obj->number . ') ['.$ad_inserter_globals [$globals_name] . ']'); $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_WIDGET; $ai_last_check = AI_CHECK_ENABLED_WIDGET; if (!$obj->get_enable_widget ()) return; if (!$obj->check_server_side_detection ()) return; if (!$obj->check_page_types_lists_users ()) return; if (!$obj->check_filter ($ad_inserter_globals [$globals_name])) return; if (!$obj->check_number_of_words ()) return; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC) { // $meta_value = get_post_meta (get_the_ID (), '_adinserter_block_exceptions', true); $meta_value = ai_get_post_meta (); $selected_blocks = explode (",", $meta_value); if (!$obj->check_post_page_exceptions ($selected_blocks)) return; } $ai_last_check = AI_CHECK_DISABLED_MANUALLY; if (!$obj->check_disabled ()) return; $ai_last_check = AI_CHECK_INSERTION_NOT_DISABLED; if ($obj->get_disable_insertion () || get_disable_block_insertions ()) return; // Last check before counter check before insertion $ai_last_check = AI_CHECK_CODE; if ($obj->ai_getCode () == '') { if ($sticky) { $before_widget = $args ['before_widget']; ai_add_attr_data ($before_widget, 'style', 'padding: 0; border: 0; margin: 0; color: transparent; background: transparent;'); ai_add_attr_data ($before_widget, 'class', 'ai-sticky-widget'); if ($debug_processing) echo ai_debug_widget_comment ('before_widget'); echo $before_widget; if ($debug_processing) echo ai_debug_widget_comment ('before_widget', true); if ($debug_processing) echo ai_debug_widget_comment ('after_widget'); // No sense for empty widgets // if (get_sticky_widget_mode() == AI_STICKY_WIDGET_MODE_CSS_PUSH) { // echo '<div class="ai-sticky-space" style="height: 1500px;"></div>'; // } echo $args ['after_widget']; if ($debug_processing) echo ai_debug_widget_comment ('after_widget', true); } return; } $max_page_blocks_enabled = $obj->get_max_page_blocks_enabled (); if ($max_page_blocks_enabled) { $ai_last_check = AI_CHECK_MAX_PAGE_BLOCKS; if ($ai_wp_data [AI_PAGE_BLOCKS] >= get_max_page_blocks ()) return; } if (!$obj->check_filter_hook ($debug_processing)) return; // Last check before insertion if (!$obj->check_and_increment_block_counter ()) return; // Increment page block counter if ($max_page_blocks_enabled) $ai_wp_data [AI_PAGE_BLOCKS] ++; $ai_last_check = AI_CHECK_DEBUG_NO_INSERTION; if (!$obj->get_debug_disable_insertion ()) { $viewport_classes = $obj->get_client_side_action () == AI_CLIENT_SIDE_ACTION_INSERT ? '' : trim ($obj->get_viewport_classes ()); $sticky_class = $sticky ? ' ai-sticky-widget' : ''; $widget_classes = trim ($viewport_classes . $sticky_class); $before_widget = $args ['before_widget']; if ($widget_classes != "") { ai_add_attr_data ($before_widget, 'class', $widget_classes); } if ($debug_processing) echo ai_debug_widget_comment ('before_widget'); echo $before_widget; if ($debug_processing) echo ai_debug_widget_comment ('before_widget', true); if (!empty ($title)) { if ($debug_processing) echo ai_debug_widget_comment ('before_title'); echo $args ['before_title']; if ($debug_processing) echo ai_debug_widget_comment ('before_title', true); echo apply_filters ('widget_title', $title); if ($debug_processing) echo ai_debug_widget_comment ('after_title'); echo $args ['after_title']; if ($debug_processing) echo ai_debug_widget_comment ('after_title', true); } $obj->needs_class = true; echo $obj->get_code_for_serverside_insertion (false); if ($debug_processing) echo ai_debug_widget_comment ('after_widget'); if ($sticky && get_sticky_widget_mode() == AI_STICKY_WIDGET_MODE_CSS_PUSH) { echo '<div class="ai-sticky-space" style="height: 1500px;"></div>'; } echo $args ['after_widget']; if ($debug_processing) echo ai_debug_widget_comment ('after_widget', true); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_BLOCKS) != 0 && $obj->get_detection_client_side () && $obj->get_client_side_action () == AI_CLIENT_SIDE_ACTION_SHOW) echo $obj->get_code_for_serverside_insertion (false, true); $ai_last_check = AI_CHECK_INSERTED; } } function ai_write_debugging_tools () { global $ai_wp_data; ai_toolbar_menu_items (); echo "<style> ul.ai-debug-tools { list-style: none; background: #000; color: #eee; margin: 0; padding: 10px; font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif; font-size: 14px; line-height: 22px; -webkit-user-select: none; /* Chrome all / Safari all */ -moz-user-select: none; /* Firefox all */ -ms-user-select: none; /* IE 10+ */ user-select: none; } ul.ai-debug-tools li { margin: 0; padding: 0; border: 0; } ul.ai-debug-tools a, ul.ai-debug-tools a:link, ul.ai-debug-tools a:visited { text-decoration: none; color: #aaa; } ul.ai-debug-tools a:hover { color: #5faff9!important; } ul.ai-debug-tools .ab-icon { position: relative; font: 400 20px/1 dashicons; speak: none; padding: 4px 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background-image: none!important; margin-right: 6px; vertical-align: text-top; } ul.ai-debug-tools .ai-debug-tools-title { padding-bottom: 10px; } .ai-debug-tools-title .ab-icon:before { content: '\\f538'; top: 2px; color: rgba(240,245,250,.6)!important; } ul.ai-debug-tools .ab-icon.on:before { color: #00f200!important; } ul.ai-debug-tools .ab-icon.red:before { color: #f22!important; } ul li.ai-debug-ai-toolbar-status { color: #aaa; margin: 0 0 10px 0; } .ai-debug-ai-toolbar-off .ab-icon:before { content: '\\f153'; } .ai-debug-ai-toolbar-blocks .ab-icon:before { content: '\\f135'; } .ai-debug-ai-toolbar-positions .ab-icon:before { content: '\\f207'; } ul.ai-debug-tools .ai-debug-tools-positions { margin-left: 22px; } .ai-debug-tools-positions .ab-icon:before { content: '\\f522'; } .ai-debug-ai-toolbar-tags .ab-icon:before { content: '\\f475'; } .ai-debug-ai-toolbar-no-insertion .ab-icon:before { content: '\\f214'; } .ai-debug-ai-toolbar-adb-status .ab-icon:before { content: '\\f223'; } .ai-debug-ai-toolbar-adb .ab-icon:before { content: '\\f160'; } .ai-debug-ai-toolbar-processing .ab-icon:before { content: '\\f464'; } </style> "; echo ' <ul class="ai-debug-tools"> '; foreach ($ai_wp_data [AI_DEBUG_MENU_ITEMS] as $menu_item) { if (isset ($menu_item ['parent'])) { if ($menu_item ['parent'] == 'ai-toolbar-settings') { if ($menu_item ['id'] == 'ai-toolbar-status') { echo ' <li class="ai-debug-', $menu_item ['id'], '">'; echo $menu_item ['title']; echo "</li>\n"; } else { echo ' <li class="ai-debug-', $menu_item ['id'], '">'; echo '<a href="', $menu_item ['href'], '">', $menu_item ['title'], '</a>'; echo "</li>\n"; } } elseif ($menu_item ['parent'] == 'ai-toolbar-positions') { echo ' <li class="ai-debug-', $menu_item ['id'], ' ai-debug-tools-positions">'; echo '<a href="', $menu_item ['href'], '">', $menu_item ['title'], '</a>'; echo "</li>\n"; } } else if ($menu_item ['id'] == 'ai-toolbar-settings') { echo ' <li class="ai-debug-', $menu_item ['id'], ' ai-debug-tools-title">'; echo '<a href="', $menu_item ['href'], '">', $menu_item ['title'], '</a>'; echo "</li>\n"; } } echo '</ul> '; } function ai_special_widget ($args, $instance, $block) { global $ai_wp_data, $ai_db_options, $block_object; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; $sticky = isset ($instance ['sticky']) ? $instance ['sticky'] : 0; if ($sticky) { $ai_wp_data [AI_STICKY_WIDGETS] = true; ai_add_attr_data ($args ['before_widget'], 'class', 'ai-sticky-widget'); } if ($debug_processing) echo ai_debug_widget_comment ('before_widget'); echo $args ['before_widget']; if ($debug_processing) echo ai_debug_widget_comment ('before_widget', true); $title = !empty ($instance ['widget-title']) ? $instance ['widget-title'] : ''; if (!empty ($title)) { if ($debug_processing) echo ai_debug_widget_comment ('before_title'); echo $args ['before_title']; if ($debug_processing) echo ai_debug_widget_comment ('before_title', true); echo apply_filters ('widget_title', $title); if ($debug_processing) echo ai_debug_widget_comment ('after_title'); echo $args ['after_title']; if ($debug_processing) echo ai_debug_widget_comment ('after_title', true); } switch ($block) { case 0: // Processing log echo "<pre"; if ($sticky && get_sticky_widget_mode() == AI_STICKY_WIDGET_MODE_CSS_PUSH) { echo " class='", get_block_class_name (true), "'"; } echo " style='", AI_DEBUG_WIDGET_STYLE, "'>\n"; ai_write_debug_info (); echo "</pre>"; if ($ai_wp_data [AI_CLIENT_SIDE_DETECTION]) { for ($viewport = 1; $viewport <= 6; $viewport ++) { $viewport_name = get_viewport_name ($viewport); if ($viewport_name != '') { echo "<pre class='ai-viewport-" . $viewport ."' style='", AI_DEBUG_WIDGET_STYLE, "'>\n"; echo "CLIENT-SIDE DEVICE: ", $viewport_name; echo "</pre>"; } } } break; case - 2: // Debugging tools if ($sticky && get_sticky_widget_mode() == AI_STICKY_WIDGET_MODE_CSS_PUSH) { echo "<div class='", get_block_class_name (true), "'>\n"; } ai_write_debugging_tools (); if ($sticky && get_sticky_widget_mode() == AI_STICKY_WIDGET_MODE_CSS_PUSH) { echo "</div>\n"; } break; } if ($debug_processing) echo ai_debug_widget_comment ('after_widget'); if ($sticky && get_sticky_widget_mode() == AI_STICKY_WIDGET_MODE_CSS_PUSH) { echo '<div class="ai-sticky-space" style="height: 1500px;"></div>'; } echo $args ['after_widget']; if ($debug_processing) echo ai_debug_widget_comment ('after_widget', true); } function ai_pro () { if (!function_exists ('ai_remote_plugin_data')) return false; return ai_remote_plugin_data ('pro', true); } function ai_remote ($name, $default_data = false) { if (!function_exists ('ai_remote_plugin_data')) return $default_data; return ai_remote_plugin_data ($name, $default_data); } function ai_is_json ($string, $return_data = false) { $data = json_decode ($string); return (json_last_error () == JSON_ERROR_NONE) ? ($return_data ? $data : true) : false; } function ai_structured_data_item ($indexes, $data, $value = '!@!') { if (is_object ($data)) $data = (array) $data; if (empty ($indexes)) { if ($value == '!@!') return true; return $data == $value; } if (!is_array ($data)) return false; // Workaround because after json decode array indexes are strings and can't be accessed $data = array_combine (array_keys ($data), array_values ($data)); $index = array_shift ($indexes); if ($index == '*') { foreach ($data as $data_index => $data_item) { if (ai_structured_data_item ($indexes, $data_item, $value)) return true; } } elseif (isset ($data [$index])) { return ai_structured_data_item ($indexes, $data [$index], $value); } return false; } function ai_structured_data ($data, $selector, $value = '') { if (!is_array ($data)) return false; if (strpos ($selector, '[') === false) return false; $indexes = explode ('[', str_replace (array (']', ' '), '', $selector)); return ai_structured_data_item ($indexes, $data, $value); } function check_url_parameter_cookie_list ($list, $white_list, $parameters, &$found) { $parameter_list = trim ($list); $return = $white_list; $found = false; $query_string = isset ($_SERVER ['QUERY_STRING']) ? trim ($_SERVER ['QUERY_STRING']) != '' : false; if ($parameter_list == AD_EMPTY_DATA) return true; if (count ($parameters) == 0 && strpos ($list, '#') === false) { return !$return; } $found = true; $parameter_data = array (); foreach ($parameters as $index => $parameter) { $parameter_data [$index] = false; if (is_string ($parameter)) { $data = trim (stripslashes ($parameter)); if (strpos ($data, '{') === 0) { $parameter_data [$index] = ai_is_json ($data, true); } $parameters [$index] = urlencode ($parameter); } } $parameters_listed = explode (",", $parameter_list); foreach ($parameters_listed as $index => $parameter_listed) { if (trim ($parameter_listed) == "") unset ($parameters_listed [$index]); else $parameters_listed [$index] = trim ($parameter_listed); } foreach ($parameters_listed as $parameter) { if ($parameter == '#') { if (!$query_string) return $return; } elseif (strpos ($parameter, "=") !== false) { $parameter_value = explode ("=", $parameter); if (array_key_exists ($parameter_value [0], $parameters) && $parameters [$parameter_value [0]] == $parameter_value [1]) return $return; if (ai_structured_data ($parameter_data, $parameter_value [0], $parameter_value [1])) return $return; } else { if (array_key_exists ($parameter, $parameters)) return $return; if (ai_structured_data ($parameter_data, $parameter)) return $return; } } $found = false; return !$return; } function check_url_parameter_list ($url_parameters, $white_list, &$found) { return check_url_parameter_cookie_list ($url_parameters, $white_list, $_GET, $found); } function check_cookie_list ($url_parameters, $white_list) { $dummy = false; return check_url_parameter_cookie_list ($url_parameters, $white_list, $_COOKIE, $dummy); } function check_url_parameter_and_cookie_list ($url_parameters, $white_list) { $dummy = false; return check_url_parameter_cookie_list ($url_parameters, $white_list, array_merge ($_COOKIE, $_GET), $dummy); } function check_scheduled_rotation ($scheduling) { If (strpos ($scheduling, '=') === false) return false; $result = true; if (strpos ($scheduling, '^') !== false) { $result = false; $scheduling = substr ($scheduling, 1); } $scheduling_data_array = explode ('=', $scheduling); if (strpos ($scheduling_data_array [0], '%') !== false) { $scheduling_data_time = explode ('%', $scheduling_data_array [0]); } else $scheduling_data_time = array ($scheduling_data_array [0]); $time_unit = strtolower (trim ($scheduling_data_time [0])); $time_division = isset ($scheduling_data_time [1]) ? trim ($scheduling_data_time [1]) : 0; $scheduling_time_option = str_replace (' ', '', ($scheduling_data_array [1])); $current_time = current_time ('timestamp'); $time_value = 0; switch ($time_unit) { case 's': $time_value = ltrim (date ('s', $current_time), '0'); break; case 'i': $time_value = ltrim (date ('i', $current_time), '0'); break; case 'h': $time_value = date ('G', $current_time); break; case 'd': $time_value = date ('j', $current_time); break; case 'm': $time_value = date ('n', $current_time); break; case 'y': $time_value = date ('Y', $current_time); break; case 'w': $time_value = date ('w', $current_time); if ($time_value == 0) $time_value = 6; else $time_value = $time_value - 1; } $time_modulo = $time_division != 0 ? $time_value % $time_division : $time_value; $scheduling_time_options = explode (',', $scheduling_time_option); foreach ($scheduling_time_options as $time_option) { if (strpos ($time_option, '-') !== false) { $time_limits = explode ('-', $time_option); if ($time_modulo >= $time_limits [0] && $time_modulo <= $time_limits [1]) return $result; } else if ($time_modulo == $time_option) return $result; } return !$result; } function check_scheduling_time ($start_time, $end_time, $days_in_week, $between) { if (!function_exists ('ai_scheduling_options')) return true; $current_time = current_time ('timestamp'); $current_weekday = (date ('w', $current_time) + 6) % 7; if (strpos ($start_time, '-') === false && strpos ($end_time, '-') === false) { $current_time -= (strtotime (current_time ('Y-m-d'))); if ($current_time < 0) { $current_time += 24 * 3600; } } $start_time = (int) strtotime ($start_time, $current_time); $end_time = (int) strtotime ($end_time, $current_time); $weekdays = explode (',', $days_in_week); if (isset ($weekdays [0]) and $weekdays [0] === '') $weekdays = array (); $insertion_enabled = $current_time >= $start_time && ($end_time == 0 || $current_time < $end_time) && in_array ($current_weekday, $weekdays); return ($between ? $insertion_enabled : !$insertion_enabled); } function check_referer_list ($referers, $white_list) { if (isset ($_GET ['referrer'])) { $referer_host = esc_html ($_GET ['referrer']); } elseif (isset ($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != '') { $http_referer = parse_url ($_SERVER ['HTTP_REFERER'], PHP_URL_HOST); if (!empty ($http_referer)) { $referer_host = strtolower ($http_referer); } else $referer_host = ''; } else $referer_host = ''; // echo " referers='$referers' referer_host='$referer_host' "; $return = $white_list; $domains = strtolower (trim ($referers)); if ($domains == AD_EMPTY_DATA) return true; $domains = explode (",", $domains); foreach ($domains as $domain) { $domain = trim ($domain); if ($domain == "") continue; if ($domain [0] == '*') { if ($domain [strlen ($domain) - 1] == '*') { $domain = substr ($domain, 1, strlen ($domain) - 2); if (strpos ($referer_host, $domain) !== false) return $return; } else { $domain = substr ($domain, 1); if (substr ($referer_host, - strlen ($domain)) == $domain) return $return; } } elseif ($domain [strlen ($domain) - 1] == '*') { $domain = substr ($domain, 0, strlen ($domain) - 1); if (strpos ($referer_host, $domain) === 0) return $return; } if ($domain == "#") { if ($referer_host == "") return $return; } elseif ($domain == $referer_host) return $return; } return !$return; } function check_client_list ($clients, $white_list) { global $ai_wp_data; $languages = array ( 'af' => 'Afrikaans', 'sq' => 'Albanian', 'an' => 'Aragonese', 'ar*' => 'Arabic (Standard)', 'ar-dz' => 'Arabic (Algeria)', 'ar-bh' => 'Arabic (Bahrain)', 'ar-eg' => 'Arabic (Egypt)', 'ar-iq' => 'Arabic (Iraq)', 'ar-jo' => 'Arabic (Jordan)', 'ar-kw' => 'Arabic (Kuwait)', 'ar-lb' => 'Arabic (Lebanon)', 'ar-ly' => 'Arabic (Libya)', 'ar-ma' => 'Arabic (Morocco)', 'ar-om' => 'Arabic (Oman)', 'ar-qa' => 'Arabic (Qatar)', 'ar-sa' => 'Arabic (Saudi Arabia)', 'ar-sy' => 'Arabic (Syria)', 'ar-tn' => 'Arabic (Tunisia)', 'ar-ae' => 'Arabic (U.A.E.)', 'ar-ye' => 'Arabic (Yemen)', 'hy' => 'Armenian', 'as' => 'Assamese', 'ast' => 'Asturian', 'az' => 'Azerbaijani', 'eu' => 'Basque', 'bg' => 'Bulgarian', 'be' => 'Belarusian', 'bn' => 'Bengali', 'bs' => 'Bosnian', 'br' => 'Breton', 'my' => 'Burmese', 'ca' => 'Catalan', 'ch' => 'Chamorro', 'ce' => 'Chechen', 'zh*' => 'Chinese', 'zh-hk' => 'Chinese (Hong Kong)', 'zh-cn' => 'Chinese (PRC)', 'zh-sg' => 'Chinese (Singapore)', 'zh-tw' => 'Chinese (Taiwan)', 'cv' => 'Chuvash', 'co' => 'Corsican', 'cr' => 'Cree', 'hr' => 'Croatian', 'cs' => 'Czech', 'da' => 'Danish', 'nl*' => 'Dutch (Standard)', 'nl-be' => 'Dutch (Belgian)', 'en*' => 'English', 'en-au' => 'English (Australia)', 'en-bz' => 'English (Belize)', 'en-ca' => 'English (Canada)', 'en-ie' => 'English (Ireland)', 'en-jm' => 'English (Jamaica)', 'en-nz' => 'English (New Zealand)', 'en-ph' => 'English (Philippines)', 'en-za' => 'English (South Africa)', 'en-tt' => 'English (Trinidad & Tobago)', 'en-gb' => 'English (United Kingdom)', 'en-us' => 'English (United States)', 'en-zw' => 'English (Zimbabwe)', 'eo' => 'Esperanto', 'et' => 'Estonian', 'fo' => 'Faeroese', 'fa' => 'Persian', 'fj' => 'Fijian', 'fi' => 'Finnish', 'fr*' => 'French (Standard)', 'fr-be' => 'French (Belgium)', 'fr-ca' => 'French (Canada)', 'fr-fr' => 'French (France)', 'fr-lu' => 'French (Luxembourg)', 'fr-mc' => 'French (Monaco)', 'fr-ch' => 'French (Switzerland)', 'fy' => 'Frisian', 'fur' => 'Friulian', 'gd*' => 'Scots Gaelic', 'gd-ie' => 'Gaelic (Irish)', 'gl' => 'Galacian', 'ka' => 'Georgian', 'de*' => 'German (Standard)', 'de-at' => 'German (Austria)', 'de-de' => 'German (Germany)', 'de-li' => 'German (Liechtenstein)', 'de-lu' => 'German (Luxembourg)', 'de-ch' => 'German (Switzerland)', 'el' => 'Greek', 'gu' => 'Gujurati', 'ht' => 'Haitian', 'he' => 'Hebrew', 'hi' => 'Hindi', 'hu' => 'Hungarian', 'is' => 'Icelandic', 'id' => 'Indonesian', 'iu' => 'Inuktitut', 'ga' => 'Irish', 'it*' => 'Italian (Standard)', 'it-ch' => 'Italian (Switzerland)', 'ja' => 'Japanese', 'kn' => 'Kannada', 'ks' => 'Kashmiri', 'kk' => 'Kazakh', 'km' => 'Khmer', 'ky' => 'Kirghiz', 'tlh' => 'Klingon', 'ko*' => 'Korean', 'ko-kp' => 'Korean (North Korea)', 'ko-kr' => 'Korean (South Korea)', 'la' => 'Latin', 'lv' => 'Latvian', 'lt' => 'Lithuanian', 'lb' => 'Luxembourgish', 'mk' => 'Macedonian', 'ms' => 'Malay', 'ml' => 'Malayalam', 'mt' => 'Maltese', 'mi' => 'Maori', 'mr' => 'Marathi', 'mo' => 'Moldavian', 'nv' => 'Navajo', 'ng' => 'Ndonga', 'ne' => 'Nepali', 'no' => 'Norwegian', 'nb' => 'Norwegian (Bokmal)', 'nn' => 'Norwegian (Nynorsk)', 'oc' => 'Occitan', 'or' => 'Oriya', 'om' => 'Oromo', 'fa-ir' => 'Persian/Iran', 'pl' => 'Polish', 'pt*' => 'Portuguese', 'pt-br' => 'Portuguese (Brazil)', 'pa*' => 'Punjabi', 'pa-in' => 'Punjabi (India)', 'pa-pk' => 'Punjabi (Pakistan)', 'qu' => 'Quechua', 'rm' => 'Rhaeto-Romanic', 'ro*' => 'Romanian', 'ro-mo' => 'Romanian (Moldavia)', 'ru*' => 'Russian', 'ru-mo' => 'Russian (Moldavia)', 'sz' => 'Sami (Lappish)', 'sg' => 'Sango', 'sa' => 'Sanskrit', 'sc' => 'Sardinian', 'sd' => 'Sindhi', 'si' => 'Singhalese', 'sr' => 'Serbian', 'sk' => 'Slovak', 'sl' => 'Slovenian', 'so' => 'Somani', 'sb' => 'Sorbian', 'es*' => 'Spanish', 'es-ar' => 'Spanish (Argentina)', 'es-bo' => 'Spanish (Bolivia)', 'es-cl' => 'Spanish (Chile)', 'es-co' => 'Spanish (Colombia)', 'es-cr' => 'Spanish (Costa Rica)', 'es-do' => 'Spanish (Dominican Republic)', 'es-ec' => 'Spanish (Ecuador)', 'es-sv' => 'Spanish (El Salvador)', 'es-gt' => 'Spanish (Guatemala)', 'es-hn' => 'Spanish (Honduras)', 'es-mx' => 'Spanish (Mexico)', 'es-ni' => 'Spanish (Nicaragua)', 'es-pa' => 'Spanish (Panama)', 'es-py' => 'Spanish (Paraguay)', 'es-pe' => 'Spanish (Peru)', 'es-pr' => 'Spanish (Puerto Rico)', 'es-es' => 'Spanish (Spain)', 'es-uy' => 'Spanish (Uruguay)', 'es-ve' => 'Spanish (Venezuela)', 'sx' => 'Sutu', 'sw' => 'Swahili', 'sv*' => 'Swedish', 'sv-fi' => 'Swedish (Finland)', 'sv-sv' => 'Swedish (Sweden)', 'ta' => 'Tamil', 'tt' => 'Tatar', 'te' => 'Teluga', 'th' => 'Thai', 'tig' => 'Tigre', 'ts' => 'Tsonga', 'tn' => 'Tswana', 'tr' => 'Turkish', 'tk' => 'Turkmen', 'uk' => 'Ukrainian', 'hsb' => 'Upper Sorbian', 'ur' => 'Urdu', 've' => 'Venda', 'vi' => 'Vietnamese', 'vo' => 'Volapuk', 'wa' => 'Walloon', 'cy' => 'Welsh', 'xh' => 'Xhosa', 'ji' => 'Yiddish', 'zu' => 'Zulu', ); if (version_compare (phpversion (), "5.6", ">=")) { if (!isset ($ai_wp_data [AI_AGENT])) { require_once AD_INSERTER_PLUGIN_DIR.'includes/agent/Agent.php'; $agent = new Agent(); $ai_wp_data [AI_AGENT] = $agent; } else $agent = $ai_wp_data [AI_AGENT]; $language = isset ($_SERVER ['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER ['HTTP_ACCEPT_LANGUAGE'] : ''; $return = $white_list; if ($clients == AD_EMPTY_DATA) return true; $clients = explode (",", $clients); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!isset ($ai_wp_data [AI_CLIENTS])) $ai_wp_data [AI_CLIENTS] = array (); foreach ($clients as $client) { $client = trim ($client); if ($client == "") continue; $ai_wp_data [AI_CLIENTS][] = $client; } } foreach ($clients as $client) { $client = trim ($client); if ($client == "") continue; $check_language = false; if (strpos ($client, 'language:') === 0) { $check_language = true; $client = substr ($client, 9); } if ($check_language) { if ($client [0] == '*') { if ($client [strlen ($client) - 1] == '*') { $client = substr ($client, 1, strlen ($client) - 2); if (stripos ($language, $client) !== false) return $return; } else { $client = substr ($client, 1); if (strtolower (substr ($language, - strlen ($client))) == strtolower ($client)) return $return; } } elseif ($client [strlen ($client) - 1] == '*') { $client = substr ($client, 0, strlen ($client) - 1); if (stripos ($language, $client) === 0) return $return; } elseif (strtolower ($client) == strtolower ($language)) return $return; } else { if ($client [0] == '*') { if ($client [strlen ($client) - 1] == '*') { $client = substr ($client, 1, strlen ($client) - 2); if (stripos ($agent->getUserAgent (), $client) !== false) return $return; } else { $client = substr ($client, 1); if (strtolower (substr ($agent->getUserAgent (), - strlen ($client))) == strtolower ($client)) return $return; } } elseif ($client [strlen ($client) - 1] == '*') { $client = substr ($client, 0, strlen ($client) - 1); if (stripos ($agent->getUserAgent (), $client) === 0) return $return; } elseif ($agent->is ($client)) return $return; } } return !$return; } else { return true; } } function ai_check_block ($block) { global $ai_delay_showing_pageviews; $ai_cookie_name = 'aiBLOCKS'; if (isset ($_COOKIE [$ai_cookie_name])) { $ai_cookie = json_decode (stripslashes ($_COOKIE [$ai_cookie_name])); } else $ai_cookie = new stdClass(); if (isset ($ai_delay_showing_pageviews)) { if (!isset ($ai_cookie->$block)) { $ai_cookie->$block = new stdClass(); } if (!isset ($ai_cookie->$block->d)) { $ai_cookie->$block->d = $ai_delay_showing_pageviews; } unset ($ai_delay_showing_pageviews); } if (isset ($ai_cookie)) { if (isset ($ai_cookie->$block) && is_object ($ai_cookie->$block)) { foreach ($ai_cookie->$block as $property => $value) { switch ($property) { case 'x': $closed_for = $value - time (); if ($closed_for > 0) { return false; } else { ai_set_cookie ($block, 'x', ''); } break; case 'd': if ($value != 0) { return false; } break; case 'i': if ($value == 0) { return false; } elseif ($value < 0) { $closed_for = - $value - time (); if ($closed_for > 0) { return false; } else { ai_set_cookie ($block, 'i', ''); if (!isset ($ai_cookie->$block->c) && !isset ($ai_cookie->$block->x)) { ai_set_cookie ($block, 'h', ''); } } } break; case 'ipt': if ($value == 0 && isset ($ai_cookie->$block->it)) { $closed_for = $ai_cookie->$block->it - time (); if ($closed_for > 0) { return false; } } break; case 'c': if ($value == 0) { return false; } elseif ($value < 0) { $closed_for = - $value - time (); if ($closed_for > 0) { return false; } else { ai_set_cookie ($block, 'c', ''); if (!isset ($ai_cookie->$block->i) && !isset ($ai_cookie->$block->x)) { ai_set_cookie ($block, 'h', ''); } } } break; case 'cpt': if ($value == 0 && isset ($ai_cookie->$block->ct)) { $closed_for = $ai_cookie->$block->ct - time (); if ($closed_for > 0) { return false; } } break; } } if (isset ($ai_cookie->G) && is_object ($ai_cookie->G) && isset ($ai_cookie->G->cpt)) { if ($ai_cookie->G->cpt == 0 && isset ($ai_cookie->$block->ct)) { $closed_for = $ai_cookie->$block->ct - time (); if ($closed_for > 0) { return false; } } } } } return true; } function ai_get_category_list () { if (function_exists ('ai_remote_plugin_data')) { $data = ai_remote_plugin_data ('categories'); if (is_array ($data)) return $data; } $args = array ("hide_empty" => 0, 'number' => get_max_list_items ()); return (get_categories ($args)); } function ai_get_tag_list () { if (function_exists ('ai_remote_plugin_data')) { $data = ai_remote_plugin_data ('tags'); if (is_array ($data)) return $data; } $args = array ('number' => get_max_list_items ()); return (get_tags ($args)); } function ai_get_taxonomy_list ($limited = false) { if (function_exists ('ai_remote_plugin_data')) { $data = ai_remote_plugin_data ('taxonomies'); if (is_array ($data)) return $data; } $term_data = get_terms (); $taxonomies = array (); $max_list_items = get_max_list_items (); foreach ($term_data as $term) { if ($term->taxonomy == 'category') continue; if ($term->taxonomy == 'post_tag') continue; $term_taxonomy = strtolower ($term->taxonomy); $taxonomies [$term_taxonomy . ':' . strtolower ($term->slug)] = $term->name; if (count ($taxonomies) > $max_list_items) break; } $args = array ( 'public' => true, ); $custom_post_types = get_post_types ($args, 'objects', 'and'); foreach ($custom_post_types as $custom_post_type => $custom_post_data) { $taxonomies ['post-type:' . strtolower ($custom_post_type)] = $custom_post_data->labels->singular_name; } if (!$limited) { $editable_roles = get_editable_roles (); foreach ($editable_roles as $editable_role_slug => $editable_role) { $taxonomies ['user-role:' . strtolower ($editable_role_slug)] = $editable_role ['name']; } } $taxonomies ['user:logged-in'] = 'User logged in'; $taxonomies ['user:not-logged-in'] = 'User not logged in'; if (!$limited) { $users = get_users (); $max_list_items = get_max_list_items (); foreach ($users as $user) { $taxonomies ['user:' . strtolower ($user->data->user_login)] = $user->data->display_name; $taxonomies ['author:' . strtolower ($user->data->user_login)] = $user->data->display_name; if (count ($taxonomies) > $max_list_items) break; } } ksort ($taxonomies); return $taxonomies; } function ai_get_post_id_list () { if (function_exists ('ai_remote_plugin_data')) { $data = ai_remote_plugin_data ('post-ids'); if (is_array ($data)) return $data; } $args = array ( 'public' => true, '_builtin' => false ); $custom_post_types = get_post_types ($args, 'names', 'and'); $screens = array_values (array_merge (array ('post', 'page'), $custom_post_types)); $posts_pages = array (); $offset = 0; $max_list_items = get_max_list_items (); do { $args = array ( 'posts_per_page' => AI_MAX_WP_QUERY_ITEMS, 'offset' => $offset, 'category' => '', 'category_name' => '', 'orderby' => 'ID', 'order' => 'ASC', 'include' => '', 'exclude' => '', 'meta_key' => '', 'meta_value' => '', 'post_type' => $screens, 'post_mime_type' => '', 'post_parent' => '', 'author' => '', 'author_name' => '', 'post_status' => '', 'suppress_filters' => true, ); $temp_posts_pages = get_posts ($args); foreach ($temp_posts_pages as $index => $post_page) { $posts_pages [] = (object) ['ID' => $post_page->ID, 'post_type' => $post_page->post_type, 'post_title' => $post_page->post_title]; } $offset += count ($temp_posts_pages); } while (count ($temp_posts_pages) != 0 && count ($posts_pages) <= $max_list_items); $posts_pages = array_slice ($posts_pages, 0, $max_list_items); return $posts_pages; } function ai_check_filter_hook ($block) { // Called by W3TC code and Ajax requests $check = apply_filters ("ai_block_insertion_check", true, $block, false); // Called with false as $server_side_check = client-side check or W3TC check so null should not be returned from the filter hook - return false if ($check === null) { return false; } return $check; } function ai_set_cookie ($block, $property, $value) { $ai_cookie_name = 'aiBLOCKS'; if (isset ($_COOKIE [$ai_cookie_name])) { $ai_cookie = json_decode (stripslashes ($_COOKIE [$ai_cookie_name])); } else $ai_cookie = new stdClass(); // print_r ($ai_cookie); if ($value == '') { if (isset ($ai_cookie->$block) && is_object ($ai_cookie->$block)) { unset ($ai_cookie->$block->$property); $ai_cookie_array = (array) $ai_cookie->$block; if (empty ($ai_cookie_array)) { unset ($ai_cookie->$block); } } } else { if (!isset ($ai_cookie->$block)) { $ai_cookie->$block = new stdClass(); } $ai_cookie->$block->$property = $value; } $ai_cookie_array = (array) $ai_cookie; if (empty ($ai_cookie_array)) { unset ($_COOKIE [$ai_cookie_name]); ai_setcookie ($ai_cookie_name, null, - 1, '/'); } else { // $_COOKIE [$ai_cookie_name] = addslashes (json_encode ($ai_cookie)); $_COOKIE [$ai_cookie_name] = json_encode ($ai_cookie); ai_setcookie ($ai_cookie_name, $_COOKIE [$ai_cookie_name], time () + 365 * 24 * 3600, '/'); } // if (isset ($_COOKIE [$ai_cookie_name])) { // print_r ($_COOKIE [$ai_cookie_name]); // } else echo "NO COOKIE <br />"; } function get_paragraph_start_positions ($content, $multibyte, $paragraph_end_positions, $paragraph_start_strings, &$paragraph_positions, &$active_paragraph_positions) { foreach ($paragraph_start_strings as $paragraph_start_string) { if (trim ($paragraph_start_string) == '') continue; $last_position = - 1; $paragraph_start_string = trim ($paragraph_start_string); if ($paragraph_start_string == "#") { $paragraph_start = "\r\n\r\n"; if (!in_array (0, $paragraph_positions)) { $paragraph_positions [] = 0; $active_paragraph_positions [0] = 1; } } else $paragraph_start = '<' . $paragraph_start_string; if ($multibyte) { $paragraph_start_len = mb_strlen ($paragraph_start); while (mb_stripos ($content, $paragraph_start, $last_position + 1) !== false) { $last_position = mb_stripos ($content, $paragraph_start, $last_position + 1); if ($paragraph_start_string == "#") { $paragraph_positions [] = $last_position + 4; $active_paragraph_positions [$last_position + 4] = 1; } elseif (mb_substr ($content, $last_position + $paragraph_start_len, 1) == ">" || mb_substr ($content, $last_position + $paragraph_start_len, 1) == " ") { $paragraph_positions [] = $last_position; $active_paragraph_positions [$last_position] = 1; } } } else { $paragraph_start_len = strlen ($paragraph_start); while (stripos ($content, $paragraph_start, $last_position + 1) !== false) { $last_position = stripos ($content, $paragraph_start, $last_position + 1); if ($paragraph_start_string == "#") { $paragraph_positions [] = $last_position + 4; $active_paragraph_positions [$last_position + 4] = 1; } elseif ($content [$last_position + $paragraph_start_len] == ">" || $content [$last_position + $paragraph_start_len] == " ") { $paragraph_positions [] = $last_position; $active_paragraph_positions [$last_position] = 1; } } } } // Consistency check if (count ($paragraph_end_positions) != 0) { foreach ($paragraph_end_positions as $index => $paragraph_end_position) { if ($index == 0) { if (!isset ($paragraph_positions [$index]) || $paragraph_positions [$index] >= $paragraph_end_position) { $paragraph_positions [$index] = 0; } } else { if (!isset ($paragraph_positions [$index]) || $paragraph_positions [$index] >= $paragraph_end_position || $paragraph_positions [$index] <= $paragraph_end_positions [$index - 1]) { $paragraph_positions [$index] = $paragraph_end_positions [$index - 1] + 1; } } } } } function get_paragraph_end_positions ($content, $multibyte, $paragraph_start_positions, $paragraph_end_strings, &$paragraph_positions, &$active_paragraph_positions) { $no_closing_tag = array ('img', 'hr', 'br'); foreach ($paragraph_end_strings as $paragraph_end_string) { $last_position = - 1; $paragraph_end_string = trim ($paragraph_end_string); if ($paragraph_end_string == '') continue; if (in_array ($paragraph_end_string, $no_closing_tag)) { if (preg_match_all ("/<$paragraph_end_string([^>]*?)>/", $content, $images)) { foreach ($images [0] as $paragraph_end) { if ($multibyte) { $last_position = mb_stripos ($content, $paragraph_end, $last_position + 1) + mb_strlen ($paragraph_end) - 1; $paragraph_positions [] = $last_position; $active_paragraph_positions [$last_position] = 1; } else { $last_position = stripos ($content, $paragraph_end, $last_position + 1) + strlen ($paragraph_end) - 1; $paragraph_positions [] = $last_position; $active_paragraph_positions [$last_position] = 1; } } } continue; } elseif ($paragraph_end_string == "#") { $paragraph_end = "\r\n\r\n"; if (!in_array ($last_content_position, $paragraph_positions)) { $paragraph_positions [] = $last_content_position; $active_paragraph_positions [$last_content_position] = 1; } } else $paragraph_end = '</' . $paragraph_end_string . '>'; if ($multibyte) { while (mb_stripos ($content, $paragraph_end, $last_position + 1) !== false) { $last_position = mb_stripos ($content, $paragraph_end, $last_position + 1) + mb_strlen ($paragraph_end) - 1; if ($paragraph_end_string == "#") { $paragraph_positions [] = $last_position - 4; $active_paragraph_positions [$last_position - 4] = 1; } else { $paragraph_positions [] = $last_position; $active_paragraph_positions [$last_position] = 1; } } } else { while (stripos ($content, $paragraph_end, $last_position + 1) !== false) { $last_position = stripos ($content, $paragraph_end, $last_position + 1) + strlen ($paragraph_end) - 1; if ($paragraph_end_string == "#") { $paragraph_positions [] = $last_position - 4; $active_paragraph_positions [$last_position - 4] = 1; } else { $paragraph_positions [] = $last_position; $active_paragraph_positions [$last_position] = 1; } } } } // Consistency check if (count ($paragraph_start_positions) != 0) { foreach ($paragraph_start_positions as $index => $paragraph_start_position) { if ($index == count ($paragraph_start_positions) - 1) { if (!isset ($paragraph_positions [$index]) || $paragraph_positions [$index] <= $paragraph_start_position) { $paragraph_positions [$index] = strlen ($content) - 1; } } else { if (!isset ($paragraph_positions [$index]) || $paragraph_positions [$index] <= $paragraph_start_position || $paragraph_positions [$index] >= $paragraph_start_positions [$index + 1]) { $paragraph_positions [$index] = $paragraph_start_positions [$index + 1] - 1; } } } } } function ai_secret_key () { $key = ''; if (defined ('NONCE_KEY')) { $key = NONCE_KEY; } $key .= AD_INSERTER_VERSION; return (substr (preg_replace ("/[^A-Za-z]+/", '', base64_encode ($key)), 0, 16)); } //function ai_the_generator ($generator) { //// return preg_replace ('/content="(.*?)"/', 'content="$1, '.AD_INSERTER_NAME.' '. AD_INSERTER_VERSION.'"', $generator); // return $generator . PHP_EOL . '<meta name="generator" content="'.AD_INSERTER_NAME.' '.AD_INSERTER_VERSION.'" />'; //} function ai_ampforwp_check_disabled () { if (is_multisite()) { $option_active_plugins = array_merge (array_flip (get_site_option ('active_sitewide_plugins', array ())), get_option ('active_plugins', array ())); } else $option_active_plugins = get_option ('active_plugins'); $present = false; foreach ($option_active_plugins as $option_active_plugin) { if ($option_active_plugin == AD_INSERTER_SLUG . '/ad-inserter.php') { $present = true; break; } } if (!$present) return false; if (function_exists ('ampforwp_api_request_disable_plugin')) { $option_active_plugins = ampforwp_api_request_disable_plugin ($option_active_plugins); } $disabled = true; foreach ($option_active_plugins as $option_active_plugin) { if ($option_active_plugin == AD_INSERTER_SLUG . '/ad-inserter.php') { $disabled = false; break; } } return $disabled; } function ai_amp_plugin_custom_css () { if (is_multisite()) { $option_active_plugins = array_merge (array_flip (get_site_option ('active_sitewide_plugins', array ())), get_option ('active_plugins', array ())); } else $option_active_plugins = get_option ('active_plugins'); // echo "<pre>"; // print_r ($option_active_plugins); // echo "</pre>"; foreach ($option_active_plugins as $option_active_plugin) { if ($option_active_plugin == 'amp-wp/amp-wp.php') { return true; } if ($option_active_plugin == 'better-amp/better-amp.php') { return true; } } return false; } function ai_primary_category () { $primary_category = ai_rank_math_primary_category (); if ($primary_category != '') { return $primary_category; } // Returns the first category if primary category is not defined $primary_category = ai_yoast_primary_category (); return $primary_category; } function ai_yoast_primary_category () { $primary_category = ''; $category = get_the_category (); // If post has a category assigned. if ($category) { if (class_exists ('WPSEO_Primary_Term')) { // Show the post's 'Primary' category, if this Yoast feature is available, & one is set $wpseo_primary_term = new WPSEO_Primary_Term ('category', get_the_id ()); $wpseo_primary_term = $wpseo_primary_term->get_primary_term (); $term = get_term ($wpseo_primary_term); if (is_wp_error ($term)) { // Default to first category (not Yoast) if an error is returned $primary_category = $category [0]->slug; } else { // Yoast Primary category $primary_category = $term->slug; } } else { // Default, display the first category in WP's list of assigned categories $primary_category = $category [0]->slug; } } return $primary_category; } function ai_rank_math_primary_category () { $primary_category = ''; if (class_exists ('RankMath')) { $primary_cat_id = get_post_meta (get_the_id (), 'rank_math_primary_category', true); if ($primary_cat_id) { $category = get_term ($primary_cat_id, 'category'); $primary_category = $category->slug; } } return $primary_category; } function ai_is_page_builder () { // echo $_SERVER ['HTTP_HOST'], ' ', $_SERVER ['REQUEST_URI'], "<br />\n"; // global $ai_wp_data; // echo $ai_wp_data [AI_WP_PAGE_TYPE], "<br />\n"; // Elemetor if (class_exists ('Elementor\Plugin') && (\Elementor\Plugin::$instance->editor->is_edit_mode () || \Elementor\Plugin::$instance->preview->is_preview_mode ())) { return true; } return false; } function ai_add_rewrite_rules () { if (get_option (AI_ADS_TXT_NAME) !== false) { add_rewrite_rule ('ads\.txt', str_replace (home_url () .'/', '', admin_url ('admin-ajax.php?action=ai_ajax&ads-txt=')), 'top'); } if (function_exists ('ai_add_rewrite_rules_2')) ai_add_rewrite_rules_2 (); } function ai_js_dom_ready ($js_code, $script_tag = true, $script_class = '') { $id = rand (100000, 999999) . rand (100000, 999999); $id_fn = ''; $code = ''; $inline_js = ai_inline_js (); if (!$inline_js) { $id_fn = '_fn'; } if ($script_class != '') { $script_class = ' class="' . $script_class . '"'; } if ($script_tag) { $code .= "<!-- AI_JS --><script{$script_class}> "; $js_code = '/* AI_JS */' . $js_code . '/* AI_JS */'; } $code .= "ai_run_{$id} = function(){{$js_code}};"; if (!$inline_js) { $code .= "ai_run_{$id}{$id_fn} = function(){ai_wait_for_functions ().then (ai_run_{$id})}"; } $code .= " "; if ($script_tag) { $code .= " "; } $code .= "if (document.readyState === 'complete' || (document.readyState !== 'loading' && !document.documentElement.doScroll)) ai_run_{$id}{$id_fn} (); else document.addEventListener ('DOMContentLoaded', ai_run_{$id}{$id_fn});"; if ($script_tag) { $code .= " </script><!-- AI_JS --> "; } return ($code); } function ai_extract_js_code ($code) { global $ai_wp_data; if (strpos ($code, '<!-- AI_JS -->') !== false) { if (preg_match_all ('#/\* AI_JS \*/(.+?)/\* AI_JS \*/#s', $code, $js_matches)) { $js_code_dom_ready = ''; foreach ($js_matches [1] as $js_code) { $js_code_dom_ready .= $js_code."\n"; } $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] = $js_code_dom_ready . $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY]; } $code = preg_replace ('#<!-- AI_JS -->(.+?)<!-- AI_JS -->#s', '', $code); } return $code; } function ai_strip_js_markers ($code) { $code = preg_replace ('#<!-- AI_JS -->#s', '', $code); $code = preg_replace ('#/\* AI_JS \*/#s', '', $code); return ($code); } function ai_strip_w3tc_markers ($code) { if (defined ('W3TC_DYNAMIC_SECURITY')) { // $code = preg_replace ('#<!-- mfunc '.W3TC_DYNAMIC_SECURITY.' -->(.+?)<!-- /mfunc '.W3TC_DYNAMIC_SECURITY.' -->#s', '', $code); $code = preg_replace ('#<!-- mfunc '.W3TC_DYNAMIC_SECURITY.' (.+?) --><!-- /mfunc '.W3TC_DYNAMIC_SECURITY.' -->#s', '', $code); } return ($code); } function ai_extract_debug_bar ($ai_code) { if (preg_match ('#<section class=["\']ai-debug-bar.*?</section>#s', $ai_code, $match)) { $debug_bar = str_replace (array ('ai-debug-default', 'debug-viewport-invisible'), '', $match [0]); $debug_bar = preg_replace ('#<kbd class=["\']ai-debug-text-center["\']>(.*?)<kbd#s', '<kbd class="ai-debug-text-center"><kbd', $debug_bar); if (preg_match ('#<pre class=["\']ai-w3tc-debug ai-w3tc-run.*?</pre>#s', $ai_code, $match)) { $w3tc_debug = $match [0]; } else $w3tc_debug = ''; return '<section class="ai-debug-block">' . $debug_bar . $w3tc_debug . '</section><!-- AI-W3TC-LOG -->'; } } function ai_w3tc_debug_info ($w3tc_debug, $class = '') { return '<pre class="ai-w3tc-debug '.$class.'">' . implode ("\n", $w3tc_debug) . "</pre>\n"; } function ai_w3tc_block_start ($block) { global $ai_w3tc_nesting_level; if (!isset ($ai_w3tc_nesting_level)) { $ai_w3tc_nesting_level = 0; } $ai_w3tc_nesting_level ++; if ($ai_w3tc_nesting_level > 1) { ai_w3tc_log_run (''); } ai_w3tc_log_run ("BLOCK $block W3TC START"); } function ai_w3tc_block_end ($block, $ai_code, $ai_enabled, $ai_fallback, $ai_index) { global $ai_w3tc_debugging, $ai_w3tc_nesting_level; if (!isset ($ai_w3tc_nesting_level)) { $ai_w3tc_nesting_level = 0; } ai_w3tc_log_run ("BLOCK $block W3TC END" . ($ai_enabled ? '' : ': NOT ENABLED') . ' [' . (isset ($ai_fallback) ? $ai_fallback : '') . ',' . (isset ($ai_index) ? $ai_index : '') . ']'); $ai_w3tc_nesting_level --; if ($ai_w3tc_nesting_level != 0) { ai_w3tc_log_run (''); return $ai_code = str_replace ("<!-- AI-W3TC-LOG -->", '', $ai_code); } // Placeholder for additional messages $ai_w3tc_debugging []= "<!-- AI-W3TC-LOG-END -->"; $new_code = str_replace ("<!-- AI-W3TC-LOG -->", ai_w3tc_debug_info ($ai_w3tc_debugging, "ai-w3tc-run"), $ai_code); $ai_w3tc_debugging = array (); return $new_code; } function ai_w3tc_block_end_message ($message, $ai_code) { return str_replace ("<!-- AI-W3TC-LOG-END -->", $message . "<!-- AI-W3TC-LOG-END -->\n", $ai_code); } function ai_w3tc_log_run ($w3tc_debug_text, $css = '') { global $ai_w3tc_debugging, $ai_w3tc_nesting_level; if (!isset ($ai_w3tc_debugging)) { $ai_w3tc_debugging = array (); } if (!isset ($ai_w3tc_nesting_level)) { $ai_w3tc_nesting_level = 0; } if ($css != '') { if (is_array ($w3tc_debug_text)) { foreach ($w3tc_debug_text as $index => $w3tc_debug_line) { $w3tc_debug_text [$index] = "<span style='$css'>" . $w3tc_debug_text [$index] . '</span>'; } array_unshift ($w3tc_debug_text, "\n"); } else $w3tc_debug_text = "<span style='$css'>" . $w3tc_debug_text . '</span>'; } if (isset ($ai_w3tc_nesting_level) && $ai_w3tc_nesting_level > 1) { if (is_array ($w3tc_debug_text)) { foreach ($w3tc_debug_text as $index => $w3tc_debug_line) { $w3tc_debug_text [$index] = str_repeat (' ', $ai_w3tc_nesting_level - 1) . $w3tc_debug_text [$index]; } array_unshift ($w3tc_debug_text, "\n"); } else $w3tc_debug_text = str_repeat (' ', $ai_w3tc_nesting_level - 1) . $w3tc_debug_text; } if (is_array ($w3tc_debug_text)) { $ai_w3tc_debugging = array_merge ($ai_w3tc_debugging, $w3tc_debug_text); } else $ai_w3tc_debugging []= $w3tc_debug_text; } function ai_w3tc_execute_php ($code, &$ai_index, &$ai_fallback) { global $ai_wp_data; if (strpos ($code, '<!-- mfunc') === false) return $code; // preg_match_all ('#<!-- mfunc '.W3TC_DYNAMIC_SECURITY.' -->(.*?)<!-- /mfunc '.W3TC_DYNAMIC_SECURITY.' -->#', $code, $php_codes); // $html_codes = explode ('[?#?]', preg_replace ('#<!-- mfunc '.W3TC_DYNAMIC_SECURITY.' -->(.*?)<!-- /mfunc '.W3TC_DYNAMIC_SECURITY.' -->#', '[?#?]', $code)); preg_match_all ('#<!-- mfunc '.W3TC_DYNAMIC_SECURITY.' (.*?) --><!-- /mfunc '.W3TC_DYNAMIC_SECURITY.' -->#', $code, $php_codes); $html_codes = explode ('[?#?]', preg_replace ('#<!-- mfunc '.W3TC_DYNAMIC_SECURITY.' (.*?) --><!-- /mfunc '.W3TC_DYNAMIC_SECURITY.' -->#', '[?#?]', $code)); ob_start (); if ($ai_wp_data [AI_W3TC_DEBUGGING]) { ai_w3tc_log_run (' EXECUTE PHP' . ' ['.(isset ($ai_fallback) ? $ai_fallback : '') . ',' . (isset ($ai_index) ? $ai_index : '').']'); } foreach ($html_codes as $index => $html_code) { if ($html_code != '') { if ($ai_wp_data [AI_W3TC_DEBUGGING]) { ai_w3tc_log_run (' HTML: ' . strlen ($html_code) . ' bytes'); } echo $html_code; } if ($index < count ($html_codes) - 1) { if ($ai_wp_data [AI_W3TC_DEBUGGING]) { ai_w3tc_log_run ($w3tc_info []= ' PHP: ' . strlen ($php_codes [1][$index]) . ' bytes'); } eval ($php_codes [1][$index]); } } $html = ob_get_clean(); if ($ai_wp_data [AI_W3TC_DEBUGGING]) { ai_w3tc_log_run (' EXECUTE END' . ' ['.(isset ($ai_fallback) ? $ai_fallback : '') . ',' . (isset ($ai_index) ? $ai_index : '').']'); } return ($html); } function ai_get_post_id () { $queried_object = get_queried_object (); $post_id = get_the_ID (); if (defined ('AI_USE_GET_QUERIED_OBJECT') && AI_USE_GET_QUERIED_OBJECT && $queried_object && isset ($queried_object->ID)) { return $queried_object->ID; } if ($queried_object && $post_id) { return $post_id; } if ($queried_object && isset ($queried_object->ID)) { return $queried_object->ID; } return $post_id; } function ai_get_post_meta () { $meta_value = get_post_meta (ai_get_post_id (), '_adinserter_block_exceptions', true); return $meta_value; } function ai_post_is_in_child_categories ($category) { $category_to_check = get_term_by ('slug', $category, 'category'); if ($category_to_check) { $post_id = ai_get_post_id (); $children = get_term_children ($category_to_check->term_id, 'category'); if ($children && in_category ($children, $post_id)) return true; } return false; } function ai_post_is_in_child_taxonomies ($taxonomy, $term) { $taxonomy_to_check = get_term_by ('slug', $term, $taxonomy); if ($taxonomy_to_check) { $post_id = ai_get_post_id (); $children = get_term_children ($taxonomy_to_check->term_id, $taxonomy); if ($children && has_term ($children, $taxonomy, $post_id)) return true; } return false; } function ai_get_permalink ($id) { if (defined ('AI_CONNECTED_WEBSITE')) { $connected_website = get_transient (AI_CONNECTED_WEBSITE); if ($connected_website !== false) return ''; } return (get_permalink ($id)); } function ai_get_edit_post_link ($id) { if (defined ('AI_CONNECTED_WEBSITE')) { $connected_website = get_transient (AI_CONNECTED_WEBSITE); if ($connected_website !== false) return ''; } return (get_edit_post_link ($id)); } function ai_setcookie ($name, $value, $expire, $path, $samesite = 'Lax') { if (PHP_VERSION_ID < 70300) { setcookie ($name, $value, $expire, $path . '; samesite=' . $samesite); return; } setcookie ($name, $value, [ 'expires' => $expire, 'path' => $path, 'samesite' => $samesite, ]); } function ai_process_viewport_separators ($code, $shortcode_data) { global $ai_wp_data; $viewport_shortcode_data = $shortcode_data ['viewport']; preg_match_all ('/\|viewport([0-9]+?)\|/', $code, $matches); if (count ($matches [1]) != 0) { $viewport_parameters = array (); foreach ($matches [1] as $match) { $viewport_parameters []= $viewport_shortcode_data [$match]; } if ($ai_wp_data [AI_WP_AMP_PAGE]) { $code = preg_replace ('/\|viewport([0-9]+?)\|/', '', $code); } else $code = preg_replace ('/\|viewport([0-9]+?)\|/', AD_VIEWPORT_SEPARATOR, $code); } $processed_code = $code; if (strpos ($code, AD_VIEWPORT_SEPARATOR) !== false) { $processed_code = ''; $codes = explode (AD_VIEWPORT_SEPARATOR, $code); if (trim ($codes [0]) == '') { unset ($codes [0]); $codes = array_values ($codes); } else array_unshift ($viewport_parameters, array ('viewport' => '', 'code' => '')); foreach ($codes as $viewport_code_index => $viewport_code) { $viewport_code = ai_process_fallback_separator ($viewport_code, $shortcode_data); $separator_viewports = explode (',', strtolower ($viewport_parameters [$viewport_code_index]['viewport'])); foreach ($separator_viewports as $index => $separator_viewport) { $separator_viewports [$index] = trim ($separator_viewport); } $viewport_classes = ''; for ($viewport = 1; $viewport <= 6; $viewport ++) { $viewport_name = strtolower (get_viewport_name ($viewport)); if ($viewport_name != '') { $viewport_found = in_array ($viewport_name, $separator_viewports); if ($viewport_found) { $viewport_classes .= " ai-viewport-" . $viewport; } } } if ($viewport_classes == '') { if ($viewport_parameters [$viewport_code_index]['viewport'] != '') { // Invalid viewport - Code will never be inserted continue; } } $viewport_classes = trim ($viewport_classes); if ($viewport_classes != '') { $viewport_class = " class='" . $viewport_classes . "'"; } else $viewport_class = ''; $insert_code = get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_INSERT; switch (strtolower ($viewport_parameters [$viewport_code_index]['code'])) { case 'insert': $insert_code = true; break; case 'show': $insert_code = false; break; } if ($insert_code) { $code_id = 'ai-viewport-code-' . rand (1000, 9999) . rand (1000, 9999); if ($viewport_classes != '') { $viewport_classes = 'ai-viewports ' . $viewport_classes . ' '; } $ai_code = base64_encode (ai_strip_js_markers ($viewport_code)); $processed_code .= "<div class='{$viewport_classes} {$code_id}' data-insertion-position='after' data-selector='.{$code_id}' data-insertion-no-dbg data-code='$ai_code'></div>\n"; if (!get_disable_js_code ()) { // $js_code = "ai_insert_code (document.getElementsByClassName ('$code_id') [0]);"; $js_code = "ai_insert_code_by_class ('$code_id');"; $processed_code .= ai_strip_js_markers (ai_js_dom_ready ($js_code)); } } else { if ($viewport_class != '') { $processed_code .= "<div{$viewport_class}>\n" . $viewport_code . "\n</div>\n"; } else $processed_code .= $viewport_code; } } } return $processed_code; } function ai_process_fallback_separator ($code, $shortcode_data) { global $ai_wp_data; $fallback_shortcode_data = $shortcode_data ['fallback']; $processed_code = $code; if (strpos ($code, AD_FALLBACK_SEPARATOR) !== false) { $codes = explode (AD_FALLBACK_SEPARATOR, $code); $processed_code = $codes [0]; // AdSense unfilled if (strtolower ($fallback_shortcode_data [0]['fallback']) == 'adsense') { $insert_code = get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_CLIENT_SIDE_INSERT; switch (strtolower ($fallback_shortcode_data [0]['code'])) { case 'insert': $insert_code = true; break; case 'show': $insert_code = false; break; } $empty_fallback_code_class = trim ($codes [1]) == '' ? " ai-empty-code" : ''; $processed_code = "<div class='ai-fallback-adsense{$empty_fallback_code_class}'>" . $processed_code . "</div>\n"; if ($insert_code) { $ai_code = base64_encode (ai_strip_js_markers (trim ($codes [1]))); $processed_code .= "<div data-code='$ai_code'></div>\n"; } else { $processed_code .= "<div style='display: none;'>\n" . trim ($codes [1]) . "\n</div>\n"; } } } return $processed_code; } function replace_ai_tags ($content, $general_tag = '') { global $ai_wp_data; if (preg_match_all ('#\[ADINSERTER (.+)\]#i', $content, $matches)) { if (count ($matches [0])) { foreach ($matches [0] as $match) { $content = str_replace ($match, do_shortcode ($match), $content); } } } if (strpos ($content, '{') === false) return $content; if (isset ($ai_wp_data [AI_SHORTCODES]['atts']) && is_array ($ai_wp_data [AI_SHORTCODES]['atts']) && !empty ($ai_wp_data [AI_SHORTCODES]['atts'])) { foreach ($ai_wp_data [AI_SHORTCODES]['atts'] as $name => $value) { $content = preg_replace ("/\{\#$name(\:[^{}]*?)?\#\}/i", $value, $content); } } if (!isset ($ai_wp_data [AI_TAGS])) { $general_tag = str_replace ("&", " and ", $general_tag); $title = $general_tag; $short_title = $general_tag; $category = $general_tag; $categories = $general_tag; $categories_array = array (); $category_slugs_array = array (); $categories_spaces = $general_tag; $short_category = $general_tag; $tag = $general_tag; $tags = $general_tag; $tags_array = array (); $tag_slugs_array = array (); $tags_spaces = $general_tag; $categories_single_quotes = $general_tag; $categories_double_quotes = $general_tag; $smart_tag = $general_tag; if ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_CATEGORY) { $wp_categories = get_queried_object (); if (!empty ($wp_categories) && $wp_categories instanceof WP_Term) { $first_category = $wp_categories; $category = str_replace ("&", "and", $first_category->name); if ($category == _x('Uncategorized', 'category name', 'ad-inserter')) $category = $general_tag; } else { $category = $general_tag; } if (strpos ($category, ",") !== false) { $short_category = trim (substr ($category, 0, strpos ($category, ","))); } else $short_category = $category; if (strpos ($short_category, "and") !== false) { $short_category = trim (substr ($short_category, 0, strpos ($short_category, "and"))); } $title = $category; $title = str_replace ("&", "and", $title); $short_title = implode (" ", array_slice (explode (" ", $title), 0, 3)); $tag = $short_title; $smart_tag = $short_title; // $wp_categories = get_the_category(); // if (!empty ($wp_categories)) { // foreach ($wp_categories as $single_category) { // $categories_array [] = str_replace (array ("&", "#"), array ("and", ""), isset ($single_category->name) ? $single_category->name : ''); // $category_slugs_array [] = $single_category->slug; // } $wp_categories = get_queried_object(); if ($wp_categories instanceof WP_Term) { $categories_array [] = str_replace (array ("&", "#"), array ("and", ""), isset ($wp_categories->name) ? $wp_categories->name : ''); $category_slugs_array [] = $wp_categories->slug; $categories = implode (',', $categories_array); $categories_spaces = implode (' ', $categories_array); $categories_single_quotes = implode ("','", $categories_array); if ($categories_single_quotes != '') $categories_single_quotes = "'".$categories_single_quotes."'"; $categories_double_quotes = implode ('","', $categories_array); if ($categories_double_quotes != '') $categories_double_quotes = '"'.$categories_double_quotes.'"'; } } elseif (is_tag ()) { $title = single_tag_title('', false); $title = str_replace (array ("&", "#", '"', "'"), array ("and", "", '', ''), $title); $short_title = implode (" ", array_slice (explode (" ", $title), 0, 3)); $category = $short_title; if (strpos ($category, ",") !== false) { $short_category = trim (substr ($category, 0, strpos ($category, ","))); } else $short_category = $category; if (strpos ($short_category, "and") !== false) { $short_category = trim (substr ($short_category, 0, strpos ($short_category, "and"))); } $tag = $short_title; $smart_tag = $short_title; $wp_tags = get_the_tags (); if (!empty ($wp_tags)) { foreach ($wp_tags as $single_tag) { $tags_array [] = str_replace (array ("&", "#"), array ("and", ""), isset ($single_tag->name) ? $single_tag->name : ''); $tag_slugs_array [] = $single_tag->slug; } $tags = implode (',', $tags_array); $tags_spaces = implode (' ', $tags_array); } } elseif ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_SEARCH) { $title = get_search_query(); $title = str_replace ("&", "and", $title); $short_title = implode (" ", array_slice (explode (" ", $title), 0, 3)); $category = $short_title; if (strpos ($category, ",") !== false) { $short_category = trim (substr ($category, 0, strpos ($category, ","))); } else $short_category = $category; if (strpos ($short_category, "and") !== false) { $short_category = trim (substr ($short_category, 0, strpos ($short_category, "and"))); } $tag = $short_title; $smart_tag = $short_title; } elseif ($ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_STATIC || $ai_wp_data [AI_WP_PAGE_TYPE] == AI_PT_POST) { $title = get_the_title(); $title = str_replace (array ("&", '"', "'"), array ("and", '', ''), $title); $short_title = implode (" ", array_slice (explode (" ", $title), 0, 3)); $wp_categories = get_the_category(); if (!empty ($wp_categories)) { foreach ($wp_categories as $single_category) { if (isset ($single_category->slug)) { $categories_array [] = str_replace (array ("&", "#"), array ("and", ""), isset ($single_category->name) ? $single_category->name : ''); $category_slugs_array [] = $single_category->slug; } } $categories = implode (',', $categories_array); $categories_spaces = implode (' ', $categories_array); $categories_single_quotes = implode ("','", $categories_array); if ($categories_single_quotes != '') $categories_single_quotes = "'".$categories_single_quotes."'"; $categories_double_quotes = implode ('","', $categories_array); if ($categories_double_quotes != '') $categories_double_quotes = '"'.$categories_double_quotes.'"'; $first_category = $categories_array [0]; $category = $first_category; if ($category == _x('Uncategorized', 'category name', 'ad-inserter')) $category = $general_tag; } else { $category = $short_title; } if (strpos ($category, ",") !== false) { $short_category = trim (substr ($category, 0, strpos ($category, ","))); } else $short_category = $category; if (strpos ($short_category, "and") !== false) { $short_category = trim (substr ($short_category, 0, strpos ($short_category, "and"))); } $wp_tags = get_the_tags(); if (!empty ($wp_tags)) { foreach ($wp_tags as $single_tag) { $tags_array [] = str_replace (array ("&", "#"), array ("and", ""), isset ($single_tag->name) ? $single_tag->name : ''); $tag_slugs_array [] = $single_tag->slug; } $tags = implode (',', $tags_array); $tags_spaces = implode (' ', $tags_array); $first_tag = $tags_array [0]; $tag = $first_tag; $tag_array = array (); foreach ($wp_tags as $tag_data) { if (isset ($tag_data->name)) $tag_array [] = explode (" ", $tag_data->name); } $selected_tag = ''; if (count ($tag_array [0]) == 2) $selected_tag = $tag_array [0]; elseif (count ($tag_array) > 1 && count ($tag_array [1]) == 2) $selected_tag = $tag_array [1]; elseif (count ($tag_array) > 2 && count ($tag_array [2]) == 2) $selected_tag = $tag_array [2]; elseif (count ($tag_array) > 3 && count ($tag_array [3]) == 2) $selected_tag = $tag_array [3]; elseif (count ($tag_array) > 4 && count ($tag_array [4]) == 2) $selected_tag = $tag_array [4]; if ($selected_tag == '' && count ($tag_array) >= 2 && count ($tag_array [0]) == 1 && count ($tag_array [1]) == 1) { if (isset ($tag_array [0][0]) && isset ($tag_array [1][0])) { if (strpos ($tag_array [0][0], $tag_array [1][0]) !== false) $tag_array = array_slice ($tag_array, 1, count ($tag_array) - 1); } if (isset ($tag_array [0][0]) && isset ($tag_array [1][0])) { if (strpos ($tag_array [1][0], $tag_array [0][0]) !== false) $tag_array = array_slice ($tag_array, 1, count ($tag_array) - 1); } if (isset ($tag_array [0][0]) && isset ($tag_array [1][0])) { if (count ($tag_array) >= 2 && count ($tag_array [0]) == 1 && count ($tag_array [1]) == 1) { $selected_tag = array ($tag_array [0][0], $tag_array [1][0]); } } } if ($selected_tag == '') { $first_tag = $tags_array [0]; $smart_tag = implode (" ", array_slice (explode (" ", $first_tag), 0, 3)); } else $smart_tag = implode (" ", $selected_tag); $smart_tag = str_replace (array ("&", "#"), array ("and", ""), $smart_tag); } else { $tag = $category; $smart_tag = $category; } } $title = str_replace (array ("'", '"'), array ("’", "”"), $title); $title = html_entity_decode ($title, ENT_QUOTES, "utf-8"); $short_title = str_replace (array ("'", '"'), array ("’", "”"), $short_title); $short_title = html_entity_decode ($short_title, ENT_QUOTES, "utf-8"); $search_query = ""; if (isset ($_SERVER['HTTP_REFERER'])) { $referrer = $_SERVER['HTTP_REFERER']; } else $referrer = ''; if (preg_match ("/[\.\/](google|yahoo|bing|ask)\.[a-z\.]{2,5}[\/]/i", $referrer, $search_engine)){ $referrer_query = parse_url ($referrer); $referrer_query = isset ($referrer_query ["query"]) ? $referrer_query ["query"] : ""; parse_str ($referrer_query, $value); $search_query = isset ($value ["q"]) ? $value ["q"] : ""; if ($search_query == "") { $search_query = isset ($value ["p"]) ? $value ["p"] : ""; } } if ($search_query == "") $search_query = $smart_tag; // $author = get_the_author_meta ('display_name'); // $author_name = get_the_author_meta ('first_name') . " " . get_the_author_meta ('last_name'); // if ($author_name == ' ') $author_name = $author; $host = isset ($_SERVER ['HTTP_HOST']) ? $_SERVER ['HTTP_HOST'] : ''; if ($host == '' && isset ($_SERVER ['SERVER_NAME'])) { $host = $_SERVER ['SERVER_NAME']; } $url = remove_debug_parameters_from_url ((isset ($_SERVER ['HTTPS']) && $_SERVER ['HTTPS'] === 'on' ? "https" : "http") . '://'. $host . $_SERVER ['REQUEST_URI']); $post_id = ai_get_post_id (); $ai_wp_data [AI_TAGS]['TITLE'] = $title; $ai_wp_data [AI_TAGS]['SHORT_TITLE'] = $short_title; $ai_wp_data [AI_TAGS]['CATEGORY'] = $category; $ai_wp_data [AI_TAGS]['CATEGORIES'] = $categories; $ai_wp_data [AI_TAGS]['CATEGORIES_ARRAY'] = $categories_array; $ai_wp_data [AI_TAGS]['CATEGORY_SLUGS_ARRAY'] = $category_slugs_array; $ai_wp_data [AI_TAGS]['CATEGORIES_SPACES'] = $categories_spaces; $ai_wp_data [AI_TAGS]['CATEGORIES_SINGLE_QUOTES'] = $categories_single_quotes; $ai_wp_data [AI_TAGS]['CATEGORIES_DOUBLE_QUOTES'] = $categories_double_quotes; $ai_wp_data [AI_TAGS]['SHORT_CATEGORY'] = $short_category; $ai_wp_data [AI_TAGS]['TAG'] = $tag; $ai_wp_data [AI_TAGS]['TAGS'] = $tags; $ai_wp_data [AI_TAGS]['TAGS_ARRAY'] = $tags_array; $ai_wp_data [AI_TAGS]['TAG_SLUGS_ARRAY'] = $tag_slugs_array; $ai_wp_data [AI_TAGS]['TAGS_SPACES'] = $tags_spaces; $ai_wp_data [AI_TAGS]['SMART_TAG'] = $smart_tag; $ai_wp_data [AI_TAGS]['SEARCH_QUERY'] = $search_query; // $ai_wp_data [AI_TAGS]['AUTHOR'] = $author; // $ai_wp_data [AI_TAGS]['AUTHOR_NAME'] = $author_name; $ai_wp_data [AI_TAGS]['POST_ID'] = $post_id; $ai_wp_data [AI_TAGS]['URL'] = $url; } // Author should not be cached $author = get_the_author_meta ('display_name'); $author_login = get_the_author_meta ('user_login'); $author_name = get_the_author_meta ('first_name') . " " . get_the_author_meta ('last_name'); if ($author_name == ' ') $author_name = $author; $ai_wp_data [AI_TAGS]['AUTHOR'] = $author; $ai_wp_data [AI_TAGS]['AUTHOR_NAME'] = $author_name; $ai_wp_data [AI_TAGS]['AUTHOR_LOGIN'] = $author_login; $ad_data = preg_replace ("/{title}/i", $ai_wp_data [AI_TAGS]['TITLE'], $content); $ad_data = preg_replace ("/{short-title}/i", $ai_wp_data [AI_TAGS]['SHORT_TITLE'], $ad_data); $ad_data = preg_replace ("/{category}/i", $ai_wp_data [AI_TAGS]['CATEGORY'], $ad_data); $ad_data = preg_replace ("/{categories}/i", $ai_wp_data [AI_TAGS]['CATEGORIES'], $ad_data); $ad_data = preg_replace ("/{categories-spaces}/i", $ai_wp_data [AI_TAGS]['CATEGORIES_SPACES'], $ad_data); $ad_data = preg_replace ("/{categories-single-quotes}/i", $ai_wp_data [AI_TAGS]['CATEGORIES_SINGLE_QUOTES'], $ad_data); $ad_data = preg_replace ("/{categories-double-quotes}/i", $ai_wp_data [AI_TAGS]['CATEGORIES_DOUBLE_QUOTES'], $ad_data); $ad_data = preg_replace ("/{short-category}/i", $ai_wp_data [AI_TAGS]['SHORT_CATEGORY'], $ad_data); $ad_data = preg_replace ("/{tag}/i", $ai_wp_data [AI_TAGS]['TAG'], $ad_data); $ad_data = preg_replace ("/{tags}/i", $ai_wp_data [AI_TAGS]['TAGS'], $ad_data); $ad_data = preg_replace ("/{tags-spaces}/i", $ai_wp_data [AI_TAGS]['TAGS_SPACES'], $ad_data); $ad_data = preg_replace ("/{smart-tag}/i", $ai_wp_data [AI_TAGS]['SMART_TAG'], $ad_data); $ad_data = preg_replace ("/{search-query}/i", $ai_wp_data [AI_TAGS]['SEARCH_QUERY'], $ad_data); $ad_data = preg_replace ("/{author}/i", $ai_wp_data [AI_TAGS]['AUTHOR'], $ad_data); $ad_data = preg_replace ("/{author-name}/i", $ai_wp_data [AI_TAGS]['AUTHOR_NAME'], $ad_data); $ad_data = preg_replace ("/{author-login}/i", $ai_wp_data [AI_TAGS]['AUTHOR_LOGIN'], $ad_data); $ad_data = preg_replace ("/{post-id}/i", $ai_wp_data [AI_TAGS]['POST_ID'], $ad_data); $ad_data = preg_replace ("/{short_title}/i", $ai_wp_data [AI_TAGS]['SHORT_TITLE'], $ad_data); $ad_data = preg_replace ("/{short_category}/i", $ai_wp_data [AI_TAGS]['SHORT_CATEGORY'], $ad_data); $ad_data = preg_replace ("/{smart_tag}/i", $ai_wp_data [AI_TAGS]['SMART_TAG'], $ad_data); $ad_data = preg_replace ("/{search_query}/i", $ai_wp_data [AI_TAGS]['SEARCH_QUERY'], $ad_data); $ad_data = preg_replace ("/{author_name}/i", $ai_wp_data [AI_TAGS]['AUTHOR_NAME'], $ad_data); $ad_data = preg_replace ("/{block-number}/i", isset ($ai_wp_data [AI_CURRENT_BLOCK_NUMBER]) ? $ai_wp_data [AI_CURRENT_BLOCK_NUMBER] : '', $ad_data); $ad_data = preg_replace ("/{block-name}/i", isset ($ai_wp_data [AI_CURRENT_BLOCK_NAME]) ? $ai_wp_data [AI_CURRENT_BLOCK_NAME] : '', $ad_data); $ad_data = preg_replace ("/{block-name-encoded}/i", isset ($ai_wp_data [AI_CURRENT_BLOCK_NAME]) ? urlencode ($ai_wp_data [AI_CURRENT_BLOCK_NAME]) : '', $ad_data); $ad_data = preg_replace ("/{url}/i", $ai_wp_data [AI_TAGS]['URL'], $ad_data); if (preg_match ("/{reusable-block-([\d]+)}/i", $ad_data, $block_match)) { $block_id = $block_match [1]; $reusable_block = ''; if (!empty ($block_id) && (int) $block_id == $block_id) { $reusable_block = get_post_field ('post_content', $block_id); } $ad_data = preg_replace ("/".$block_match [0]."/i", $reusable_block, $ad_data); } if (preg_match_all ("/{tag-([\d+])}/i", $ad_data, $tag_matches)) { foreach ($tag_matches [1] as $tag_index) { $tag_to_replace = isset ($ai_wp_data [AI_TAGS]['TAGS_ARRAY'][$tag_index - 1]) ? $ai_wp_data [AI_TAGS]['TAGS_ARRAY'][$tag_index - 1] : ''; $ad_data = preg_replace ("/{tag-$tag_index}/i", $tag_to_replace, $ad_data); } } if (preg_match_all ("/{tag-slug-([\d+])}/i", $ad_data, $tag_matches)) { foreach ($tag_matches [1] as $tag_index) { $tag_to_replace = isset ($ai_wp_data [AI_TAGS]['TAG_SLUGS_ARRAY'][$tag_index - 1]) ? $ai_wp_data [AI_TAGS]['TAG_SLUGS_ARRAY'][$tag_index - 1] : ''; $ad_data = preg_replace ("/{tag-slug-$tag_index}/i", $tag_to_replace, $ad_data); } } if (preg_match_all ("/{category-([\d+])}/i", $ad_data, $category_matches)) { foreach ($category_matches [1] as $category_index) { $category_to_replace = isset ($ai_wp_data [AI_TAGS]['CATEGORIES_ARRAY'][$category_index - 1]) ? $ai_wp_data [AI_TAGS]['CATEGORIES_ARRAY'][$category_index - 1] : ''; $ad_data = preg_replace ("/{category-$category_index}/i", $category_to_replace, $ad_data); } } if (preg_match_all ("/{category-slug-([\d+])}/i", $ad_data, $category_matches)) { foreach ($category_matches [1] as $category_index) { $category_to_replace = isset ($ai_wp_data [AI_TAGS]['CATEGORY_SLUGS_ARRAY'][$category_index - 1]) ? $ai_wp_data [AI_TAGS]['CATEGORY_SLUGS_ARRAY'][$category_index - 1] : ''; $ad_data = preg_replace ("/{category-slug-$category_index}/i", $category_to_replace, $ad_data); } } if (function_exists ('ai_tags')) ai_tags ($ad_data); // Replace default values {tag:default} $default_value_tags = preg_match_all ("/\{\#[a-zA-Z\-_][a-zA-Z0-9\-_]*?\:(.*?)\#\}/", $ad_data, $matches); if ($default_value_tags) { foreach ($matches [0] as $index => $match) { $ad_data = str_replace ($match, $matches [1][$index], $ad_data); } } return $ad_data; } function ai_ad_label_code () { global $ai_wp_data; $ad_label = get_ad_label (true); $ad_label = apply_filters ("ai_ad_label", $ad_label); if (strpos ($ad_label, '<') === false && strpos ($ad_label, '>') === false) { $ad_label = '<div class="' . get_block_class_name (true) . '-label">' . $ad_label . '</div>'; } $unfiltered_html = $ai_wp_data [AI_UNFILTERED_HTML]; if (defined ('DISALLOW_UNFILTERED_HTML') && DISALLOW_UNFILTERED_HTML) { $unfiltered_html = false; } if (!$unfiltered_html) { $ad_label = wp_kses ($ad_label, 'post'); } return $ad_label .= "\n"; } function ai_php_enabled () { $php_enabled = !(defined ('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT) && !(defined ('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS); return apply_filters ('ai_php_enabled', $php_enabled); } function ai_inline_js () { // return (get_wait_for_jquery () || !defined ('AI_EXTERNAL_JS')); return (get_wait_for_jquery () == AI_WAIT_FOR_JQUERY_ENABLED || (get_javascript_code_mode () == AI_JAVASCRIPT_CODE_INLINE && !defined ('AI_EXTERNAL_JS'))); } function ai_unserialize ($string) { // Clear objects - O:5:"Class":0:{} // $string = preg_replace ('#o:\d+:"[a-z0-9_]+":\d+:{.*?}#i', '', $string); return @unserialize ($string, ['allowed_classes' => false]); } // =========================================================================================== global $block_object, $ai_wp_data, $ad_inserter_globals, $ai_last_check, $ai_last_time, $ai_total_plugin_time, $ai_total_block_php_time, $ai_total_hook_php_time, $ai_processing_log, $ai_db_options_extract, $ai_db_options, $block_insertion_log; if (!defined ('AD_INSERTER_PLUGIN_DIR')) define ('AD_INSERTER_PLUGIN_DIR', plugin_dir_path (__FILE__)); define ('AI_WP_DEBUGGING_', 0); define ('AI_DEBUG_PROCESSING_', 0x01); define ('AI_URL_DEBUG_', 'ai-debug'); define ('AI_URL_DEBUG_PROCESSING_', 'ai-debug-processing'); define ('AI_URL_DEBUG_PROCESSING_FE_', 'ai-debug-processing-fe'); define ('AI_URL_DEBUG_PHP_', 'ai-debug-php'); if (isset ($_GET [AI_URL_DEBUG_PHP_]) && $_GET [AI_URL_DEBUG_PHP_] != '') { if (isset ($_COOKIE ['AI_WP_DEBUGGING'])) { ini_set ('display_errors', 1); error_reporting (E_ALL); } } $ai_wp_data [AI_WP_DEBUGGING_] = 0; $start_time = 0; if (!is_admin()) { if (!isset ($_GET [AI_URL_DEBUG_]) || $_GET [AI_URL_DEBUG_] != 0) if (isset ($_GET [AI_URL_DEBUG_PROCESSING_]) || isset ($_GET [AI_URL_DEBUG_PROCESSING_FE_]) || (isset ($_COOKIE ['AI_WP_DEBUGGING']) && ($_COOKIE ['AI_WP_DEBUGGING'] & AI_DEBUG_PROCESSING_) != 0)) { if ((isset ($_GET [AI_URL_DEBUG_PROCESSING_]) && $_GET [AI_URL_DEBUG_PROCESSING_] == 1) || (isset ($_GET [AI_URL_DEBUG_PROCESSING_FE_]) && $_GET [AI_URL_DEBUG_PROCESSING_FE_] == 1)) { $ai_wp_data [AI_WP_DEBUGGING_] |= AI_DEBUG_PROCESSING_; $ai_total_plugin_time = 0; $start_time = microtime (true); $ai_total_block_php_time = 0; $ai_total_hook_php_time = 0; $ai_last_time = microtime (true); $ai_processing_log = array (); ai_log ('INITIALIZATION START'); } } } // Version check global $wp_version, $version_string, $subversion_string, $filter_hooks; if (version_compare ($wp_version, "4.6", "<")) { exit ('Ad Inserter ' . __('requires WordPress 4.6 or newer', 'ad-inserter') . '. <a href="https://wordpress.org/support/article/updating-wordpress/" target=_blank">'. __('Please update!', 'ad-inserter') . '</a>'); } //if (version_compare (phpversion (), "5.6", "<")) { // exit ('Ad Inserter ' . __('requires PHP 5.6 or newer', 'ad-inserter') . '. <a href="https://wordpress.org/support/update-php/" target=_blank">'. __('Please update!', 'ad-inserter') . '</a>'); //} $filter_hooks = array (); if (isset ($_GET ['ai-safe-mode'])) { define ('AI_SAFE_MODE', 1); } //include required files require_once AD_INSERTER_PLUGIN_DIR.'class.php'; require_once AD_INSERTER_PLUGIN_DIR.'constants.php'; require_once AD_INSERTER_PLUGIN_DIR.'settings.php'; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("AFTER REQUIRE: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms"); $subversion_array = explode ("-", AD_INSERTER_VERSION); $subversion_string = isset ($subversion_array [1]) ? '-'.$subversion_array [1] : ''; $version_array = explode (".", $subversion_array [0]); $version_string = ""; foreach ($version_array as $number) { $version_string .= sprintf ("%02d", $number); } $ai_wp_data [AI_WP_URL] = remove_debug_parameters_from_url (); $ad_inserter_globals = array (); $block_object = array (); $block_insertion_log = array (); $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_NONE; $ai_wp_data [AI_WP_AMP_PAGE] = false; $ai_wp_data [AI_WP_USER_SET] = false; $ai_wp_data [AI_WP_USER] = AI_USER_NOT_LOGGED_IN; $ai_wp_data [AI_CONTEXT] = AI_CONTEXT_NONE; $ai_wp_data [AI_SERVER_SIDE_DETECTION] = false; $ai_wp_data [AI_CLIENT_SIDE_DETECTION] = false; $ai_wp_data [AI_MOBILE_DETECT_JS] = false; $ai_wp_data [AI_TRACKING] = false; $ai_wp_data [AI_STICKY_WIDGETS] = false; $ai_wp_data [AI_STICK_TO_THE_CONTENT] = false; $ai_wp_data [AI_ANIMATION] = false; $ai_wp_data [AI_CLOSE_BUTTONS] = false; $ai_wp_data [AI_IFRAMES] = false; $ai_wp_data [AI_DISABLE_CACHING] = false; $ai_wp_data [AI_CLIENT_SIDE_INSERTION] = false; $ai_wp_data [AI_LAZY_LOADING] = false; $ai_wp_data [AI_PAGE_BLOCKS] = 0; $ai_wp_data [AI_GEOLOCATION] = false; //$ai_wp_data [AI_HTML_ELEMENT_SELECTION] = isset ($_POST ['html_element_selection']) ? (bool) $_POST ['html_element_selection'] : false; $ai_wp_data [AI_HTML_ELEMENT_SELECTION] = false; $ai_wp_data [AI_MBSTRING_LOADED] = extension_loaded ('mbstring'); $ai_wp_data [AI_PROCESSING_TIME] = false; $ai_wp_data [AI_FORCE_SERVERSIDE_CODE] = false; $ai_wp_data [AI_CODE_FOR_IFRAME] = false; $ai_wp_data [AI_HEAD_CODES] = array (); $ai_wp_data [AI_HEAD_GROUPS] = array (); $ai_wp_data [AI_ACTIVE_GROUP_NAMES] = array (); $ai_wp_data [AI_CHECK_BLOCK] = false; $ai_wp_data [AI_POST_POSITION] = AI_POST_POSITION_BEFORE_POST; $ai_wp_data [AI_FOOTER_JS_CODE_DOM_READY] = ''; $ai_wp_data [AI_FOOTER_INLINE_SCRIPTS] = false; $ai_wp_data [AI_W3TC_DEBUGGING] = false; $ai_wp_data [AI_CLIENT_SIDE_FILTER_CHECKS] = false; $ai_wp_data [AI_PARALLAX] = false; $ai_wp_data [AI_PHP_PROCESSING] = ai_php_enabled (); $ai_wp_data [AI_UNFILTERED_HTML] = !(defined ('DISALLOW_UNFILTERED_HTML') && DISALLOW_UNFILTERED_HTML); ai_load_settings (); $ai_wp_data [AI_NO_JQUERY_CODE] = defined ('AI_NO_JQUERY') || !get_wait_for_jquery () || (isset ($_GET [AI_URL_DEBUG_NO_JQUERY]) && !empty ($_GET [AI_URL_DEBUG_NO_JQUERY])); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("AFTER LOAD SETTINGS: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms"); $ai_wp_data [AI_BACKEND_JS_DEBUGGING] = get_backend_javascript_debugging (); $ai_wp_data [AI_FRONTEND_JS_DEBUGGING] = get_frontend_javascript_debugging (); if (isset ($_GET [AI_URL_DEBUG_PHP]) && $_GET [AI_URL_DEBUG_PHP] == '1') { if (get_remote_debugging ()) { ini_set ('display_errors', 1); error_reporting (E_ALL); } } if (isset ($_GET [AI_URL_DEBUG_JAVASCRIPT]) && $_GET [AI_URL_DEBUG_JAVASCRIPT] == '1' || isset ($_GET [AI_URL_DEBUG_TRACKING]) && $_GET [AI_URL_DEBUG_TRACKING] == '1') { if (get_remote_debugging ()) { $ai_wp_data [AI_FRONTEND_JS_DEBUGGING] = true; } } if (defined ('AI_ADBLOCKING_DETECTION') && AI_ADBLOCKING_DETECTION) { $ai_wp_data [AI_ADB_DETECTION] = $block_object [AI_ADB_MESSAGE_OPTION_NAME]->get_enable_manual (); $logged_in_key = defined ('LOGGED_IN_KEY') ? LOGGED_IN_KEY : 'key'; if ($ai_wp_data [AI_ADB_DETECTION]) { $key = '#AI'; if (defined ('AUTH_KEY')) { $key .= AUTH_KEY; } if (defined ('NONCE_KEY')) { $key .= NONCE_KEY; } $adb_2_name = AI_ADB_2_DEFAULT_NAME; define ('AI_ADB_COOKIE_VALUE', substr (preg_replace ("/[^A-Za-z]+/", '', strtolower (md5 ($logged_in_key.md5 ($key)))), 0, 8)); $script_path = AD_INSERTER_PLUGIN_DIR.'js'; $script = $script_path.'/sponsors.js'; if (is_writable ($script_path) && is_writable ($script)) { $adb_2_name = substr (preg_replace ("/[^A-Za-z]+/", '', strtolower (md5 ($logged_in_key).md5 ($key))), 0, 8); $js_ok = false; if (file_exists ($script)) { if (strpos (file_get_contents ($script), $adb_2_name) !== false) $js_ok = true; } if (!$js_ok) { file_put_contents ($script, 'window.' . $adb_2_name . '=true;'); define ('AI_ADB_2_FILE_RECREATED', true); } } define ('AI_ADB_2_NAME', $adb_2_name); } } if (function_exists ('ai_load_globals')) ai_load_globals ($start_time); if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) ai_log ("AFTER LOAD GLOBALS: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms"); if (get_dynamic_blocks () == AI_DYNAMIC_BLOCKS_SERVER_SIDE_W3TC) { if (!in_array ('w3-total-cache/w3-total-cache.php', get_option ('active_plugins'))) { define ('AI_NO_W3TC', true); if (!defined ('W3TC_DYNAMIC_SECURITY')) define ('W3TC_DYNAMIC_SECURITY', 'W3 Total Cache plugin not active'); } if (!defined ('W3TC_DYNAMIC_SECURITY')) { $string = AD_INSERTER_PLUGIN_DIR; if (defined ('AUTH_KEY')) $string .= AUTH_KEY; if (defined ('LOGGED_IN_KEY')) $string .= LOGGED_IN_KEY; define ('W3TC_DYNAMIC_SECURITY', md5 ($string)); } } if ($ai_wp_data [AI_SERVER_SIDE_DETECTION] && !is_admin ()) { require_once AD_INSERTER_PLUGIN_DIR.'includes/mobiledetect/Mobile_Detect.php'; // require_once AD_INSERTER_PLUGIN_DIR.'includes/mobiledetect/MobileDetect.php'; // require_once AD_INSERTER_PLUGIN_DIR.'includes/mobiledetect/Cache/CacheItem.php'; // require_once AD_INSERTER_PLUGIN_DIR.'includes/mobiledetect/Cache/Cache.php'; // require_once AD_INSERTER_PLUGIN_DIR.'includes/mobiledetect/Cache/CacheException.php'; // require_once AD_INSERTER_PLUGIN_DIR.'includes/mobiledetect/Exception/MobileDetectException.php'; $detect = new ai_Mobile_Detect; // $detect = new MobileDetect (); define ('AI_MOBILE', $detect->isMobile ()); define ('AI_TABLET', $detect->isTablet ()); define ('AI_PHONE', AI_MOBILE && !AI_TABLET); define ('AI_DESKTOP', !AI_MOBILE); } else { define ('AI_MOBILE', true); define ('AI_TABLET', true); define ('AI_PHONE', true); define ('AI_DESKTOP', true); } if (isset ($_POST [AI_FORM_SAVE])) define ('AI_SYNTAX_HIGHLIGHTING', isset ($_POST ["syntax-highlighter-theme"]) && $_POST ["syntax-highlighter-theme"] != AI_OPTION_DISABLED); else define ('AI_SYNTAX_HIGHLIGHTING', get_syntax_highlighter_theme () != AI_OPTION_DISABLED); if (isset ($_POST [AI_FORM_SAVE])) { $ai_wp_data [AI_DISABLE_TRANSLATION] = isset ($_POST ['disable_translation']) ? $_POST ['disable_translation'] : DEFAULT_DISABLE_TRANSLATION; } else $ai_wp_data [AI_DISABLE_TRANSLATION] = get_disable_translation () || (isset ($_GET [AI_URL_DEBUG_TRANSLATION]) && get_remote_debugging ()); if (!$ai_wp_data [AI_DISABLE_TRANSLATION]) { add_action ('plugins_loaded', 'ai_load_plugin_textdomain_hook'); add_filter ('load_textdomain_mofile', 'ai_load_textdomain_mofile', 10, 2); } add_action ('plugins_loaded', 'ai_plugins_loaded'); add_action ('init', 'ai_init_hook'); add_action ('wp_loaded', 'ai_wp_loaded_hook'); add_action ('admin_menu', 'ai_admin_menu_hook'); add_action ('admin_notices', 'ai_admin_notice_hook'); add_action ('wp', 'ai_wp_hook'); add_action ('wp_enqueue_scripts', 'ai_wp_enqueue_scripts_hook' ); //add_action ('upgrader_process_complete', 'ai_upgrader_process_complete_hook', 10, 2); if (function_exists ('ai_system_output_check')) $ai_system_output = ai_system_output_check (); else $ai_system_output = false; //if (defined ('AI_BUFFERING')) { // add_action ('get_header', 'ai_buffering_start_hook', 99999); //} if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0 || $ai_system_output) { add_action ('shutdown', 'ai_shutdown_hook', 0); } register_activation_hook (AD_INSERTER_PLUGIN_DIR.'ad-inserter.php', 'ai_activation_hook'); register_deactivation_hook (AD_INSERTER_PLUGIN_DIR.'ad-inserter.php', 'ai_deactivation_hook' ); add_action ('widgets_init', 'ai_widgets_init_hook'); add_action ('add_meta_boxes', 'ai_add_meta_box_hook'); add_action ('save_post', 'ai_save_meta_box_data_hook'); if (function_exists ('ai_hooks')) ai_hooks (); add_filter ('plugin_action_links_'.plugin_basename (__FILE__), 'ai_plugin_action_links'); add_action ('after_plugin_row_' . AD_INSERTER_SLUG . '/ad-inserter.php', 'ai_after_plugin_row_1', 10, 3); add_filter ('plugin_row_meta', 'ai_set_plugin_meta', 99999, 2); //add_filter ('the_generator', 'ai_the_generator'); // If using Autoptimize plugin //add_filter ('autoptimize_filter_js_replacetag','ai_ao_override_js_replacetag', 10, 1); if (is_admin () === true) { add_action ('wp_ajax_ai_ajax_backend', 'ai_ajax_backend'); add_action ('wp_ajax_ai_ajax', 'ai_ajax'); add_action ('wp_ajax_nopriv_ai_ajax', 'ai_ajax'); } if (!get_option (AI_INSTALL_NAME)) { update_option (AI_INSTALL_NAME, time ()); } if (defined ('AI_PLUGIN_TRACKING') && AI_PLUGIN_TRACKING) { add_action ('plugins_loaded', 'ai_install_dst'); function ai_install_dst () { global $ai_wp_data, $ai_total_plugin_time; if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { ai_log ("PLUGINS LOADED INSTALL DST START"); $ai_processing_time_active = $ai_wp_data [AI_PROCESSING_TIME]; $ai_wp_data [AI_PROCESSING_TIME] = true; $start_time = microtime (true); } if (!class_exists ('DST_Client')) { require_once dirname (__FILE__) . '/includes/dst/dst.php'; } if (!function_exists ('ai_start_dst') && defined ('DST_Client::DST_FILTER_OPTIONS')) { function ai_start_dst () { global $ai_dst; $dst_settings = array ( 'main_file' => __FILE__, 'tracking_url' => 'https://analytics.adinserter.pro/', 'track_local' => true, 'tracking' => DST_Client::DST_TRACKING_OPTIN, 'use_email' => DST_Client::DST_USE_EMAIL_OFF, 'multisite_tracking' => DST_Client::DST_MULTISITE_SITES_TRACKING_WAIT_FOR_MAIN, 'deactivation_form' => true, 'admin_ip_tracking' => true, 'notice_icon' => AD_INSERTER_PLUGIN_IMAGES_URL.'icon-50x50.jpg', ); if (function_exists ('ai_dst_settings')) ai_dst_settings ($dst_settings); $ai_dst = new DST_Client ($dst_settings); } function ai_notice_text ($text) { $text = // translators: Opt-in message: Thank you for installing Ad Inserter (plugin name with HTML tags will be added) __("Thank you for installing", 'ad-inserter') . ' [STRONG][NAME][/STRONG]. ' . // translators: Opt-in message: %s: HTML tags sprintf (__("We would like to %s track its usage %s on your site. This is completely optional and can be disabled at any time.", 'ad-inserter'), '<a href="https://wordpress.org/plugins/ad-inserter/#privacy%20policy%20-%20plugin%20usage%20tracking" target=_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>') . '[P]' . __("We don't record any sensitive data, only information regarding the WordPress environment and plugin usage, which will help us to make improvements to the plugin.", 'ad-inserter'); return $text; } function ai_dst_options ($options) { global $ai_db_options, $ai_db_options_extract; if (isset ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) && is_string ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) && strlen ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS]) != 0) { $used_blocks = count (unserialize ($ai_db_options_extract [AI_EXTRACT_USED_BLOCKS])); } else $used_blocks = ''; $install_timestamp = get_option (AI_INSTALL_NAME); if ($install_timestamp) { $install_date = $install_timestamp; } else $install_date = ''; if (isset ($ai_db_options [AI_OPTION_GLOBAL]['TIMESTAMP'])) { $settings_date = $ai_db_options [AI_OPTION_GLOBAL]['TIMESTAMP']; } else $settings_date = ''; $count_posts = wp_count_posts (); $options ['posts'] = is_numeric ($count_posts->publish) ? $count_posts->publish : 0; $options ['blocks'] = $used_blocks; $options ['installation'] = $install_date; $options ['settings'] = $settings_date; $options ['notice_review'] = ($review = get_option ('ai-notice-review')) ? $review : ''; $options ['remote_debugging'] = get_remote_debugging (); $options ['block_class'] = get_block_class_name (); if (function_exists ('ai_dst_options_2')) ai_dst_options_2 ($options); return ($options); } function ai_dst_form_text ($form) { $form ['body'] = '</p>' . // translators: Deactivation message: %s: HTML tags sprintf (__("Looking for %s Documentation, %s %s Common Settings, %s %s Quick Start %s or help for %s AdSense ads? %s The plugin doesn't work with your theme? %s Let us know %s and we'll try to help you.", 'ad-inserter'), '<a href="https://adinserter.pro/documentation" target="_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>', '<a href="https://adinserter.pro/documentation/common-settings" target="_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>', '<a href="https://adinserter.pro/documentation/quick-start" target="_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>', '<a href="https://adinserter.pro/documentation/adsense-ads" target="_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>', '<a href="https://adinserter.pro/contact#help" target="_blank" style="text-decoration: none; box-shadow: 0 0 0;">', '</a>') . '<hr /><p>' . $form ['body']; return ($form); } add_filter (DST_Client::DST_FILTER_OPTIN_NOTICE_TEXT . AD_INSERTER_SLUG, 'ai_notice_text'); add_filter (DST_Client::DST_FILTER_OPTIONS . AD_INSERTER_SLUG, 'ai_dst_options'); add_filter (DST_Client::DST_FILTER_FORM_TEXT . AD_INSERTER_SLUG, 'ai_dst_form_text'); ai_start_dst (); } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { if (!$ai_processing_time_active) { $ai_total_plugin_time += microtime (true) - $start_time; $ai_wp_data [AI_PROCESSING_TIME] = false; } ai_log ("PLUGINS LOADED INSTALL DST END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } } if (($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0) { $ai_total_plugin_time += microtime (true) - $start_time; ai_log ("INITIALIZATION END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } // =========================================================================================== // PHP class name as registered AI widget if (!class_exists ('ai_widget')) { class ai_widget extends WP_Widget { function __construct () { parent::__construct ( false, // Base ID AD_INSERTER_NAME, // Name array ( // Args // 'classname' => 'ai_widget', 'classname' => 'block-widget', // translators: %s: Ad Inserter 'description' => sprintf (__('%s block.', 'ad-inserter'), AD_INSERTER_NAME) ) ); } function form ($instance) { global $block_object; // Output admin widget options form $widget_title = !empty ($instance ['widget-title']) ? $instance ['widget-title'] : ''; $block = isset ($instance ['block']) ? $instance ['block'] : 1; if ($block > 96) $block = 1; $sticky = isset ($instance ['sticky']) ? $instance ['sticky'] : 0; // translators: widget title if ($block == 0) $title = __('Processing log', 'ad-inserter'); // translators: widget title elseif ($block == - 1) $title = __('Dummy widget', 'ad-inserter'); // translators: widget title elseif ($block == - 2) $title = __('Debugging tools', 'ad-inserter'); elseif ($block >= 1) { $obj = $block_object [$block]; $title = '[' . $block . '] ' . $obj->get_ad_name(); if (!empty ($widget_title)) $title .= ' - ' . $widget_title; // translators: block status (widget title) if ($obj->get_disable_insertion ()) $title .= ' - ' . _x('PAUSED', 'block', 'ad-inserter') . ' '; if (!$obj->get_enable_widget ()) $title .= ' - ' . __('WIDGET DISABLED', 'ad-inserter'); } else $title = __('Unknown block', 'ad-inserter'); $url_parameters = '&start=' . (intval (($block - 1) / 16) * 16 + 1); $settings_page = get_menu_position () == AI_SETTINGS_SUBMENU ? 'options-general.php?page=ad-inserter.php' : 'admin.php?page=ad-inserter.php'; ?> <input id="<?php echo $this->get_field_id ('title'); ?>" name="<?php echo $this->get_field_name ('title'); ?>" type="hidden" value="<?php echo esc_attr ($title); ?>"> <p> <label for="<?php echo $this->get_field_id ('widget-title'); ?>"><?php _e('Title', 'ad-inserter'); ?>: </label> <input id="<?php echo $this->get_field_id ('widget-title'); ?>" name="<?php echo $this->get_field_name ('widget-title'); ?>" type="text" value="<?php echo esc_attr ($widget_title); ?>" style="width: 100%;"> </p> <p> <label for="<?php echo $this->get_field_id ('block'); ?>"><a href='<?php echo admin_url ($settings_page), $url_parameters, "&tab=", $block; ?>' title='Click for block settings' style='text-decoration: none;'><?php _e('Block', 'ad-inserter'); ?></a>:</label> <select id="<?php echo $this->get_field_id ('block'); ?>" name="<?php echo $this->get_field_name('block'); ?>" style="width: 100%;"> <?php for ($block_index = 1; $block_index <= 96; $block_index ++) { $obj = $block_object [$block_index]; ?> <option value='<?php echo $block_index; ?>' <?php if ($block_index == $block) echo 'selected="selected"'; ?>><?php echo $block_index, ' - ', $obj->get_ad_name(), $obj->get_disable_insertion () ? ' - PAUSED' : ''; ?></option> <?php } ?> <option value='-2' <?php if ($block == - 2) echo 'selected="selected"'; ?>><?php _e('Debugging tools', 'ad-inserter'); ?></option> <option value='0' <?php if ($block == 0) echo 'selected="selected"'; ?>><?php _e('Processing log', 'ad-inserter'); ?></option> <option value='-1' <?php if ($block == - 1) echo 'selected="selected"'; ?>><?php _e('Dummy widget', 'ad-inserter'); ?></option> </select> </p> <p> <input type="hidden" name='<?php echo $this->get_field_name ('sticky'); ?>' value="0" /> <input type='checkbox' id='<?php echo $this->get_field_id ('sticky'); ?>' name='<?php echo $this->get_field_name ('sticky'); ?>' value='1' <?php if ($sticky) echo 'checked '; ?>> <label for='<?php echo $this->get_field_id ('sticky'); ?>'><?php _ex('Sticky', 'Widget', 'ad-inserter'); ?></label> </p> <?php } function update ($new_instance, $old_instance) { // Save widget options $instance = $old_instance; $instance ['widget-title'] = (!empty ($new_instance ['widget-title'])) ? strip_tags ($new_instance ['widget-title']) : ''; $instance ['title'] = (!empty ($new_instance ['title'])) ? ($new_instance ['title']) : ''; $instance ['block'] = (isset ($new_instance ['block'])) ? $new_instance ['block'] : 1; $instance ['sticky'] = (isset ($new_instance ['sticky'])) ? $new_instance ['sticky'] : 0; return $instance; } function widget ($args, $instance) { global $ai_last_check, $ai_wp_data, $ai_total_plugin_time; $debug_processing = ($ai_wp_data [AI_WP_DEBUGGING] & AI_DEBUG_PROCESSING) != 0; if ($debug_processing) $start_time = microtime (true); $ai_last_check = AI_CHECK_NONE; $block = 0; if ($debug_processing) ai_debug_widget_comment ('widget'); ai_widget_draw ($args, $instance, $block); if ($debug_processing) ai_debug_widget_comment ('widget', true); if ($debug_processing) { $ai_total_plugin_time += microtime (true) - $start_time; if ($ai_last_check != AI_CHECK_NONE) ai_log (ai_log_block_status ($block, $ai_last_check)); ai_log ("WIDGET END: ". number_format (1000 * (microtime (true) - $start_time), 2)." ms\n"); } } } } } else { if (!function_exists ('ai_activation_error')) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; function ai_activation_error () { ?> <div class="notice notice-error is-dismissible"> <div class="ai-notice-element"> <img src="<?php echo AD_INSERTER_PLUGIN_IMAGES_URL; ?>icon-50x50.jpg" style="width: 50px; margin: 5px 10px 0px 10px;" /> </div> <div class="ai-notice-element" style="width: 100%; padding: 0 10px 0;"> <p><?php _e("Ad Inserter can't be used while Ad Inserter Pro is active! To activate Ad Inserter you need to first deactivate Ad Inserter Pro.", 'ad-inserter'); ?></p> <p><?php _e("<strong>WARNING</strong>: Please note that saving settings in Ad Inserter will clear all settings that are available only in the Pro version (additional block and plugin settings)!", 'ad-inserter'); ?></p> </div> </div> <?php } unset ($_GET ['activate']); deactivate_plugins ('ad-inserter/ad-inserter.php'); add_action ('admin_notices', 'ai_activation_error'); } }