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/embedpre.../vendor/priyomuk.../wp-notic.../src
File: Dismiss.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace PriyoMukul\WPNotice;
[2] Fix | Delete
[3] Fix | Delete
use PriyoMukul\WPNotice\Utils\Base;
[4] Fix | Delete
use PriyoMukul\WPNotice\Utils\Helper;
[5] Fix | Delete
[6] Fix | Delete
#[\AllowDynamicProperties]
[7] Fix | Delete
class Dismiss extends Base {
[8] Fix | Delete
use Helper;
[9] Fix | Delete
[10] Fix | Delete
private $id;
[11] Fix | Delete
private $scope = 'user';
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* @var Notices
[15] Fix | Delete
*/
[16] Fix | Delete
private $app;
[17] Fix | Delete
private $hook;
[18] Fix | Delete
[19] Fix | Delete
public function __construct( $id, $options, $app ) {
[20] Fix | Delete
$this->id = $id;
[21] Fix | Delete
$this->app = $app;
[22] Fix | Delete
[23] Fix | Delete
if ( ! empty( $options ) ) {
[24] Fix | Delete
foreach ( $options as $key => $_value ) {
[25] Fix | Delete
$this->{$key} = $_value;
[26] Fix | Delete
}
[27] Fix | Delete
}
[28] Fix | Delete
[29] Fix | Delete
$this->hook = $this->app->app . '_wpnotice_dismiss_notice';
[30] Fix | Delete
[31] Fix | Delete
add_action( 'wp_ajax_' . $this->hook, [ $this, 'ajax_maybe_dismiss_notice' ] );
[32] Fix | Delete
}
[33] Fix | Delete
[34] Fix | Delete
/**
[35] Fix | Delete
* Print the script for dismissing the notice.
[36] Fix | Delete
*
[37] Fix | Delete
* @access public
[38] Fix | Delete
* @return void
[39] Fix | Delete
* @since 1.0
[40] Fix | Delete
*/
[41] Fix | Delete
public function print_script() {
[42] Fix | Delete
$nonce = wp_create_nonce( 'wpnotice_dismiss_notice_' . $this->id );
[43] Fix | Delete
$_id = '#wpnotice-' . esc_attr( $this->app->app ) . '-' . esc_attr( $this->id );
[44] Fix | Delete
?>
[45] Fix | Delete
<script>
[46] Fix | Delete
window.addEventListener('load', function () {
[47] Fix | Delete
var dismissBtn = document.querySelector('<?php echo $_id ?> .notice-dismiss');
[48] Fix | Delete
var extraDismissBtn = document.querySelectorAll('<?php echo $_id ?> .dismiss-btn');
[49] Fix | Delete
[50] Fix | Delete
function wpNoticeDismissFunc(event) {
[51] Fix | Delete
event.preventDefault();
[52] Fix | Delete
[53] Fix | Delete
var httpRequest = new XMLHttpRequest(),
[54] Fix | Delete
postData = '',
[55] Fix | Delete
dismiss = event.target.dataset?.hasOwnProperty('dismiss') && event.target.dataset.dismiss || false,
[56] Fix | Delete
later = event.target.dataset?.hasOwnProperty('later') && event.target.dataset.later || false;
[57] Fix | Delete
[58] Fix | Delete
if (dismiss || later) {
[59] Fix | Delete
jQuery(event.target.offsetParent).slideUp(200);
[60] Fix | Delete
}
[61] Fix | Delete
[62] Fix | Delete
// Data has to be formatted as a string here.
[63] Fix | Delete
postData += 'id=<?php echo esc_attr( rawurlencode( $this->id ) ); ?>';
[64] Fix | Delete
postData += '&action=<?php echo esc_attr( $this->hook ); ?>';
[65] Fix | Delete
if (dismiss) {
[66] Fix | Delete
postData += '&dismiss=' + dismiss;
[67] Fix | Delete
}
[68] Fix | Delete
if (later) {
[69] Fix | Delete
postData += '&later=' + later;
[70] Fix | Delete
}
[71] Fix | Delete
[72] Fix | Delete
postData += '&nonce=<?php echo esc_html( $nonce ); ?>';
[73] Fix | Delete
[74] Fix | Delete
httpRequest.open('POST', '<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>');
[75] Fix | Delete
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
[76] Fix | Delete
httpRequest.send(postData);
[77] Fix | Delete
}
[78] Fix | Delete
[79] Fix | Delete
// Add an event listener to the dismiss button.
[80] Fix | Delete
dismissBtn && dismissBtn.addEventListener('click', wpNoticeDismissFunc);
[81] Fix | Delete
if (extraDismissBtn.length > 0) {
[82] Fix | Delete
extraDismissBtn.forEach(btn => btn.addEventListener('click', wpNoticeDismissFunc))
[83] Fix | Delete
}
[84] Fix | Delete
});
[85] Fix | Delete
</script>
[86] Fix | Delete
<?php
[87] Fix | Delete
}
[88] Fix | Delete
[89] Fix | Delete
[90] Fix | Delete
/**
[91] Fix | Delete
* Run check to see if we need to dismiss the notice.
[92] Fix | Delete
* If all tests are successful then call the dismiss_notice() method.
[93] Fix | Delete
*
[94] Fix | Delete
* @access public
[95] Fix | Delete
* @return void
[96] Fix | Delete
* @since 1.0
[97] Fix | Delete
*/
[98] Fix | Delete
public function ajax_maybe_dismiss_notice() {
[99] Fix | Delete
// Sanity check: Early exit if we're not on a _dismiss_notice action.
[100] Fix | Delete
if ( ! isset( $_POST['action'] ) || $this->hook !== $_POST['action'] ) {
[101] Fix | Delete
return;
[102] Fix | Delete
}
[103] Fix | Delete
[104] Fix | Delete
// Sanity check: Early exit if the ID of the notice is not the one from this object.
[105] Fix | Delete
if ( ! isset( $_POST['id'] ) || $this->id !== $_POST['id'] ) {
[106] Fix | Delete
return;
[107] Fix | Delete
}
[108] Fix | Delete
[109] Fix | Delete
// Security check: Make sure nonce is OK.
[110] Fix | Delete
check_ajax_referer( 'wpnotice_dismiss_notice_' . $this->id, 'nonce', true );
[111] Fix | Delete
[112] Fix | Delete
if ( isset( $_POST['later'] ) ) {
[113] Fix | Delete
$_recurrence = intval( $this->recurrence ) || 15;
[114] Fix | Delete
$_queue = $this->app->storage()->get();
[115] Fix | Delete
[116] Fix | Delete
$_queue[ $this->id ]['start'] = $this->strtotime( "+$_recurrence days" );
[117] Fix | Delete
$_queue[ $this->id ]['expire'] = $this->strtotime( "+" . ( $_recurrence + 3 ) . " days" );
[118] Fix | Delete
$this->app->storage()->save( $_queue );
[119] Fix | Delete
[120] Fix | Delete
return;
[121] Fix | Delete
}
[122] Fix | Delete
[123] Fix | Delete
// If we got this far, we need to dismiss the notice.
[124] Fix | Delete
$this->dismiss_notice();
[125] Fix | Delete
}
[126] Fix | Delete
[127] Fix | Delete
/**
[128] Fix | Delete
* Actually dismisses the notice.
[129] Fix | Delete
*
[130] Fix | Delete
* @access private
[131] Fix | Delete
* @return bool
[132] Fix | Delete
* @since 1.0
[133] Fix | Delete
*/
[134] Fix | Delete
public function dismiss_notice() {
[135] Fix | Delete
if ( ! defined( 'WPNOTICE_EXPIRED_TIME' ) ) {
[136] Fix | Delete
define( 'WPNOTICE_EXPIRED_TIME', HOUR_IN_SECONDS * 10 );
[137] Fix | Delete
}
[138] Fix | Delete
[139] Fix | Delete
set_transient( 'wpnotice_priority_time_expired', true, time() + WPNOTICE_EXPIRED_TIME );
[140] Fix | Delete
[141] Fix | Delete
if ( 'user' === $this->scope ) {
[142] Fix | Delete
return $this->app->storage()->save_meta( $this->id );
[143] Fix | Delete
}
[144] Fix | Delete
[145] Fix | Delete
$_key = $this->app->app . '_' . $this->id . '_notice_dismissed';
[146] Fix | Delete
[147] Fix | Delete
return $this->app->storage()->save( $_key );
[148] Fix | Delete
}
[149] Fix | Delete
[150] Fix | Delete
/**
[151] Fix | Delete
* Check if is dismissed or not
[152] Fix | Delete
* @return boolean
[153] Fix | Delete
*/
[154] Fix | Delete
public function is_dismissed() {
[155] Fix | Delete
if ( 'user' === $this->scope ) {
[156] Fix | Delete
return $this->app->storage()->get_meta( $this->id );
[157] Fix | Delete
}
[158] Fix | Delete
[159] Fix | Delete
$_key = $this->app->app . '_' . $this->id . '_notice_dismissed';
[160] Fix | Delete
[161] Fix | Delete
return $this->app->storage()->get( $_key );
[162] Fix | Delete
}
[163] Fix | Delete
}
[164] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function