diff --git a/debug-bar-panel.php b/debug-bar-panel.php
index f379163..135efae 100644
--- a/debug-bar-panel.php
+++ b/debug-bar-panel.php
@@ -9,6 +9,8 @@ class PluginUpdateCheckerPanel extends Debug_Bar_Panel {
/** @var PluginUpdateChecker */
private $updateChecker;
+ private $responseBox = '
';
+
public function __construct($updateChecker) {
$this->updateChecker = $updateChecker;
$title = sprintf(
@@ -26,8 +28,14 @@ class PluginUpdateCheckerPanel extends Debug_Bar_Panel {
esc_attr(wp_create_nonce('puc-ajax'))
);
- $responseBox = '';
+ $this->displayConfiguration();
+ $this->displayStatus();
+ $this->displayCurrentUpdate();
+ echo '';
+ }
+
+ private function displayConfiguration() {
echo 'Configuration
';
echo '';
$this->row('Plugin file', htmlentities($this->updateChecker->pluginFile));
@@ -38,7 +46,7 @@ class PluginUpdateCheckerPanel extends Debug_Bar_Panel {
if ( function_exists('get_submit_button') ) {
$requestInfoButton = get_submit_button('Request Info', 'secondary', 'puc-request-info-button', false, array('id' => 'puc-request-info-button-' . $this->updateChecker->slug));
}
- $this->row('Metadata URL', htmlentities($this->updateChecker->metadataUrl) . ' ' . $requestInfoButton . $responseBox);
+ $this->row('Metadata URL', htmlentities($this->updateChecker->metadataUrl) . ' ' . $requestInfoButton . $this->responseBox);
if ( $this->updateChecker->checkPeriod > 0 ) {
$this->row('Automatic checks', 'Every ' . $this->updateChecker->checkPeriod . ' hours');
@@ -61,7 +69,9 @@ class PluginUpdateCheckerPanel extends Debug_Bar_Panel {
}
}
echo '
';
+ }
+ private function displayStatus() {
echo 'Status
';
echo '';
$state = $this->updateChecker->getUpdateState();
@@ -71,7 +81,7 @@ class PluginUpdateCheckerPanel extends Debug_Bar_Panel {
}
if ( isset($state, $state->lastCheck) ) {
- $this->row('Last check', $this->formatTimeWithDelta($state->lastCheck) . ' ' . $checkNowButton . $responseBox);
+ $this->row('Last check', $this->formatTimeWithDelta($state->lastCheck) . ' ' . $checkNowButton . $this->responseBox);
} else {
$this->row('Last check', 'Never');
}
@@ -85,7 +95,9 @@ class PluginUpdateCheckerPanel extends Debug_Bar_Panel {
}
$this->row('Update checker class', htmlentities(get_class($this->updateChecker)));
echo '
';
+ }
+ private function displayCurrentUpdate() {
$update = $this->updateChecker->getUpdate();
if ( $update !== null ) {
echo 'An Update Is Available
';
@@ -98,8 +110,6 @@ class PluginUpdateCheckerPanel extends Debug_Bar_Panel {
} else {
echo 'No updates currently available
';
}
-
- echo '';
}
private function formatTimeWithDelta($unixTime) {
diff --git a/plugin-update-checker.php b/plugin-update-checker.php
index 4989b3b..a7f3ae5 100644
--- a/plugin-update-checker.php
+++ b/plugin-update-checker.php
@@ -1093,13 +1093,9 @@ class PluginInfo_2_3 {
return null;
}
- //Very, very basic validation.
- $valid = isset($apiResponse->name, $apiResponse->version) && !empty($apiResponse->name) && !empty($apiResponse->version);
- if ( !$valid ){
- trigger_error(
- "The plugin metadata file does not contain the required 'name' and/or 'version' keys.",
- E_USER_NOTICE
- );
+ $valid = self::validateMetadata($apiResponse);
+ if ( is_wp_error($valid) ){
+ trigger_error($valid->get_error_message(), E_USER_NOTICE);
return null;
}
@@ -1113,6 +1109,27 @@ class PluginInfo_2_3 {
return $info;
}
+
+ /**
+ * Very, very basic validation.
+ *
+ * @param StdClass $apiResponse
+ * @return bool|WP_Error
+ */
+ protected static function validateMetadata($apiResponse) {
+ if (
+ !isset($apiResponse->name, $apiResponse->version)
+ || empty($apiResponse->name)
+ || empty($apiResponse->version)
+ ) {
+ return new WP_Error(
+ 'puc-invalid-metadata',
+ "The plugin metadata file does not contain the required 'name' and/or 'version' keys."
+ );
+ }
+ return true;
+ }
+
/**
* Transform plugin info into the format used by the native WordPress.org API