File "class-initializer.php"
Full Path: /home/warrior1/public_html/languages/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/src/initializers/class-initializer.php
File size: 6.35 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Initializer base class.
*
* @package @automattic/jetpack-search
*/
namespace Automattic\Jetpack\Search;
use Automattic\Jetpack\Connection\Manager as Connection_Manager;
use WP_Error;
/**
* Base class for the initializer pattern.
*/
class Initializer {
/**
* Initialize the search package.
*
* The method is called from the `Config` class.
*/
public static function init() {
// Load compatibility files - at this point all plugins are already loaded.
static::include_compatibility_files();
// Set up package version hook.
add_filter( 'jetpack_package_versions', __NAMESPACE__ . '\Package::send_version_to_tracker' );
/**
* The filter allows abortion of the Jetpack Search package initialization.
*
* @since 0.11.2
*
* @param boolean $init_search_package Default value is true.
*/
if ( ! apply_filters( 'jetpack_search_init_search_package', true ) ) {
/**
* Fires when the Jetpack Search fails and would fallback to MySQL.
*
* @since Jetpack 7.9.0
* @param string $reason Reason for Search fallback.
* @param mixed $data Data associated with the request, such as attempted search parameters.
*/
do_action( 'jetpack_search_abort', 'jetpack_search_init_search_package_filter', null );
return;
}
static::init_before_connection();
// Check whether Jetpack Search should be initialized in the first place .
if ( ! static::is_connected() || ! static::is_search_supported() ) {
/** This filter is documented in search/src/initalizers/class-initalizer.php */
do_action( 'jetpack_search_abort', 'inactive', null );
return;
}
$blog_id = Helper::get_wpcom_site_id();
if ( ! $blog_id ) {
/** This filter is documented in search/src/initalizers/class-initalizer.php */
do_action( 'jetpack_search_abort', 'no_blog_id', null );
return;
}
if ( ! ( new Module_Control() )->is_active() ) {
/** This filter is documented in search/src/initalizers/class-initalizer.php */
do_action( 'jetpack_search_abort', 'module_inactive', null );
return;
}
// Initialize search package.
if ( ! static::init_search( $blog_id ) ) {
/** This filter is documented in search/src/initalizers/class-initalizer.php */
do_action( 'jetpack_search_abort', 'jetpack_search_init_search', null );
return;
}
/**
* Fires when the Jetpack Search package has been initialized.
*
* @since 0.11.2
*/
do_action( 'jetpack_search_loaded' );
}
/**
* Extra tweaks to make Jetpack Search play well with others.
*/
public static function include_compatibility_files() {
if ( class_exists( 'Jetpack' ) ) {
require_once Package::get_installed_path() . 'compatibility/jetpack.php';
}
require_once Package::get_installed_path() . 'compatibility/search-0.15.2.php';
require_once Package::get_installed_path() . 'compatibility/search-0.17.0.php';
}
/**
* Init functionality required for connection.
*/
protected static function init_before_connection() {
// Set up Search API endpoints.
add_action( 'rest_api_init', array( new REST_Controller(), 'register_rest_routes' ) );
// The dashboard has to be initialized before connection.
( new Dashboard() )->init_hooks();
}
/**
* Init the search package.
*
* @param int $blog_id WPCOM blog ID.
*/
protected static function init_search( $blog_id ) {
// We could provide CLI to enable search/instant search, so init them regardless of whether the module is active or not.
static::init_cli();
$success = false;
if ( ( new Module_Control() )->is_instant_search_enabled() ) {
// Enable Instant search experience.
$success = static::init_instant_search( $blog_id );
} else {
// Enable the classic search experience.
$success = static::init_classic_search( $blog_id );
}
if ( $success ) {
// registers Jetpack Search widget.
add_action( 'widgets_init', array( static::class, 'jetpack_search_widget_init' ) );
}
return $success;
}
/**
* Init Instant Search and its dependencies.
*
* @param int $blog_id WPCOM blog ID.
*/
protected static function init_instant_search( $blog_id ) {
/**
* The filter allows abortion of the Instant Search initialization.
*
* @since 0.11.2
*
* @param boolean $init_instant_search Default value is true.
*/
if ( ! apply_filters( 'jetpack_search_init_instant_search', true ) ) {
return;
}
// Enable the instant search experience.
Instant_Search::initialize( $blog_id );
// Register instant search configurables as WordPress settings.
new Settings();
// Instantiate "Customberg", the live search configuration interface.
Customberg::instance();
// Enable configuring instant search within the Customizer.
// Not need to check existence of `WP_Customize_Manager`, because which is not loaded all the time.
new Customizer();
return true;
}
/**
* Init Classic Search.
*
* @param int $blog_id WPCOM blog ID.
*/
protected static function init_classic_search( $blog_id ) {
/**
* The filter allows abortion of the Classic Search initialization.
*
* @since 0.11.2
*
* @param boolean $init_instant_search Default value is true.
*/
if ( ! apply_filters( 'jetpack_search_init_classic_search', true ) ) {
return;
}
Classic_Search::initialize( $blog_id );
return true;
}
/**
* Register jetpack-search CLI if `\CLI` exists.
*
* @return void
*/
protected static function init_cli() {
if ( defined( 'WP_CLI' ) && \WP_CLI ) {
\WP_CLI::add_command( 'jetpack-search', __NAMESPACE__ . '\CLI' );
}
}
/**
* Register the widget if Jetpack Search is available and enabled.
*/
public static function jetpack_search_widget_init() {
register_widget( 'Automattic\Jetpack\Search\Search_Widget' );
}
/**
* Check if site has been connected.
*/
protected static function is_connected() {
return ( new Connection_Manager( Package::SLUG ) )->is_connected();
}
/**
* Check if search is supported by current plan.
*/
protected static function is_search_supported() {
return ( new Plan() )->supports_search();
}
/**
* Perform necessary initialization steps for classic and instant search in the constructor.
*
* @deprecated
*/
public static function initialize() {
return new WP_Error(
'invalid-method',
/* translators: %s: Method name. */
sprintf( __( "Method '%s' not implemented. Must be overridden in subclass.", 'jetpack-search-pkg' ), __METHOD__ ),
array( 'status' => 405 )
);
}
}