advanced_cache = $advanced_cache; $this->wp_cache = $wp_cache; } /** * Returns an array of events that this subscriber wants to listen to. * * @return array */ public static function get_subscribed_events() { $slug = rocket_get_constant( 'WP_ROCKET_SLUG' ); return [ 'admin_init' => [ [ 'register_terms_row_action' ], [ 'maybe_set_wp_cache' ], ], 'admin_notices' => [ [ 'notice_advanced_cache_permissions' ], [ 'notice_wp_config_permissions' ], ], "update_option_{$slug}" => [ 'maybe_set_wp_cache', 12 ], 'site_status_tests' => 'add_wp_cache_status_test', ]; } /** * Sets the event manager for the subscriber. * * @param Event_Manager $event_manager Event Manager instance. */ public function set_event_manager( Event_Manager $event_manager ) { $this->event_manager = $event_manager; } /** * Registers the action for each public taxonomy * * @since 3.5.5 * * @return void */ public function register_terms_row_action() { $taxonomies = get_taxonomies( [ 'public' => true, 'publicly_queryable' => true, ] ); foreach ( $taxonomies as $taxonomy ) { $this->event_manager->add_callback( "{$taxonomy}_row_actions", [ $this, 'add_purge_term_link' ], 10, 2 ); } } /** * Adds a link "Purge this cache" in the terms list table * * @param array $actions An array of action links to be displayed. * @param WP_Term $term Term object. * * @return array */ public function add_purge_term_link( $actions, $term ) { if ( ! current_user_can( 'rocket_purge_terms' ) ) { return $actions; } $url = wp_nonce_url( admin_url( "admin-post.php?action=purge_cache&type=term-{$term->term_id}&taxonomy={$term->taxonomy}" ), "purge_cache_term-{$term->term_id}" ); $actions['rocket_purge'] = sprintf( '%2$s', $url, __( 'Clear this cache', 'rocket' ) ); return $actions; } /** * Displays the notice for advanced-cache.php permissions * * @since 3.6 * * @return void */ public function notice_advanced_cache_permissions() { $this->advanced_cache->notice_permissions(); } /** * Set WP_CACHE constant to true if needed * * @since 3.6.1 * * @return void */ public function maybe_set_wp_cache() { $this->wp_cache->maybe_set_wp_cache(); } /** * Displays the notice for wp-config.php permissions * * @since 3.6.1 * * @return void */ public function notice_wp_config_permissions() { $this->wp_cache->notice_wp_config_permissions(); } /** * Adds a Site Health check for the WP_CACHE constant value * * @since 3.6.1 * * @param array $tests An array of tests to perform. * @return array */ public function add_wp_cache_status_test( $tests ) { return $this->wp_cache->add_wp_cache_status_test( $tests ); } }