Viewing file: InstallJPAndKKARTSPlugins.php (3.69 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * Kkart Admin Add Install Jetpack and Kkart Shipping & Tax Plugin Note Provider. * * Adds a note to the merchant's inbox prompting them to install the Jetpack * and Kkart Shipping & Tax plugins after it fails to install during * Kkart setup. */
namespace Automattic\Kkart\Admin\Notes;
defined( 'ABSPATH' ) || exit;
use \Automattic\Kkart\Admin\PluginsHelper;
/** * Install_JP_And_KKARTS_Plugins */ class InstallJPAndKKARTSPlugins { /** * Note traits. */ use NoteTraits;
/** * Name of the note for use in the database. */ const NOTE_NAME = 'kkart-admin-install-jp-and-wcs-plugins';
/** * Constructor. */ public function __construct() { add_action( 'kkart_note_action_install-jp-and-wcs-plugins', array( $this, 'install_jp_and_wcs_plugins' ) ); add_action( 'activated_plugin', array( $this, 'action_note' ) ); }
/** * Get the note. * * @return Note */ public static function get_note() { $content = __( 'We noticed that there was a problem during the Jetpack and Kkart Shipping & Tax install. Please try again and enjoy all the advantages of having the plugins connected to your store! Sorry for the inconvenience. The "Jetpack" and "Kkart Shipping & Tax" plugins will be installed & activated for free.', 'kkart' );
$note = new Note(); $note->set_title( __( 'Uh oh... There was a problem during the Jetpack and Kkart Shipping & Tax install. Please try again.', 'kkart' ) ); $note->set_content( $content ); $note->set_content_data( (object) array() ); $note->set_type( Note::E_KKART_ADMIN_NOTE_INFORMATIONAL ); $note->set_name( self::NOTE_NAME ); $note->set_source( 'kkart-admin' ); $note->add_action( 'install-jp-and-wcs-plugins', __( 'Install plugins', 'kkart' ), false, Note::E_KKART_ADMIN_NOTE_ACTIONED, true ); return $note; }
/** * Action the Install Jetpack and Kkart Shipping & Tax note, if any exists, * and as long as both the Jetpack and Kkart Shipping & Tax plugins have been * activated. */ public static function action_note() { // Make sure that both plugins are active before actioning the note. $active_plugin_slugs = PluginsHelper::get_active_plugin_slugs(); $jp_active = in_array( 'jetpack', $active_plugin_slugs, true ); $wcs_active = in_array( 'kkart-services', $active_plugin_slugs, true );
if ( ! $jp_active || ! $wcs_active ) { return; }
// Action any notes with a matching name. $data_store = \KKART_Data_Store::load( 'admin-note' ); $note_ids = $data_store->get_notes_with_name( self::NOTE_NAME );
foreach ( $note_ids as $note_id ) { $note = Notes::get_note( $note_id );
if ( $note ) { $note->set_status( Note::E_KKART_ADMIN_NOTE_ACTIONED ); $note->save(); } } }
/** * Install the Jetpack and Kkart Shipping & Tax plugins in response to the action * being clicked in the admin note. * * @param Note $note The note being actioned. */ public function install_jp_and_wcs_plugins( $note ) { if ( self::NOTE_NAME !== $note->get_name() ) { return; }
$this->install_and_activate_plugin( 'jetpack' ); $this->install_and_activate_plugin( 'kkart-services' ); }
/** * Installs and activates the specified plugin. * * @param string $plugin The plugin slug. */ private function install_and_activate_plugin( $plugin ) { $install_request = array( 'plugin' => $plugin ); $installer = new \Automattic\Kkart\Admin\API\OnboardingPlugins(); $result = $installer->install_plugin( $install_request );
// @todo Use the error statuses to decide whether or not to action the note. if ( is_wp_error( $result ) ) { return; }
$activate_request = array( 'plugins' => $plugin );
$installer->activate_plugins( $activate_request ); } }
|