PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / jetpack_vendor / automattic / jetpack-search / src / customberg / class-customberg.php
jetpack / jetpack_vendor / automattic / jetpack-search / src / customberg Last commit date
class-customberg.php 8 months ago
class-customberg.php
168 lines
1 <?php
2 /**
3 * A class that adds a search customization interface to wp-admin.
4 *
5 * @package automattic/jetpack-search
6 */
7
8 namespace Automattic\Jetpack\Search;
9
10 use Automattic\Jetpack\Assets;
11 use Automattic\Jetpack\Connection\Manager as Connection_Manager;
12 use Automattic\Jetpack\Status;
13 use Automattic\Jetpack\Tracking;
14
15 /**
16 * Responsible for adding a search customization interface to wp-admin.
17 *
18 * @package Automattic\Jetpack\Search
19 */
20 class Customberg {
21 /**
22 * The singleton instance of this class.
23 *
24 * @var Customberg
25 */
26 protected static $instance;
27
28 /**
29 * Search Plan class.
30 *
31 * @var Plan
32 */
33 public $plan;
34
35 /**
36 * Get the singleton instance of the class.
37 *
38 * @return Customberg
39 */
40 public static function instance() {
41 if ( ! isset( self::$instance ) ) {
42 self::$instance = new static();
43 self::$instance->init_hooks();
44 }
45
46 return self::$instance;
47 }
48
49 /**
50 * Adds action hooks.
51 */
52 public function init_hooks() {
53 add_action( 'admin_menu', array( $this, 'add_wp_admin_page' ), 999 );
54 add_filter( 'pre_option_jetpack_search_show_powered_by', array( $this, 'get_show_powered_by' ) );
55 $this->plan = new Plan();
56 }
57
58 /**
59 * Adds a wp-admin page without adding a sidebar submenu item.
60 */
61 public function add_wp_admin_page() {
62 if ( ! $this->should_add_page() ) {
63 return;
64 }
65
66 // Intentionally omits adding a submenu via the first empty argument.
67 $hook = add_submenu_page(
68 '',
69 /** "Search" is a product name, do not translate. */
70 'Jetpack Search',
71 'Search',
72 'manage_options', // Must be an admin.
73 'jetpack-search-configure',
74 array( $this, 'jetpack_search_admin_page' )
75 );
76
77 add_action( "admin_print_scripts-$hook", array( $this, 'load_assets' ) );
78 add_action( 'admin_footer', array( 'Automattic\Jetpack\Search\Helper', 'print_instant_search_sidebar' ) );
79 }
80
81 /**
82 * Force option value to be true if in free plan.
83 *
84 * @param string $value The incoming value to be replaced.
85 */
86 public function get_show_powered_by( $value ) {
87 if ( $this->plan->is_free_plan() ) {
88 return true;
89 }
90 return $value;
91 }
92
93 /**
94 * Prints the dashboard container.
95 */
96 public function jetpack_search_admin_page() {
97 // TODO: Spin this function off into a static helper function in a helper class for code reuse.
98 $static_url = apply_filters( 'jetpack_static_url', '//en.wordpress.com/i/loading/loading-64.gif' );
99 ?>
100 <div id="jp-search-configure" class="jp-search-configure-dashboard" style="height: calc(100vh - 100px);">
101 <div class="hide-if-no-js" style="height: 100%;">
102 <img class="jp-search-loader" width="32" height="32" alt="<?php esc_attr_e( 'Loading&hellip;', 'jetpack-search-pkg' ); ?>" src="<?php echo esc_url( $static_url ); ?>" style="
103 position: absolute;
104 left: 50%;
105 top: 50%;
106 "/>
107 </div>
108 <div class="hide-if-js"><?php esc_html_e( 'Your Jetpack Search customization page requires JavaScript to function properly.', 'jetpack-search-pkg' ); ?></div>
109 </div>
110 <?php
111 }
112
113 /**
114 * Loads assets for the customization experience.
115 */
116 public function load_assets() {
117 $this->load_assets_with_parameters( Package::get_installed_path() );
118 }
119
120 /**
121 * Loads script and style assets according to parameters provided.
122 *
123 * @param string $package_base_path - Base path for the search package.
124 */
125 public function load_assets_with_parameters( $package_base_path ) {
126 Tracking::register_tracks_functions_scripts( true );
127
128 Assets::register_script(
129 'jp-search-configure',
130 'build/customberg/jp-search-configure.js',
131 $package_base_path . '/src', // A full path to a file or a directory inside a plugin.
132 array(
133 'css_dependencies' => array(
134 'wp-components',
135 'wp-block-editor',
136 ),
137 'in_footer' => true,
138 'textdomain' => 'jetpack-search-pkg',
139 )
140 );
141 Assets::enqueue_script( 'jp-search-configure' );
142
143 // Use wp_add_inline_script instead of wp_localize_script, see https://core.trac.wordpress.org/ticket/25280.
144 wp_add_inline_script( 'jp-search-configure', 'var JetpackInstantSearchOptions=' . wp_json_encode( Helper::generate_initial_javascript_state(), JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP ) . ';', 'before' );
145 wp_add_inline_script(
146 'jp-search-configure',
147 "window.jetpackSearchConfigureInit( 'jp-search-configure' )"
148 );
149 }
150
151 /**
152 * Determine if the requisite page should be added to wp-admin.
153 *
154 * @return boolean
155 */
156 protected function should_add_page() {
157 $is_offline_mode = ( new Status() )->is_offline_mode();
158 $is_connected = ( new Connection_Manager( Package::SLUG ) )->is_connected();
159 $supports_search = ( new Plan() )->supports_instant_search();
160
161 return (
162 ! $is_offline_mode && // Must be online.
163 $is_connected && // Must be connected.
164 $supports_search // Must have plan supporting Jetpack (Instant) Search.
165 );
166 }
167 }
168