Minor: Refactor the plugin UI callback permission checks.

Let's only add our UI hooks if the user has the required permissions. This way we can avoid duplicating the permission checks in each individual callback.
This commit is contained in:
Yahnis Elsts 2018-07-17 13:58:17 +03:00
parent 4f6afa95cd
commit 1cb79bcdce
1 changed files with 15 additions and 8 deletions

View File

@ -14,10 +14,17 @@ if ( !class_exists('Puc_v4p4_Plugin_Ui', false) ):
$this->updateChecker = $updateChecker;
$this->manualCheckErrorTransient = $this->updateChecker->getUniqueName('manual_check_errors');
add_filter('plugin_row_meta', array($this, 'addViewDetailsLink'), 10, 3);
add_filter('plugin_row_meta', array($this, 'addCheckForUpdatesLink'), 10, 2);
add_action('admin_init', array($this, 'handleManualCheck'));
add_action('all_admin_notices', array($this, 'displayManualCheckResult'));
add_action('admin_init', array($this, 'onAdminInit'));
}
public function onAdminInit() {
if ( $this->updateChecker->userCanInstallUpdates() ) {
$this->handleManualCheck();
add_filter('plugin_row_meta', array($this, 'addViewDetailsLink'), 10, 3);
add_filter('plugin_row_meta', array($this, 'addCheckForUpdatesLink'), 10, 2);
add_action('all_admin_notices', array($this, 'displayManualCheckResult'));
}
}
/**
@ -43,7 +50,7 @@ if ( !class_exists('Puc_v4p4_Plugin_Ui', false) ):
* @return array
*/
public function addViewDetailsLink($pluginMeta, $pluginFile, $pluginData = array()) {
if ( $this->isMyPluginFile($pluginFile) && $this->updateChecker->userCanInstallUpdates() && !isset($pluginData['slug']) ) {
if ( $this->isMyPluginFile($pluginFile) && !isset($pluginData['slug']) ) {
$linkText = apply_filters($this->updateChecker->getUniqueName('view_details_link'), __('View details'));
if ( !empty($linkText) ) {
$viewDetailsLinkPosition = 'append';
@ -104,7 +111,7 @@ if ( !class_exists('Puc_v4p4_Plugin_Ui', false) ):
* @return array
*/
public function addCheckForUpdatesLink($pluginMeta, $pluginFile) {
if ( $this->isMyPluginFile($pluginFile) && $this->updateChecker->userCanInstallUpdates() ) {
if ( $this->isMyPluginFile($pluginFile) ) {
$linkUrl = wp_nonce_url(
add_query_arg(
array(
@ -144,7 +151,6 @@ if ( !class_exists('Puc_v4p4_Plugin_Ui', false) ):
$shouldCheck =
isset($_GET['puc_check_for_updates'], $_GET['puc_slug'])
&& $_GET['puc_slug'] == $this->updateChecker->slug
&& $this->updateChecker->userCanInstallUpdates()
&& check_admin_referer('puc_check_for_updates');
if ( $shouldCheck ) {
@ -185,6 +191,7 @@ if ( !class_exists('Puc_v4p4_Plugin_Ui', false) ):
),
self_admin_url('plugins.php')
));
exit;
}
}
@ -261,9 +268,9 @@ if ( !class_exists('Puc_v4p4_Plugin_Ui', false) ):
}
public function removeHooks() {
remove_action('admin_init', array($this, 'onAdminInit'));
remove_filter('plugin_row_meta', array($this, 'addViewDetailsLink'), 10);
remove_filter('plugin_row_meta', array($this, 'addCheckForUpdatesLink'), 10);
remove_action('admin_init', array($this, 'handleManualCheck'));
remove_action('all_admin_notices', array($this, 'displayManualCheckResult'));
}
}