Return Notice module class instance * * @return self */ public static function instance() { if (is_null(self::$instance)) { self::$instance = new self(); } return self::$instance; } /** * Configures all setter variables * * @param string $text_domain * @param string|null $unique_id * @return self */ public function set_config($text_domain, $unique_id = null) { $this->text_domain = $text_domain; $this->unique_id = is_null($unique_id) ? uniqid() : $unique_id; $this->notice_id = $text_domain . '-' . $unique_id; $this->button = [ 'default_class' => 'button', 'class' => 'button-secondary ', // button-primary button-secondary button-small button-large button-link 'text' => 'Button', 'url' => '#', 'icon' => '' ]; return $this; } /** * call after setting all configuration * @return void */ public function call() { add_action('admin_notices', [$this, 'get_notice']); add_action('wp_ajax_shopengine-notices', [$this, 'dismiss_ajax_call']); } /** * Adds classes to the container * * @param string $classname * @return self */ public function set_class($classname = '') { $this->class .= $classname; return $this; } /** * @param string $type * @return self */ public function set_type($type = '') { $this->class .= ' notice-' . $type; return $this; } /** * @param array $button * @return self */ public function set_button($button = []) { $button = array_merge($this->button, $button); $this->buttons[] = $button; return $this; } /** * @param $id * @return self */ public function set_id($id) { $this->notice_id = $id; return $this; } /** * @param string $title * @return self */ public function set_title($title = '') { $this->title .= $title; return $this; } /** * @param string $message * @return self */ public function set_message($message = '') { $this->message .= $message; return $this; } /** * @param bool $gutter * @return self */ public function set_gutter($gutter = true) { $this->gutter .= $gutter; $this->class .= ($gutter === true ? '' : ' no-gutter'); return $this; } /** * @param string $logo * @param string $logo_style * @return self */ public function set_logo($logo = '', $logo_style = '') { $this->logo = $logo; $this->logo_style = $logo_style; return $this; } /** * @param string $html * @return self */ public function set_html($html = '') { $this->html .= $html; return $this; } /** * @param string $scope * @param integer $time * @return self */ public function set_dismiss($scope = 'global', $time = (3600 * 24 * 7)) { $this->dismissible = $scope; $this->expired_time = $time; return $this; } /** * get_version * * @return string */ public function get_version() { return $this->script_version; } /** * get_script_location * * @return string */ public function get_script_location() { return __FILE__; } /** * get grouped data * * @return array */ public function get_data() { return [ 'message' => $this->message, 'title' => $this->title, 'buttons' => $this->buttons, 'class' => $this->class, 'html' => $this->html ]; } public function get_notice() { if(!current_user_can('manage_options')) { return; } // dismissible conditions if ('user' === $this->dismissible) { $expired = get_user_meta(get_current_user_id(), $this->notice_id, true); } elseif ('global' === $this->dismissible) { $expired = get_transient($this->notice_id); } else { $expired = ''; } global $oxaim_lib_notice_list; if (!isset($oxaim_lib_notice_list[$this->notice_id])) { $oxaim_lib_notice_list[$this->notice_id] = __FILE__; // is transient expired? if (false === $expired || empty($expired)) { $this->generate_html(); } } } public function generate_html() { $this->enqueue_scripts(); ?>
logo)) : ?>
html)) : ?> title) ? '' : sprintf('
%s
', esc_html($this->title))); ?>
message, \ShopEngine\Utils\Helper::get_kses_array()); ?>
buttons)) : ?>
buttons as $button) : ?> href="" class="wpmet-notice-button ">  
html, \ShopEngine\Utils\Helper::get_kses_array()); ?>
dismissible) : ?>
jQuery(document).ready(function ($) { $( '.wpmet-notice.is-dismissible' ).on( 'click', '.notice-dismiss', function() { _this = $( this ).parents('.wpmet-notice').eq(0); var notice_id = _this.attr( 'id' ) || ''; var expired_time = _this.attr( 'expired_time' ) || ''; var dismissible = _this.attr( 'dismissible' ) || ''; var x = $( this ).attr('class'); _this.hide(); $.ajax({ url: ajaxurl, type: 'POST', data: { action : 'shopengine-notices', notice_id : notice_id, dismissible : dismissible, expired_time : expired_time, nonce : '" . esc_js(wp_create_nonce('shopengine-notices')) . "' }, }); }); }); "; } }