Skip to content

Commit da5f013

Browse files
committed
fix: Used export action instead of ical export view
1 parent 7a0cbd6 commit da5f013

File tree

4 files changed

+87
-111
lines changed

4 files changed

+87
-111
lines changed

actions/event_manager/export/ical.php

Lines changed: 85 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,99 @@
11
<?php
22

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 = [];
55

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', '');
127

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'));
2111

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+
}
2418

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+
}
2727

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+
]
5049
];
51-
}
5250

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+
}
6058

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+
}
8166

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+
}
8497

8598
use Kigkonsult\Icalcreator\IcalInterface;
8699
use Kigkonsult\Icalcreator\Vcalendar;

classes/ColdTrick/EventManager/Menus/Entity.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public static function registerMailAttendees(\Elgg\Event $event): ?MenuItems {
3535
'text' => elgg_echo('event_manager:menu:mail'),
3636
'href' => elgg_generate_entity_url($entity, 'mail'),
3737
]);
38-
38+
3939
return $result;
4040
}
4141

@@ -173,10 +173,7 @@ public static function registerICalExport(\Elgg\Event $event): ?MenuItems {
173173
'name' => 'ical-export',
174174
'icon' => 'calendar-plus',
175175
'text' => elgg_echo('event_manager:ical_direct:export'),
176-
'href' => elgg_generate_url('default:object:event:export', [
177-
'guid' => $entity->guid,
178-
'view' => 'ical'
179-
]),
176+
'href' => elgg_generate_action_url('event_manager/export/ical', ['event_id' => $entity->guid]),
180177
'priority' => 300,
181178
]);
182179

elgg-plugin.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,6 @@
171171
'path' => '/event/unsubscribe/request/{guid}',
172172
'resource' => 'event/unsubscribe/request',
173173
],
174-
'default:object:event:export' => [
175-
'path' => '/event/export/{guid}',
176-
'resource' => 'event/export',
177-
],
178174
'default:object:event:register' => [
179175
'path' => '/event/register/{guid}/{relation?}',
180176
'resource' => 'event/register',

views/ical/resources/event/export.php

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)