Making WordPress.org


Ignore:
Timestamp:
05/18/2023 03:26:43 AM (3 years ago)
Author:
dd32
Message:

Plugin Directory: Clear the assigned reviewer on the appropriate status transitions (->approved and ->publish).

See #6993.

File:
1 edited

Legend:

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

    r12591 r12594  
    103103        }
    104104
    105         update_post_meta( $post_id, 'assigned_reviewer', $reviewer_id );
    106         update_post_meta( $post_id, 'assigned_reviewer_time', time() );
     105        self::set_reviewer( $post_id, $reviewer_id );
    107106
    108107        $assigned_reviewer = get_post_meta( $post_id, 'assigned_reviewer', true );
     
    127126        $reviewer_id = absint( $_POST['assigned_reviewer'] ?? 0 );
    128127
    129         update_post_meta( $post_id, 'assigned_reviewer', $reviewer_id );
    130         update_post_meta( $post_id, 'assigned_reviewer_time', time() );
     128        self::set_reviewer( $post_id, $reviewer_id );
     129    }
     130
     131    /**
     132     * Set the reviewer for a post.
     133     *
     134     * @param int|WP_Post $post     Post object or ID.
     135     * @param int|WP_User $reviewer Reviewer User object or ID.
     136     * @param bool        $log_it   Whether to log the change. Optional.
     137     * @return bool
     138     */
     139    public static function set_reviewer( $post, $reviewer, $log_it = true ) {
     140        $post             = get_post( $post );
     141        $current_reviewer = get_post_meta( $post->ID, 'assigned_reviewer', true );
     142        $reviewer         = is_object( $reviewer ) ? $reviewer : get_user_by( 'id', $reviewer );
     143        $reviewer_id      = $reviewer->ID ?? 0;
     144
     145        if ( $current_reviewer == $reviewer_id || ! $post ) {
     146            return false;
     147        }
     148
     149        if ( ! $reviewer ) {
     150            delete_post_meta( $post->ID, 'assigned_reviewer' );
     151            delete_post_meta( $post->ID, 'assigned_reviewer_time' );
     152        } else {
     153            update_post_meta( $post->ID, 'assigned_reviewer', $reviewer_id );
     154            update_post_meta( $post->ID, 'assigned_reviewer_time', time() );
     155        }
     156
     157        // Audit logging.
     158        if ( $log_it ) {
     159            $message = 'Unassigned.';
     160            if ( $reviewer ) {
     161                $message = sprintf(
     162                    'Assigned to <a href="%s">%s</a>.',
     163                    esc_url( 'https://profiles.wordpress.org/' . $reviewer->user_nicename . '/' ),
     164                    $reviewer->display_name ?: $reviewer->user_login
     165                );
     166            }
     167
     168            Tools::audit_log( $message, $post );
     169        }
     170
     171        return true;
    131172    }
    132173}
Note: See TracChangeset for help on using the changeset viewer.