PluginProbe
QuadMenu – Mega Menu / 3.3.8
QuadMenu – Mega Menu v3.3.8
3.3.8 3.3.7 3.3.6 trunk 1.8.4 1.8.5 1.8.7 1.8.8 1.8.9 1.9.0 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 88 releases
quadmenu / jetpack_vendor / quadlayers / wp-notice-plugin-required / src / Plugin.php

Plugin.php in QuadMenu – Mega Menu 3.3.8, at jetpack_vendor/quadlayers/wp-notice-plugin-required/src/Plugin.php

133 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * QuadLayers WP Notice Plugin Required
4 *
5 * @package quadlayers/wp-notice-plugin-required
6 * @link https://github.com/quadlayers/wp-notice-plugin-required
7 */
8
9 namespace QuadLayers\WP_Notice_Plugin_Required;
10
11 /**
12 * Class Load
13 *
14 * @package QuadLayers\WP_Notice_Plugin_Required\Plugin
15 */
16 class Plugin {
17
18 /**
19 * Instance of this class.
20 *
21 * @var object
22 */
23 protected static $instance = array();
24
25 /**
26 * Required Plugin slug.
27 *
28 * @var string
29 */
30 protected $plugin_slug = '';
31
32 /**
33 * Required Plugin name.
34 *
35 * @var string
36 */
37 protected $plugin_name = '';
38
39 /**
40 * Load constructor.
41 *
42 * @param string $plugin_slug Required Plugin slug.
43 * @param string $plugin_name Required Plugin name.
44 */
45 private function __construct( $plugin_slug, $plugin_name ) {
46 if ( ! function_exists( 'is_plugin_active' ) ) {
47 require_once ABSPATH . 'wp-admin/includes/plugin.php';
48 }
49 $this->plugin_slug = $plugin_slug;
50 $this->plugin_name = $plugin_name;
51 }
52
53 /**
54 * Check if the required plugin is installed and activated.
55 *
56 * @return bool
57 */
58 public function is_plugin_installed() {
59 $plugin_path = $this->get_plugin_path();
60 $installed_plugins = get_plugins();
61 return isset( $installed_plugins[ $plugin_path ] );
62 }
63
64 /**
65 * Check if the required plugin is activated.
66 *
67 * @return bool
68 */
69 public function is_plugin_activated() {
70 $plugin_path = $this->get_plugin_path();
71 return is_plugin_active( $plugin_path );
72 }
73
74 /**
75 * Check if the required plugin is installed and activated.
76 *
77 * @return bool
78 */
79 private function get_plugin_path() {
80 return "{$this->plugin_slug}/{$this->plugin_slug}.php";
81 }
82
83 /**
84 * Get the plugin install link.
85 *
86 * @return string
87 */
88 public function get_plugin_install_link() {
89 return wp_nonce_url( self_admin_url( "update.php?action=install-plugin&plugin={$this->plugin_slug}" ), "install-plugin_{$this->plugin_slug}" );
90 }
91
92 /**
93 * Get the plugin activate link.
94 *
95 * @return string
96 */
97 public function get_plugin_activate_link() {
98 $plugin_path = $this->get_plugin_path();
99 return wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $plugin_path . '&amp;paged=1', 'activate-plugin_' . $plugin_path );
100 }
101
102 /**
103 * Get the plugin name.
104 *
105 * @return string
106 */
107 public function get_plugin_name() {
108 return $this->plugin_name;
109 }
110
111 /**
112 * Singleton instance.
113 * Ensures only one instance of the class for each required plugin is loaded.
114 *
115 * @param string $plugin_slug Required Plugin slug.
116 * @param string $plugin_name Required Plugin name.
117 * @return Plugin
118 */
119 public static function get_instance( $plugin_slug = '', $plugin_name = '' ) {
120
121 $plugin_slug = $plugin_slug;
122
123 if ( isset( self::$instance[ $plugin_slug ] ) ) {
124 return self::$instance[ $plugin_slug ];
125 }
126
127 self::$instance[ $plugin_slug ] = new self( $plugin_slug, $plugin_name );
128
129 return self::$instance[ $plugin_slug ];
130 }
131
132 }
133