Making WordPress.org

Changeset 1732


Ignore:
Timestamp:
07/10/2015 10:30:54 PM (11 years ago)
Author:
iandunn
Message:

WordCamp Payments: Notify requester when request is paid.

File:
1 edited

Legend:

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

    r1691 r1732  
    322322
    323323            case 'requester':
    324                 $requester = get_user_by( 'id', $post->post_author );
    325                 if ( is_a( $requester, 'WP_User' ) ) {
    326                     $value = sprintf( '%s <%s>', $requester->get( 'display_name' ), $requester->get( 'user_email' ) );
    327                 } else {
    328                     $value = '';
    329                 }
     324                $value = $this->get_requester_formatted_email( $post->post_author );
    330325                break;
    331326
     
    351346
    352347        return $value;
     348    }
     349
     350    /**
     351     * Get the e-mail address of the requester in `Name <address>` format
     352     *
     353     * @param int $post_author_id
     354     *
     355     * @return false|string
     356     */
     357    protected function get_requester_formatted_email( $post_author_id ) {
     358        $address   = false;
     359        $requester = get_user_by( 'id', $post_author_id );
     360
     361        if ( is_a( $requester, 'WP_User' ) ) {
     362            $address = sprintf( '%s <%s>', $requester->get( 'display_name' ), $requester->get( 'user_email' ) );
     363        }
     364
     365        return $address;
    353366    }
    354367
     
    582595    public function update_request_status( $post_data, $post_data_raw ) {
    583596        if ( $this->post_edit_is_actionable( $post_data ) ) {
     597            $previous_status          = $post_data['post_status'];
    584598            $post_data['post_status'] = strtotime( sanitize_text_field( $_POST['date_vendor_paid'] ) ) ? 'paid' : 'unpaid';
     599
     600            if ( 'paid' != $previous_status && 'paid' == $post_data['post_status'] ) {
     601                $this->notify_requester_payment_made( $post_data_raw['ID'], $post_data );
     602            }
    585603        }
    586604
    587605        return $post_data;
     606    }
     607
     608    /**
     609     * Notify the payment requester that it has been marked as paid.
     610     *
     611     * @param int   $request_id
     612     * @param array $post_data
     613     */
     614    protected function notify_requester_payment_made( $request_id, $post_data ) {
     615        if ( ! $to = $this->get_requester_formatted_email( $post_data['post_author'] ) ) {
     616            return;
     617        }
     618
     619        $subject = sprintf( '`%s` has been paid', $post_data['post_title'] );
     620        $headers = array( 'Reply-To: support@wordcamp.org' );
     621
     622        $message = sprintf(
     623            "The request for `%s` has been marked as paid by WordCamp Central.
     624
     625            You can view the request at:
     626
     627            %s
     628
     629            If you have any questions, please reply to let us know.",
     630            $post_data['post_title'],
     631            admin_url( sprintf( 'post.php?post=%s&action=edit', $request_id ) )
     632        );
     633        $message = str_replace( "\t", '', $message );
     634
     635        wp_mail( $to, $subject, $message, $headers );
    588636    }
    589637
Note: See TracChangeset for help on using the changeset viewer.