summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYury German <blueknight@gentoo.org>2019-05-22 01:01:36 -0400
committerYury German <blueknight@gentoo.org>2019-05-22 01:01:36 -0400
commit0914c92da22824025992c368c745546e41fbeb84 (patch)
tree965f6adf3b725e56d559fe4a93eff02281499dcc /plugins/jetpack/3rd-party/woocommerce-services.php
parentDeleting plugins for update (diff)
downloadblogs-gentoo-0914c92da22824025992c368c745546e41fbeb84.tar.gz
blogs-gentoo-0914c92da22824025992c368c745546e41fbeb84.tar.bz2
blogs-gentoo-0914c92da22824025992c368c745546e41fbeb84.zip
Adding Plugins
Updating the following akismet.4.1.2, google-authenticator.0.52, jetpack.7.3.1 Signed-off-by: Yury German <blueknight@gentoo.org>
Diffstat (limited to 'plugins/jetpack/3rd-party/woocommerce-services.php')
-rw-r--r--plugins/jetpack/3rd-party/woocommerce-services.php133
1 files changed, 133 insertions, 0 deletions
diff --git a/plugins/jetpack/3rd-party/woocommerce-services.php b/plugins/jetpack/3rd-party/woocommerce-services.php
new file mode 100644
index 00000000..b868697f
--- /dev/null
+++ b/plugins/jetpack/3rd-party/woocommerce-services.php
@@ -0,0 +1,133 @@
+<?php
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+class WC_Services_Installer {
+
+ /**
+ * @var Jetpack
+ **/
+ private $jetpack;
+
+ /**
+ * @var WC_Services_Installer
+ **/
+ private static $instance = null;
+
+ static function init() {
+ if ( is_null( self::$instance ) ) {
+ self::$instance = new WC_Services_Installer();
+ }
+ return self::$instance;
+ }
+
+ public function __construct() {
+ $this->jetpack = Jetpack::init();
+
+ add_action( 'admin_init', array( $this, 'add_error_notice' ) );
+ add_action( 'admin_init', array( $this, 'try_install' ) );
+ }
+
+ /**
+ * Verify the intent to install WooCommerce Services, and kick off installation.
+ */
+ public function try_install() {
+ if ( ! isset( $_GET['wc-services-action'] ) ) {
+ return;
+ }
+ check_admin_referer( 'wc-services-install' );
+
+ $result = false;
+
+ switch ( $_GET['wc-services-action'] ) {
+ case 'install':
+ if ( current_user_can( 'install_plugins' ) ) {
+ $this->jetpack->stat( 'jitm', 'wooservices-install-' . JETPACK__VERSION );
+ $result = $this->install();
+ if ( $result ) {
+ $result = $this->activate();
+ }
+ }
+ break;
+
+ case 'activate':
+ if ( current_user_can( 'activate_plugins' ) ) {
+ $this->jetpack->stat( 'jitm', 'wooservices-activate-' . JETPACK__VERSION );
+ $result = $this->activate();
+ }
+ break;
+ }
+
+ $redirect = isset( $_GET['redirect'] ) ? admin_url( $_GET['redirect'] ) : wp_get_referer();
+
+ if ( $result ) {
+ $this->jetpack->stat( 'jitm', 'wooservices-activated-' . JETPACK__VERSION );
+ } else {
+ $redirect = add_query_arg( 'wc-services-install-error', true, $redirect );
+ }
+
+ wp_safe_redirect( $redirect );
+
+ exit;
+ }
+
+ /**
+ * Set up installation error admin notice.
+ */
+ public function add_error_notice() {
+ if ( ! empty( $_GET['wc-services-install-error'] ) ) {
+ add_action( 'admin_notices', array( $this, 'error_notice' ) );
+ }
+ }
+
+ /**
+ * Notify the user that the installation of WooCommerce Services failed.
+ */
+ public function error_notice() {
+ ?>
+ <div class="notice notice-error is-dismissible">
+ <p><?php _e( 'There was an error installing WooCommerce Services.', 'jetpack' ); ?></p>
+ </div>
+ <?php
+ }
+
+ /**
+ * Download and install the WooCommerce Services plugin.
+ *
+ * @return bool result of installation
+ */
+ private function install() {
+ include_once( ABSPATH . '/wp-admin/includes/admin.php' );
+ include_once( ABSPATH . '/wp-admin/includes/plugin-install.php' );
+ include_once( ABSPATH . '/wp-admin/includes/plugin.php' );
+ include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' );
+ include_once( ABSPATH . '/wp-admin/includes/class-plugin-upgrader.php' );
+
+ $api = plugins_api( 'plugin_information', array( 'slug' => 'woocommerce-services' ) );
+
+ if ( is_wp_error( $api ) ) {
+ return false;
+ }
+
+ $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
+ $result = $upgrader->install( $api->download_link );
+
+ return true === $result;
+ }
+
+ /**
+ * Activate the WooCommerce Services plugin.
+ *
+ * @return bool result of activation
+ */
+ private function activate() {
+ $result = activate_plugin( 'woocommerce-services/woocommerce-services.php' );
+
+ // activate_plugin() returns null on success
+ return is_null( $result );
+ }
+}
+
+WC_Services_Installer::init();