Making WordPress.org

Changeset 2292


Ignore:
Timestamp:
01/13/2016 12:33:24 AM (9 years ago)
Author:
iandunn
Message:

WordCamp Budgets: Centralize post_edit_is_actionable() for all modules.

Location:
sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-payments/includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-payments/includes/payment-request.php

    r2288 r2292  
    547547
    548548    /**
    549      * Determines whether we want to perform actions on the given post based on the current context.
    550      *
    551      * Examples of actions we might perform are saving the meta fields during the `save_post` hook, or send out an
    552      * e-mail notification during the `transition_post_status` hook.
    553      *
    554      * This function is called by several other functions, each of which may require additional checks that are
    555      * specific to their circumstances. This function only covers checks that are common to all of its callers.
    556      *
    557      * @param WP_Post | array $post
    558      *
    559      * @return bool
    560      */
    561     protected function post_edit_is_actionable( $post ) {
    562         if ( is_array( $post ) ) {
    563             $post = (object) $post;
    564         }
    565 
    566         $is_actionable   = true;
    567         $ignored_actions = array( 'trash', 'untrash', 'restore', 'bulk_edit' ); // todo ignore bulk deletion too
    568 
    569         // Don't take action on other post types
    570         if ( ! $post || $post->post_type != self::POST_TYPE ) {
    571             $is_actionable = false;
    572         }
    573 
    574         // Don't take action if the user isn't allowed. The ID will be missing from new posts during `wp_insert_post_data`, though, so skip it then.
    575         if ( $is_actionable && isset( $post->ID ) && ! current_user_can( 'edit_post', $post->ID ) ) {
    576             $is_actionable = false;
    577         }
    578 
    579         // Don't take action while trashing the post, etc
    580         if ( $is_actionable && isset( $_GET['action'] ) && in_array( $_GET['action'], $ignored_actions ) ) {
    581             $is_actionable = false;
    582         }
    583 
    584         // Don't take action during autosaves
    585         if ( $is_actionable && ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || $post->post_status == 'auto-draft' ) ) {
    586             $is_actionable = false;
    587         }
    588 
    589         return $is_actionable;
    590     }
    591 
    592     /**
    593549     * Set the request's status based on whether the vendor has been paid.
    594550     *
     
    598554     */
    599555    public function update_request_status( $post_data, $post_data_raw ) {
    600         if ( $this->post_edit_is_actionable( $post_data ) ) {
     556        if ( WordCamp_Budgets::post_edit_is_actionable( $post_data, self::POST_TYPE ) ) {
    601557            if ( $this->should_mark_request_incomplete() ) {
    602558                $post_data['post_status'] = 'incomplete';
     
    707663     */
    708664    public function save_payment( $post_id, $post ) {
    709         if ( ! $this->post_edit_is_actionable( $post ) ) {
     665        if ( ! WordCamp_Budgets::post_edit_is_actionable( $post, self::POST_TYPE ) ) {
    710666            return;
    711667        }
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-payments/includes/wordcamp-budgets.php

    r2288 r2292  
    167167
    168168    /**
     169     * Determines whether we want to perform actions on the given post based on the current context.
     170     *
     171     * Examples of actions we might perform are saving the meta fields during the `save_post` hook, or send out an
     172     * e-mail notification during the `transition_post_status` hook.
     173     *
     174     * This function is called by several other functions, each of which may require additional checks that are
     175     * specific to their circumstances. This function only covers checks that are common to all of its callers.
     176     *
     177     * @param WP_Post|array $post
     178     * @param string        $valid_post_type
     179     *
     180     * @return bool
     181     */
     182    public static function post_edit_is_actionable( $post, $valid_post_type ) {
     183        if ( is_array( $post ) ) {
     184            $post = (object) $post;
     185        }
     186
     187        $is_actionable   = true;
     188        $ignored_actions = array( 'trash', 'untrash', 'restore', 'bulk_edit' ); // todo ignore bulk deletion too
     189
     190        // Don't take action on other post types
     191        if ( ! $post || $post->post_type != $valid_post_type ) {
     192            $is_actionable = false;
     193        }
     194
     195        // Don't take action if the user isn't allowed. The ID will be missing from new posts during `wp_insert_post_data`, though, so skip it then.
     196        if ( $is_actionable && isset( $post->ID ) && ! current_user_can( 'edit_post', $post->ID ) ) {
     197            $is_actionable = false;
     198        }
     199
     200        // Don't take action while trashing the post, etc
     201        if ( $is_actionable && isset( $_GET['action'] ) && in_array( $_GET['action'], $ignored_actions ) ) {
     202            $is_actionable = false;
     203        }
     204
     205        // Don't take action during autosaves
     206        if ( $is_actionable && ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || $post->post_status == 'auto-draft' ) ) {
     207            $is_actionable = false;
     208        }
     209
     210        return $is_actionable;
     211    }
     212
     213    /**
    169214     * Insert an entry into a log for one of the custom post types
    170215     *
Note: See TracChangeset for help on using the changeset viewer.