Make WordPress Core


Ignore:
Timestamp:
03/07/2009 02:07:24 AM (16 years ago)
Author:
ryan
Message:

Don't show already installed plugins in the Plugins dashboard widget. Props Viper007Bond. fixes #8781

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/dashboard.php

    r10729 r10738  
    735735    $updated = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/updated/' );
    736736
     737    if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {
     738        $plugin_slugs = array_keys( get_plugins() );
     739        set_transient( 'plugin_slugs', $plugin_slugs, 86400 );
     740    }
     741
    737742    foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins'), 'updated' => __('Recently Updated') ) as $feed => $label ) {
    738743        if ( !$$feed->get_item_quantity() )
     
    740745
    741746        $items = $$feed->get_items(0, 5);
    742         $item_key = array_rand($items);
     747
     748        // Pick a random, non-installed plugin
     749        while ( true ) {
     750            // Abort this foreach loop iteration if there's no plugins left of this type
     751            if ( 0 == count($items) )
     752                continue 2;
     753
     754            $item_key = array_rand($items);
     755            $item = $items[$item_key];
     756
     757            list($link, $frag) = explode( '#', $item->get_link() );
     758
     759            $link = clean_url($link);
     760            if ( preg_match( '|/([^/]+?)/?$|', $link, $matches ) )
     761                $slug = $matches[1];
     762            else {
     763                unset( $items[$item_key] );
     764                continue;
     765            }
     766
     767            // Is this random plugin's slug already installed? If so, try again.
     768            reset( $plugin_slugs );
     769            foreach ( $plugin_slugs as $plugin_slug ) {
     770                if ( $slug == substr( $plugin_slug, 0, strlen( $slug ) ) ) {
     771                    unset( $items[$item_key] );
     772                    continue 2;
     773                }
     774            }
     775
     776            // If we get to this point, then the random plugin isn't installed and we can stop the while().
     777            break;
     778        }
    743779
    744780        // Eliminate some common badly formed plugin descriptions
     
    748784        if ( !isset($items[$item_key]) )
    749785            continue;
    750 
    751         $item = $items[$item_key];
    752786
    753787        // current bbPress feed item titles are: user on "topic title"
     
    759793
    760794        $description = wp_specialchars( strip_tags(html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset'))) );
    761 
    762         list($link, $frag) = explode( '#', $item->get_link() );
    763 
    764         $link = clean_url($link);
    765         if( preg_match('|/([^/]+?)/?$|', $link, $matches) )
    766             $slug = $matches[1];
    767         else
    768             $slug = '';
    769795
    770796        $ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $slug, 'install-plugin_' . $slug) .
Note: See TracChangeset for help on using the changeset viewer.