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 / class-cli.php
jetpack / jetpack_vendor / automattic / jetpack-search / src Last commit date
classic-search 5 days ago customberg 8 months ago customizer 3 months ago dashboard 2 months ago initializers 2 months ago inline-search 5 days ago instant-search 2 months ago search-blocks 5 days ago widgets 2 months ago wpes 9 months ago class-ai-answers.php 3 months ago class-cli.php 3 months ago class-helper.php 5 days ago class-module-control.php 2 months ago class-options.php 3 months ago class-package.php 5 days ago class-plan.php 9 months ago class-rest-controller.php 2 months ago class-settings.php 3 months ago class-stats.php 9 months ago class-template-tags.php 9 months ago
class-cli.php
128 lines
1 <?php
2 /**
3 * CLI class exposed by WPCLI
4 *
5 * @package automattic/jetpack-search
6 */
7
8 namespace Automattic\Jetpack\Search;
9
10 use WP_CLI;
11 use WP_CLI_Command;
12 use WP_Error;
13
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit( 0 );
16 }
17
18 if ( ! class_exists( 'WP_CLI_Command' ) ) {
19 return;
20 }
21
22 /**
23 * Provide functionality by WPCLI.
24 */
25 class CLI extends WP_CLI_Command {
26 /**
27 * Auto config instant search, including set result format, set up overlay widgets and add a search input to the home page thru widgets or blocks.
28 *
29 * ## EXAMPLES
30 *
31 * wp jetpack-search auto_config user_login
32 *
33 * wp jetpack-search auto_config user_id
34 *
35 * @param array $args - Args passsed in.
36 */
37 public function auto_config( $args ) {
38 try {
39 if ( empty( $args ) ) {
40 WP_CLI::error( 'A user login or ID is required.' );
41 }
42
43 // Some functions may require admin capabilities to run.
44 $ret = $this->set_user( $args[0] );
45 if ( is_wp_error( $ret ) ) {
46 WP_CLI::error( $ret->get_error_message() );
47 }
48
49 WP_CLI::line( 'Running as user ' . $ret->user_login . '' );
50 $blog_id = Helper::get_wpcom_site_id();
51 Instant_Search::instance( $blog_id )->auto_config_search();
52 WP_CLI::success( 'Auto config success!' );
53 } catch ( \Exception $e ) {
54 WP_CLI::error( $e->getMessage() );
55 }
56 }
57
58 /**
59 * Backfill the reserved-slot taxonomy projection for any user-facing
60 * taxonomies declared in `jetpack_search_custom_taxonomy_map`.
61 *
62 * Wraps `Custom_Taxonomy_Slot_Mapping::backfill()` so operators don't have
63 * to reach for `wp eval` and a fully-qualified static call. The auto-mirror
64 * on `set_object_terms` / `deleted_term_relationships` / `delete_term`
65 * keeps the slot in sync from the moment the mapping is declared — this
66 * subcommand only needs to run once after the mapping is first turned on,
67 * or after a gap during which the auto-mirror was inactive.
68 *
69 * ## OPTIONS
70 *
71 * [--mode=<mode>]
72 * : Backfill mode.
73 * ---
74 * default: mirror
75 * options:
76 * - mirror
77 * - rebuild
78 * ---
79 *
80 * ## EXAMPLES
81 *
82 * # Per-post mirror — cheap, idempotent, safe to re-run.
83 * wp jetpack-search backfill_taxonomy_slot_mapping
84 *
85 * # Full sweep — wipes the slot taxonomy first, then re-projects.
86 * wp jetpack-search backfill_taxonomy_slot_mapping --mode=rebuild
87 *
88 * @param array $args Positional args (unused).
89 * @param array $assoc_args Associative args. Supports `mode`.
90 */
91 public function backfill_taxonomy_slot_mapping( $args, $assoc_args ) {
92 $mode = isset( $assoc_args['mode'] ) ? (string) $assoc_args['mode'] : 'mirror';
93 if ( ! in_array( $mode, Custom_Taxonomy_Slot_Mapping::BACKFILL_MODES, true ) ) {
94 WP_CLI::error( sprintf( 'Unknown mode "%s"; expected one of: %s.', $mode, implode( ', ', Custom_Taxonomy_Slot_Mapping::BACKFILL_MODES ) ) );
95 }
96
97 if ( empty( Custom_Taxonomy_Slot_Mapping::get_map() ) ) {
98 WP_CLI::warning( 'jetpack_search_custom_taxonomy_map is empty; nothing to backfill.' );
99 return;
100 }
101
102 WP_CLI::line( sprintf( 'Running backfill in %s mode…', $mode ) );
103 try {
104 $count = Custom_Taxonomy_Slot_Mapping::backfill( $mode );
105 WP_CLI::success( sprintf( 'Backfilled %d (post, taxonomy) pair(s).', $count ) );
106 } catch ( \Exception $e ) {
107 WP_CLI::error( $e->getMessage() );
108 }
109 }
110
111 /**
112 * Set current user by ID or login
113 *
114 * @param string|int $user User ID or login.
115 */
116 protected function set_user( $user ) {
117 $get_user_by = 'login';
118 if ( filter_var( $user, FILTER_VALIDATE_INT ) > 0 ) {
119 $get_user_by = 'ID';
120 }
121 $user_info = get_user_by( $get_user_by, (string) $user );
122 if ( ! $user_info ) {
123 return new WP_Error( 'user_not_found', "Could not find user '{$user}' by {$get_user_by}." );
124 }
125 return wp_set_current_user( $user_info->ID );
126 }
127 }
128