Making WordPress.org


Ignore:
Timestamp:
04/29/2024 07:36:53 AM (2 years ago)
Author:
dd32
Message:

Plugin Directory: Add a 'pending plugin' API endpoint to fetch information about a plugin in review.

This is intended to be used by the Reviewer tools, such that the tools can use information known to the plugin directory about the ZIP being reviewed.

See #7385.

File:
1 edited

Legend:

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

    r13438 r13610  
    5252                add_action( 'wp_head', array( Template::class, 'hreflang_link_attributes' ), 2 );
    5353                add_filter( 'allowed_redirect_hosts', array( $this, 'filter_redirect_hosts' ) );
     54                add_filter( 'wp_get_attachment_url', array( $this, 'add_info_to_zip_url' ), 100, 2 );
    5455
    5556                // Add no-index headers where appropriate.
    … …  
    18321833
    18331834                return update_post_meta( $plugin->ID, 'releases', $releases );
     1835        }
     1836
     1837        /**
     1838         * Add additional context to ZIP urls.
     1839         *
     1840         * The ZIP URL will have a 'info' key attached which is a rest api URL to information about the plugin.
     1841         *
     1842         * @param string $url           The URL to the ZIP file.
     1843         * @param int    $attachment_id The attachment ID.
     1844         * @return string The URL to the ZIP file.
     1845         */
     1846        public function add_info_to_zip_url( $url, $attachment_id ) {
     1847                $attachment = get_post( $attachment_id );
     1848                $post       = get_post( $attachment->post_parent );
     1849                $token      = $post->{'_pending_access_token'} ?? false;
     1850
     1851                if ( ! $url || ! $attachment || ! $post || ! $token || ! current_user_can( 'edit_post', $post->ID ) ) {
     1852                        return $url;
     1853                }
     1854
     1855                $url = add_query_arg(
     1856                        'info',
     1857                        urlencode( rest_url( sprintf(
     1858                                'plugins/v1/pending-plugin/%d-%s/',
     1859                                $post->ID,
     1860                                $token
     1861                        ) ) ),
     1862                        $url
     1863                );
     1864
     1865                return $url;
    18341866        }
    18351867
Note: See TracChangeset for help on using the changeset viewer.