Server IP : 104.21.14.48 / Your IP : 3.137.190.77 [ Web Server : Apache System : Linux b70eb322-3aee-0c53-7c82-0db91281f2c6.secureserver.net 6.1.90-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 12:09:22 EDT 2024 x86_64 User : root ( 0) PHP Version : 8.0.30.2 Disable Function : NONE Domains : 0 Domains MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/wp-content/plugins/templately/vendor/priyomukul/wp-notice/src/ |
Upload File : |
<?php namespace PriyoMukul\WPNotice; use Exception; use PriyoMukul\WPNotice\Utils\Base; use PriyoMukul\WPNotice\Utils\CacheBank; use PriyoMukul\WPNotice\Utils\Helper; /** * @property $notices [] * @property $queue [] * @property $id string * @property $stylesheet_url string */ #[\AllowDynamicProperties] final class Notices extends Base { use Helper; const VERSION = '1.1.0'; private $version = '1.1.0'; public $system_id = 'wpnotice_system'; public $app = 'wpnotice'; private $storage = null; private $scripts = null; private $args; /** * A list of notice * @var array */ private $notices = []; /** * A list of notice based to timestamp (A Queue) * @var false|mixed */ private $queue; /** * @var CacheBank */ private static $cache_bank; /** * @var bool */ private $dev_mode = false; /** * Default notice system options * @var array */ private $options = [ 'id' => '', 'stylesheet_url' => '', 'priority' => 1 ]; private $deprecated_options = [ 'system_id' => 'id', 'app' => 'id', 'scripts' => 'stylesheet_url' ]; private $default_options = [ 'scripts_handle' => '' ]; /** * This method takes an array as argument. * * @template $args * * @param $args * * @throws Exception */ public function __construct( $args ) { self::$cache_bank = CacheBank::get_instance(); /** * Check all the property is passed or not */ if ( ! isset( $args['version'] ) && self::VERSION === '1.1.0' ) { if ( ! is_array( $args ) ) { $this->error( "Argument of " . __CLASS__ . " should be an array. " . gettype( $args ) . " given." ); } if ( empty( $args ) ) { $this->error( "Argument of " . __CLASS__ . " should not be an empty array." ); } foreach ( $this->options as $key => $value ) { if ( ! isset( $args[ $key ] ) ) { $this->error( "Missing $key from argument list." ); } } $this->options = wp_parse_args( $args, $this->options ); $this->scripts = $this->stylesheet_url; } $this->system_id = ! empty( $args['id'] ) ? $args['id'] . '-notice-system' : 'wpnotice_system'; $this->app = ! empty( $args['id'] ) ? $args['id'] : 'wpnotice'; $this->dev_mode = ! empty( $args['dev_mode'] ) ? $args['dev_mode'] : $this->dev_mode; $this->args = $args; if ( ! empty( $args['styles'] ) ) { $this->scripts = $args['styles']; unset( $args['styles'] ); } $this->queue = $this->storage()->get( '', [] ); self::$cache_bank->create_account( $this ); } public function __get( $name ) { if ( property_exists( $this, $name ) ) { return $this->$name; } if ( ! empty( $this->options[ $name ] ) ) { return $this->options[ $name ]; } if ( isset( $this->deprecated_options[ $name ] ) && ! empty( $this->options[ $this->deprecated_options[ $name ] ] ) ) { return $this->options[ $this->deprecated_options[ $name ] ]; } if ( ! empty( $this->args[ $name ] ) ) { return $this->args[ $name ]; } return null; } public function storage() { return $this->database( $this->args ); } public function init() { } public function notices() { wp_enqueue_style( $this->system_id, $this->scripts ); if ( ! $this->dev_mode ) { /** * @var Notice $notice */ $notice = $this->current_notice(); if ( $notice ) { $notice->display(); } } /** * Print all notices while dev_mode is enabled. */ $this->print_notices_for_dev_mode(); } public function eligible_notices( $notices = [], $queue = [] ) { $_sorted_queue = []; $notices = empty( $notices ) ? $this->notices : $notices; $queue = empty( $queue ) ? $this->queue : $queue; if ( ! empty ( $queue ) ) { array_walk( $queue, function ( $value, $key ) use ( &$_sorted_queue, $notices ) { $notice = isset( $notices[ $key ] ) ? $notices[ $key ] : null; if ( ! is_null( $notice ) ) { if ( ! $notice->dismiss->is_dismissed() && ! $notice->is_expired() ) { $_sorted_queue[ $notice->options( 'start' ) ] = $key; } } } ); } ksort( $_sorted_queue ); return $_sorted_queue; } public function scripts() { if ( ! $this->dev_mode ) { /** * @var Notice $notice */ $notice = $this->current_notice(); if ( $notice && $notice->show() ) { $notice->dismiss->print_script(); } } /** * Print scripts for all notices while dev_mode is enabled. */ $this->print_notices_for_dev_mode( true ); } public function add( $id, $content, $options = [] ) { $this->notices[ $id ] = new Notice( $id, $content, $options, $this->queue, $this ); self::$cache_bank->deposit( $this->id, $id, $this->notices[ $id ] ); } private function current_notice() { $current_notice = current( $this->eligible_notices() ); return isset( $this->notices[ $current_notice ] ) ? $this->notices[ $current_notice ] : false; } private function print_notices_for_dev_mode( $scripts = false ) { if ( $this->dev_mode ) { /** * @var Notice $notice */ foreach ( $this->notices as $notice ) { if ( $scripts ) { $notice->dismiss->print_script(); } else { $notice->display( true ); } } } } }