home
/
aioutajg
/
unblockedgames247.com
/
wp-content
/
plugins
/
ad-inserter
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] css
N/A
[DIR] images
N/A
[DIR] includes
N/A
[DIR] js
N/A
[DIR] languages
N/A
ad-inserter.php
542.00 KB
Rename
Delete
changelog.txt
34.51 KB
Rename
Delete
class.php
464.33 KB
Rename
Delete
constants.php
68.84 KB
Rename
Delete
index.html
44 bytes
Rename
Delete
readme.txt
29.52 KB
Rename
Delete
settings.php
406.96 KB
Rename
Delete
strings.php
21.03 KB
Rename
Delete
<?php /* Plugin Name: Ad Inserter Version: 2.8.1 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.0 Requires PHP: 7.4 License: GPLv3 */ /* Change Log Ad Inserter 2.8.1 - 2025-02-12 - Updated depercated backend jQuery code - Fix for reflected cross-site scripting (XSS) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.8.0 - 2025-01-21 - Replaced placeholder image generator service - changed to dummyimage.com - Fix for false ad blocking detection when using external scripts - Security fix for potential cross site scripting (Pro only) - Added support to show rotation options in the list of blocks - Added support for custom reports for clients (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.39 - 2024-12-17 - Improved frontend code - Fix for warning "Function _load_textdomain_just_in_time was called incorrectly" - Updated Maxmind library (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.38 - 2024-10-03 - Security fix for potential cross site scripting Ad Inserter 2.7.37 - 2024-09-16 - Removed deprecated setting Wait for jQuery - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.36 - 2024-08-11 - Added support for WPML languages in the taxonomy list - Added support to disable caching for LiteSpeed Cache and WP Fastest Cache plugins - Added support to define the minimal block height for the close button to appear (Pro only) - Few minor bug fixes, cosmetic changes and code improvements Ad Inserter 2.7.35 - 2024-04-23 - Added support for "Simple History � user activity log, audit tool" plugin - Added support for external tracking for Google Tag Manager code (Pro only) - Few minor bug fixes, cosmetic changes and code improvements 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); // LiteSpeed Cache do_action ('litespeed_control_set_nocache', /* translators: %s: Ad Inserter */ sprintf (__('Caching disabled by %s settings', 'ad-inserter'), AD_INSERTER_NAME)); // WP Fastest Cache if (function_exists ('wpfc_exclude_current_page')) { wpfc_exclude_current_page (); } 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 ())); if (!isset ($rest_url ['path'])) { return false; } // 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]) ? esc_js (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_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_GTM')) { $code .= '<object id="ai-adb-gtm" data="https://www.googletagmanager.com/gtag/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']) ? strip_tags ($_SERVER ['SERVER_ADDR']) : '', "\n"; echo "HTTP_CF_CONNECTING_IP: ", isset ($_SERVER ['HTTP_CF_CONNECTING_IP']) ? strip_tags ($_SERVER ['HTTP_CF_CONNECTING_IP']) : '', "\n"; echo "HTTP_CLIENT_IP: ", isset ($_SERVER ['HTTP_CLIENT_IP']) ? strip_tags ($_SERVER ['HTTP_CLIENT_IP']) : '', "\n"; echo "HTTP_INCAP_CLIENT_IP: ", isset ($_SERVER ['HTTP_INCAP_CLIENT_IP']) ? strip_tags ($_SERVER ['HTTP_INCAP_CLIENT_IP']) : '', "\n"; echo "HTTP_X_FORWARDED_FOR: ", isset ($_SERVER ['HTTP_X_FORWARDED_FOR']) ? strip_tags ($_SERVER ['HTTP_X_FORWARDED_FOR']) : '', "\n"; echo "HTTP_X_FORWARDED: ", isset ($_SERVER ['HTTP_X_FORWARDED']) ? strip_tags ($_SERVER ['HTTP_X_FORWARDED']) : '', "\n"; echo "HTTP_X_CLUSTER_CLIENT_IP:", isset ($_SERVER ['HTTP_X_CLUSTER_CLIENT_IP']) ? strip_tags ($_SERVER ['HTTP_X_CLUSTER_CLIENT_IP']) : '', "\n"; echo "HTTP_FORWARDED_FOR: ", isset ($_SERVER ['HTTP_FORWARDED_FOR']) ? strip_tags ($_SERVER ['HTTP_FORWARDED_FOR']) : '', "\n"; echo "HTTP_FORWARDED: ", isset ($_SERVER ['HTTP_FORWARDED']) ? strip_tags ($_SERVER ['HTTP_FORWARDED']) : '', "\n"; echo "REMOTE_ADDR: ", isset ($_SERVER ['REMOTE_ADDR']) ? strip_tags ($_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')) { ai_check_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; // Deprecated - return false return false; 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'); // Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ad-inserter domain was triggered too early. $obj->wp_options [AI_OPTION_BLOCK_NAME] = 'Default'; $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://dummyimage.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); $history_string = __('plugin settings imported', 'ad-inserter'); } } else { // Try to import individual settings $ai_options = array (); $history_string = sprintf (__('blocks %d to %d', 'ad-inserter'), $start, $end); $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) { $history_string = sprintf (__('block %d settings imported', 'ad-inserter'), $block); $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); // Restore settings not submitted if (isset ($ai_db_options [AI_OPTION_GLOBAL]['CUSTOM_REPORTS'])) { $ai_options [AI_OPTION_GLOBAL]['CUSTOM_REPORTS'] = $ai_db_options [AI_OPTION_GLOBAL]['CUSTOM_REPORTS']; } 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>'; apply_filters ('simple_history_log', AD_INSERTER_NAME . ' ' . __('settings saved', 'ad-inserter') . ' (' . $history_string . ')'); } 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>'; apply_filters ('simple_history_log', AD_INSERTER_NAME . ' ' . __('settings cleared', 'ad-inserter')); } 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; } } if (has_filter ('wpml_active_languages') !== false) { $wpml_active_languages = apply_filters ('wpml_active_languages', null, 'orderby=id&order=desc'); if (!empty ($wpml_active_languages)) { foreach ($wpml_active_languages as $language_code => $language) { $taxonomies ['wpml-current-language:' . $language_code] = esc_html ($language ['native_name']); } } } 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 // Not possible when there is more than one tag - the second and next tag positions are counting content from the beginning if (count ($paragraph_start_strings) == 1 && 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 ($multibyte) { $last_content_position = mb_strlen ($content) - 1; } else { $last_content_position = strlen ($content) - 1; } 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 { // Weird timeout if (strlen ($paragraph_end) >= 4) while (stripos ($content, $paragraph_end, $last_position + 1) !== false) { // echo strlen ($content), ' ', strlen ($paragraph_end), "<br />\n"; $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 // Not possible when there is more than one tag - the second and next tag positions are counting content from the beginning if (count ($paragraph_end_strings) == 1 && 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'); } }
Save