127 lines
5.0 KiB
PHP
127 lines
5.0 KiB
PHP
<?php
|
|
|
|
// Added by KP on March 31, 2015. So, if something is buggered, it's probably my bad! ;-)
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
if ( ! class_exists( 'reduxNewsflash' ) ) {
|
|
class reduxNewsflash {
|
|
private $parent = null;
|
|
private $notice_data = '';
|
|
private $server_file = '';
|
|
private $interval = 3;
|
|
private $cookie_id = '';
|
|
|
|
public function __construct( $parent, $params ) {
|
|
// set parent object
|
|
$this->parent = $parent;
|
|
|
|
if ( ! is_admin() ) {
|
|
return;
|
|
}
|
|
|
|
$this->server_file = $params['server_file'];
|
|
$this->interval = isset( $params['interval'] ) ? $params['interval'] : 3;
|
|
$this->cookie_id = isset( $params['cookie_id'] ) ? $params['cookie_id'] : $parent->args['opt_name'] . '_blast';
|
|
|
|
$this->notice_data = get_option( 'r_notice_data', '' );
|
|
|
|
$fname = Redux_Functions::bub( 'get_notice_json', $parent->args['opt_name'] );
|
|
$mname = Redux_Functions::yo( 'display_message', $parent->args['opt_name'] );
|
|
|
|
// if notice data is empty
|
|
if ( empty( $this->notice_data ) ) {
|
|
// get notice data from server and create cache data
|
|
$this->$fname();
|
|
} else {
|
|
// check expiry time
|
|
if ( ! isset( $_COOKIE[ $this->cookie_id ] ) ) {
|
|
// expired! get notice data from server
|
|
$this->$fname();
|
|
}
|
|
}
|
|
|
|
// set the admin notice msg
|
|
$this->$mname();
|
|
}
|
|
|
|
private function bub() {
|
|
$this->notice_data = '';
|
|
}
|
|
|
|
private function get_notice_json() {
|
|
|
|
// get notice data from server
|
|
$data = @wp_remote_get( $this->server_file, array( 'sslverify' => false ) );
|
|
|
|
if ( isset( $data ) && ! empty( $data ) && ! is_wp_error( $data ) && $data['response']['code'] == 200 ) {
|
|
$data = $data['body'];
|
|
// if some data exists
|
|
if ( $data != '' || ! empty( $data ) ) {
|
|
|
|
if ( ! empty( $this->notice_data ) ) {
|
|
if ( strcmp( $data, $this->notice_data ) == 0 ) {
|
|
// set new cookie for interval value
|
|
Redux_Functions::setCookie( $this->cookie_id, time(), time() + ( 86400 * $this->interval ), '/' );
|
|
|
|
// bail out
|
|
return;
|
|
}
|
|
}
|
|
|
|
update_option( 'r_notice_data', $data );
|
|
$this->notice_data = $data;
|
|
|
|
// set cookie for three day expiry
|
|
setcookie( $this->cookie_id, time(), time() + ( 86400 * $this->interval ), '/' );
|
|
|
|
// set unique key for dismiss meta key
|
|
update_option( $this->cookie_id, time() );
|
|
}
|
|
}
|
|
}
|
|
|
|
private function display_message() {
|
|
// Notice data exists?
|
|
if ( ! empty( $this->notice_data ) ) {
|
|
// decode json string
|
|
$data = (Array) json_decode( $this->notice_data );
|
|
// must be array and not empty
|
|
if ( is_array( $data ) && ! empty( $data ) ) {
|
|
|