From 6c3796aa7e09854561a49ac03a0202d3e6f2b19f Mon Sep 17 00:00:00 2001 From: narenin Date: Wed, 25 Sep 2024 17:49:35 +0530 Subject: [PATCH 01/21] Implemented single WordPress.org API request to get plugin information --- .../includes/admin/plugins.php | 71 +++++++++---------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index b468d9d469..90b89e9b82 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -19,58 +19,55 @@ * @return array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], download_link: string, version: string}|WP_Error Array of plugin data or WP_Error if failed. */ function perflab_query_plugin_info( string $plugin_slug ) { - $plugin = get_transient( 'perflab_plugin_info_' . $plugin_slug ); - - if ( is_array( $plugin ) ) { - /** - * Validated (mostly) plugin data. - * - * @var array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], download_link: string, version: string} $plugin - */ - return $plugin; + $transient_key = 'perflab_plugins_info'; + $plugins = get_transient( $transient_key ); + + if ( is_array( $plugins ) && isset( $plugins[ $plugin_slug ] ) ) { + return $plugins[ $plugin_slug ]; } - $fields = array( - 'name', - 'slug', - 'short_description', - 'requires', - 'requires_php', - 'requires_plugins', - 'download_link', - 'version', // Needed by install_plugin_install_status(). - ); + $request = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.2/?action=query_plugins&request[author]=wordpressdotorg&request[tag]=performance&request[per_page]=100' ); - $plugin = plugins_api( - 'plugin_information', - array( - 'slug' => $plugin_slug, - 'fields' => array_fill_keys( $fields, true ), - ) - ); - - if ( is_wp_error( $plugin ) ) { - return $plugin; + if ( is_wp_error( $request ) ) { + return new WP_Error( 'api_error', __( 'Failed to retrieve plugins data from WordPress.org API.', 'default' ) ); } - if ( is_object( $plugin ) ) { - $plugin = (array) $plugin; + $body = wp_remote_retrieve_body( $request ); + $data = json_decode( $body, true ); + + if ( ! isset( $data['plugins'] ) || ! is_array( $data['plugins'] ) ) { + return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'default' ) ); } - // Only store what we need. - $plugin = wp_array_slice_assoc( $plugin, $fields ); + $plugins = array(); + foreach ( $data['plugins'] as $plugin_data ) { + $plugins[ $plugin_data['slug'] ] = wp_array_slice_assoc( + $plugin_data, + array( + 'name', + 'slug', + 'short_description', + 'requires', + 'requires_php', + 'requires_plugins', + 'download_link', + 'version', + ) + ); + } - // Make sure all fields default to false in case another plugin is modifying the response from WordPress.org via the plugins_api filter. - $plugin = array_merge( array_fill_keys( $fields, false ), $plugin ); + set_transient( $transient_key, $plugins, HOUR_IN_SECONDS ); - set_transient( 'perflab_plugin_info_' . $plugin_slug, $plugin, HOUR_IN_SECONDS ); + if ( ! isset( $plugins[ $plugin_slug ] ) ) { + return new WP_Error( 'plugin_not_found', __( 'Plugin not found.', 'default' ) ); + } /** * Validated (mostly) plugin data. * * @var array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], download_link: string, version: string} $plugin */ - return $plugin; + return $plugins[ $plugin_slug ]; } /** From 6179a0c45c5a10ba5966bedd18827a055edb4ef3 Mon Sep 17 00:00:00 2001 From: narenin Date: Wed, 25 Sep 2024 17:55:13 +0530 Subject: [PATCH 02/21] Implemented single WordPress.org API request to get plugin information --- plugins/performance-lab/includes/admin/plugins.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 90b89e9b82..ba91af0e38 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -41,8 +41,8 @@ function perflab_query_plugin_info( string $plugin_slug ) { $plugins = array(); foreach ( $data['plugins'] as $plugin_data ) { - $plugins[ $plugin_data['slug'] ] = wp_array_slice_assoc( - $plugin_data, + $plugins[ $plugin_data['slug'] ] = wp_array_slice_assoc( + $plugin_data, array( 'name', 'slug', From d6424a6bbf76e2c5605371cd98ab1704fb56e811 Mon Sep 17 00:00:00 2001 From: narenin Date: Wed, 25 Sep 2024 17:59:45 +0530 Subject: [PATCH 03/21] Implemented single WordPress.org API request to get plugin information --- plugins/performance-lab/includes/admin/plugins.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index ba91af0e38..98bdc43a7b 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -62,11 +62,6 @@ function perflab_query_plugin_info( string $plugin_slug ) { return new WP_Error( 'plugin_not_found', __( 'Plugin not found.', 'default' ) ); } - /** - * Validated (mostly) plugin data. - * - * @var array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], download_link: string, version: string} $plugin - */ return $plugins[ $plugin_slug ]; } From 23bd59163464a79af8a3e822498419d11f86bd78 Mon Sep 17 00:00:00 2001 From: narenin Date: Wed, 25 Sep 2024 18:09:14 +0530 Subject: [PATCH 04/21] Implemented single WordPress.org API request to get plugin information --- .../performance-lab/includes/admin/plugins.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 98bdc43a7b..2ce8947d03 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -41,7 +41,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { $plugins = array(); foreach ( $data['plugins'] as $plugin_data ) { - $plugins[ $plugin_data['slug'] ] = wp_array_slice_assoc( + $plugin_info = wp_array_slice_assoc( $plugin_data, array( 'name', @@ -54,6 +54,17 @@ function perflab_query_plugin_info( string $plugin_slug ) { 'version', ) ); + + // Ensure the 'requires_plugins' is always an array. + if ( ! isset( $plugin_info['requires_plugins'] ) || ! is_array( $plugin_info['requires_plugins'] ) ) { + $plugin_info['requires_plugins'] = array(); + } + + // Ensure 'requires' and 'requires_php' are either strings or false. + $plugin_info['requires'] = isset( $plugin_info['requires'] ) ? $plugin_info['requires'] : false; + $plugin_info['requires_php'] = isset( $plugin_info['requires_php'] ) ? $plugin_info['requires_php'] : false; + + $plugins[ $plugin_data['slug'] ] = $plugin_info; } set_transient( $transient_key, $plugins, HOUR_IN_SECONDS ); @@ -62,6 +73,11 @@ function perflab_query_plugin_info( string $plugin_slug ) { return new WP_Error( 'plugin_not_found', __( 'Plugin not found.', 'default' ) ); } + /** + * Validated (mostly) plugin data. + * + * @var array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: array, download_link: string, version: string} $plugin + */ return $plugins[ $plugin_slug ]; } From 075cf4928c4bcd8491ae12e5d76da087ffe170cd Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Wed, 25 Sep 2024 23:07:53 +0530 Subject: [PATCH 05/21] Update plugins/performance-lab/includes/admin/plugins.php Co-authored-by: Weston Ruter --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 2ce8947d03..bea8daa224 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -76,7 +76,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { /** * Validated (mostly) plugin data. * - * @var array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: array, download_link: string, version: string} $plugin + * @var array $plugins */ return $plugins[ $plugin_slug ]; } From 0e669f290f5f02e9c5864ff925872042c5802303 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Wed, 25 Sep 2024 23:43:01 +0530 Subject: [PATCH 06/21] Implemented the suggested changes. --- plugins/performance-lab/includes/admin/plugins.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index bea8daa224..4dd920e5b3 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -26,17 +26,17 @@ function perflab_query_plugin_info( string $plugin_slug ) { return $plugins[ $plugin_slug ]; } - $request = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.2/?action=query_plugins&request[author]=wordpressdotorg&request[tag]=performance&request[per_page]=100' ); + $response = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.2/?action=query_plugins&request[author]=wordpressdotorg&request[tag]=performance&request[per_page]=100' ); - if ( is_wp_error( $request ) ) { - return new WP_Error( 'api_error', __( 'Failed to retrieve plugins data from WordPress.org API.', 'default' ) ); + if ( is_wp_error( $response ) ) { + return new WP_Error( 'api_error', __( 'Failed to retrieve plugins data from WordPress.org API: ' . $request->get_error_message(), 'performance-lab' ) ); } - $body = wp_remote_retrieve_body( $request ); + $body = wp_remote_retrieve_body( $response ); $data = json_decode( $body, true ); if ( ! isset( $data['plugins'] ) || ! is_array( $data['plugins'] ) ) { - return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'default' ) ); + return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); } $plugins = array(); @@ -70,7 +70,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { set_transient( $transient_key, $plugins, HOUR_IN_SECONDS ); if ( ! isset( $plugins[ $plugin_slug ] ) ) { - return new WP_Error( 'plugin_not_found', __( 'Plugin not found.', 'default' ) ); + return new WP_Error( 'plugin_not_found', __( 'Plugin not found.', 'performance-lab' ) ); } /** From 9298221f0923bbb86f8039e277cea96e4ab638de Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Wed, 25 Sep 2024 23:51:20 +0530 Subject: [PATCH 07/21] Implemented translation with Interpolation. Co-authored-by: Felix Arntz --- plugins/performance-lab/includes/admin/plugins.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 4dd920e5b3..ac5b9733df 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -29,7 +29,14 @@ function perflab_query_plugin_info( string $plugin_slug ) { $response = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.2/?action=query_plugins&request[author]=wordpressdotorg&request[tag]=performance&request[per_page]=100' ); if ( is_wp_error( $response ) ) { - return new WP_Error( 'api_error', __( 'Failed to retrieve plugins data from WordPress.org API: ' . $request->get_error_message(), 'performance-lab' ) ); + return new WP_Error( + 'api_error', + sprintf( + /* translators: %s: API error message */ + __( 'Failed to retrieve plugins data from WordPress.org API: %s', 'performance-lab' ), + $request->get_error_message() + ) + ); } $body = wp_remote_retrieve_body( $response ); From fcfdc438b52dccb60d8f369a91a833d92f87a346 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Wed, 25 Sep 2024 23:54:02 +0530 Subject: [PATCH 08/21] Replace $request with $response --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index ac5b9733df..62cabece0d 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -34,7 +34,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { sprintf( /* translators: %s: API error message */ __( 'Failed to retrieve plugins data from WordPress.org API: %s', 'performance-lab' ), - $request->get_error_message() + $response->get_error_message() ) ); } From b4b4dfd05cbfad9bf8962b33b125bab29ff4b8da Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Wed, 25 Sep 2024 23:59:20 +0530 Subject: [PATCH 09/21] Implemented the suggested changes. --- plugins/performance-lab/includes/admin/plugins.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 62cabece0d..6910bc7b14 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -22,8 +22,12 @@ function perflab_query_plugin_info( string $plugin_slug ) { $transient_key = 'perflab_plugins_info'; $plugins = get_transient( $transient_key ); - if ( is_array( $plugins ) && isset( $plugins[ $plugin_slug ] ) ) { - return $plugins[ $plugin_slug ]; + if ( is_array( $plugins ) ) { + /* If the specific plugin_slug is not in the cache, return an error. */ + if ( ! isset( $plugins[ $plugin_slug ] ) ) { + return new WP_Error( 'plugin_not_found', __( 'Plugin not found.', 'performance-lab' ) ); + } + return $plugins[ $plugin_slug ]; // Return cached plugin info if found } $response = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.2/?action=query_plugins&request[author]=wordpressdotorg&request[tag]=performance&request[per_page]=100' ); From 04ec26105aaa56fe7c8a8a5643dfbcd860ab7ad8 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Thu, 26 Sep 2024 00:01:24 +0530 Subject: [PATCH 10/21] Fixed PHPCS Warning --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 6910bc7b14..72ad4be29d 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -27,7 +27,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { if ( ! isset( $plugins[ $plugin_slug ] ) ) { return new WP_Error( 'plugin_not_found', __( 'Plugin not found.', 'performance-lab' ) ); } - return $plugins[ $plugin_slug ]; // Return cached plugin info if found + return $plugins[ $plugin_slug ]; // Return cached plugin info if found. } $response = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.2/?action=query_plugins&request[author]=wordpressdotorg&request[tag]=performance&request[per_page]=100' ); From c9aceb28f6c7776762f22c29828a834bab09c446 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Thu, 26 Sep 2024 00:10:14 +0530 Subject: [PATCH 11/21] Implemented plugin_api() --- .../performance-lab/includes/admin/plugins.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 72ad4be29d..8774c9b723 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -30,7 +30,15 @@ function perflab_query_plugin_info( string $plugin_slug ) { return $plugins[ $plugin_slug ]; // Return cached plugin info if found. } - $response = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.2/?action=query_plugins&request[author]=wordpressdotorg&request[tag]=performance&request[per_page]=100' ); + // Proceed with API request since no cache hit. + $response = plugins_api( + 'query_plugins', + array( + 'author' => 'wordpressdotorg', + 'tag' => 'performance', + 'per_page' => 100, + ) + ); if ( is_wp_error( $response ) ) { return new WP_Error( @@ -46,12 +54,13 @@ function perflab_query_plugin_info( string $plugin_slug ) { $body = wp_remote_retrieve_body( $response ); $data = json_decode( $body, true ); - if ( ! isset( $data['plugins'] ) || ! is_array( $data['plugins'] ) ) { + // Check if the response contains plugins. + if ( ! isset( $response->plugins ) || ! is_array( $response->plugins ) ) { return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); } $plugins = array(); - foreach ( $data['plugins'] as $plugin_data ) { + foreach ( $response->plugins as $plugin_data ) { $plugin_info = wp_array_slice_assoc( $plugin_data, array( From 72bb1bd6cf10e9f94022eab372ff001d108ab8e5 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Thu, 26 Sep 2024 00:15:18 +0530 Subject: [PATCH 12/21] Fixed PHPCS Issues --- plugins/performance-lab/includes/admin/plugins.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 8774c9b723..b28ce81113 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -30,7 +30,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { return $plugins[ $plugin_slug ]; // Return cached plugin info if found. } - // Proceed with API request since no cache hit. + /* Proceed with API request since no cache hit. */ $response = plugins_api( 'query_plugins', array( @@ -51,10 +51,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { ); } - $body = wp_remote_retrieve_body( $response ); - $data = json_decode( $body, true ); - - // Check if the response contains plugins. + /* Check if the response contains plugins. */ if ( ! isset( $response->plugins ) || ! is_array( $response->plugins ) ) { return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); } From d17c8351684d4c48e11f8a4f28324e6ce0245aa9 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Thu, 26 Sep 2024 00:22:02 +0530 Subject: [PATCH 13/21] Update plugins.php --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index b28ce81113..afb96a7009 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -52,7 +52,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { } /* Check if the response contains plugins. */ - if ( ! isset( $response->plugins ) || ! is_array( $response->plugins ) ) { + if ( ! is_object( $response ) || ! isset( $response->plugins ) || ! is_array( $response->plugins ) ) { return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); } From 5dc56de4847016217cc929f479df2727a30ce651 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Thu, 26 Sep 2024 00:39:19 +0530 Subject: [PATCH 14/21] Update plugins.php --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index afb96a7009..25615a5aa6 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -52,7 +52,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { } /* Check if the response contains plugins. */ - if ( ! is_object( $response ) || ! isset( $response->plugins ) || ! is_array( $response->plugins ) ) { + if ( ! is_object( $response ) ) { return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); } From 3490ae877b355438a12c281a4157e10a9d0a693b Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Thu, 26 Sep 2024 00:48:01 +0530 Subject: [PATCH 15/21] Update plugins.php --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 25615a5aa6..322acb23fc 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -52,7 +52,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { } /* Check if the response contains plugins. */ - if ( ! is_object( $response ) ) { + if ( ! ( is_object( $response ) && property_exists( $response, 'plugins' ) ) ) { return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); } From bf170bce874cdce112dbe8b6d42eeb1e58a7c7e2 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Thu, 26 Sep 2024 07:22:34 +0530 Subject: [PATCH 16/21] Update plugins/performance-lab/includes/admin/plugins.php Co-authored-by: Weston Ruter --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 322acb23fc..3c60027f44 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -30,7 +30,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { return $plugins[ $plugin_slug ]; // Return cached plugin info if found. } - /* Proceed with API request since no cache hit. */ + // Proceed with API request since no cache hit. $response = plugins_api( 'query_plugins', array( From c9e287efc73818c6d92f6fb13abece37ea20b319 Mon Sep 17 00:00:00 2001 From: narenin Date: Thu, 26 Sep 2024 10:39:49 +0530 Subject: [PATCH 17/21] Implemented the suggestions --- .../includes/admin/plugins.php | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 3c60027f44..983ba2f3c1 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -21,6 +21,16 @@ function perflab_query_plugin_info( string $plugin_slug ) { $transient_key = 'perflab_plugins_info'; $plugins = get_transient( $transient_key ); + $fields = array( + 'name', + 'slug', + 'short_description', + 'requires', + 'requires_php', + 'requires_plugins', + 'download_link', + 'version', // Needed by install_plugin_install_status(). + ); if ( is_array( $plugins ) ) { /* If the specific plugin_slug is not in the cache, return an error. */ @@ -37,6 +47,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { 'author' => 'wordpressdotorg', 'tag' => 'performance', 'per_page' => 100, + 'fields' => array_fill_keys( $fields, true ), ) ); @@ -58,19 +69,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { $plugins = array(); foreach ( $response->plugins as $plugin_data ) { - $plugin_info = wp_array_slice_assoc( - $plugin_data, - array( - 'name', - 'slug', - 'short_description', - 'requires', - 'requires_php', - 'requires_plugins', - 'download_link', - 'version', - ) - ); + $plugin_info = wp_array_slice_assoc( $plugin_data, $fields ); // Ensure the 'requires_plugins' is always an array. if ( ! isset( $plugin_info['requires_plugins'] ) || ! is_array( $plugin_info['requires_plugins'] ) ) { From 798de3e9f334f02267f0003bda294d6e7826abe2 Mon Sep 17 00:00:00 2001 From: narenin Date: Thu, 26 Sep 2024 10:41:21 +0530 Subject: [PATCH 18/21] Implemented the suggestions --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 983ba2f3c1..7951d43f5a 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -62,7 +62,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { ); } - /* Check if the response contains plugins. */ + // Check if the response contains plugins. if ( ! ( is_object( $response ) && property_exists( $response, 'plugins' ) ) ) { return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); } From b52f0e0f55e0cee2858e3dbb758894dd114ab116 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Fri, 27 Sep 2024 07:14:06 +0530 Subject: [PATCH 19/21] Update plugins/performance-lab/includes/admin/plugins.php Co-authored-by: Weston Ruter --- plugins/performance-lab/includes/admin/plugins.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 7951d43f5a..387333a4c5 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -33,7 +33,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { ); if ( is_array( $plugins ) ) { - /* If the specific plugin_slug is not in the cache, return an error. */ + // If the specific plugin_slug is not in the cache, return an error. if ( ! isset( $plugins[ $plugin_slug ] ) ) { return new WP_Error( 'plugin_not_found', __( 'Plugin not found.', 'performance-lab' ) ); } From a08274102e9e763adb764d47a80034c85ca7aad6 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Fri, 27 Sep 2024 07:14:35 +0530 Subject: [PATCH 20/21] Update plugins/performance-lab/includes/admin/plugins.php Co-authored-by: Weston Ruter --- plugins/performance-lab/includes/admin/plugins.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index 387333a4c5..d677b57118 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -77,8 +77,8 @@ function perflab_query_plugin_info( string $plugin_slug ) { } // Ensure 'requires' and 'requires_php' are either strings or false. - $plugin_info['requires'] = isset( $plugin_info['requires'] ) ? $plugin_info['requires'] : false; - $plugin_info['requires_php'] = isset( $plugin_info['requires_php'] ) ? $plugin_info['requires_php'] : false; + $plugin_info['requires'] = $plugin_info['requires'] ?? false; + $plugin_info['requires_php'] = $plugin_info['requires_php'] ?? false; $plugins[ $plugin_data['slug'] ] = $plugin_info; } From 843b12d55707c91bb016a1446e97d440e51e2a62 Mon Sep 17 00:00:00 2001 From: Narendra Sishodiya <32844880+narenin@users.noreply.github.com> Date: Fri, 27 Sep 2024 07:18:29 +0530 Subject: [PATCH 21/21] Implemented suggestions --- plugins/performance-lab/includes/admin/plugins.php | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/plugins/performance-lab/includes/admin/plugins.php b/plugins/performance-lab/includes/admin/plugins.php index d677b57118..5c146d3f1c 100644 --- a/plugins/performance-lab/includes/admin/plugins.php +++ b/plugins/performance-lab/includes/admin/plugins.php @@ -69,18 +69,7 @@ function perflab_query_plugin_info( string $plugin_slug ) { $plugins = array(); foreach ( $response->plugins as $plugin_data ) { - $plugin_info = wp_array_slice_assoc( $plugin_data, $fields ); - - // Ensure the 'requires_plugins' is always an array. - if ( ! isset( $plugin_info['requires_plugins'] ) || ! is_array( $plugin_info['requires_plugins'] ) ) { - $plugin_info['requires_plugins'] = array(); - } - - // Ensure 'requires' and 'requires_php' are either strings or false. - $plugin_info['requires'] = $plugin_info['requires'] ?? false; - $plugin_info['requires_php'] = $plugin_info['requires_php'] ?? false; - - $plugins[ $plugin_data['slug'] ] = $plugin_info; + $plugins[ $plugin_data['slug'] ] = wp_array_slice_assoc( $plugin_data, $fields ); } set_transient( $transient_key, $plugins, HOUR_IN_SECONDS );