PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.7.19
Admin Columns v4.7.19
7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 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.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Check / Promotion.php
codepress-admin-columns / classes / Check Last commit date
AddonAvailable.php 6 months ago Promotion.php 6 months ago Review.php 6 months ago
Promotion.php
86 lines
1 <?php
2
3 namespace AC\Check;
4
5 use AC\Ajax;
6 use AC\Capabilities;
7 use AC\Message\Notice\Dismissible;
8 use AC\Preferences;
9 use AC\Promo;
10 use AC\Registerable;
11 use AC\Screen;
12
13 final class Promotion
14 implements Registerable
15 {
16
17 /**
18 * @var Promo
19 */
20 private $promo;
21
22 public function __construct(Promo $promo)
23 {
24 $this->promo = $promo;
25 }
26
27 public function register(): void
28 {
29 add_action('ac/screen', [$this, 'display']);
30
31 $this->get_ajax_handler()->register();
32 }
33
34 /**
35 * @return Ajax\Handler
36 */
37 private function get_ajax_handler()
38 {
39 $handler = new Ajax\Handler();
40
41 $handler
42 ->set_action('ac_dismiss_notice_promo_' . $this->get_individual_slug())
43 ->set_callback([$this, 'ajax_dismiss_notice']);
44
45 return $handler;
46 }
47
48 private function get_individual_slug()
49 {
50 return $this->promo->get_slug() . $this->promo->get_date_range()->get_start()->format('Ymd');
51 }
52
53 /**
54 * @return Preferences\User
55 */
56 private function get_preferences()
57 {
58 return new Preferences\User('check-promo-' . $this->get_individual_slug());
59 }
60
61 /**
62 * Dismiss notice
63 */
64 public function ajax_dismiss_notice()
65 {
66 $this->get_ajax_handler()->verify_request();
67 $this->get_preferences()->set('dismiss-notice', true);
68 }
69
70 /**
71 * @param Screen $screen
72 */
73 public function display(Screen $screen)
74 {
75 if ( ! $this->promo->is_active()
76 || ! current_user_can(Capabilities::MANAGE)
77 || ! $screen->is_list_screen()
78 || $this->get_preferences()->get('dismiss-notice')
79 ) {
80 return;
81 }
82
83 $notice = new Dismissible($this->promo->get_message(), $this->get_ajax_handler());
84 $notice->register();
85 }
86 }