diff --git a/inc/Engine/Optimization/DynamicLists/AbstractDataManager.php b/inc/Engine/Optimization/DynamicLists/AbstractDataManager.php index b40dc74b39..7ff7009bac 100644 --- a/inc/Engine/Optimization/DynamicLists/AbstractDataManager.php +++ b/inc/Engine/Optimization/DynamicLists/AbstractDataManager.php @@ -157,4 +157,13 @@ private function put_lists_to_file( string $content ): bool { private function set_lists_cache( $content ) { set_transient( $this->get_cache_transient_name(), $content, $this->cache_duration ); } + + /** + * Removes the lists cache + * + * @return void + */ + public function remove_lists_cache() { + delete_transient( $this->get_cache_transient_name() ); + } } diff --git a/inc/Engine/Optimization/DynamicLists/DynamicLists.php b/inc/Engine/Optimization/DynamicLists/DynamicLists.php index 1734730889..ec1e1463e4 100644 --- a/inc/Engine/Optimization/DynamicLists/DynamicLists.php +++ b/inc/Engine/Optimization/DynamicLists/DynamicLists.php @@ -313,4 +313,30 @@ public function get_lrc_exclusions(): array { return $lists->lazy_rendering_exclusions ?? []; } + + /** + * Updates the lists from JSON files + * + * @return array + */ + public function update_lists_from_files() { + if ( $this->user->is_license_expired() ) { + return [ + 'success' => false, + 'data' => '', + 'message' => __( 'You need an active license to get the latest version of the lists from our server.', 'rocket' ), + ]; + } + + foreach ( $this->providers as $provider ) { + $provider->data_manager->remove_lists_cache(); + $provider->data_manager->get_lists(); + } + + return [ + 'success' => true, + 'data' => '', + 'message' => __( 'Lists are successfully updated from JSON files.', 'rocket' ), + ]; + } } diff --git a/inc/Engine/Optimization/DynamicLists/Subscriber.php b/inc/Engine/Optimization/DynamicLists/Subscriber.php index 048c8cb7ad..8089bdee89 100644 --- a/inc/Engine/Optimization/DynamicLists/Subscriber.php +++ b/inc/Engine/Optimization/DynamicLists/Subscriber.php @@ -44,6 +44,7 @@ public static function get_subscribed_events() { 'rocket_plugins_to_deactivate' => 'add_incompatible_plugins_to_deactivate', 'rocket_staging_list' => 'add_staging_exclusions', 'rocket_lrc_exclusions' => 'add_lrc_exclusions', + 'wp_rocket_upgrade' => 'update_lists_from_files', ]; } @@ -202,4 +203,13 @@ public function add_staging_exclusions( $stagings = [] ): array { public function add_lrc_exclusions( $exclusions ): array { return array_merge( (array) $exclusions, $this->dynamic_lists->get_lrc_exclusions() ); } + + /** + * Update dynamic lists from JSON files. + * + * @return void + */ + public function update_lists_from_files() { + $this->dynamic_lists->update_lists_from_files(); + } }