WordPress.org

Making WordPress.org

Ticket #690: 690.patch

File 690.patch, 8.1 KB (added by nvwd, 6 years ago)
  • wp-content/plugins/wordcamp-organizer-reminders/wcor-mailer.php

     
    66 */
    77class WCOR_Mailer {
    88        public $triggers;
    9        
     9
    1010        /**
    1111         * Constructor
    1212         */
     
    6060                                ),
    6161                        ),
    6262                );
    63                
     63
    6464                add_action( 'wcor_send_timed_emails', array( $this, 'send_timed_emails' ) );
    65                
     65
    6666                foreach ( $this->triggers as $trigger_id => $trigger ) {
    6767                        foreach( $trigger['actions'] as $action ) {
    6868                                add_action( $action['name'], array( $this, $action['callback'] ), $action['priority'], $action['parameters'] );
     
    7171        }
    7272
    7373        /**
    74          * Schedule cron job when plugin is activated 
     74         * Schedule cron job when plugin is activated
    7575         */
    7676        public function activate() {
    7777                if ( wp_next_scheduled( 'wcor_send_timed_emails' ) === false ) {
     
    8282                        );
    8383                }
    8484        }
    85        
     85
    8686        /**
    8787         * Clear cron job when plugin is deactivated
    8888         */
     
    9393        /**
    9494         * Wrapper for wp_mail() that customizes the subject, body and headers
    9595         *
    96          * We want to make sure that replies go to support@wordcamp.org, rather than the fake address that WordPress sends from, but 
     96         * We want to make sure that replies go to support@wordcamp.org, rather than the fake address that WordPress sends from, but
    9797         * we don't want to be flagged as spam for forging the From header, so we set the Sender header.
    9898         * @see http://stackoverflow.com/q/4728393/450127
    9999         *
     
    222222                        empty( $wordcamp_meta['Website URL'][0] )         ? 'N/A' : $wordcamp_meta['Website URL'][0],
    223223                        empty( $wordcamp_meta['Contact Information'][0] ) ? 'N/A' : $wordcamp_meta['Contact Information'][0],
    224224                );
    225                
     225
    226226                return str_replace( $search, $replace, $content );
    227227        }
    228228
     
    244244                        global $multi_event_sponsors;
    245245
    246246                        $recipient = $multi_event_sponsors->get_sponsor_emails( $multi_event_sponsors->get_wordcamp_me_sponsors( $wordcamp_id ) );
     247                } elseif ( 'wcor_send_sponsor_wrangler' == $send_where ) {
     248
     249                        $wordcamp_meta = get_post_custom( $wordcamp->ID );
     250                        // if the Sponsor Wrangler email is empty, use the default email address
     251                        if ( empty( $wordcamp_meta['Sponsor Wrangler E-mail Address'][0] ) ) {
     252                                $recipient = $wordcamp_meta['Sponsor Wrangler E-mail Address'][0];
     253                        } else {
     254                                $recipient = $wordcamp_meta['Email Address'][0];
     255                        }
     256
    247257                } else {
    248258                        $email_address_key = wcpt_key_to_str( 'E-mail Address', 'wcpt_' );
    249259
     
    290300
    291301                return $this->mail( $recipient, $email->post_title, $email->post_content, array(), $email, $wordcamp );
    292302        }
    293        
     303
    294304        /**
    295305         * Send e-mails that are scheduled to go out at a specific time (e.g., 3 days before the camp)
    296306         */
     
    326336                                ),
    327337                        ),
    328338                ) );
    329                
     339
    330340                foreach ( $wordcamps as $wordcamp ) {
    331341                        $sent_email_ids = (array) get_post_meta( $wordcamp->ID, 'wcor_sent_email_ids', true );
    332342
    333343                        foreach ( $reminder_emails as $email ) {
    334344                                $recipient = $this->get_recipient( $wordcamp->ID, $email->ID );
    335                                
     345
    336346                                if ( $this->timed_email_is_ready_to_send( $wordcamp, $email, $sent_email_ids ) ) {
    337347                                        if ( $this->mail( $recipient, $email->post_title, $email->post_content, array(), $email, $wordcamp ) ) {
    338348                                                $sent_email_ids[] = $email->ID;
     
    356366         *
    357367         * @todo It'd be nice to have some unit tests for this function, since there are a lot of different cases, but it seems like that might be
    358368         * hard to do because of having to mock get_post_meta(), current_time(), etc. We could pass that info in, but that doesn't seem very elegant.
    359          *       
     369         *
    360370         * @param WP_Post $wordcamp
    361371         * @param WP_Post $email
    362372         * @param array   $sent_email_ids The IDs of emails that have already been sent to the $wordcamp post
     
    380390                if ( ! in_array( $email->ID, $sent_email_ids ) ) {
    381391                        if ( 'wcor_send_before' == $send_when ) {
    382392                                $days_before = absint( get_post_meta( $email->ID, 'wcor_send_days_before', true ) );
    383                                
     393
    384394                                if ( $start_date && $days_before ) {
    385395                                        $send_date = $start_date - ( $days_before * DAY_IN_SECONDS );
    386                                        
     396
    387397                                        if ( $send_date <= current_time( 'timestamp' ) ) {
    388398                                                $ready = true;
    389399                                        }
     
    393403
    394404                                if ( $end_date && $days_after ) {
    395405                                        $send_date = $end_date + ( $days_after * DAY_IN_SECONDS );
    396                                        
     406
    397407                                        if ( $send_date <= current_time( 'timestamp' ) ) {
    398408                                                $ready = true;
    399409                                        }
     
    411421                                }
    412422                        }
    413423                }
    414                
     424
    415425                return $ready;
    416426        }
    417427
  • wp-content/plugins/wordcamp-organizer-reminders/wcor-reminder.php

     
    5252                        'query_var'           => false,
    5353                        'supports'            => array( 'title', 'editor', 'author', 'revisions' ),
    5454                );
    55                
     55
    5656                register_post_type( self::POST_TYPE_SLUG, $params );
    5757        }
    5858
     
    9191                $send_days_after         = get_post_meta( $post->ID, 'wcor_send_days_after', true );
    9292                $send_days_after_pending = get_post_meta( $post->ID, 'wcor_send_days_after_pending', true );
    9393                $which_trigger           = get_post_meta( $post->ID, 'wcor_which_trigger', true );
    94                
     94
    9595                ?>
    9696
    9797                <h4>Who should this e-mail be sent to?</h4>
     
    104104                                </tr>
    105105
    106106                                <tr>
     107                                        <th><input id="wcor_send_sponsor_wrangler" name="wcor_send_where" type="radio" value="wcor_send_sponsor_wrangler" <?php checked( $send_where, 'wcor_send_sponsor_wrangler' ); ?>></th>
     108                                        <td colspan="2"><label for="wcor_send_sponsor_wrangler">The Sponsor Wrangler</label></td>
     109                                </tr>
     110
     111                                <tr>
    107112                                        <th><input id="wcor_send_mes" name="wcor_send_where" type="radio" value="wcor_send_mes" <?php checked( $send_where, 'wcor_send_mes' ); ?>></th>
    108113                                        <td colspan="2"><label for="wcor_send_mes">The WordCamp's Multi-Event Sponsors</label></td>
    109114                                </tr>
     
    115120                                </tr>
    116121                        </tbody>
    117122                </table>
    118                
    119                
     123
     124
    120125                <h4>When should this e-mail be sent?</h4>
    121126
    122127                <table>
     
    154159                                        <td>
    155160                                                <select name="wcor_which_trigger">
    156161                                                        <option value="null" <?php selected( $which_trigger, false ); ?>></option>
    157                                                        
     162
    158163                                                        <?php foreach ( $GLOBALS['WCOR_Mailer']->triggers as $trigger_id => $trigger ) : ?>
    159164                                                                <option value="<?php echo esc_attr( $trigger_id ); ?>" <?php selected( $which_trigger, $trigger_id ); ?>><?php echo esc_html( $trigger['name'] ); ?></option>
    160165                                                        <?php endforeach; ?>
     
    326331
    327332        /**
    328333         * Checks to make sure the conditions for saving post meta are met
    329          * 
     334         *
    330335         * @param int $post_id
    331336         * @param object $post
    332337         */
     
    344349                if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || ! isset( $post->ID ) || $post->post_status == 'auto-draft' ) {
    345350                        return;
    346351                }
    347                
     352
    348353                $this->save_post_meta( $post, $_POST );
    349354                $this->send_manual_email( $post, $_POST );
    350355        }
     
    351356
    352357        /**
    353358         * Saves the meta data for the reminder post
    354          * 
     359         *
    355360         * @param WP_Post $post
    356361         * @param array $new_meta
    357362         */
    358363        protected function save_post_meta( $post, $new_meta ) {
    359364                if ( isset( $new_meta['wcor_send_where'] ) ) {
    360                         if ( in_array( $new_meta['wcor_send_where'], array( 'wcor_send_organizers', 'wcor_send_mes', 'wcor_send_custom' ) ) ) {
     365                        if ( in_array( $new_meta['wcor_send_where'], array( 'wcor_send_organizers', 'wcor_send_sponsor_wrangler', 'wcor_send_mes', 'wcor_send_custom' ) ) ) {
    361366                                update_post_meta( $post->ID, 'wcor_send_where', $new_meta['wcor_send_where'] );
    362367                        }
    363368                }
     
    364369
    365370                if ( isset( $new_meta['wcor_send_custom_address'] ) && is_email( $new_meta['wcor_send_custom_address'] ) ) {
    366371                        update_post_meta( $post->ID, 'wcor_send_custom_address', sanitize_email( $new_meta['wcor_send_custom_address'] ) );
    367                 }               
    368                
     372                }
     373
    369374                if ( isset( $new_meta['wcor_send_when'] ) ) {
    370375                        if ( in_array( $new_meta['wcor_send_when'], array( 'wcor_send_before', 'wcor_send_after', 'wcor_send_after_pending', 'wcor_send_trigger' ) ) ) {
    371376                                update_post_meta( $post->ID, 'wcor_send_when', $new_meta['wcor_send_when'] );