false ); /** * String Locator Styles and Scripts. */ wp_enqueue_style( 'string-locator-replace', trailingslashit( STRING_LOCATOR_PLUGIN_URL ) . 'build/string-locator-replace.css', array(), $replace['version'] ); wp_enqueue_script( 'string-locator-replace', trailingslashit( STRING_LOCATOR_PLUGIN_URL ) . 'build/string-locator-replace.js', array(), $replace['version'], true ); wp_localize_script( 'string-locator-replace', 'stringLocatorReplace', array( 'rest_nonce' => wp_create_nonce( 'wp_rest' ), 'replace_nonce' => wp_create_nonce( 'string-locator-replace' ), 'url' => array( 'replace' => get_rest_url( null, 'string-locator/v1/replace' ), ), 'string' => array( 'replace_started' => __( 'Running replacemenets...', 'string-locator' ), 'button_show' => __( 'Show replacement controls', 'string-locator' ), 'button_hide' => __( 'Hide replacement controls', 'string-locator' ), 'confirm_all' => __( 'Are you sure you want to replace all strings?', 'string-locator' ), ), ) ); /** * Instawp installation event handle script * */ wp_enqueue_script( 'string-locator-instawp', trailingslashit( STRING_LOCATOR_PLUGIN_URL ) . 'build/string-locator-instawp.js', array( 'jquery', 'updates' ), $replace['version'], false ); wp_localize_script( 'string-locator-instawp', 'instawp_activate', array( 'nonce' => wp_create_nonce( 'string-locator-activate-instawp' ) ) ); } /** * Output a toggle button to display the replacement form. * * @return void */ public function add_replace_button() { printf( '', esc_html__( 'Show replacement controls', 'string-locator' ) ); } /** * Output a button to display the create staging site. * * @return void */ public function add_instawp_stage_button() { self::install_plugin_button( 'instawp-connect', 'instawp-connect.php', 'InstaWP Connect', array(), __( 'Go to InstaWP →', 'string-locator' ), __( 'Activate InstaWP', 'string-locator' ), __( 'Create a Staging Site (powered by InstaWP)', 'string-locator' ) ); } public static function install_plugin_button( $plugin_slug, $plugin_file, $plugin_name, $classes = array(), $activated = '', $activate = '', $install = '' ) { if ( current_user_can( 'install_plugins' ) && current_user_can( 'activate_plugins' ) ) { if ( is_plugin_active( $plugin_slug . '/' . $plugin_file ) ) { // The plugin is already active. // $instawp_connect = menu_page_url( 'instawp-connect', false ); $instawp_connect = menu_page_url( 'instawp', false ); $button = array( 'message' => esc_attr__( 'Create a Staging Site', 'string-locator' ), 'url' => $instawp_connect, 'classes' => array( 'string-locator-instawp-button', 'disabled' ), ); if ( '' !== $activated ) { $button['message'] = esc_attr( $activated ); $button['target'] = "onclick=\"window.open('{$instawp_connect}', '_blank');\""; } $button['logo-img'] = 'InstaWP logo'; } elseif ( self::is_plugin_installed( $plugin_slug ) ) { $url = self::is_plugin_installed( $plugin_slug ); // The plugin exists but isn't activated yet. $button = array( 'message' => esc_attr__( 'Create a Staging Site', 'string-locator' ), // 'url' => $url, 'url' => 'javascript:void 0;', 'classes' => array( 'instawp-activate-now' ), ); $button['logo-img'] = 'InstaWP logo'; if ( '' !== $activate ) { $button['message'] = esc_attr( $activate ); } } else { // The plugin doesn't exist. $url = wp_nonce_url( add_query_arg( array( 'action' => 'install-plugin', 'plugin' => $plugin_slug, ), self_admin_url( 'update.php' ) ), 'install-plugin_' . $plugin_slug ); $button = array( 'message' => esc_attr__( 'Create a Staging Site', 'string-locator' ), 'url' => $url, 'classes' => array( 'sl-instawp-install-now', 'install-now', 'install-' . $plugin_slug ), ); if ( '' !== $install ) { $button['message'] = esc_attr( $install ); } $button['logo-img'] = 'InstaWP logo'; } if ( ! empty( $classes ) ) { $button['classes'] = array_merge( $button['classes'], $classes ); } $button['classes'] = implode( ' ', $button['classes'] ); ?> get_error_message() ); } $instawp_link = menu_page_url( 'instawp', false ); if ( empty( $instawp_link ) ) { $instawp_link = admin_url( 'tools.php?page=instawp' ); } $response = array( 'message' => __( 'Plugin installed and activated successfully.', 'string-locator' ), 'href' => $instawp_link, 'anchor_text' => __( 'Go to InstaWP →', 'string-locator' ), ); wp_send_json_success( $response ); wp_die(); } /** * Check if a plugin is installed and return the url to activate it if so. * * @param string $plugin_slug The plugin slug. */ private static function is_plugin_installed( $plugin_slug ) { if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) { $plugins = get_plugins( '/' . $plugin_slug ); if ( ! empty( $plugins ) ) { $keys = array_keys( $plugins ); $plugin_file = $plugin_slug . '/' . $keys[0]; $url = wp_nonce_url( add_query_arg( array( 'action' => 'activate', 'plugin' => $plugin_file, ), admin_url( 'plugins.php' ) ), 'activate-plugin_' . $plugin_file ); return $url; } } return false; } /** * Output the replacement form. * * @return void */ public function output_replace_form() { $instawp_plugin = 'instawp-connect'; include_once __DIR__ . '/views/replace-form.php'; } } new Replace();