| 1 |
<?php |
| 2 |
|
| 3 |
namespace Give\EventTickets\Actions; |
| 4 |
|
| 5 |
use Give\EventTickets\DataTransferObjects\EventTicketTypeData; |
| 6 |
use Give\EventTickets\Models\Event; |
| 7 |
use Give\EventTickets\Models\EventTicketType; |
| 8 |
use Give\Framework\EnqueueScript; |
| 9 |
|
| 10 |
/** |
| 11 |
* @since 3.6.0 |
| 12 |
*/ |
| 13 |
class EnqueueFormBuilderScripts |
| 14 |
{ |
| 15 |
public function __invoke() |
| 16 |
{ |
| 17 |
$scriptAsset = require GIVE_PLUGIN_DIR . 'build/eventTicketsBlock.asset.php'; |
| 18 |
|
| 19 |
(new EnqueueScript( |
| 20 |
'givewp-event-tickets-block', |
| 21 |
'build/eventTicketsBlock.js', |
| 22 |
GIVE_PLUGIN_DIR, |
| 23 |
GIVE_PLUGIN_URL, |
| 24 |
'give' |
| 25 |
))->enqueue(); |
| 26 |
|
| 27 |
wp_localize_script( |
| 28 |
'givewp-event-tickets-block', |
| 29 |
'eventTicketsBlockSettings', |
| 30 |
[ |
| 31 |
'events' => $this->getEvents(), |
| 32 |
'createEventUrl' => admin_url('edit.php?post_type=give_forms&page=give-event-tickets&new=event'), |
| 33 |
'listEventsUrl' => admin_url('edit.php?post_type=give_forms&page=give-event-tickets'), |
| 34 |
] |
| 35 |
); |
| 36 |
|
| 37 |
wp_enqueue_style( |
| 38 |
'givewp-event-tickets-block', |
| 39 |
GIVE_PLUGIN_URL . 'build/eventTicketsBlock.css', |
| 40 |
[], |
| 41 |
$scriptAsset['version'] |
| 42 |
); |
| 43 |
} |
| 44 |
|
| 45 |
private function getEvents(): array |
| 46 |
{ |
| 47 |
$events = Event::query()->getAll(); |
| 48 |
$ticketTypes = EventTicketType::query()->getAll(); |
| 49 |
|
| 50 |
$eventData = []; |
| 51 |
|
| 52 |
foreach ($events as $event) { |
| 53 |
$eventData[$event->id] = array_map(function($propertyValue) { |
| 54 |
return $propertyValue instanceof \DateTime |
| 55 |
? $propertyValue->format('Y-m-d H:i:s') |
| 56 |
: $propertyValue; |
| 57 |
}, $event->toArray()); |
| 58 |
$eventData[$event->id]['ticketTypes'] = []; |
| 59 |
} |
| 60 |
|
| 61 |
foreach ($ticketTypes as $ticketType) { |
| 62 |
if ( ! isset($eventData[$ticketType->eventId])) { |
| 63 |
continue; |
| 64 |
} |
| 65 |
|
| 66 |
$eventData[$ticketType->eventId]['ticketTypes'][] = EventTicketTypeData::make($ticketType)->toArray(); |
| 67 |
} |
| 68 |
|
| 69 |
return array_values($eventData); |
| 70 |
} |
| 71 |
} |
| 72 |
|