name = 'Events Manager - Booking';
$conditions['user']['eventsmanager']->option = '
';
$conditions['user']['eventsmanager']->option .= '
';
$conditions['user']['eventsmanager']->option .= acym_select(
$this->getBookingStatuses(),
'acym_condition[conditions][__numor__][__numand__][eventsmanager][status]',
'1',
['class' => 'acym__select']
);
$conditions['user']['eventsmanager']->option .= '
';
$conditions['user']['eventsmanager']->option .= '
';
$this->prepareWPCategories('event-categories');
$categories = $this->categories;
array_unshift($categories, (object)['id' => 0, 'title' => acym_translation('ACYM_ANY_CATEGORY')]);
$conditions['user']['eventsmanager']->option .= acym_select(
$categories,
'acym_condition[conditions][__numor__][__numand__][eventsmanager][category]',
null,
['class' => 'acym__select'],
'id',
'title'
);
$conditions['user']['eventsmanager']->option .= '
';
$conditions['user']['eventsmanager']->option .= '
';
$selectOptions = [
'class' => 'acym__select acym_select2_ajax',
'data-placeholder' => acym_translation('ACYM_ANY_EVENT'),
'data-params' => [
'plugin' => __CLASS__,
'trigger' => 'searchEvent',
],
];
$selectOptions['acym-automation-reload'] = [
'plugin' => __CLASS__,
'trigger' => 'getTicketsSelection',
'change' => '#em_tochange___numor_____numand__',
'name' => 'acym_condition[conditions][__numor__][__numand__][eventsmanager][ticket]',
'paramFields' => [
'event' => 'acym_condition[conditions][__numor__][__numand__][eventsmanager][event]',
],
];
$conditions['user']['eventsmanager']->option .= acym_select(
[],
'acym_condition[conditions][__numor__][__numand__][eventsmanager][event]',
null,
$selectOptions
);
$conditions['user']['eventsmanager']->option .= '
';
$conditions['user']['eventsmanager']->option .= '
';
$conditions['user']['eventsmanager']->option .= '';
$conditions['user']['eventsmanager']->option .= '
';
$conditions['user']['eventsmanager']->option .= '
';
$conditions['user']['eventsmanager']->option .= '';
$conditions['user']['eventsmanager']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][eventsmanager][datemin]', '', 'cell shrink');
$conditions['user']['eventsmanager']->option .= '<';
$conditions['user']['eventsmanager']->option .= ''.acym_translation('ACYM_REGISTRATION_DATE').'';
$conditions['user']['eventsmanager']->option .= '<';
$conditions['user']['eventsmanager']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][eventsmanager][datemax]', '', 'cell shrink');
$conditions['user']['eventsmanager']->option .= '
';
}
public function onAcymDeclareConditionsScenario(array &$conditions): void
{
$this->onAcymDeclareConditions($conditions);
}
/**
* Function called with ajax to search in events
*/
public function searchEvent()
{
$id = acym_getVar('int', 'id');
if (!empty($id)) {
$subject = acym_loadResult(
'SELECT post_title
FROM #__posts
WHERE ID = '.intval($id)
);
if (empty($subject)) $subject = '';
echo json_encode(
[
[
'value' => $id,
'text' => $id.' - '.$subject,
],
]
);
exit;
}
$return = [];
$search = acym_getVar('string', 'search', '');
$elements = acym_loadObjectList(
'SELECT ID, post_title
FROM #__posts
WHERE post_title LIKE '.acym_escapeDB('%'.$search.'%').' AND post_type = "event"
ORDER BY post_title ASC'
);
foreach ($elements as $oneElement) {
$return[] = [$oneElement->ID, $oneElement->ID.' - '.$oneElement->post_title];
}
echo json_encode($return);
exit;
}
public function getTicketsSelection()
{
$id = acym_getVar('int', 'event', 0);
if (empty($id)) exit;
$elements = acym_loadObjectList(
'SELECT ticket.`ticket_id`, ticket.`ticket_name`
FROM `#__em_tickets` AS ticket
JOIN `#__em_events` AS event ON ticket.event_id = event.event_id
WHERE event.`post_id` = '.intval($id).'
ORDER BY ticket.`ticket_order` ASC'
);
$options = [];
$options[0] = acym_translation('ACYM_ANY');
foreach ($elements as $oneElement) {
$options[$oneElement->ticket_id] = $oneElement->ticket_name;
}
echo wp_kses(
acym_select(
$options,
acym_getVar('string', 'name', ''),
acym_getVar('int', 'value', 0),
[
'class' => 'acym__select',
]
),
[
'select' => ['class' => [], 'name' => [], 'id' => []],
'option' => ['value' => [], 'selected' => [], 'disabled' => []],
'optgroup' => ['label' => []],
]
);
exit;
}
public function onAcymProcessCondition_eventsmanager(&$query, $options, $num, &$conditionNotValid)
{
$this->processConditionFilter_eventsmanager($query, $options, $num);
$affectedRows = $query->count();
if (empty($affectedRows)) $conditionNotValid++;
}
private function processConditionFilter_eventsmanager(&$query, $options, $num)
{
$booking = 'booking'.$num;
$ticket = 'ticketBooking'.$num;
$event = 'event'.$num;
$category = 'category'.$num;
$query->join[$booking] = '#__em_bookings AS '.$booking.' ON '.$booking.'.person_id = user.cms_id ';
if (!empty($options['ticket'])) {
$query->join[$ticket] = '#__em_tickets_bookings AS '.$ticket.' ON '.$ticket.'.booking_id = '.$booking.'.booking_id ';
$query->where[] = $ticket.'.ticket_id = '.intval($options['ticket']);
} elseif (!empty($options['event'])) {
$query->join[$event] = '#__em_events AS '.$event.' ON '.$event.'.event_id = '.$booking.'.event_id ';
$query->where[] = $event.'.post_id = '.intval($options['event']);
} elseif (!empty($options['category'])) {
$query->join[$event] = '#__em_events AS '.$event.' ON '.$event.'.event_id = '.$booking.'.event_id ';
$query->join[$category] = '#__term_relationships AS '.$category.' ON '.$event.'.post_id = '.$category.'.object_id ';
$query->where[] = $category.'.term_taxonomy_id = '.intval($options['category']);
}
if (isset($options['status']) && $options['status'] !== 'all') {
$query->where[] = $booking.'.booking_status = '.intval($options['status']);
}
if (!empty($options['datemin'])) {
$options['datemin'] = acym_replaceDate($options['datemin']);
if (!is_numeric($options['datemin'])) $options['datemin'] = strtotime($options['datemin']);
if (!empty($options['datemin'])) {
$query->where[] = $booking.'.booking_date > '.acym_escapeDB(gmdate('Y-m-d H:i:s', $options['datemin']));
}
}
if (!empty($options['datemax'])) {
$options['datemax'] = acym_replaceDate($options['datemax']);
if (!is_numeric($options['datemax'])) $options['datemax'] = strtotime($options['datemax']);
if (!empty($options['datemax'])) {
$query->where[] = $booking.'.booking_date < '.acym_escapeDB(gmdate('Y-m-d H:i:s', $options['datemax']));
}
}
}
public function onAcymDeclareSummary_conditions(&$automationCondition)
{
$this->summaryConditionFilters($automationCondition);
}
private function summaryConditionFilters(&$automation)
{
if (empty($automation['eventsmanager'])) return;
if (empty($automation['eventsmanager']['event'])) {
if (empty($automation['eventsmanager']['category'])) {
$event = '';
} else {
$event = acym_loadResult(
'SELECT term.name
FROM #__term_taxonomy AS taxo
JOIN #__terms AS term ON taxo.term_id = term.term_id
WHERE taxo.term_taxonomy_id = '.intval($automation['eventsmanager']['category'])
).' - ';
}
$event .= acym_translation('ACYM_ANY_EVENT');
} else {
$event = acym_loadResult(
'SELECT post_title
FROM #__posts
WHERE ID = '.intval($automation['eventsmanager']['event'])
);
}
if (!empty($automation['eventsmanager']['ticket'])) {
$ticket = acym_loadResult(
'SELECT ticket_name
FROM #__em_tickets
WHERE ticket_id = '.intval($automation['eventsmanager']['ticket'])
);
$event .= ' - '.$ticket;
}
$finalText = acym_translationSprintf('ACYM_REGISTERED_TO', $event);
$dates = [];
if (!empty($automation['eventsmanager']['datemin'])) {
$dates[] = acym_translation('ACYM_AFTER').' '.acym_replaceDate($automation['eventsmanager']['datemin'], true);
}
if (!empty($automation['eventsmanager']['datemax'])) {
$dates[] = acym_translation('ACYM_BEFORE').' '.acym_replaceDate($automation['eventsmanager']['datemax'], true);
}
if (!empty($dates)) {
$finalText .= ' '.implode(' '.acym_translation('ACYM_AND').' ', $dates);
}
if (isset($automation['eventsmanager']['status']) && $automation['eventsmanager']['status'] !== 'all') {
$statuses = $this->getBookingStatuses();
$finalText .= acym_translation('ACYM_STATUS').': '.$statuses[$automation['eventsmanager']['status']];
}
$automation = $finalText;
}
private function getBookingStatuses()
{
return [
'all' => acym_translation('ACYM_STATUS'),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'0' => __('Pending', 'events-manager'),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'1' => __('Approved', 'events-manager'),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'2' => __('Rejected', 'events-manager'),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'3' => __('Cancelled', 'events-manager'),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'4' => __('Awaiting Online Payment', 'events-manager'),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'5' => __('Awaiting Payment', 'events-manager'),
];
}
}