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