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.../trunk/classes
File: Triggers.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Class for Triggers
[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 if accessed directly.
[9] Fix | Delete
exit;
[10] Fix | Delete
}
[11] Fix | Delete
[12] Fix | Delete
/**
[13] Fix | Delete
* Class PUM_Triggers
[14] Fix | Delete
*/
[15] Fix | Delete
class PUM_Triggers {
[16] Fix | Delete
[17] Fix | Delete
/**
[18] Fix | Delete
* @var PUM_Triggers
[19] Fix | Delete
*/
[20] Fix | Delete
public static $instance;
[21] Fix | Delete
[22] Fix | Delete
/**
[23] Fix | Delete
* @var bool
[24] Fix | Delete
*/
[25] Fix | Delete
public $preload_posts = false;
[26] Fix | Delete
[27] Fix | Delete
/**
[28] Fix | Delete
* @var array
[29] Fix | Delete
*/
[30] Fix | Delete
public $triggers;
[31] Fix | Delete
[32] Fix | Delete
/**
[33] Fix | Delete
* Initializes the triggers.
[34] Fix | Delete
*/
[35] Fix | Delete
public static function init() {
[36] Fix | Delete
self::instance();
[37] Fix | Delete
}
[38] Fix | Delete
[39] Fix | Delete
/**
[40] Fix | Delete
* Creates the triggers instance.
[41] Fix | Delete
*
[42] Fix | Delete
* @return PUM_Triggers
[43] Fix | Delete
*/
[44] Fix | Delete
public static function instance() {
[45] Fix | Delete
if ( ! isset( self::$instance ) ) {
[46] Fix | Delete
self::$instance = new self();
[47] Fix | Delete
self::$instance->preload_posts = pum_is_popup_editor();
[48] Fix | Delete
}
[49] Fix | Delete
[50] Fix | Delete
return self::$instance;
[51] Fix | Delete
}
[52] Fix | Delete
[53] Fix | Delete
/**
[54] Fix | Delete
* Adds an array of triggers to the initialized triggers.
[55] Fix | Delete
*
[56] Fix | Delete
* @param array $triggers The array of triggers to add.
[57] Fix | Delete
* @uses PUM_Triggers::add_trigger()
[58] Fix | Delete
*/
[59] Fix | Delete
public function add_triggers( $triggers = [] ) {
[60] Fix | Delete
foreach ( $triggers as $key => $trigger ) {
[61] Fix | Delete
if ( empty( $trigger['id'] ) && ! is_numeric( $key ) ) {
[62] Fix | Delete
$trigger['id'] = $key;
[63] Fix | Delete
}
[64] Fix | Delete
[65] Fix | Delete
$this->add_trigger( $trigger );
[66] Fix | Delete
}
[67] Fix | Delete
}
[68] Fix | Delete
[69] Fix | Delete
/**
[70] Fix | Delete
* Initializes a single trigger
[71] Fix | Delete
*
[72] Fix | Delete
* @param array $trigger The trigger array.
[73] Fix | Delete
*/
[74] Fix | Delete
public function add_trigger( $trigger = [] ) {
[75] Fix | Delete
if ( ! empty( $trigger['id'] ) && ! isset( $this->triggers[ $trigger['id'] ] ) ) {
[76] Fix | Delete
$trigger = wp_parse_args(
[77] Fix | Delete
$trigger,
[78] Fix | Delete
[
[79] Fix | Delete
'id' => '',
[80] Fix | Delete
'name' => '',
[81] Fix | Delete
'modal_title' => '',
[82] Fix | Delete
'settings_column' => '',
[83] Fix | Delete
'priority' => 10,
[84] Fix | Delete
'tabs' => $this->get_tabs(),
[85] Fix | Delete
'fields' => [],
[86] Fix | Delete
]
[87] Fix | Delete
);
[88] Fix | Delete
[89] Fix | Delete
if ( empty( $trigger['modal_title'] ) && ! empty( $trigger['name'] ) ) {
[90] Fix | Delete
$trigger['modal_title'] = sprintf( _x( '%s Trigger Settings', 'trigger settings modal title', 'popup-maker' ), $trigger['name'] );
[91] Fix | Delete
}
[92] Fix | Delete
[93] Fix | Delete
// Here for backward compatibility to merge in labels properly.
[94] Fix | Delete
$labels = $this->get_labels();
[95] Fix | Delete
$trigger_labels = isset( $labels[ $trigger['id'] ] ) ? $labels[ $trigger['id'] ] : [];
[96] Fix | Delete
[97] Fix | Delete
if ( ! empty( $trigger_labels ) ) {
[98] Fix | Delete
foreach ( $trigger_labels as $key => $value ) {
[99] Fix | Delete
if ( empty( $trigger[ $key ] ) ) {
[100] Fix | Delete
$trigger[ $key ] = $value;
[101] Fix | Delete
}
[102] Fix | Delete
}
[103] Fix | Delete
}
[104] Fix | Delete
[105] Fix | Delete
// Remove cookie fields.
[106] Fix | Delete
if ( ! empty( $trigger['fields']['cookie'] ) ) {
[107] Fix | Delete
unset( $trigger['fields']['cookie'] );
[108] Fix | Delete
}
[109] Fix | Delete
[110] Fix | Delete
// Add cookie fields for all triggers automatically.
[111] Fix | Delete
if ( empty( $trigger['fields']['general']['cookie_name'] ) ) {
[112] Fix | Delete
$trigger['fields']['general'] = array_merge( $trigger['fields']['general'], $this->cookie_fields() );
[113] Fix | Delete
}
[114] Fix | Delete
[115] Fix | Delete
$this->triggers[ $trigger['id'] ] = apply_filters( 'pum_trigger', $trigger );
[116] Fix | Delete
}
[117] Fix | Delete
}
[118] Fix | Delete
[119] Fix | Delete
/**
[120] Fix | Delete
* Retrieves all initialized triggers.
[121] Fix | Delete
*
[122] Fix | Delete
* @return array The triggers
[123] Fix | Delete
*/
[124] Fix | Delete
public function get_triggers() {
[125] Fix | Delete
if ( ! isset( $this->triggers ) ) {
[126] Fix | Delete
$this->register_triggers();
[127] Fix | Delete
}
[128] Fix | Delete
[129] Fix | Delete
return $this->triggers;
[130] Fix | Delete
}
[131] Fix | Delete
[132] Fix | Delete
/**
[133] Fix | Delete
* Retrieves a single trigger by the trigger key
[134] Fix | Delete
*
[135] Fix | Delete
* @param string|null $trigger The key for the trigger.
[136] Fix | Delete
* @return mixed|null The trigger array or null if none found
[137] Fix | Delete
*/
[138] Fix | Delete
public function get_trigger( $trigger = null ) {
[139] Fix | Delete
$triggers = $this->get_triggers();
[140] Fix | Delete
[141] Fix | Delete
return isset( $triggers[ $trigger ] ) ? $triggers[ $trigger ] : null;
[142] Fix | Delete
}
[143] Fix | Delete
[144] Fix | Delete
/**
[145] Fix | Delete
* @param null $trigger
[146] Fix | Delete
* @param array $settings
[147] Fix | Delete
*
[148] Fix | Delete
* @return array
[149] Fix | Delete
* @deprecated
[150] Fix | Delete
*/
[151] Fix | Delete
public function validate_trigger( $trigger = null, $settings = [] ) {
[152] Fix | Delete
return $settings;
[153] Fix | Delete
}
[154] Fix | Delete
[155] Fix | Delete
/**
[156] Fix | Delete
* Registers all known triggers when called.
[157] Fix | Delete
*
[158] Fix | Delete
* @uses PUM_Triggers::add_triggers()
[159] Fix | Delete
*/
[160] Fix | Delete
public function register_triggers() {
[161] Fix | Delete
$triggers = apply_filters(
[162] Fix | Delete
'pum_registered_triggers',
[163] Fix | Delete
[
[164] Fix | Delete
'click_open' => [
[165] Fix | Delete
'name' => __( 'Click Open', 'popup-maker' ),
[166] Fix | Delete
'modal_title' => __( 'Click Trigger Settings', 'popup-maker' ),
[167] Fix | Delete
'settings_column' => sprintf( '<strong>%1$s</strong>: %2$s', __( 'Extra Selectors', 'popup-maker' ), '{{data.extra_selectors}}' ),
[168] Fix | Delete
'fields' => [
[169] Fix | Delete
'general' => [
[170] Fix | Delete
'click_info' => [
[171] Fix | Delete
'type' => 'html',
[172] Fix | Delete
'content' => '<p>' . __( 'Adding the class "popmake-<span id="pum-default-click-trigger-class">{popup-ID}</span>" to an element will trigger it to be opened once clicked. Additionally you can add additional CSS selectors below.', 'popup-maker' ) . '</p>',
[173] Fix | Delete
],
[174] Fix | Delete
'extra_selectors' => [
[175] Fix | Delete
'label' => __( 'Extra CSS Selectors', 'popup-maker' ),
[176] Fix | Delete
'desc' => __( 'For more than one selector, separate by comma (,)', 'popup-maker' ) . '<br /><strong>eg: </strong>' . __( ' .class-here, .class-2-here, #button_id', 'popup-maker' ),
[177] Fix | Delete
'placeholder' => __( '.class-here', 'popup-maker' ),
[178] Fix | Delete
'doclink' => 'https://docs.wppopupmaker.com/article/147-getting-css-selectors?utm_campaign=contextual-help&utm_medium=inline-doclink&utm_source=plugin-popup-editor&utm_content=extra-selectors',
[179] Fix | Delete
],
[180] Fix | Delete
],
[181] Fix | Delete
'advanced' => [
[182] Fix | Delete
'do_default' => [
[183] Fix | Delete
'type' => 'checkbox',
[184] Fix | Delete
'label' => __( 'Do not prevent the default click functionality.', 'popup-maker' ),
[185] Fix | Delete
'desc' => __( 'This prevents us from disabling the browsers default action when a trigger is clicked. It can be used to allow a link to a file to both trigger a popup and still download the file.', 'popup-maker' ),
[186] Fix | Delete
],
[187] Fix | Delete
],
[188] Fix | Delete
],
[189] Fix | Delete
],
[190] Fix | Delete
'auto_open' => [
[191] Fix | Delete
'name' => __( 'Time Delay / Auto Open', 'popup-maker' ),
[192] Fix | Delete
'modal_title' => __( 'Time Delay Settings', 'popup-maker' ),
[193] Fix | Delete
'settings_column' => sprintf( '<strong>%1$s</strong>: %2$s', __( 'Delay', 'popup-maker' ), '{{data.delay}}' ),
[194] Fix | Delete
'fields' => [
[195] Fix | Delete
'general' => [
[196] Fix | Delete
'delay' => [
[197] Fix | Delete
'type' => 'rangeslider',
[198] Fix | Delete
'label' => __( 'Delay', 'popup-maker' ),
[199] Fix | Delete
'desc' => __( 'The delay before the popup will open in milliseconds.', 'popup-maker' ),
[200] Fix | Delete
'std' => 500,
[201] Fix | Delete
'min' => 0,
[202] Fix | Delete
'max' => 10000,
[203] Fix | Delete
'step' => 500,
[204] Fix | Delete
'unit' => 'ms',
[205] Fix | Delete
],
[206] Fix | Delete
],
[207] Fix | Delete
],
[208] Fix | Delete
],
[209] Fix | Delete
'form_submission' => [
[210] Fix | Delete
'name' => __( 'Form Submission', 'popup-maker' ),
[211] Fix | Delete
// 'settings_column' => sprintf( '<strong>%1$s</strong>: %2$s', __( 'Form', 'popup-maker' ), '' ),
[212] Fix | Delete
'fields' => [
[213] Fix | Delete
'general' => [
[214] Fix | Delete
'form' => [
[215] Fix | Delete
'type' => 'select',
[216] Fix | Delete
'label' => __( 'Form', 'popup-maker' ),
[217] Fix | Delete
'options' => $this->preload_posts ? array_merge(
[218] Fix | Delete
[
[219] Fix | Delete
'any' => __( 'Any Supported Form*', 'popup-maker' ),
[220] Fix | Delete
__( 'Popup Maker', 'popup-maker' ) => [
[221] Fix | Delete
'pumsubform' => __( 'Subscription Form', 'popup-maker' ),
[222] Fix | Delete
],
[223] Fix | Delete
],
[224] Fix | Delete
PUM_Integrations::get_integrated_forms_selectlist()
[225] Fix | Delete
) : [],
[226] Fix | Delete
'std' => 'any',
[227] Fix | Delete
],
[228] Fix | Delete
'delay' => [
[229] Fix | Delete
'type' => 'rangeslider',
[230] Fix | Delete
'label' => __( 'Delay', 'popup-maker' ),
[231] Fix | Delete
'desc' => __( 'The delay before the popup will open in milliseconds.', 'popup-maker' ),
[232] Fix | Delete
'std' => 0,
[233] Fix | Delete
'min' => 0,
[234] Fix | Delete
'max' => 10000,
[235] Fix | Delete
'step' => 500,
[236] Fix | Delete
'unit' => 'ms',
[237] Fix | Delete
],
[238] Fix | Delete
],
[239] Fix | Delete
],
[240] Fix | Delete
],
[241] Fix | Delete
]
[242] Fix | Delete
);
[243] Fix | Delete
[244] Fix | Delete
foreach ( $triggers as $key => $trigger ) {
[245] Fix | Delete
$triggers[ $key ]['fields'] = PUM_Admin_Helpers::parse_tab_fields(
[246] Fix | Delete
$triggers[ $key ]['fields'],
[247] Fix | Delete
[
[248] Fix | Delete
'has_subtabs' => false,
[249] Fix | Delete
'name' => '%s',
[250] Fix | Delete
]
[251] Fix | Delete
);
[252] Fix | Delete
}
[253] Fix | Delete
[254] Fix | Delete
// @deprecated filter.
[255] Fix | Delete
$old_triggers = apply_filters( 'pum_get_triggers', [] );
[256] Fix | Delete
[257] Fix | Delete
foreach ( $old_triggers as $type => $trigger ) {
[258] Fix | Delete
if ( isset( $triggers[ $type ] ) ) {
[259] Fix | Delete
continue;
[260] Fix | Delete
}
[261] Fix | Delete
[262] Fix | Delete
if ( ! empty( $trigger['fields'] ) ) {
[263] Fix | Delete
foreach ( $trigger['fields'] as $tab_id => $tab_fields ) {
[264] Fix | Delete
foreach ( $tab_fields as $field_id => $field ) {
[265] Fix | Delete
if ( ! empty( $field['options'] ) ) {
[266] Fix | Delete
$trigger['fields'][ $tab_id ][ $field_id ]['options'] = array_flip( $trigger['fields'][ $tab_id ][ $field_id ]['options'] );
[267] Fix | Delete
}
[268] Fix | Delete
}
[269] Fix | Delete
}
[270] Fix | Delete
}
[271] Fix | Delete
[272] Fix | Delete
$triggers[ $type ] = $trigger;
[273] Fix | Delete
}
[274] Fix | Delete
[275] Fix | Delete
$this->add_triggers( $triggers );
[276] Fix | Delete
}
[277] Fix | Delete
[278] Fix | Delete
/**
[279] Fix | Delete
* Prepares an array to create a dropdown list of triggers
[280] Fix | Delete
*
[281] Fix | Delete
* @return array An array of triggers with ID as key and name as value
[282] Fix | Delete
*/
[283] Fix | Delete
public function dropdown_list() {
[284] Fix | Delete
$_triggers = $this->get_triggers();
[285] Fix | Delete
$triggers = [];
[286] Fix | Delete
[287] Fix | Delete
foreach ( $_triggers as $id => $trigger ) {
[288] Fix | Delete
$triggers[ $id ] = $trigger['name'];
[289] Fix | Delete
}
[290] Fix | Delete
[291] Fix | Delete
return $triggers;
[292] Fix | Delete
}
[293] Fix | Delete
[294] Fix | Delete
/**
[295] Fix | Delete
* Returns the cookie fields used for trigger options.
[296] Fix | Delete
*
[297] Fix | Delete
* @return array
[298] Fix | Delete
* @uses filter pum_trigger_cookie_fields
[299] Fix | Delete
*/
[300] Fix | Delete
public function cookie_fields() {
[301] Fix | Delete
[302] Fix | Delete
/**
[303] Fix | Delete
* Filter the array of default trigger cookie fields.
[304] Fix | Delete
*
[305] Fix | Delete
* @param array $fields The list of trigger cookie fields.
[306] Fix | Delete
*/
[307] Fix | Delete
return apply_filters(
[308] Fix | Delete
'pum_trigger_cookie_fields',
[309] Fix | Delete
[
[310] Fix | Delete
'cookie_name' => $this->cookie_field(),
[311] Fix | Delete
]
[312] Fix | Delete
);
[313] Fix | Delete
}
[314] Fix | Delete
[315] Fix | Delete
/**
[316] Fix | Delete
* Returns the cookie field used for trigger options.
[317] Fix | Delete
*
[318] Fix | Delete
* @return array
[319] Fix | Delete
* @uses filter pum_trigger_cookie_field
[320] Fix | Delete
*/
[321] Fix | Delete
public function cookie_field() {
[322] Fix | Delete
[323] Fix | Delete
/**
[324] Fix | Delete
* Filter the array of default trigger cookie field.
[325] Fix | Delete
*
[326] Fix | Delete
* @param array $fields The list of trigger cookie field.
[327] Fix | Delete
*/
[328] Fix | Delete
return apply_filters(
[329] Fix | Delete
'pum_trigger_cookie_field',
[330] Fix | Delete
[
[331] Fix | Delete
'label' => __( 'Cookie Name', 'popup-maker' ),
[332] Fix | Delete
'desc' => __( 'Choose which cookies will disable this trigger?', 'popup-maker' ),
[333] Fix | Delete
'type' => 'select',
[334] Fix | Delete
'multiple' => true,
[335] Fix | Delete
'as_array' => true,
[336] Fix | Delete
'select2' => true,
[337] Fix | Delete
'priority' => 99,
[338] Fix | Delete
'options' => [
[339] Fix | Delete
'add_new' => __( 'Add New Cookie', 'popup-maker' ),
[340] Fix | Delete
],
[341] Fix | Delete
]
[342] Fix | Delete
);
[343] Fix | Delete
}
[344] Fix | Delete
[345] Fix | Delete
/**
[346] Fix | Delete
* Returns an array of section labels for all triggers.
[347] Fix | Delete
*
[348] Fix | Delete
* Use the filter pum_get_trigger_section_labels to add or modify labels.
[349] Fix | Delete
*
[350] Fix | Delete
* @return array
[351] Fix | Delete
*/
[352] Fix | Delete
public function get_tabs() {
[353] Fix | Delete
/**
[354] Fix | Delete
* Filter the array of trigger section labels.
[355] Fix | Delete
*
[356] Fix | Delete
* @param array $to_do The list of trigger section labels.
[357] Fix | Delete
*/
[358] Fix | Delete
return apply_filters(
[359] Fix | Delete
'pum_get_trigger_tabs',
[360] Fix | Delete
[
[361] Fix | Delete
'general' => __( 'General', 'popup-maker' ),
[362] Fix | Delete
'cookie' => __( 'Cookie', 'popup-maker' ),
[363] Fix | Delete
'advanced' => __( 'Advanced', 'popup-maker' ),
[364] Fix | Delete
]
[365] Fix | Delete
);
[366] Fix | Delete
}
[367] Fix | Delete
[368] Fix | Delete
/**
[369] Fix | Delete
* Returns an array of trigger labels.
[370] Fix | Delete
*
[371] Fix | Delete
* Use the filter pum_get_trigger_labels to add or modify labels.
[372] Fix | Delete
*
[373] Fix | Delete
* @return array
[374] Fix | Delete
*/
[375] Fix | Delete
public function get_labels() {
[376] Fix | Delete
static $labels;
[377] Fix | Delete
[378] Fix | Delete
if ( ! isset( $labels ) ) {
[379] Fix | Delete
/**
[380] Fix | Delete
* Filter the array of trigger labels.
[381] Fix | Delete
*
[382] Fix | Delete
* @param array $to_do The list of trigger labels.
[383] Fix | Delete
*/
[384] Fix | Delete
$labels = apply_filters( 'pum_get_trigger_labels', [] );
[385] Fix | Delete
}
[386] Fix | Delete
[387] Fix | Delete
return $labels;
[388] Fix | Delete
}
[389] Fix | Delete
[390] Fix | Delete
[391] Fix | Delete
}
[392] Fix | Delete
[393] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function