|
1 | 1 | <?php |
2 | 2 |
|
3 | | -$calendar_type = get_input('calendar_type', 'all'); |
4 | | -$date_format = elgg_get_config('date_format', elgg_echo('input:date_format')); |
| 3 | +/** @var Event[] $events */ |
| 4 | +$events = []; |
5 | 5 |
|
6 | | -$start_date = (string) get_input('start_date'); |
7 | | -if (empty($start_date)) { |
8 | | - $start_date = time(); |
9 | | -} else { |
10 | | - $start_date = DateTime::createFromFormat($date_format, $start_date)->getTimestamp(); |
11 | | -} |
| 6 | +$event_id = get_input('event_id', ''); |
12 | 7 |
|
13 | | -$end_date = (string) get_input('end_date'); |
14 | | -if (empty($end_date)) { |
15 | | - $end_date = DateTime::createFromFormat('U', time()) |
16 | | - ->add(DateInterval::createFromDateString('1 month')) |
17 | | - ->getTimestamp(); |
18 | | -} else { |
19 | | - $end_date = DateTime::createFromFormat($date_format, $end_date)->getTimestamp(); |
20 | | -} |
| 8 | +if (empty($event_id)) { |
| 9 | + $calendar_type = get_input('calendar_type', 'all'); |
| 10 | + $date_format = elgg_get_config('date_format', elgg_echo('input:date_format')); |
21 | 11 |
|
22 | | -$region = (string) get_input('region'); |
23 | | -$event_type = (string) get_input('event_type'); |
| 12 | + $start_date = (string) get_input('start_date'); |
| 13 | + if (empty($start_date)) { |
| 14 | + $start_date = time(); |
| 15 | + } else { |
| 16 | + $start_date = DateTime::createFromFormat($date_format, $start_date)->getTimestamp(); |
| 17 | + } |
24 | 18 |
|
25 | | -$owner = (array) get_input('owner'); |
26 | | -$group = (array) get_input('group'); |
| 19 | + $end_date = (string) get_input('end_date'); |
| 20 | + if (empty($end_date)) { |
| 21 | + $end_date = DateTime::createFromFormat('U', time()) |
| 22 | + ->add(DateInterval::createFromDateString('1 month')) |
| 23 | + ->getTimestamp(); |
| 24 | + } else { |
| 25 | + $end_date = DateTime::createFromFormat($date_format, $end_date)->getTimestamp(); |
| 26 | + } |
27 | 27 |
|
28 | | -$options = [ |
29 | | - 'types' => ['object'], |
30 | | - 'subTypes' => [Event::SUBTYPE], |
31 | | - 'metadata_name_value_pairs' => [ |
32 | | - [ |
33 | | - 'name' => 'event_start', |
34 | | - 'operand' => '>=', |
35 | | - 'value' => $start_date, |
36 | | - ], |
37 | | - [ |
38 | | - 'name' => 'event_end', |
39 | | - 'operand' => '<=', |
40 | | - 'value' => $end_date, |
41 | | - ], |
42 | | - ] |
43 | | -]; |
44 | | - |
45 | | -if (!empty($region)) { |
46 | | - $options['metadata_name_value_pairs'][] = [ |
47 | | - 'name' => 'region', |
48 | | - 'operand' => 'IN', |
49 | | - 'value' => $region, |
| 28 | + $region = (string) get_input('region'); |
| 29 | + $event_type = (string) get_input('event_type'); |
| 30 | + |
| 31 | + $owner = (array) get_input('owner'); |
| 32 | + $group = (array) get_input('group'); |
| 33 | + |
| 34 | + $options = [ |
| 35 | + 'types' => ['object'], |
| 36 | + 'subTypes' => [Event::SUBTYPE], |
| 37 | + 'metadata_name_value_pairs' => [ |
| 38 | + [ |
| 39 | + 'name' => 'event_start', |
| 40 | + 'operand' => '>=', |
| 41 | + 'value' => $start_date, |
| 42 | + ], |
| 43 | + [ |
| 44 | + 'name' => 'event_end', |
| 45 | + 'operand' => '<=', |
| 46 | + 'value' => $end_date, |
| 47 | + ], |
| 48 | + ] |
50 | 49 | ]; |
51 | | -} |
52 | 50 |
|
53 | | -if (!empty($event_type)) { |
54 | | - $options['metadata_name_value_pairs'][] = [ |
55 | | - 'name' => 'event_type', |
56 | | - 'operand' => 'IN', |
57 | | - 'value' => $event_type, |
58 | | - ]; |
59 | | -} |
| 51 | + if (!empty($region)) { |
| 52 | + $options['metadata_name_value_pairs'][] = [ |
| 53 | + 'name' => 'region', |
| 54 | + 'operand' => 'IN', |
| 55 | + 'value' => $region, |
| 56 | + ]; |
| 57 | + } |
60 | 58 |
|
61 | | -switch ($calendar_type) { |
62 | | - case 'group': |
63 | | - if (empty($group)) { |
64 | | - return elgg_error_response(elgg_echo('event_manager:ical_direct:export:errors:groupempty')); |
65 | | - } |
66 | | - |
67 | | - $options['container_guids'] = $group; |
68 | | - break; |
69 | | - case 'owner': |
70 | | - if (empty($owner)) { |
71 | | - return elgg_error_response(elgg_echo('event_manager:ical_direct:export:errors:ownerempty')); |
72 | | - } |
73 | | - |
74 | | - if (!elgg_is_admin_logged_in() && (int) $owner[0] !== elgg_get_logged_in_user_guid()) { |
75 | | - return elgg_error_response(elgg_echo('event_manager:ical_direct:export:errors:ownermismatch')); |
76 | | - } |
77 | | - |
78 | | - $options['owner_guids'] = [$owner]; |
79 | | - break; |
80 | | -} |
| 59 | + if (!empty($event_type)) { |
| 60 | + $options['metadata_name_value_pairs'][] = [ |
| 61 | + 'name' => 'event_type', |
| 62 | + 'operand' => 'IN', |
| 63 | + 'value' => $event_type, |
| 64 | + ]; |
| 65 | + } |
81 | 66 |
|
82 | | -/** @var Event[] $events */ |
83 | | -$events = elgg_get_entities($options); |
| 67 | + switch ($calendar_type) { |
| 68 | + case 'group': |
| 69 | + if (empty($group)) { |
| 70 | + return elgg_error_response(elgg_echo('event_manager:ical_direct:export:errors:groupempty')); |
| 71 | + } |
| 72 | + |
| 73 | + $options['container_guids'] = $group; |
| 74 | + break; |
| 75 | + case 'owner': |
| 76 | + if (empty($owner)) { |
| 77 | + return elgg_error_response(elgg_echo('event_manager:ical_direct:export:errors:ownerempty')); |
| 78 | + } |
| 79 | + |
| 80 | + if (!elgg_is_admin_logged_in() && (int) $owner[0] !== elgg_get_logged_in_user_guid()) { |
| 81 | + return elgg_error_response(elgg_echo('event_manager:ical_direct:export:errors:ownermismatch')); |
| 82 | + } |
| 83 | + |
| 84 | + $options['owner_guids'] = [$owner]; |
| 85 | + break; |
| 86 | + } |
| 87 | + |
| 88 | + $events = elgg_get_entities($options); |
| 89 | +} else { |
| 90 | + $event = get_entity($event_id); |
| 91 | + if (!$event instanceof \Event) { |
| 92 | + return; |
| 93 | + } |
| 94 | + |
| 95 | + $events = [$event]; |
| 96 | +} |
84 | 97 |
|
85 | 98 | use Kigkonsult\Icalcreator\IcalInterface; |
86 | 99 | use Kigkonsult\Icalcreator\Vcalendar; |
|
0 commit comments