Making WordPress.org


Ignore:
Timestamp:
01/10/2018 07:43:34 PM (9 years ago)
Author:
obenland
Message:

Plugins: Don't show previous versions if there are none.

Props swissspidy for initial patch.
Fixes #3368.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/inc/template-tags.php

    r6284 r6343  
    239239        return $message;
    240240}
     241
     242/**
     243 * Displays a select element with links to previous plugin version to download.
     244 *
     245 * @param int|\WP_Post|null $post Optional. Post ID or post object. Defaults to global $post.
     246 */
     247function the_previous_version_download( $post = null ) {
     248        $post = get_post( $post );
     249
     250        if ( 'publish' !== $post->post_status ) {
     251                return;
     252        }
     253
     254        $tags = (array) get_post_meta( $post->ID, 'tagged_versions', true );
     255        // Sort the versions by version.
     256        usort( $tags, 'version_compare' );
     257        // We'll want to add a Development Version if it exists.
     258        $tags[] = 'trunk';
     259        // Remove the current version, this may be trunk.
     260        $tags = array_diff( $tags, array( get_post_meta( $post->ID, 'stable_tag', true ) ) );
     261
     262        if ( empty( $tags ) ) {
     263                return;
     264        }
     265
     266        // List Trunk, followed by the most recent non-stable release.
     267        $tags = array_reverse( $tags );
     268
     269        echo '<h5>' . esc_html__( 'Previous Versions', 'wporg-plugins' ) . '</h5>';
     270        echo '<div class="plugin-notice notice notice-info notice-alt"><p>' . esc_html__( 'Previous versions of this plugin may not be secure or stable and are available for testing purposes only.', 'wporg-plugins' ) . '</p></div>';
     271
     272        echo '<select class="previous-versions" onchange="getElementById(\'download-previous-link\').href=this.value;">';
     273        foreach ( $tags as $version ) {
     274                $text = ( 'trunk' === $version ? esc_html__( 'Development Version', 'wporg-plugins' ) : $version );
     275                printf( '<option value="%s">%s</option>', esc_attr( Template::download_link( $post, $version ) ), esc_html( $text ) );
     276        }
     277        echo '</select> ';
     278
     279        printf(
     280                '<a href="%s" id="download-previous-link" class="button">%s</a>',
     281                esc_url( Template::download_link( $post, reset( $tags ) ) ),
     282                esc_html__( 'Download', 'wporg-plugins' )
     283        );
     284}
Note: See TracChangeset for help on using the changeset viewer.