Advertisements

wp_dashboard_plugins_output

Definition:
function wp_dashboard_plugins_output() {}

Display plugins most popular, newest plugins, and recently updated widget text.

Source code

function wp_dashboard_plugins_output() {

	$popular = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/popular/' );

	$new     = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/new/' );

	$updated = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/updated/' );



	if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {

		$plugin_slugs = array_keys( get_plugins() );

		set_transient( 'plugin_slugs', $plugin_slugs, 86400 );

	}



	foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins'), 'updated' => __('Recently Updated') ) 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;



		// current bbPress feed item titles are: user on "topic title"

		if ( preg_match( '/"(.*)"/s', $item->get_title(), $matches ) )

			$title = $matches[1];

		else // but let's make it forward compatible if things change

			$title = $item->get_title();

		$title = esc_html( $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>&nbsp;<span>(<a href='$ilink' class='thickbox' title='$title'>" . __( 'Install' ) . "</a>)</span>\n";

		echo "<p>$description</p>\n";



		$$feed->__destruct();

		unset($$feed);

	}

}

3541

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: