summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php')
-rw-r--r--plugins/jetpack/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php135
1 files changed, 135 insertions, 0 deletions
diff --git a/plugins/jetpack/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php b/plugins/jetpack/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php
new file mode 100644
index 00000000..e2cf58ef
--- /dev/null
+++ b/plugins/jetpack/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php
@@ -0,0 +1,135 @@
+<?php
+/**
+ * Base Module product
+ *
+ * @package my-jetpack
+ */
+
+namespace Automattic\Jetpack\My_Jetpack;
+
+use Jetpack;
+use WP_Error;
+
+/**
+ * Class responsible for handling the Module products
+ *
+ * Module products are those that are a Jetpack module behind the scenes.
+ *
+ * They require Jetpack plugin and will then activate/deactivate a module.
+ */
+abstract class Module_Product extends Product {
+
+ /**
+ * The Jetpack module name associated with this product
+ *
+ * @var string|null
+ */
+ public static $module_name = null;
+
+ /**
+ * Get the plugin slug - ovewrite it ans return Jetpack's
+ *
+ * @return ?string
+ */
+ public static function get_plugin_slug() {
+ return self::JETPACK_PLUGIN_SLUG;
+ }
+
+ /**
+ * Get the plugin filename - ovewrite it ans return Jetpack's
+ *
+ * @return ?string
+ */
+ public static function get_plugin_filename() {
+ return self::JETPACK_PLUGIN_FILENAME;
+ }
+
+ /**
+ * Ensure that child classes define $module_name attribute
+ *
+ * @throws \Exception If required attribute is not declared in the child class.
+ * @return void
+ */
+ private static function check_for_module_name() {
+ if ( empty( static::$module_name ) ) {
+ throw new \Exception( 'Module Product classes must declare the $module_name attribute.' );
+ }
+ }
+
+ /**
+ * Checks whether the Product is active
+ *
+ * @return boolean
+ */
+ public static function is_active() {
+ return static::is_jetpack_plugin_active() && static::is_module_active();
+ }
+
+ /**
+ * Checks whether the Jetpack module is active
+ *
+ * @return bool
+ */
+ public static function is_module_active() {
+ self::check_for_module_name();
+ if ( ! class_exists( 'Jetpack' ) ) {
+ return false;
+ }
+
+ return Jetpack::is_module_active( static::$module_name );
+ }
+
+ /**
+ * Gets the current status of the product
+ *
+ * @return string
+ */
+ public static function get_status() {
+ $status = parent::get_status();
+ if ( 'active' === $status && ! static::is_module_active() ) {
+ $status = 'module_disabled';
+ }
+ return $status;
+ }
+
+ /**
+ * Activates the product by installing and activating its plugin
+ *
+ * @param bool|WP_Error $plugin_activation Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error.
+ * @return boolean|\WP_Error
+ */
+ public static function do_product_specific_activation( $plugin_activation ) {
+ self::check_for_module_name();
+
+ if ( is_wp_error( $plugin_activation ) ) {
+ return $plugin_activation;
+ }
+
+ if ( ! class_exists( 'Jetpack' ) ) {
+ return new WP_Error( 'plugin_activation_failed', __( 'Error activating Jetpack plugin', 'jetpack-my-jetpack' ) );
+ }
+
+ $module_activation = Jetpack::activate_module( static::$module_name, false, false );
+
+ if ( ! $module_activation ) {
+ return new WP_Error( 'module_activation_failed', __( 'Error activating Jetpack module', 'jetpack-my-jetpack' ) );
+ }
+
+ return $module_activation;
+
+ }
+
+ /**
+ * Deactivate the module
+ *
+ * @return boolean
+ */
+ public static function deactivate() {
+ self::check_for_module_name();
+ if ( ! class_exists( 'Jetpack' ) ) {
+ return true;
+ }
+ return Jetpack::deactivate_module( static::$module_name );
+ }
+
+}