assets(); $this->content = $this->content_html(); $this->buttons = [ '#install-woo' => esc_html__( 'Install WooCommerce', 'sellkit' ), ]; } /** * Enqueue required assets because these won't be loaded if Woocommerce is not installed. * * @since 1.1.0 */ public function assets() { if ( ! $this->is_valid() ) { return; } add_action( 'admin_enqueue_scripts', function() { wp_enqueue_style( 'sellkit-admin-notices-woo', sellkit()->plugin_url() . 'assets/dist/css/admin.min.css', [], sellkit()->version() ); wp_enqueue_script( 'sellkit-admin-notice-woo', sellkit()->plugin_url() . 'assets/dist/js/admin.min.js', [ 'jquery' ], sellkit()->version(), true ); } ); } /** * Check if notice is valid or not. * * @since 1.1.0 * @return bool */ public function is_valid() { if ( class_exists( 'woocommerce' ) ) { return false; } return true; } /** * Content of notice. * * @since 1.1.0 */ public function content_html() { $message = sprintf( '' . '

' . esc_html__( 'Welcome to Sellkit', 'sellkit' ) . '

' /* Translators: 1: bold sellkit 2: bold woocommerce */ . esc_html__( 'The %1$s plugin requires the %2$s plugin to be installed & activated as well.', 'sellkit' ) . '
', 'Sellkit', 'WooCommerce' ); return $message; } /** * Set the priority of notice. * * @since 1.1.0 * @return int */ public function priority() { return 1; } /** * Install WooCommerce plugin. * * @since 1.2.1 */ public function installer() { check_ajax_referer( 'sellkit_admin', 'nonce' ); require_once ABSPATH . '/wp-load.php'; require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/misc.php'; require_once ABSPATH . 'wp-admin/includes/plugin.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $result = $this->sellkit_install_plugin( 'woocommerce' ); if ( false === $result ) { wp_send_json_error(); } wp_send_json_success(); } /** * Install WordPress plugin by slug. * * @param array $slug plugins slug. * @since 1.2.1 * @return bool */ private function sellkit_install_plugin( $slug ) { $plugin_dir = WP_PLUGIN_DIR . '/' . $slug; // Plugin not installed. if ( ! is_dir( $plugin_dir ) ) { $api = plugins_api( 'plugin_information', [ 'slug' => $slug, 'fields' => [ 'short_description' => false, 'sections' => false, 'requires' => false, 'rating' => false, 'ratings' => false, 'downloaded' => false, 'last_updated' => false, 'added' => false, 'tags' => false, 'compatibility' => false, 'homepage' => false, 'donate_link' => false, ], ] ); $skin = new \Plugin_Installer_Skin( [ 'api' => $api ] ); $upgrader = new \Plugin_Upgrader( $skin ); $install = $upgrader->install( $api->download_link ); if ( true !== $install ) { return false; } } $plugin_path = $plugin_dir . '/' . $slug . '.php'; if ( file_exists( $plugin_path ) ) { activate_plugin( $plugin_path ); return true; } return false; } }