Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-conte.../plugins/popup-ma.../classes/Site
File: Popups.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Site Popups
[2] Fix | Delete
*
[3] Fix | Delete
* @package PUM
[4] Fix | Delete
* @copyright Copyright (c) 2023, Code Atlantic LLC
[5] Fix | Delete
*/
[6] Fix | Delete
[7] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[8] Fix | Delete
exit;
[9] Fix | Delete
}
[10] Fix | Delete
[11] Fix | Delete
/**
[12] Fix | Delete
* Class Post_Types
[13] Fix | Delete
*/
[14] Fix | Delete
class PUM_Site_Popups {
[15] Fix | Delete
[16] Fix | Delete
/**
[17] Fix | Delete
* @var PUM_Popup|null
[18] Fix | Delete
*
[19] Fix | Delete
* @deprecated 1.8.0
[20] Fix | Delete
*/
[21] Fix | Delete
public static $current;
[22] Fix | Delete
[23] Fix | Delete
/**
[24] Fix | Delete
* @var WP_Query|null
[25] Fix | Delete
*/
[26] Fix | Delete
public static $loaded;
[27] Fix | Delete
[28] Fix | Delete
/**
[29] Fix | Delete
* @var array
[30] Fix | Delete
*/
[31] Fix | Delete
public static $cached_content = [];
[32] Fix | Delete
[33] Fix | Delete
/**
[34] Fix | Delete
* @var array
[35] Fix | Delete
*/
[36] Fix | Delete
public static $loaded_ids = [];
[37] Fix | Delete
[38] Fix | Delete
/**
[39] Fix | Delete
* Hook the initialize method to the WP init action.
[40] Fix | Delete
*/
[41] Fix | Delete
public static function init() {
[42] Fix | Delete
[43] Fix | Delete
// Preload the $loaded query.
[44] Fix | Delete
add_action( 'init', [ __CLASS__, 'get_loaded_popups' ] );
[45] Fix | Delete
[46] Fix | Delete
// Check content for popups.
[47] Fix | Delete
add_filter( 'the_content', [ __CLASS__, 'check_content_for_popups' ] );
[48] Fix | Delete
[49] Fix | Delete
// TODO determine if the late priority is needed.
[50] Fix | Delete
add_action( 'wp_enqueue_scripts', [ __CLASS__, 'load_popups' ], 11 );
[51] Fix | Delete
[52] Fix | Delete
add_action( 'wp_footer', [ __CLASS__, 'render_popups' ] );
[53] Fix | Delete
}
[54] Fix | Delete
[55] Fix | Delete
/**
[56] Fix | Delete
* Returns the current popup.
[57] Fix | Delete
*
[58] Fix | Delete
* @param bool|object|null $new_popup
[59] Fix | Delete
*
[60] Fix | Delete
* @return null|PUM_Model_Popup
[61] Fix | Delete
*
[62] Fix | Delete
* @deprecated 1.8.0
[63] Fix | Delete
*/
[64] Fix | Delete
public static function current_popup( $new_popup = false ) {
[65] Fix | Delete
global $popup;
[66] Fix | Delete
[67] Fix | Delete
if ( false !== $new_popup ) {
[68] Fix | Delete
pum()->current_popup = $new_popup;
[69] Fix | Delete
$popup = $new_popup;
[70] Fix | Delete
}
[71] Fix | Delete
[72] Fix | Delete
return pum()->current_popup;
[73] Fix | Delete
}
[74] Fix | Delete
[75] Fix | Delete
/**
[76] Fix | Delete
* Gets the loaded popup query.
[77] Fix | Delete
*
[78] Fix | Delete
* @return null|WP_Query
[79] Fix | Delete
*/
[80] Fix | Delete
public static function get_loaded_popups() {
[81] Fix | Delete
if ( ! self::$loaded instanceof WP_Query ) {
[82] Fix | Delete
self::$loaded = new WP_Query();
[83] Fix | Delete
self::$loaded->posts = [];
[84] Fix | Delete
}
[85] Fix | Delete
[86] Fix | Delete
return self::$loaded;
[87] Fix | Delete
}
[88] Fix | Delete
[89] Fix | Delete
/**
[90] Fix | Delete
* Preload popups in the head and determine if they will be rendered or not.
[91] Fix | Delete
*
[92] Fix | Delete
* @uses `pum_preload_popup` filter
[93] Fix | Delete
* @uses `popmake_preload_popup` filter
[94] Fix | Delete
*/
[95] Fix | Delete
public static function load_popups() {
[96] Fix | Delete
if ( is_admin() ) {
[97] Fix | Delete
return;
[98] Fix | Delete
}
[99] Fix | Delete
[100] Fix | Delete
$popups = pum_get_all_popups( [ 'post_status' => [ 'publish', 'private' ] ] );
[101] Fix | Delete
[102] Fix | Delete
if ( ! empty( $popups ) ) {
[103] Fix | Delete
[104] Fix | Delete
foreach ( $popups as $popup ) {
[105] Fix | Delete
// Set this popup as the global $current.
[106] Fix | Delete
pum()->current_popup = $popup;
[107] Fix | Delete
[108] Fix | Delete
// If the popup is loadable (passes conditions) load it.
[109] Fix | Delete
if ( pum_is_popup_loadable( $popup->ID ) ) {
[110] Fix | Delete
self::preload_popup( $popup );
[111] Fix | Delete
}
[112] Fix | Delete
}
[113] Fix | Delete
[114] Fix | Delete
// Clear the global $current.
[115] Fix | Delete
pum()->current_popup = null;
[116] Fix | Delete
}
[117] Fix | Delete
}
[118] Fix | Delete
[119] Fix | Delete
/**
[120] Fix | Delete
* Checks post content to see if there are popups we need to automagically load
[121] Fix | Delete
*
[122] Fix | Delete
* @param string $content The content from the filter.
[123] Fix | Delete
* @return string The content.
[124] Fix | Delete
* @since 1.15
[125] Fix | Delete
*/
[126] Fix | Delete
public static function check_content_for_popups( $content ) {
[127] Fix | Delete
[128] Fix | Delete
// Only search for popups in the main query of a singular page.
[129] Fix | Delete
if ( is_singular() && in_the_loop() && is_main_query() ) {
[130] Fix | Delete
/**
[131] Fix | Delete
* We want to detect instances of popmake-### but only within classes and not in the actual text.
[132] Fix | Delete
* So, we check to make sure it is wrapped by quotes to make sure it's in the class="" attribute
[133] Fix | Delete
* but also allow for whitespace and characters in case there are classes before or after it.
[134] Fix | Delete
*/
[135] Fix | Delete
preg_match_all( '/[\'\"][\s\w\-\_]*?popmake-(\d+)[\s\w\-\_]*?[\'\"]/', $content, $matches );
[136] Fix | Delete
[137] Fix | Delete
// Then, if we find any popups, let's preload it.
[138] Fix | Delete
foreach ( $matches[1] as $popup_id ) {
[139] Fix | Delete
self::preload_popup_by_id_if_enabled( $popup_id );
[140] Fix | Delete
}
[141] Fix | Delete
}
[142] Fix | Delete
[143] Fix | Delete
return $content;
[144] Fix | Delete
}
[145] Fix | Delete
[146] Fix | Delete
/**
[147] Fix | Delete
* Preloads popup, if enabled
[148] Fix | Delete
*
[149] Fix | Delete
* @param int $popup_id The popup's ID.
[150] Fix | Delete
* @since 1.15
[151] Fix | Delete
*/
[152] Fix | Delete
public static function preload_popup_by_id_if_enabled( $popup_id ) {
[153] Fix | Delete
if ( ! in_array( $popup_id, self::$loaded_ids ) ) {
[154] Fix | Delete
$popup = pum_get_popup( $popup_id );
[155] Fix | Delete
if ( $popup->is_enabled() ) {
[156] Fix | Delete
self::preload_popup( $popup );
[157] Fix | Delete
}
[158] Fix | Delete
}
[159] Fix | Delete
}
[160] Fix | Delete
[161] Fix | Delete
/**
[162] Fix | Delete
* @param PUM_Model_Popup $popup
[163] Fix | Delete
*/
[164] Fix | Delete
public static function preload_popup( $popup ) {
[165] Fix | Delete
// Bail early if the popup is preloaded already.
[166] Fix | Delete
if ( in_array( $popup->ID, self::$loaded_ids, true ) ) {
[167] Fix | Delete
return;
[168] Fix | Delete
}
[169] Fix | Delete
[170] Fix | Delete
// Add to the $loaded_ids list.
[171] Fix | Delete
self::$loaded_ids[] = $popup->ID;
[172] Fix | Delete
[173] Fix | Delete
// Add to the $loaded query.
[174] Fix | Delete
self::$loaded->posts[] = $popup;
[175] Fix | Delete
self::$loaded->post_count ++;
[176] Fix | Delete
[177] Fix | Delete
// Preprocess the content for shortcodes that need to enqueue their own assets.
[178] Fix | Delete
self::$cached_content[ $popup->ID ] = $popup->get_content();
[179] Fix | Delete
[180] Fix | Delete
// Fire off preload action.
[181] Fix | Delete
do_action( 'pum_preload_popup', $popup->ID );
[182] Fix | Delete
// Deprecated filter.
[183] Fix | Delete
do_action( 'popmake_preload_popup', $popup->ID );
[184] Fix | Delete
}
[185] Fix | Delete
[186] Fix | Delete
// REWRITE THIS
[187] Fix | Delete
public static function load_popup( $id ) {
[188] Fix | Delete
if ( did_action( 'wp_head' ) && ! in_array( $id, self::$loaded_ids ) ) {
[189] Fix | Delete
$args1 = [
[190] Fix | Delete
'post_type' => 'popup',
[191] Fix | Delete
'p' => $id,
[192] Fix | Delete
];
[193] Fix | Delete
$query = new WP_Query( $args1 );
[194] Fix | Delete
if ( $query->have_posts() ) {
[195] Fix | Delete
while ( $query->have_posts() ) :
[196] Fix | Delete
$query->next_post();
[197] Fix | Delete
pum()->current_popup = $query->post;
[198] Fix | Delete
self::preload_popup( $query->post );
[199] Fix | Delete
endwhile;
[200] Fix | Delete
pum()->current_popup = null;
[201] Fix | Delete
}
[202] Fix | Delete
}
[203] Fix | Delete
[204] Fix | Delete
return;
[205] Fix | Delete
}
[206] Fix | Delete
[207] Fix | Delete
[208] Fix | Delete
/**
[209] Fix | Delete
* Render the popups in the footer.
[210] Fix | Delete
*/
[211] Fix | Delete
public static function render_popups() {
[212] Fix | Delete
$loaded = self::get_loaded_popups();
[213] Fix | Delete
[214] Fix | Delete
if ( $loaded->have_posts() ) {
[215] Fix | Delete
while ( $loaded->have_posts() ) :
[216] Fix | Delete
$loaded->next_post();
[217] Fix | Delete
pum()->current_popup = $loaded->post;
[218] Fix | Delete
pum_template_part( 'popup' );
[219] Fix | Delete
endwhile;
[220] Fix | Delete
pum()->current_popup = null;
[221] Fix | Delete
}
[222] Fix | Delete
}
[223] Fix | Delete
[224] Fix | Delete
/**
[225] Fix | Delete
* @param $popup_id
[226] Fix | Delete
*
[227] Fix | Delete
* @return string|bool
[228] Fix | Delete
*/
[229] Fix | Delete
public static function get_cache_content( $popup_id ) {
[230] Fix | Delete
return isset( self::$cached_content[ $popup_id ] ) ? self::$cached_content[ $popup_id ] : false;
[231] Fix | Delete
}
[232] Fix | Delete
[233] Fix | Delete
}
[234] Fix | Delete
[235] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function