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 / AddonAvailable.php
codepress-admin-columns / classes / Check Last commit date
AddonAvailable.php 4 years ago Promotion.php 4 years ago Review.php 4 years ago
AddonAvailable.php
95 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\PluginInformation;
10 use AC\Preferences;
11 use AC\Registrable;
12 use AC\Screen;
13 use Exception;
14
15 final class AddonAvailable
16 implements Registrable {
17
18 /** @var Integration */
19 private $integration;
20
21 /**
22 * @param Integration $integration
23 */
24 public function __construct( Integration $integration ) {
25 $this->integration = $integration;
26 }
27
28 /**
29 * @throws Exception
30 */
31 public function register() {
32 add_action( 'ac/screen', [ $this, 'display' ] );
33
34 $this->get_ajax_handler()->register();
35 }
36
37 /**
38 * @return Ajax\Handler
39 */
40 private function get_ajax_handler() {
41 $handler = new Ajax\Handler();
42 $handler
43 ->set_action( 'ac_dismiss_notice_addon_' . $this->integration->get_slug() )
44 ->set_callback( [ $this, 'ajax_dismiss_notice' ] );
45
46 return $handler;
47 }
48
49 /**
50 * @return Preferences\User
51 */
52 private function get_preferences() {
53 return new Preferences\User( 'check-addon-available-' . $this->integration->get_slug() );
54 }
55
56 /**
57 * Dismiss notice
58 */
59 public function ajax_dismiss_notice() {
60 $this->get_ajax_handler()->verify_request();
61 $this->get_preferences()->set( 'dismiss-notice', true );
62 }
63
64 /**
65 * @param Screen $screen
66 */
67 public function display( Screen $screen ) {
68 if ( ! current_user_can( Capabilities::MANAGE )
69 || ! $this->integration->show_notice( $screen )
70 || ! $this->integration->is_plugin_active()
71 || $this->get_preferences()->get( 'dismiss-notice' )
72 ) {
73 return;
74 }
75
76 $integration_info = new PluginInformation( $this->integration->get_basename() );
77
78 if ( $integration_info->is_active() ) {
79 return;
80 }
81
82 $message = sprintf(
83 __( 'Did you know Admin Columns Pro has an integration addon for %s? With the proper Admin Columns Pro license, you can download them from %s!', 'codepress-admin-columns' ),
84 sprintf( '<strong>%s</strong>', $this->integration->get_title() ),
85 ac_helper()->html->link(
86 ac_get_admin_url( 'addons' ),
87 __( 'the addons page', 'codepress-admin-columns' )
88 )
89 );
90
91 $notice = new Dismissible( $message, $this->get_ajax_handler() );
92 $notice->register();
93 }
94
95 }