$details = $this->formatManualCheckErrors(get_site_transient($this->manualCheckErrorTransient)); delete_site_transient($this->manualCheckErrorTransient); } else { $message = sprintf(__('Unknown update checker status "%s"', 'plugin-update-checker'), htmlentities($status)); $noticeClass = 'error notice-error'; } printf( '

%s

%s
', $noticeClass, apply_filters($this->updateChecker->getUniqueName('manual_check_message'), $message, $status), $details ); } } /** * Format the list of errors that were thrown during an update check. * * @param array $errors * @return string */ protected function formatManualCheckErrors($errors) { if ( empty($errors) ) { return ''; } $output = ''; $showAsList = count($errors) > 1; if ( $showAsList ) { $output .= '
    '; $formatString = '
  1. %1$s %2$s
  2. '; } else { $formatString = '

    %1$s %2$s

    '; } foreach ($errors as $item) { $wpError = $item['error']; /** @var WP_Error $wpError */ $output .= sprintf( $formatString, $wpError->get_error_message(), $wpError->get_error_code() ); } if ( $showAsList ) { $output .= '
'; } return $output; } 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('all_admin_notices', array($this, 'displayManualCheckResult')); } } endif;