Beispiel #1
0
function espresso_prepare_email_data($attendee_id, $multi_reg, $custom_data = '')
{
    global $wpdb, $org_options;
    do_action('action_hook_espresso_log', __FILE__, __FUNCTION__, '');
    $data = new stdClass();
    $data->multi_reg = $multi_reg;
    //print_r($custom_data);
    //Create vars for the custom data
    if (!empty($custom_data)) {
        extract($custom_data, EXTR_PREFIX_ALL, 'custom_data');
    }
    //echo $custom_data_email_type;
    //Get the event record
    if (empty($custom_data_email_type)) {
        $custom_data_email_type = '';
    }
    $sql = "SELECT ed.* ";
    isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y' ? $sql .= ", v.name venue_name, v.address venue_address, v.address2 venue_address2, v.city venue_city, v.state venue_state, v.zip venue_zip, v.country venue_country, v.meta venue_meta " : '';
    $sql .= " FROM " . EVENTS_DETAIL_TABLE . " ed ";
    isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y' ? $sql .= " LEFT JOIN " . EVENTS_VENUE_REL_TABLE . " r ON r.event_id = ed.id LEFT JOIN " . EVENTS_VENUE_TABLE . " v ON v.id = r.venue_id " : '';
    $sql .= " JOIN " . EVENTS_ATTENDEE_TABLE . " ea ON ea.event_id=ed.id ";
    $sql .= " WHERE ea.id = '" . $attendee_id . "' ";
    $data->event = $wpdb->get_row($sql, OBJECT);
    //Get the attendee record
    $sql = "SELECT ea.* FROM " . EVENTS_ATTENDEE_TABLE . " ea WHERE ea.id = '" . $attendee_id . "' ";
    $data->attendee = $wpdb->get_row($sql, OBJECT);
    //Get the primary/first attendee
    $data->primary_attendee = espresso_is_primary_attendee($data->attendee->id) == true ? true : false;
    $data->event->event_meta = unserialize($data->event->event_meta);
    //Venue variables
    if (isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y') {
        $data->event->venue_meta = unserialize($data->event->venue_meta);
        //Debug
        //echo "<pre>".print_r($data->event->venue_meta,true)."</pre>";
        $data->event->venue_url = $data->event->venue_meta['website'];
        $data->event->venue_phone = $data->event->venue_meta['phone'];
        $data->event->venue_image = '<img src="' . $data->event->venue_meta['image'] . '" />';
        $data->event->venue_name = $data->event->venue_name;
        $data->event->address = $data->event->venue_address;
        $data->event->address2 = $data->event->venue_address2;
        $data->event->city = $data->event->venue_city;
        $data->event->state = $data->event->venue_state;
        $data->event->zip = $data->event->venue_zip;
        $data->event->country = $data->event->venue_country;
    } else {
        $data->event->venue_name = $data->event->venue_title;
    }
    //Build the table to hold the event and attendee info
    $data->table_open = '<table width="100%" border="1" cellpadding = "5" cellspacing="5" style="border-collapse:collapse;">';
    $data->table_heading = "<tr><th>" . __('Event Name', 'event_espresso') . "</th><th>" . __('Date', 'event_espresso') . "</th><th>" . __('Time', 'event_espresso') . "</th><th>" . __('Location', 'event_espresso') . "</th></tr>";
    $data->table_close = "</table>";
    //Clear ticket data
    $data->qr_code = '';
    $data->ticket_link = '';
    $data->admin_ticket_link = '';
    //Old ticketing system
    if (file_exists(EVENT_ESPRESSO_UPLOAD_DIR . "/ticketing/template.php")) {
        if (file_exists(EVENT_ESPRESSO_UPLOAD_DIR . "/ticketing/functions.php")) {
            include_once EVENT_ESPRESSO_UPLOAD_DIR . "/ticketing/functions.php";
            $data->qr_code = espresso_qr_code(array('attendee_id' => $data->attendee->id, 'event_name' => stripslashes_deep($data->event->event_name), 'attendee_first' => $data->attendee->fname, 'attendee_last' => $data->attendee->lname, 'registration_id' => $data->attendee->registration_id, 'event_code' => $data->event->event_code, 'ticket_type' => $data->attendee->price_option, 'event_time' => $data->attendee->event_time, 'amount_pd' => espresso_attendee_price(array('registration_id' => $data->attendee->registration_id, 'reg_total' => true))));
        }
        $data->ticket_link = espresso_ticket_links($data->attendee->registration_id, $data->attendee->id);
        $data->admin_ticket_link = $data->ticket_link;
    }
    //New ticketing system version 2.0
    if (function_exists('espresso_ticket_launch')) {
        $data->qr_code = espresso_ticket_qr_code(array('attendee_id' => $data->attendee->id, 'event_name' => stripslashes_deep($data->event->event_name), 'attendee_first' => $data->attendee->fname, 'attendee_last' => $data->attendee->lname, 'registration_id' => $data->attendee->registration_id, 'event_code' => $data->event->event_code, 'ticket_type' => $data->attendee->price_option, 'event_time' => $data->attendee->event_time, 'amount_pd' => espresso_attendee_price(array('registration_id' => $data->attendee->registration_id, 'reg_total' => true))));
        $data->ticket_link = espresso_ticket_links($data->attendee->registration_id, $data->attendee->id);
        $data->admin_ticket_link = $data->ticket_link;
    }
    //certificate system
    if (function_exists('espresso_certificate_launch')) {
        $data->certificate_link = espresso_certificate_links($data->attendee->registration_id, $data->attendee->id);
        $data->admin_certificate_link = $data->certificate_link;
    }
    //Build the address
    $data->location = ($data->event->address != '' ? $data->event->address : '') . ($data->event->address2 != '' ? '<br />' . $data->event->address2 : '') . ($data->event->city != '' ? '<br />' . $data->event->city : '') . ($data->event->state != '' ? ', ' . $data->event->state : '') . ($data->event->zip != '' ? '<br />' . $data->event->zip : '') . ($data->event->country != '' ? '<br />' . $data->event->country : '');
    //Build Google map link
    $data->google_map_link = espresso_google_map_link(array('address' => $data->event->address, 'city' => $data->event->city, 'state' => $data->event->state, 'zip' => $data->event->zip, 'country' => $data->event->country));
    //Registration URL
    $data->event_url = espresso_reg_url($data->event->id);
    $data->event_link = '<a href="' . $data->event_url . '">' . stripslashes_deep($data->event->event_name) . '</a>';
    //Venue name
    if (!isset($data->event->venue_name)) {
        $data->event->venue_name = '';
    }
    //Table of events registered for
    $data->event_table .= "\n\t\t<tr>\n\t\t\t<td>" . stripslashes_deep($data->event->event_name) . " | " . $data->attendee->price_option . "</td>\n\t\t\t<td>" . event_date_display($data->attendee->start_date) . ' - ' . event_date_display($data->attendee->end_date) . "</td>\n\t\t\t<td>" . event_date_display($data->attendee->event_time, get_option('time_format')) . " - " . event_date_display($data->attendee->end_time, get_option('time_format')) . "</td>\n\t\t\t<td>" . $data->event->venue_name . "<br />{$data->location} <br />{$data->google_map_link}</td>" . ($data->attendee->quantity > 0 ? '<td>' . $data->attendee->quantity . __(' attendees', 'event_espresso') . '</td>' : '') . "</tr>";
    //Output custom questions
    if (function_exists('event_espresso_custom_questions_output')) {
        //Create the question display
        $email_questions_r = event_espresso_custom_questions_output(array('attendee_id' => $data->attendee->id, 'all_questions' => TRUE));
        if ($email_questions_r != '') {
            $data->email_questions = '<tr><td colspan = "6">' . $email_questions_r . '</td></tr>';
        }
        $data->event_table .= $data->email_questions;
    }
    //Payment URL
    $payment_url = get_option('siteurl') . "/?page_id=" . $org_options['return_url'] . "&amp;registration_id=" . $data->attendee->registration_id;
    $data->payment_link = '<a href="' . $payment_url . '">' . __('View Your Payment Details') . '</a>';
    // download link
    $data->invoice_link = '<a href="' . home_url() . '/?download_invoice=true&amp;attendee_id=' . $data->attendee->id . '&amp;registration_id=' . $data->attendee->registration_id . '" target="_blank">' . __('Download PDF Invoice', 'event_espresso') . '</a>';
    //Edit attendee link
    $data->edit_attendee = espresso_edit_attendee($data->attendee->registration_id, $data->attendee->id, $data->attendee->event_id, 'attendee', 'Edit Registration Details');
    $data->email_subject = !$data->multi_reg ? $data->event->event_name : $org_options['organization'] . __(' registration confirmation', 'event_espresso');
    //Build invoice email
    if ($custom_data_email_type == 'invoice') {
        $data->email_subject = $custom_data_invoice_subject;
        $data->event->conf_mail = $custom_data_invoice_message;
        $data->event->send_mail = 'Y';
        $data->event->email_id = empty($_REQUEST['email_name']) ? '' : $_REQUEST['email_name'];
    }
    //Build payment email
    if ($custom_data_email_type == 'payment') {
        $data->email_subject = $custom_data_payment_subject;
        $data->event->conf_mail = $custom_data_payment_message;
        $data->event->send_mail = 'Y';
    }
    //Build reminder email
    if ($custom_data_email_type == 'reminder') {
        $data->email_subject = $custom_data_email_subject;
        $data->event->conf_mail = $custom_data_email_text;
        $data->event->send_mail = 'Y';
        $data->event->email_id = $custom_data_email_id > 0 ? $custom_data_email_id : '';
    }
    return $data;
}
function espresso_ticket_launch($attendee_id = 0, $registration_id = 0)
{
    global $wpdb, $org_options;
    $data = new stdClass();
    //Make sure we have attendee data
    if ($attendee_id == 0 || $registration_id == 0) {
        return;
    }
    //Get the event record
    $sql = "SELECT ed.*, et.css_file, et.template_file, et.ticket_content, et.ticket_logo_url ";
    isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y' ? $sql .= ", v.id venue_id, v.name venue_name, v.address venue_address, v.address2 venue_address2, v.city venue_city, v.state venue_state, v.zip venue_zip, v.country venue_country, v.meta venue_meta " : '';
    $sql .= " FROM " . EVENTS_DETAIL_TABLE . " ed ";
    isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y' ? $sql .= " LEFT JOIN " . EVENTS_VENUE_REL_TABLE . " r ON r.event_id = ed.id LEFT JOIN " . EVENTS_VENUE_TABLE . " v ON v.id = r.venue_id " : '';
    $sql .= " JOIN " . EVENTS_ATTENDEE_TABLE . " ea ON ea.event_id=ed.id ";
    $sql .= " LEFT JOIN " . EVENTS_TICKET_TEMPLATES . " et ON et.id=ed.ticket_id ";
    $sql .= " WHERE ea.id = '" . $attendee_id . "' AND ea.registration_id = '" . $registration_id . "' ";
    //echo $sql;
    $data->event = $wpdb->get_row($sql, OBJECT);
    //Get the attendee record
    $sql = "SELECT ea.* FROM " . EVENTS_ATTENDEE_TABLE . " ea WHERE ea.id = '" . $attendee_id . "' AND ea.registration_id = '" . $registration_id . "' ";
    $data->attendee = $wpdb->get_row($sql, OBJECT);
    if (empty($data->attendee)) {
        //echo 'Invalid data supplied.';
        return;
    }
    //Get the primary/first attendee
    $data->primary_attendee = espresso_is_primary_attendee($data->attendee->id) == true ? true : false;
    //unserialize the event meta
    $data->event->event_meta = unserialize($data->event->event_meta);
    //Get the registration date
    $data->attendee->registration_date = $data->attendee->date;
    //Get the CSS file
    $data->event->css_file = !empty($data->event->css_file) && $data->event->css_file > '0' ? $data->event->css_file : 'simple.css';
    //echo $data->event->css_file;
    //Get the HTML file
    $data->event->template_file = !empty($data->event->template_file) && $data->event->template_file > '0' ? $data->event->template_file : 'index.php';
    //Venue information
    if (isset($org_options['use_venue_manager']) && $org_options['use_venue_manager'] == 'Y') {
        $data->event->venue_id = !empty($data->event->venue_id) ? $data->event->venue_id : '';
        $data->event->venue_name = !empty($data->event->venue_name) ? $data->event->venue_name : '';
        $data->event->address = !empty($data->event->venue_address) ? $data->event->venue_address : '';
        $data->event->address2 = !empty($data->event->venue_address2) ? $data->event->venue_address2 : '';
        $data->event->city = !empty($data->event->venue_city) ? $data->event->venue_city : '';
        $data->event->state = !empty($data->event->venue_state) ? $data->event->venue_state : '';
        $data->event->zip = !empty($data->event->venue_zip) ? $data->event->venue_zip : '';
        $data->event->country = !empty($data->event->venue_country) ? $data->event->venue_country : '';
        $data->event->venue_meta = !empty($data->event->venue_meta) ? unserialize($data->event->venue_meta) : '';
    } else {
        $data->event->venue_name = !empty($data->event->venue_title) ? $data->event->venue_title : '';
    }
    //Create the Gravatar image
    $data->gravatar = '<img src="' . espresso_get_gravatar($data->attendee->email, $size = '100', $default = 'http://www.gravatar.com/avatar/') . '" alt="Gravatar">';
    //Google map IMAGE creation
    $data->event->google_map_image = espresso_google_map_link(array('id' => $data->event->venue_id, 'address' => $data->event->address, 'city' => $data->event->city, 'state' => $data->event->state, 'zip' => $data->event->zip, 'country' => $data->event->country, 'type' => 'map'));
    //Google map LINK creation
    $data->event->google_map_link = espresso_google_map_link(array('address' => $data->event->address, 'city' => $data->event->city, 'state' => $data->event->state, 'zip' => $data->event->zip, 'country' => $data->event->country, 'type' => 'text'));
    //Create the logo
    $data->event->ticket_logo_image = '';
    $data->event->ticket_logo_url = empty($data->event->ticket_logo_url) ? $org_options['default_logo_url'] : $data->event->ticket_logo_url;
    if (!empty($data->event->ticket_logo_url)) {
        $image_size = getimagesize($data->event->ticket_logo_url);
        $data->event->ticket_logo_image = '<img src="' . $data->event->ticket_logo_url . '" ' . $image_size[3] . ' alt="logo" /> ';
    }
    //Create the QR Code image
    $data->qr_code = espresso_ticket_qr_code(array('attendee_id' => $data->attendee->id, 'event_name' => stripslashes_deep($data->event->event_name), 'attendee_first' => $data->attendee->fname, 'attendee_last' => $data->attendee->lname, 'registration_id' => $data->attendee->registration_id, 'event_code' => $data->event->event_code, 'ticket_type' => $data->attendee->price_option, 'event_time' => $data->attendee->event_time, 'final_price' => $data->attendee->final_price));
    //Build the seating assignment
    $seatingchart_tag = '';
    if (defined("ESPRESSO_SEATING_CHART")) {
        if (class_exists("seating_chart")) {
            if (seating_chart::check_event_has_seating_chart($data->attendee->event_id)) {
                $rs = $wpdb->get_row("select scs.* from " . EVENTS_SEATING_CHART_EVENT_SEAT_TABLE . " sces inner join " . EVENTS_SEATING_CHART_SEAT_TABLE . " scs on sces.seat_id = scs.id where sces.attendee_id = " . $attendee_id);
                if ($rs !== NULL) {
                    $data->attendee->seatingchart_tag = $rs->custom_tag . " " . $rs->seat . " " . $rs->row;
                }
            }
        }
    }
    //Build the ticket name
    $ticket_name = sanitize_title_with_dashes($data->attendee->id . ' ' . $data->attendee->fname . ' ' . $data->attendee->lname);
    //Get the HTML as an object
    ob_start();
    if (file_exists(EVENT_ESPRESSO_UPLOAD_DIR . "tickets/templates/index.php")) {
        require_once EVENT_ESPRESSO_UPLOAD_DIR . 'tickets/templates/' . $data->event->template_file;
    } else {
        require_once 'templates/' . $data->event->template_file;
    }
    $content = ob_get_clean();
    $content = espresso_replace_ticket_shortcodes($content, $data);
    //Check if debugging or mobile is set
    if (isset($_REQUEST['pdf']) && $_REQUEST['pdf'] == true) {
        //Create the PDF
        define('DOMPDF_ENABLE_REMOTE', true);
        require_once EVENT_ESPRESSO_PLUGINFULLPATH . 'tpc/dompdf/dompdf_config.inc.php';
        $dompdf = new DOMPDF();
        $dompdf->load_html($content);
        //$dompdf->set_paper('A4', 'landscape');
        $dompdf->render();
        $dompdf->stream($ticket_name . ".pdf", array("Attachment" => false));
        exit(0);
    }
    echo $content;
    exit(0);
}