public function expand($str, $filter = false)
 {
     return apply_filters('eab-events-rsvp_email-codec-expand', parent::expand($str, $filter), $this->_event);
 }
 /**
  * Takes care of the whole newsletter-as-template expansion.
  */
 public function newsletter_from_template($newsletter_id, $event_id)
 {
     if (empty($newsletter_id) || empty($event_id)) {
         return false;
     }
     $event = new Eab_EventModel(get_post($event_id));
     $data = $this->_newsletter->get_newsletter_data($newsletter_id);
     if (empty($data)) {
         return false;
     }
     $codec = new Eab_Macro_Codec($event_id, false);
     $content = false;
     if (!empty($data['content'])) {
         $content = $codec->expand($data['content'], Eab_Macro_Codec::FILTER_BODY);
     } else {
         $content = $this->_get_default_content($event);
     }
     $subject = !empty($data['subject']) ? $data['subject'] : '';
     $expanded = $codec->expand($subject, Eab_Macro_Codec::FILTER_TITLE);
     $subject = !empty($expanded) && $expanded != $subject ? $expanded : (!empty($subject) ? $subject : $this->_get_default_subject($event));
     $title = $this->_newsletter->get_newsletter_meta($newsletter_id, 'email_title');
     $expanded_title = $codec->expand($title, Eab_Macro_Codec::FILTER_TITLE);
     $title = !empty($expanded_title) && $expanded_title != $title ? $expanded_title : $title;
     $data = wp_parse_args(array('newsletter_id' => false, 'subject' => $subject, 'content' => $content), $data);
     $meta = array('email_title' => $title, 'event_id' => $event_id);
     $new_id = $this->_duplicate($newsletter_id);
     if (empty($new_id)) {
         return false;
     }
     $prefix = $this->_get_table_prefix();
     $data['newsletter_id'] = $new_id;
     $this->_db->update("{$prefix}enewsletter_newsletters", $data, array("newsletter_id" => $new_id));
     if (!empty($meta)) {
         foreach ($meta as $key => $value) {
             $this->_db->update("{$prefix}enewsletter_meta", array('meta_value' => $value), array("email_id" => $new_id, "meta_key" => $key));
         }
     }
     return $new_id;
 }
 function ajax_preview_email()
 {
     $data = stripslashes_deep($_POST);
     $event_id = !empty($data['event_id']) ? $data['event_id'] : false;
     if (!$event_id) {
         die;
     }
     $user = wp_get_current_user();
     $codec = new Eab_Macro_Codec($event_id, $user->ID);
     die('<strong>' . $codec->expand($data['subject'], Eab_Macro_Codec::FILTER_TITLE) . '</strong>' . '<div>' . $codec->expand($data['body'], Eab_Macro_Codec::FILTER_BODY) . '</div>');
 }