PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.4.1
Admin Columns v4.4.1
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 4 years ago Promotion.php 4 years ago Review.php 4 years ago
Promotion.php
79 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\Registrable;
11 use AC\Screen;
12
13 final class Promotion
14 implements Registrable {
15
16 /** @var Promo */
17 private $promo;
18
19 public function __construct( Promo $promo ) {
20 $this->promo = $promo;
21 }
22
23 public function register() {
24 add_action( 'ac/screen', [ $this, 'display' ] );
25
26 $this->get_ajax_handler()->register();
27 }
28
29 /**
30 * @return Ajax\Handler
31 */
32 private function get_ajax_handler() {
33 $handler = new Ajax\Handler();
34
35 $handler
36 ->set_action( 'ac_dismiss_notice_promo_' . $this->get_individual_slug() )
37 ->set_callback( [ $this, 'ajax_dismiss_notice' ] );
38
39 return $handler;
40 }
41
42 private function get_individual_slug() {
43 return $this->promo->get_slug() . $this->promo->get_date_range()->get_start()->format( 'Ymd' );
44 }
45
46 /**
47 * @return Preferences\User
48 */
49 private function get_preferences() {
50 return new Preferences\User( 'check-promo-' . $this->get_individual_slug() );
51 }
52
53 /**
54 * Dismiss notice
55 */
56 public function ajax_dismiss_notice() {
57 $this->get_ajax_handler()->verify_request();
58 $this->get_preferences()->set( 'dismiss-notice', true );
59 }
60
61 /**
62 * @param Screen $screen
63 */
64 public function display( Screen $screen ) {
65 if ( ! $this->promo->is_active()
66 || ! current_user_can( Capabilities::MANAGE )
67 || ! $screen->is_list_screen()
68 || $this->get_preferences()->get( 'dismiss-notice' )
69 ) {
70 return;
71 }
72
73 $message = sprintf( __( 'Get %s now', 'codepress-admin-columns' ), '<strong>Admin Columns Pro</strong>' );
74 $message = sprintf( '%s! <a target="_blank" href="%s">%s</a>', $this->promo->get_title(), $this->promo->get_url(), $message );
75
76 $notice = new Dismissible( $message, $this->get_ajax_handler() );
77 $notice->register();
78 }
79 }