Skip to content

Commit

Permalink
Minor: Refactor the plugin UI callback permission checks.
Browse files Browse the repository at this point in the history
 
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.
  • Loading branch information
YahnisElsts committed Jul 17, 2018
1 parent 4f6afa9 commit 1cb79bc
Showing 1 changed file with 15 additions and 8 deletions.
23 changes: 15 additions & 8 deletions Puc/v4p4/Plugin/Ui.php
Expand Up @@ -14,10 +14,17 @@ public function __construct($updateChecker) {
$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'));
}
}

/**
Expand All @@ -43,7 +50,7 @@ public function __construct($updateChecker) {
* @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';
Expand Down Expand Up @@ -104,7 +111,7 @@ public function addViewDetailsLink($pluginMeta, $pluginFile, $pluginData = array
* @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(
Expand Down Expand Up @@ -144,7 +151,6 @@ public function handleManualCheck() {
$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 ) {
Expand Down Expand Up @@ -185,6 +191,7 @@ public function handleManualCheck() {
),
self_admin_url('plugins.php')
));
exit;
}
}

Expand Down Expand Up @@ -261,9 +268,9 @@ protected function formatManualCheckErrors($errors) {
}

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'));
}
}
Expand Down

0 comments on commit 1cb79bc

Please sign in to comment.