PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.7.7
Admin Columns v4.7.7
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 / AddonAvailable.php
codepress-admin-columns / classes / Check Last commit date
AddonAvailable.php 2 years ago Promotion.php 2 years ago Review.php 2 years ago
AddonAvailable.php
78 lines
1 <?php
2
3 namespace AC\Check;
4
5 use AC\Ajax;
6 use AC\Capabilities;
7 use AC\Integration;
8 use AC\Message\Notice\Dismissible;
9 use AC\Preferences;
10 use AC\Registerable;
11 use AC\Screen;
12
13 final class AddonAvailable
14 implements Registerable
15 {
16
17 private $integration;
18
19 public function __construct(Integration $integration)
20 {
21 $this->integration = $integration;
22 }
23
24 public function register(): void
25 {
26 add_action('ac/screen', [$this, 'display']);
27
28 $this->get_ajax_handler()->register();
29 }
30
31 private function get_ajax_handler(): Ajax\Handler
32 {
33 $handler = new Ajax\Handler();
34 $handler
35 ->set_action('ac_dismiss_notice_addon_' . $this->integration->get_slug())
36 ->set_callback([$this, 'ajax_dismiss_notice']);
37
38 return $handler;
39 }
40
41 private function get_preferences(): Preferences\User
42 {
43 return new Preferences\User('check-addon-available-' . $this->integration->get_slug());
44 }
45
46 public function ajax_dismiss_notice(): void
47 {
48 $this->get_ajax_handler()->verify_request();
49 $this->get_preferences()->set('dismiss-notice', true);
50 }
51
52 public function display(Screen $screen): void
53 {
54 if (
55 ! current_user_can(Capabilities::MANAGE)
56 || ! $this->integration->show_notice($screen)
57 || $this->get_preferences()->get('dismiss-notice')
58 ) {
59 return;
60 }
61
62 $support_text = sprintf(
63 __('Did you know Admin Columns Pro has full support for %s?', 'codepress-admin-columns'),
64 sprintf('<strong>%s</strong>', $this->integration->get_title())
65 );
66
67 $link = sprintf(
68 '<a href="%s">%s</a>',
69 $this->integration->get_url(),
70 __('Get Admin Columns Pro', 'codepress-admin-columns')
71 );
72 $message = sprintf('%s %s', $support_text, $link);
73
74 $notice = new Dismissible($message, $this->get_ajax_handler());
75 $notice->register();
76 }
77
78 }