WordPress.org

Making WordPress.org

Ticket #2860: 2860.3.diff

File 2860.3.diff, 4.5 KB (added by jdgrimes, 3 months ago)

Show "Unknown" when close reason is empty

  • wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-status-transitions.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    2828 
    2929                add_action( 'approved_plugin', array( $this, 'approved' ), 10, 2 ); 
    3030                add_action( 'rejected_plugin', array( $this, 'rejected' ), 10, 2 ); 
     31                add_action( 'closed_plugin', array( $this, 'closed' ), 10, 2 ); 
     32                add_action( 'disabled_plugin', array( $this, 'closed' ), 10, 2 ); 
    3133        } 
    3234 
    3335        /** 
     
    246248                wp_mail( $email, $subject, $content, 'From: plugins@wordpress.org' ); 
    247249        } 
    248250 
     251        /** 
     252         * Fires when a post is transitioned to 'closed'. 
     253         * 
     254         * @param int      $post_id Post ID. 
     255         * @param \WP_Post $post    Post object. 
     256         */ 
     257        public function closed( $post_id, $post ) { 
     258 
     259                if ( ! current_user_can( 'plugin_approve', $post ) ) { 
     260                        return; 
     261                } 
     262 
     263                if ( ! isset( $_POST['close_reason'] ) ) { 
     264                        return; 
     265                } 
     266 
     267                update_post_meta( $post->ID, '_close_reason', sanitize_key( $_POST['close_reason'] ) ); 
     268        } 
     269 
    249270        /** 
    250271         * Returns the path to a plugins root directory. 
    251272         * 
  • wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-controls.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    6464                return $label; 
    6565        } 
    6666 
     67        /** 
     68         * Get labels for reasons for closing a plugin. 
     69         * 
     70         * @return array Close reason labels. 
     71         */ 
     72        public static function get_close_reasons() { 
     73                return array( 
     74                        'security'                      => __( 'Security Issue', 'wporg-plugins' ), 
     75                        'author-request'                => __( 'Author Request', 'wporg-plugins' ), 
     76                        'guideline-violation'           => __( 'Guideline Violation', 'wporg-plugins' ), 
     77                        'licensing-trademark-violation' => __( 'Licensing/Trademark Violation', 'wporg-plugins' ), 
     78                        'merged-into-core'              => __( 'Merged into Core', 'wporg-plugins' ), 
     79                ); 
     80        } 
     81 
    6782        /** 
    6883         * Displays the Plugin Status control in the Publish metabox. 
    6984         */ 
     
    8095                if ( current_user_can( 'plugin_approve', $post ) ) { 
    8196                        $statuses = Status_Transitions::get_allowed_transitions( $post->post_status ); 
    8297                } 
     98 
     99                $close_reasons = self::get_close_reasons(); 
    83100                ?> 
    84101                <div class="misc-pub-section misc-pub-plugin-status"> 
    85102                        <label for="post_status"><?php _e( 'Status:', 'wporg-plugins' ); ?></label> 
    86103                        <strong id="plugin-status-display"><?php echo esc_html( get_post_status_object( $post->post_status )->label ); ?></strong> 
    87104 
     105                        <?php if ( 'closed' === $post->post_status || 'disabled' === $post->post_status ) : ?> 
     106                                <?php 
     107                                $close_reason = (string) get_post_meta( $post->ID, '_close_reason', true ); 
     108 
     109                                if ( isset( $close_reasons[ $close_reason ] ) ) { 
     110                                        $close_reason = $close_reasons[ $close_reason ]; 
     111                                } elseif ( empty( $close_reason ) ) { 
     112                                        $close_reason = _x( 'Unknown', 'unknown close reason', 'wporg-plugins' ); 
     113                                } 
     114 
     115                                if ( 'closed' === $post->post_status ) { 
     116                                        $label = __( 'Close Reason:', 'wporg-plugins' ); 
     117                                } else { 
     118                                        $label = __( 'Disable Reason:', 'wporg-plugins' ); 
     119                                } 
     120                                ?> 
     121                                <p><?php echo esc_html( $label ) . ' ' . esc_html( $close_reason ); ?></p> 
     122                        <?php elseif ( in_array( 'closed', $statuses, true ) || in_array( 'disabled', $statuses, true ) ) : ?> 
     123                                <p> 
     124                                        <label for="close_reason"><?php esc_html_e( 'Close/Disable Reason:', 'wporg-plugins' ); ?></label> 
     125                                        <select name="close_reason" id="close_reason"> 
     126                                                <?php foreach ( $close_reasons as $reason => $label ) : ?> 
     127                                                        <option value="<?php echo esc_attr( $reason ); ?>"><?php echo esc_html( $label ); ?></option> 
     128                                                <?php endforeach; ?> 
     129                                        </select> 
     130                                </p> 
     131                        <?php endif; ?> 
     132 
    88133                        <?php foreach ( $statuses as $status ) : ?> 
    89134                                <p><button type="submit" name="post_status" value="<?php echo esc_attr( $status ); ?>" class="button set-plugin-status"> 
    90135                                        <?php echo self::get_status_button_label( $status ); ?>