PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.5.3
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.5.3
4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / vendor / priyomukul / wp-notice / src / Notices.php
embedpress / vendor / priyomukul / wp-notice / src Last commit date
Utils 4 years ago Dismiss.php 4 years ago Notice.php 4 years ago Notices.php 4 years ago
Notices.php
113 lines
1 <?php
2
3 namespace PriyoMukul\WPNotice;
4
5 use PriyoMukul\WPNotice\Utils\Base;
6 use PriyoMukul\WPNotice\Utils\Helper;
7 use PriyoMukul\WPNotice\Utils\Storage;
8
9 final class Notices extends Base {
10 use Helper;
11
12 public $system_id = 'wpnotice_system';
13 public $app = 'wpnotice';
14 public $version = '1.0.0';
15
16 private $args = [];
17
18 private $storage = null;
19
20 private $notices = [];
21 private $queue = [];
22
23 private $scripts = null;
24
25 public function __get( $name ){
26 if( property_exists( $this, $name ) ) {
27 return $this->$name;
28 }
29 }
30
31 public function __construct( $args ){
32 $this->system_id = ! empty( $args['id'] ) ? $args['id'] . '-notice-system' : $this->system_id;
33 $this->app = ! empty( $args['id'] ) ? $args['id'] : $this->app;
34 $this->version = ! empty( $args['version'] ) ? $args['version'] : '1.0.0';
35 $this->dev_mode = ! empty( $args['dev_mode'] ) ? $args['dev_mode'] : false;
36
37 $this->args = $args;
38
39 if( ! empty( $args['styles'] ) ) {
40 $this->scripts = $args['styles'];
41 unset( $args['styles'] );
42 }
43
44 $this->queue = $this->storage()->get( '', [] );
45 }
46
47 public function storage(){
48 return $this->database( $this->args );
49 }
50
51 public function init(){
52 add_action( 'admin_notices', [ $this, 'notices' ] );
53 add_action( 'admin_footer', [ $this, 'scripts' ] );
54 }
55
56 public function notices(){
57 wp_enqueue_style( $this->system_id, $this->scripts );
58
59 if( ! $this->dev_mode ) {
60 $current_notice = current( $this->eligible_notices() );
61 if( isset( $this->notices[ $current_notice ] ) ) {
62 $this->notices[ $current_notice ]->display();
63 }
64 } else {
65 foreach( $this->notices as $key => $notice ) {
66 $notice->display( true );
67 }
68 }
69
70 }
71
72 protected function eligible_notices(){
73 $_sorted_quque = [];
74 $_queue = empty( $this->queue ) ? $this->notices : $this->queue;
75
76 if( ! empty ( $_queue ) ) {
77 array_walk( $_queue, function( $value, $key ) use( &$_sorted_quque ) {
78 $notice = isset( $this->notices[ $key ] ) ? $this->notices[ $key ] : null;
79 if( ! is_null( $notice ) ) {
80 if( ! $notice->dismiss->is_dismissed() && ! $notice->is_expired() ) {
81 $_sorted_quque[ $notice->options('start') ] = $key;
82 }
83 }
84 });
85 }
86
87 ksort( $_sorted_quque );
88
89 return $_sorted_quque;
90 }
91
92 public function scripts(){
93 $current_notice = current( $this->eligible_notices() );
94
95 if( isset( $this->notices[ $current_notice ] ) && ! $this->dev_mode ) {
96 $notice = $this->notices[ $current_notice ];
97 if( $notice->show() ) {
98 $notice->dismiss->print_script();
99 }
100 }
101
102 if( $this->dev_mode ) {
103 foreach( $this->notices as $key => $notice ) {
104 $notice->dismiss->print_script();
105 }
106 }
107
108 }
109
110 public function add( $id, $content, $options = [] ){
111 $this->notices[ $id ] = new Notice( $id, $content, $options, $this->queue, $this );
112 }
113 }