Making WordPress.org


Ignore:
Timestamp:
04/30/2024 07:15:29 AM (13 months ago)
Author:
dd32
Message:

Plugin Directory: API: Store the closed data in the update-check source table.

Note: This only makes it available to the API, doesn't currently output it.

See #7057.

File:
1 edited

Legend:

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

    r13241 r13628  
    2626                LEFT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key = 'version'
    2727                LEFT JOIN {$wpdb->postmeta} pm_stable ON p.ID = pm_stable.post_id AND pm_stable.meta_key = 'stable_tag'
     28                LEFT JOIN {$wpdb->postmeta} pm_closed ON p.ID = pm_closed.post_id AND pm_closed.meta_key = 'plugin_closed_date'
    2829            WHERE
    2930                p.post_type = 'plugin'
     
    3738                    ( u.version != pm.meta_value AND u.version != left( pm.meta_value, 128 ) ) OR
    3839                    ( u.stable_tag != pm_stable.meta_value AND u.stable_tag != left( pm_stable.meta_value, 128 ) ) OR
    39                     ( u.available = 1 AND (p.post_status != 'publish' AND p.post_status != 'disabled' ) ) OR
    40                     ( u.available = 0 AND (p.post_status = 'publish' OR p.post_status = 'disabled' ) )
     40                    ( u.available = 1 AND p.post_status NOT IN( 'publish', 'disabled' ) ) OR
     41                    ( u.available = 0 AND p.post_status IN( 'publish', 'disabled' ) ) OR
     42                    (
     43                        pm_closed.meta_value IS NOT NULL AND (
     44                            u.meta NOT LIKE '%closed_at%' OR
     45                            (
     46                                u.meta NOT LIKE '%closed_reason%' AND
     47                                DATE_ADD( pm_closed.meta_value, INTERVAL 60 DAY ) <= NOW()
     48                            )
     49                        )
     50                    )
    4151                )"
    4252        );
     
    6878        }
    6979
     80        $version          = get_post_meta( $post->ID, 'version', true );
    7081        $requires_plugins = get_post_meta( $post->ID, 'requires_plugins', true );
     82        $meta             = array();
     83
     84        if ( in_array( $post->post_status, array( 'disabled', 'closed' ) ) ) {
     85            $closed_data           = Template::get_close_data( $post );
     86            $meta['closed_at']     = $closed_data['date'] ?? false;
     87            if ( $closed_data['public'] ?? false ) {
     88                $meta['closed_reason'] = $closed_data['reason'];
     89                $meta['closed_label']  = $closed_data['label'];
     90            }
     91        }
    7192
    7293        $data = array(
    7394            'plugin_id'        => $post->ID,
    7495            'plugin_slug'      => $post->post_name,
    75             'available'        => 'publish'      === $post->post_status || 'disabled' === $post->post_status,
    76             'version'          => get_post_meta( $post->ID, 'version', true ),
     96            'available'        => (int) in_array( $post->post_status, array( 'publish', 'disabled' ) ),
     97            'version'          => $version,
    7798            'stable_tag'       => get_post_meta( $post->ID, 'stable_tag', true ),
    7899            'plugin_name'      => strip_tags( get_post_meta( $post->ID, 'header_name', true ) ),
     
    82103            'requires'         => get_post_meta( $post->ID, 'requires', true ),
    83104            'requires_php'     => get_post_meta( $post->ID, 'requires_php', true ),
    84             'requires_plugins' => $requires_plugins ? serialize( get_post_meta( $post->ID, 'requires_plugins', true ) ) : '',
    85             'upgrade_notice'   => '',
     105            'requires_plugins' => $requires_plugins ? serialize( $requires_plugins ) : '',
     106            'upgrade_notice'   => get_post_meta( $post->ID, 'upgrade_notice', true )[ $version ] ?? '',
    86107            'assets'           => serialize( self::get_plugin_assets( $post ) ),
     108            'meta'             => $meta ? serialize( $meta ) : '',
    87109            'last_updated'     => $post->post_modified,
    88110        );
    89         $upgrade_notice = get_post_meta( $post->ID, 'upgrade_notice', true );
    90         if ( isset( $upgrade_notice[ $data['version'] ] ) ) {
    91             $data['upgrade_notice'] = $upgrade_notice[ $data['version'] ];
    92         }
    93111
    94112        if (
     
    182200  `requires_plugins` text NOT NULL DEFAULT '',
    183201  `upgrade_notice` text,
    184   `assets` text NOT NULL DEFAULT '',
     202  `assets` text DEFAULT NULL,
     203  `meta` text DEFAULT NULL,
    185204  `last_updated` datetime NOT NULL,
    186205  PRIMARY KEY (`plugin_id`),
Note: See TracChangeset for help on using the changeset viewer.