196 lines
5.8 KiB
PHP
196 lines
5.8 KiB
PHP
<?php
|
|
/** no direct access **/
|
|
defined('MECEXEC') or die();
|
|
|
|
/**
|
|
* Webnus MEC Transaction class.
|
|
* @author Webnus <info@webnus.biz>
|
|
*/
|
|
class MEC_transaction extends MEC_base
|
|
{
|
|
public $transaction_id;
|
|
public $transaction;
|
|
public $settings;
|
|
public $ml_settings;
|
|
|
|
/**
|
|
* @var MEC_book
|
|
*/
|
|
private $book;
|
|
|
|
/**
|
|
* @var MEC_Main
|
|
*/
|
|
private $main;
|
|
|
|
/**
|
|
* Constructor method
|
|
* @author Webnus <info@webnus.biz>
|
|
* @param $transaction_id
|
|
*/
|
|
public function __construct($transaction_id)
|
|
{
|
|
$this->main = $this->getMain();
|
|
$this->transaction_id = $transaction_id;
|
|
$this->settings = $this->main->get_settings();
|
|
$this->ml_settings = $this->main->get_ml_settings();
|
|
|
|
$this->book = $this->getBook();
|
|
$this->transaction = $this->book->get_transaction($transaction_id);
|
|
}
|
|
|
|
public function get_total()
|
|
{
|
|
return (isset($this->transaction['total']) ? $this->transaction['total'] : NULL);
|
|
}
|
|
|
|
public function get_discount()
|
|
{
|
|
return (isset($this->transaction['discount']) ? $this->transaction['discount'] : NULL);
|
|
}
|
|
|
|
public function get_payable()
|
|
{
|
|
return (isset($this->transaction['price']) ? $this->transaction['price'] : 0);
|
|
}
|
|
|
|
public function get_price_html()
|
|
{
|
|
$total = $this->get_total();
|
|
$payable = $this->get_payable();
|
|
|
|
if($total == $payable) return '<span class="mec-transaction-price">'.$this->render_price($payable).'</span>';
|
|
else return '<span class="mec-transaction-price"><span class="mec-line-through">'.$this->render_price($total).'</span><br>'.$this->render_price($payable).'</span>';
|
|
}
|
|
|
|
public function render_price($amount)
|
|
{
|
|
return $this->main->render_price($amount, $this->get_event_id());
|
|
}
|
|
|
|
public function is_free()
|
|
{
|
|
return ($this->get_payable() ? false : true);
|
|
}
|
|
|
|
public function get_event_id()
|
|
{
|
|
return (isset($this->transaction['event_id']) ? $this->transaction['event_id'] : 0);
|
|
}
|
|
|
|
public function get_array()
|
|
{
|
|
return $this->transaction;
|
|
}
|
|
|
|
/**
|
|
* @return WP_Post
|
|
*/
|
|
public function get_event()
|
|
{
|
|
return get_post($this->get_event_id());
|
|
}
|
|
|
|
public function get_event_link()
|
|
{
|
|
$event = $this->get_event();
|
|
return '<a href="'.esc_url(get_permalink($event)).'" target="_blank">'.$event->post_title.'</a>';
|
|
}
|
|
|
|
public function get_event_featured_image()
|
|
{
|
|
$event = $this->get_event();
|
|
return get_the_post_thumbnail($event);
|
|
}
|
|
|
|
public function get_tickets()
|
|
{
|
|
$tickets = ((isset($this->transaction['tickets']) and is_array($this->transaction['tickets'])) ? $this->transaction['tickets'] : array());
|
|
|
|
// Remove Useless Key
|
|
if(isset($tickets['attachments'])) unset($tickets['attachments']);
|
|
|
|
return $tickets;
|
|
}
|
|
|
|
public function get_event_tickets()
|
|
{
|
|
$tickets = get_post_meta($this->get_event_id(), 'mec_tickets', true);
|
|
if(!is_array($tickets)) $tickets = array();
|
|
|
|
return $tickets;
|
|
}
|
|
|
|
public function get_tickets_html()
|
|
{
|
|
$html = '<ul>';
|
|
$event_tickets = $this->get_event_tickets();
|
|
|
|
$tickets = $this->get_tickets();
|
|
$rendered = array();
|
|
|
|
foreach($tickets as $t)
|
|
{
|
|
$ticket_id = $t['id'];
|
|
|
|
$ticket = (isset($event_tickets[$ticket_id]) ? $event_tickets[$ticket_id] : array());
|
|
$count = $t['count'];
|
|
|
|
if(!isset($rendered[$ticket_id])) $rendered[$ticket_id] = array('count' => 0, 'names' => array());
|
|
|
|
$rendered[$ticket_id]['name'] = $ticket['name'];
|
|
$rendered[$ticket_id]['count'] += $count;
|
|
$rendered[$ticket_id]['names'][] = $t['name'];
|
|
}
|
|
|
|
foreach($rendered as $ticket_id => $row)
|
|
{
|
|
$names = array_unique($row['names']);
|
|
|
|
$names_html = '';
|
|
foreach($names as $name) $names_html .= '<h6>'.$name.'</h6>';
|
|
|
|
$html .= '<li><h5>'.$row['name'].($row['count'] > 1 ? ' ('.$row['count'].')' : '').'</h5>'.$names_html.'</li>';
|
|
}
|
|
|
|
$html .= '</ul>';
|
|
return $html;
|
|
}
|
|
|
|
public function get_dates()
|
|
{
|
|
$all_dates = ((isset($this->transaction['all_dates']) and is_array($this->transaction['all_dates'])) ? $this->transaction['all_dates'] : array());
|
|
$date = (isset($this->transaction['date']) ? $this->transaction['date'] : NULL);
|
|
|
|
return (count($all_dates) ? $all_dates : array($date));
|
|
}
|
|
|
|
public function get_dates_html()
|
|
{
|
|
$html = '<ul>';
|
|
|
|
$date_format = (isset($this->ml_settings['booking_date_format1']) and trim($this->ml_settings['booking_date_format1'])) ? $this->ml_settings['booking_date_format1'] : get_option('date_format');
|
|
$time_format = get_option('time_format');
|
|
|
|
$timestamps = $this->get_dates();
|
|
foreach($timestamps as $timestamp)
|
|
{
|
|
$times = explode(':', $timestamp);
|
|
|
|
$html .= '<li>'.sprintf(__('%s to %s', 'modern-events-calendar-lite'), $this->main->date_i18n($date_format.' '.$time_format, $times[0]), $this->main->date_i18n($date_format.' '.$time_format, $times[1])).'</li>';
|
|
}
|
|
|
|
$html .= '</ul>';
|
|
return $html;
|
|
}
|
|
|
|
public function get_coupon()
|
|
{
|
|
return (isset($this->transaction['coupon']) ? $this->transaction['coupon'] : NULL);
|
|
}
|
|
|
|
public function get_price_details()
|
|
{
|
|
return ((isset($this->transaction['price_details']) and is_array($this->transaction['price_details'])) ? $this->transaction['price_details'] : array());
|
|
}
|
|
} |