WordPress Version: 3.7
/**
* Display plugins most popular, newest plugins, and recently updated widget text.
*
* @since 2.5.0
*/
function wp_dashboard_plugins_output()
{
$popular = fetch_feed('http://wordpress.org/plugins/rss/browse/popular/');
$new = fetch_feed('http://wordpress.org/plugins/rss/browse/new/');
if (false === $plugin_slugs = get_transient('plugin_slugs')) {
$plugin_slugs = array_keys(get_plugins());
set_transient('plugin_slugs', $plugin_slugs, DAY_IN_SECONDS);
}
foreach (array('popular' => __('Most Popular'), 'new' => __('Newest Plugins')) as $feed => $label) {
if (is_wp_error(${$feed}) || !${$feed}->get_item_quantity()) {
continue;
}
$items = ${$feed}->get_items(0, 5);
// Pick a random, non-installed plugin
while (true) {
// Abort this foreach loop iteration if there's no plugins left of this type
if (0 == count($items)) {
continue 2;
}
$item_key = array_rand($items);
$item = $items[$item_key];
list($link, $frag) = explode('#', $item->get_link());
$link = esc_url($link);
if (preg_match('|/([^/]+?)/?$|', $link, $matches)) {
$slug = $matches[1];
} else {
unset($items[$item_key]);
continue;
}
// Is this random plugin's slug already installed? If so, try again.
reset($plugin_slugs);
foreach ($plugin_slugs as $plugin_slug) {
if ($slug == substr($plugin_slug, 0, strlen($slug))) {
unset($items[$item_key]);
continue 2;
}
}
// If we get to this point, then the random plugin isn't installed and we can stop the while().
break;
}
// Eliminate some common badly formed plugin descriptions
while (null !== ($item_key = array_rand($items)) && false !== strpos($items[$item_key]->get_description(), 'Plugin Name:')) {
unset($items[$item_key]);
}
if (!isset($items[$item_key])) {
continue;
}
$title = esc_html($item->get_title());
$description = esc_html(strip_tags(@html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset'))));
$ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $slug, 'install-plugin_' . $slug) . '&TB_iframe=true&width=600&height=800';
echo "<h4>{$label}</h4>\n";
echo "<h5><a href='{$link}'>{$title}</a></h5> <span>(<a href='{$ilink}' class='thickbox' title='{$title}'>" . __('Install') . "</a>)</span>\n";
echo "<p>{$description}</p>\n";
${$feed}->__destruct();
unset(${$feed});
}
}