/**
  * Transient update plugins filter
  *
  * @see https://github.com/WordPress/WordPress/blob/3.7/wp-includes/option.php#L1030
  *
  * @param array $update_plugins
  * @return array
  */
 public function transient_update_plugins_filter($update_plugins)
 {
     if (is_object($update_plugins) && isset($update_plugins->response) && is_array($update_plugins->response)) {
         $pronamic_plugins = pronamic_client_get_plugins();
         $options = $this->get_http_api_options(array('plugins' => json_encode($pronamic_plugins)));
         $url = 'http://api.pronamic.eu/plugins/update-check/1.1/';
         $raw_response = wp_remote_post($url, $options);
         if (is_wp_error($raw_response) || 200 !== wp_remote_retrieve_response_code($raw_response)) {
             return $update_plugins;
         }
         $response = json_decode(wp_remote_retrieve_body($raw_response), true);
         if (is_array($response) && isset($response['plugins'])) {
             foreach ($response['plugins'] as &$plugin) {
                 $plugin = (object) $plugin;
             }
             unset($plugin);
             $update_plugins->response = array_merge($update_plugins->response, $response['plugins']);
         }
     }
     return $update_plugins;
 }
<div class="wrap">
	<h2><?php 
echo get_admin_page_title();
?>
</h2>

	<h3><?php 
_e('Plugins', 'pronamic_client');
?>
</h3>

	<?php 
$pronamic_plugins = pronamic_client_get_plugins();
if (empty($pronamic_plugins)) {
    ?>

		<p>
			<?php 
    _e('No Pronamic plugins found.', 'pronamic_client');
    ?>
		</p>

	<?php 
} else {
    ?>

		<table class="wp-list-table widefat plugins" cellspacing="0">
			<thead>
				<tr>
					<th scope="col"><?php 
    _e('Plugin', 'pronamic_client');