unset($past_sends[$key]); } } $send = module_newsletter::get_send($send_id); if ($send['status'] == _NEWSLETTER_STATUS_PENDING || $send['status'] == _NEWSLETTER_STATUS_PAUSED) { redirect_browser(module_newsletter::link_queue_watch($newsletter_id, $send_id)); } $start_time = $send['start_time']; if (!$start_time) { $start_time = time(); } // check if this cache has changed - do a callback again. // this might slow things down, but meh, best to be sure // incase someone refreshes or doesn't add new members to the list, we check here. module_newsletter::update_member_data_for_send($send_id); $send_members = module_newsletter::get_send_members($send_id); $recipient_count = mysql_num_rows($send_members); // what other fields are we pulling in here? // hunt through the recipient listing and find the extra fields. $extra_fields = array(); $first_newsletter_member_id = false; while ($send_member = mysql_fetch_assoc($send_members)) { if (!$first_newsletter_member_id) { $first_newsletter_member_id = $send_member['newsletter_member_id']; } if (isset($send_member['data_cache']) && strlen($send_member['data_cache']) > 1) { $cache = unserialize($send_member['data_cache']); if ($cache) { // we have extra fields! woo! foreach ($cache as $key => $val) { if (strpos($key, '_id')) {
</th> <th><?php _e('Bounced'); ?> </th> <th><?php _e('Unsubscribed'); ?> </th> <th> </th> </tr> </thead> <tbody> <?php // list all members from thsi send. $send_members = module_newsletter::get_send_members($send_id, $statistics); $open_count = 0; $x = 0; $send_members_count = mysql_num_rows($send_members); $sent_to_members = 0; while ($send_member = mysql_fetch_assoc($send_members)) { if ($send_member['open_time']) { $open_count++; } ?> <tr class="<?php echo $x++ % 2 ? 'odd' : 'even'; ?> " id="newsletter_member_<?php echo $send_member['newsletter_member_id']; ?>
public static function get_replace_fields($newsletter_id = false, $send_id = false, $newsletter_member_id = false, $update_member_details = false) { $newsletter = self::get_newsletter($newsletter_id); $send_data = self::get_send($send_id); if ($send_data && $newsletter && $send_data['newsletter_id'] != $newsletter['newsletter_id']) { return array(); } $send_time = isset($send_data['start_time']) ? $send_data['start_time'] : isset($newsletter['date_updated']) ? strtotime($newsletter['date_updated']) : time(); $replace = array(); $replace['COMPANY_NAME'] = ''; $replace['FIRST_NAME'] = ''; $replace['LAST_NAME'] = ''; $replace['EMAIL'] = ''; $replace['FROM_EMAIL'] = $newsletter['from_email']; $replace['FROM_NAME'] = $newsletter['from_name']; $replace['DAY'] = date('d', $send_time); $replace['MONTH'] = date('m', $send_time); $replace['YEAR'] = date('Y', $send_time); $replace['DATE'] = print_date($send_time); //urls $replace['UNSUBSCRIBE'] = self::unsubscribe_url($newsletter_id); $replace['VIEW_ONLINE'] = self::view_online_url($newsletter_id); $replace['LINK_ACCOUNT'] = '#'; $replace['SENDTOFRIEND'] = '#'; $replace['MEMBER_URL'] = '#'; $replace['SUBJECT'] = $send_data && isset($send_data['subject']) && $send_data['subject'] ? $send_data['subject'] : $newsletter['subject']; // these will be overridden when the send goes out $use_newsletter_member = array(); if ($send_id && $send_data) { // todo: BIG TODO: cache this loop, it will run every time a newsletter is mailed during the render query. eep! $extra_fields = $cache_data = array(); if (isset($send_data['cache'])) { $cache_data = @unserialize($send_data['cache']); if ($cache_data && isset($cache_data['extra_fields'])) { $extra_fields = $cache_data['extra_fields']; } } if (!$extra_fields) { $send_members = module_newsletter::get_send_members($send_id); // what other fields are we pulling in here? // hunt through the recipient listing and find the extra fields. $extra_fields = array(); while ($send_member = mysql_fetch_assoc($send_members)) { $cache = array(); if (isset($send_member['data_cache']) && strlen($send_member['data_cache']) > 1) { $cache = unserialize($send_member['data_cache']); if ($cache) { // we have extra fields! woo! foreach ($cache as $key => $val) { if (strpos($key, '_id')) { continue; } // skip ids for now. $extra_fields[$key] = true; } } } if ($newsletter_member_id && $send_member['newsletter_member_id'] == $newsletter_member_id) { $use_newsletter_member = $send_member; } } //ksort($extra_fields); mysql_free_result($send_members); //module_cache::put('newsletter','send_extra_fields_'.$send_id,$extra_fields,240); if (!is_array($cache_data)) { $cache_data = array(); } $cache_data['extra_fields'] = $extra_fields; self::save_send($send_id, array('cache' => serialize($cache_data))); } else { if ($newsletter_member_id) { $use_newsletter_member = self::get_send_member($send_id, $newsletter_member_id); } } if (is_array($extra_fields)) { foreach ($extra_fields as $extra_field => $tf) { if ($extra_field[0] == '_') { continue; } $replace[strtoupper($extra_field)] = ''; } } if ($use_newsletter_member) { if ($update_member_details) { // grab the latest member details here // this is because in the initial loop we only grab their email/basic details to speed up the queing process. $new_data = self::update_individual_member_data($send_id, $newsletter_member_id, $use_newsletter_member); if (is_array($new_data)) { $use_newsletter_member = array_merge($use_newsletter_member, $new_data); } } // we are using this members data in this array. // insert its values into the replace values. foreach ($use_newsletter_member as $key => $val) { if (is_array($val)) { continue; } //if(isset($replace[strtoupper($key)])){ $replace[strtoupper($key)] = $val; //} } if (isset($use_newsletter_member['data_cache']) && strlen($use_newsletter_member['data_cache']) > 1) { $cache = unserialize($use_newsletter_member['data_cache']); if (is_array($cache)) { foreach ($cache as $key => $val) { if (is_array($val)) { continue; } //if(isset($replace[strtoupper($key)])){ $replace[strtoupper($key)] = $val; //} } } } } } return $replace; }