Making WordPress.org

Changeset 13021


Ignore:
Timestamp:
12/07/2023 08:16:08 AM (3 months ago)
Author:
dd32
Message:

Plugin Directory: Reviewer Tools: Introduce a ZIP & lines-of-code column to the posts table.

See #7285.

Location:
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-posts.php

    r13017 r13021  
    1414        'author',
    1515        'reviewer',
     16        'zip',
     17        'loc',
    1618        'comments',
    1719    ];
     
    3537        $columns['reviewer'] = __( 'Assigned Reviewer', 'wporg-plugins' );
    3638        $columns['comments'] = '<span class="vers comment-grey-bubble" title="' . esc_attr__( 'Internal Notes', 'wporg-plugins' ) . '"><span class="screen-reader-text">' . __( 'Internal Notes', 'wporg-plugins' ) . '</span></span>';
     39        $columns['zip']      = 'Latest Zip';
     40        $columns['loc']      = 'Lines of PHP Code';
    3741
    3842        // We don't want the stats column.
     
    4953    public function filter_sortable_columns( $columns ) {
    5054        $columns[ 'reviewer' ] = [ 'assigned_reviewer_time', 'asc' ];
     55        $columns[ 'zip' ]      = [ '_submitted_zip_size', 'asc' ];
     56        $columns[ 'loc' ]      = [ '_submitted_zip_loc', 'asc' ];
    5157
    5258        return $columns;
     
    654660        }
    655661    }
     662
     663    public function column_zip( $post ) {
     664        if ( ! in_array( $post->post_status, [ 'new', 'pending', 'approved' ] ) ) {
     665            echo '-';
     666            return;
     667        }
     668
     669        $attachments = get_posts( [
     670            'post_parent'    => $post->ID,
     671            'post_type'      => 'attachment',
     672            'post_mime_type' => 'application/zip',
     673            'posts_per_page' => 1,
     674            'orderby'        => 'post_date',
     675            'order'          => 'DESC',
     676        ] )[0];
     677
     678        foreach ( get_attached_media( 'application/zip', $post ) as $zip_file ) {
     679            $zip_size = size_format( filesize( get_attached_file( $zip_file->ID ) ), 1 );
     680
     681            $url  = wp_get_attachment_url( $zip_file->ID );
     682            $name = basename( $url );
     683            $name = explode( '_', $name, 3 )[2];
     684
     685            printf(
     686                '<a href="%1$s">%2$s</a><br>%3$s</li>',
     687                esc_url( $url ),
     688                esc_html( $name ),
     689                esc_html( $zip_size )
     690            );
     691        }
     692    }
     693
     694    public function column_loc( $post ) {
     695        echo number_format_i18n( $post->_submitted_zip_loc );
     696    }
    656697}
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php

    r12794 r13021  
    414414            return $attachment->get_error_message();
    415415        }
     416
     417        // Store metadata about the uploaded ZIP.
     418        // Count lines of PHP code, this is not 100% accurate but it's a good indicator.
     419        $lines_of_code = (int) shell_exec( sprintf( "find %s -type f -name '*.php' -exec cat {} + | wc -l", escapeshellarg( $this->plugin_dir ) ) );
     420
     421        update_post_meta( $plugin_post->ID, '_submitted_zip_size', filesize( get_attached_file( $attachment->ID ) ) );
     422        update_post_meta( $plugin_post->ID, '_submitted_zip_loc', $lines_of_code );
    416423
    417424        // Send plugin author an email for peace of mind.
Note: See TracChangeset for help on using the changeset viewer.