Fix timeout issue during plugin activation (v1.2.2)
This commit is contained in:
@ -2,6 +2,15 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [1.2.2] - 2023-10-05
|
||||||
|
### Fixed
|
||||||
|
- Timeout issue during plugin activation
|
||||||
|
- Potential infinite recursion in admin notices handling
|
||||||
|
|
||||||
|
### Improved
|
||||||
|
- Hook management to prevent performance issues
|
||||||
|
- Optimized by only loading on plugins page
|
||||||
|
|
||||||
## [1.2.1] - 2025-04-07
|
## [1.2.1] - 2025-04-07
|
||||||
### Improved
|
### Improved
|
||||||
- Fixed typos in documentation
|
- Fixed typos in documentation
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Plugin Reference Cleaner
|
# Plugin Reference Cleaner
|
||||||
Author: Marcus Quinn
|
Author: Marcus Quinn
|
||||||
Author URI: https://wpallstars.com
|
Author URI: https://www.wpallstars.com
|
||||||
Version: 1.2.1
|
Version: 1.2.2
|
||||||
License: GPL-2.0+
|
License: GPL-2.0+
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
@ -47,6 +47,11 @@ If you don't have this notification perpetually showing on your /wp-admin/plugin
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
### 1.2.2
|
||||||
|
* Fixed timeout issue during plugin activation
|
||||||
|
* Improved hook management to prevent potential infinite recursion
|
||||||
|
* Optimized performance by only loading on plugins page
|
||||||
|
|
||||||
### 1.2.1
|
### 1.2.1
|
||||||
* Fixed typos in documentation
|
* Fixed typos in documentation
|
||||||
* Improved text clarity
|
* Improved text clarity
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
/*
|
/*
|
||||||
* Plugin Name: Plugin Reference Cleaner
|
* Plugin Name: Plugin Reference Cleaner
|
||||||
* Description: Adds a "Remove Reference" button to plugin deactivation error notices, allowing users to clean up invalid plugin entries.
|
* Description: Adds a "Remove Reference" button to plugin deactivation error notices, allowing users to clean up invalid plugin entries.
|
||||||
* Version: 1.2.1
|
* Version: 1.2.2
|
||||||
* Author: Marcus Quinn
|
* Author: Marcus Quinn
|
||||||
* Author URI: https://wpallstars.com
|
* Author URI: https://www.wpallstars.com
|
||||||
* License: GPL-2.0+
|
* License: GPL-2.0+
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -15,22 +15,21 @@ if (!defined('ABSPATH')) {
|
|||||||
|
|
||||||
class Plugin_Reference_Cleaner {
|
class Plugin_Reference_Cleaner {
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
|
// Only hook into admin actions when on the plugins page
|
||||||
|
add_action('current_screen', function($screen) {
|
||||||
|
if (isset($screen->id) && ($screen->id === 'plugins' || $screen->id === 'plugins-network')) {
|
||||||
// Hook into admin notices to modify plugin error messages
|
// Hook into admin notices to modify plugin error messages
|
||||||
add_action('admin_notices', array($this, 'inject_remove_button'), 100);
|
add_action('admin_notices', array($this, 'inject_remove_button'), 100);
|
||||||
add_action('network_admin_notices', array($this, 'inject_remove_button'), 100); // Ensure notices in network admin
|
add_action('network_admin_notices', array($this, 'inject_remove_button'), 100);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Handle the AJAX request to remove the plugin reference
|
// Handle the AJAX request to remove the plugin reference
|
||||||
add_action('wp_ajax_remove_plugin_reference', array($this, 'remove_plugin_reference'));
|
add_action('wp_ajax_remove_plugin_reference', array($this, 'remove_plugin_reference'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inject "Remove Reference" button only if a relevant notice exists
|
// Inject "Remove Reference" button only if a relevant notice exists
|
||||||
public function inject_remove_button() {
|
public function inject_remove_button() {
|
||||||
global $pagenow;
|
|
||||||
|
|
||||||
// Only run on plugins.php or network admin plugins page
|
|
||||||
if (!in_array($pagenow, array('plugins.php', 'plugins.php'))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if a "Plugin file does not exist" notice exists
|
// Check if a "Plugin file does not exist" notice exists
|
||||||
$notices = $this->get_admin_notices();
|
$notices = $this->get_admin_notices();
|
||||||
$has_error_notice = false;
|
$has_error_notice = false;
|
||||||
@ -117,11 +116,23 @@ class Plugin_Reference_Cleaner {
|
|||||||
|
|
||||||
// Helper function to capture admin notices
|
// Helper function to capture admin notices
|
||||||
private function get_admin_notices() {
|
private function get_admin_notices() {
|
||||||
|
// Static flag to prevent infinite recursion
|
||||||
|
static $is_capturing = false;
|
||||||
|
|
||||||
|
// If already capturing, return empty to break potential loops
|
||||||
|
if ($is_capturing) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$is_capturing = true;
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
do_action('admin_notices');
|
do_action('admin_notices');
|
||||||
do_action('network_admin_notices');
|
do_action('network_admin_notices');
|
||||||
$output = ob_get_clean();
|
$output = ob_get_clean();
|
||||||
|
|
||||||
|
$is_capturing = false;
|
||||||
|
|
||||||
if (empty($output)) {
|
if (empty($output)) {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
=== Plugin Reference Cleaner ===
|
=== Plugin Reference Cleaner ===
|
||||||
Author: Marcus Quinn
|
Author: Marcus Quinn
|
||||||
Author URI: https://wpallstars.com
|
Author URI: https://www.wpallstars.com
|
||||||
Version: 1.2.1
|
Version: 1.2.2
|
||||||
License: GPL-2.0+
|
License: GPL-2.0+
|
||||||
|
|
||||||
== Description ==
|
== Description ==
|
||||||
@ -47,6 +47,11 @@ If you don't have this notification perpetually showing on your /wp-admin/plugin
|
|||||||
|
|
||||||
== Changelog ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 1.2.2 =
|
||||||
|
* Fixed timeout issue during plugin activation
|
||||||
|
* Improved hook management to prevent potential infinite recursion
|
||||||
|
* Optimized performance by only loading on plugins page
|
||||||
|
|
||||||
= 1.2.1 =
|
= 1.2.1 =
|
||||||
* Fixed typos in documentation
|
* Fixed typos in documentation
|
||||||
* Improved text clarity
|
* Improved text clarity
|
||||||
|
Reference in New Issue
Block a user