1
|
|
|
<?php |
2
|
|
|
/* |
3
|
|
|
* Exposes API endpoints for Event entities |
4
|
|
|
*/ |
5
|
|
|
|
6
|
|
|
elgg_ws_expose_function( |
7
|
|
|
"get.event", |
8
|
|
|
"get_event", |
9
|
|
|
array( |
10
|
|
|
"user" => array('type' => 'string', 'required' => true), |
11
|
|
|
"guid" => array('type' => 'int', 'required' => true), |
12
|
|
|
"lang" => array('type' => 'string', 'required' => false, 'default' => "en") |
13
|
|
|
), |
14
|
|
|
'Retrieves an event based on user id and event id', |
15
|
|
|
'POST', |
16
|
|
|
true, |
17
|
|
|
false |
18
|
|
|
); |
19
|
|
|
|
20
|
|
|
elgg_ws_expose_function( |
21
|
|
|
"event.add.calendar", |
22
|
|
|
"event_add_calendar", |
23
|
|
|
array( |
24
|
|
|
"user" => array('type' => 'string', 'required' => true), |
25
|
|
|
"guid" => array('type' => 'int', 'required' => true), |
26
|
|
|
"lang" => array('type' => 'string', 'required' => false, 'default' => "en") |
27
|
|
|
), |
28
|
|
|
'Retrieves an event based on user id and event id', |
29
|
|
|
'POST', |
30
|
|
|
true, |
31
|
|
|
false |
32
|
|
|
); |
33
|
|
|
|
34
|
|
|
elgg_ws_expose_function( |
35
|
|
|
"get.events", |
36
|
|
|
"get_events", |
37
|
|
|
array( |
38
|
|
|
"user" => array('type' => 'string', 'required' => true), |
39
|
|
|
"from" => array('type' => 'string', 'required' => false, 'default' => ""), |
40
|
|
|
"to" => array('type' => 'string', 'required' => false, 'default' => ""), |
41
|
|
|
"limit" => array('type' => 'int', 'required' => false, 'default' => 10), |
42
|
|
|
"lang" => array('type' => 'string', 'required' => false, 'default' => "en") |
43
|
|
|
), |
44
|
|
|
'Retrieves an event based on user id and event id', |
45
|
|
|
'POST', |
46
|
|
|
true, |
47
|
|
|
false |
48
|
|
|
); |
49
|
|
|
|
50
|
|
|
elgg_ws_expose_function( |
51
|
|
|
"get.eventsbyowner", |
52
|
|
|
"get_events_by_owner", |
53
|
|
|
array( |
54
|
|
|
"user" => array('type' => 'string', 'required' => true), |
55
|
|
|
"from" => array('type' => 'string', 'required' => false, 'default' => ""), |
56
|
|
|
"to" => array('type' => 'string', 'required' => false, 'default' => ""), |
57
|
|
|
"limit" => array('type' => 'int', 'required' => false, 'default' => 10), |
58
|
|
|
"lang" => array('type' => 'string', 'required' => false, 'default' => "en") |
59
|
|
|
), |
60
|
|
|
'Retrieves an event based on user id and event id', |
61
|
|
|
'POST', |
62
|
|
|
true, |
63
|
|
|
false |
64
|
|
|
); |
65
|
|
|
|
66
|
|
|
elgg_ws_expose_function( |
67
|
|
|
"get.eventsbycolleagues", |
68
|
|
|
"get_events_by_colleagues", |
69
|
|
|
array( |
70
|
|
|
"user" => array('type' => 'string', 'required' => true), |
71
|
|
|
"from" => array('type' => 'string', 'required' => false, 'default' => ""), |
72
|
|
|
"to" => array('type' => 'string', 'required' => false, 'default' => ""), |
73
|
|
|
"limit" => array('type' => 'int', 'required' => false, 'default' => 10), |
74
|
|
|
"offset" => array('type' => 'int', 'required' => false, 'default' => 0), |
75
|
|
|
"lang" => array('type' => 'string', 'required' => false, 'default' => "en") |
76
|
|
|
), |
77
|
|
|
'Retrieves an event based on user id and event id', |
78
|
|
|
'POST', |
79
|
|
|
true, |
80
|
|
|
false |
81
|
|
|
); |
82
|
|
|
|
83
|
|
|
elgg_ws_expose_function( |
84
|
|
|
"get.seecalendar", |
85
|
|
|
"get_see_calendar", |
86
|
|
|
array( |
87
|
|
|
"user" => array('type' => 'string', 'required' => true), |
88
|
|
|
"guid" => array('type' => 'int', 'required' => true), |
89
|
|
|
"lang" => array('type' => 'string', 'required' => false, 'default' => "en") |
90
|
|
|
), |
91
|
|
|
'Retrieves an event based on user id and event id', |
92
|
|
|
'POST', |
93
|
|
|
true, |
94
|
|
|
false |
95
|
|
|
); |
96
|
|
|
|
97
|
|
|
elgg_ws_expose_function( |
98
|
|
|
"save.event", |
99
|
|
|
"save_event", |
100
|
|
|
array( |
101
|
|
|
"user" => array('type' => 'string', 'required' => true), |
102
|
|
|
"title" => array('type' => 'string', 'required' => true), |
103
|
|
|
"excerpt" => array('type' =>'string', 'required' => false, 'default' => ''), |
104
|
|
|
"body" => array('type' =>'string', 'required' => true), |
105
|
|
|
"container_guid" => array('type' =>'string', 'required' => false, 'default' => ''), |
106
|
|
|
"blog_guid" => array('type' =>'string', 'required' => false, 'default' => ''), |
107
|
|
|
"comments" => array('type' =>'int', 'required' => false, 'default' => 1), |
108
|
|
|
"access" => array('type' =>'int', 'required' => false, 'default' => 1), |
109
|
|
|
"status" => array('type' =>'int', 'required' => false, 'default' => 0), |
110
|
|
|
"lang" => array('type' => 'string', 'required' => false, 'default' => "en") |
111
|
|
|
), |
112
|
|
|
'Posts/Saves an event post', |
113
|
|
|
'POST', |
114
|
|
|
true, |
115
|
|
|
false |
116
|
|
|
); |
117
|
|
|
function get_event($user, $guid, $lang) |
118
|
|
|
{ |
119
|
|
|
$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user)); |
120
|
|
|
if (!$user_entity) { |
121
|
|
|
return "User was not found. Please try a different GUID, username, or email address"; |
122
|
|
|
} |
123
|
|
|
if (!$user_entity instanceof ElggUser) { |
124
|
|
|
return "Invalid user. Please try a different GUID, username, or email address"; |
125
|
|
|
} |
126
|
|
|
|
127
|
|
|
if (!elgg_is_logged_in()) { |
128
|
|
|
login($user_entity); |
129
|
|
|
} |
130
|
|
|
|
131
|
|
|
$entity = get_entity($guid); |
132
|
|
|
if (!$entity) { |
133
|
|
|
return "Event was not found. Please try a different GUID"; |
134
|
|
|
} |
135
|
|
|
if (!$entity->type !== "event_calendar") { |
|
|
|
|
136
|
|
|
//return "Invalid event. Please try a different GUID"; |
137
|
|
|
} |
138
|
|
|
|
139
|
|
|
$events = elgg_list_entities(array( |
140
|
|
|
'type' => 'object', |
141
|
|
|
'subtype' => 'event_calendar', |
142
|
|
|
'guid' => $guid |
143
|
|
|
)); |
144
|
|
|
$event = json_decode($events)[0]; |
145
|
|
|
|
146
|
|
|
$likes = elgg_get_annotations(array( |
147
|
|
|
'guid' => $event->guid, |
148
|
|
|
'annotation_name' => 'likes' |
149
|
|
|
)); |
150
|
|
|
$event->likes = count($likes); |
151
|
|
|
|
152
|
|
|
$liked = elgg_get_annotations(array( |
153
|
|
|
'guid' => $event->guid, |
154
|
|
|
'annotation_owner_guid' => $user_entity->guid, |
155
|
|
|
'annotation_name' => 'likes' |
156
|
|
|
)); |
157
|
|
|
|
158
|
|
|
$event->liked = count($liked) > 0; |
159
|
|
|
|
160
|
|
|
$event->title = gc_explode_translation($event->title, $lang); |
161
|
|
|
$event->description = gc_explode_translation($event->description, $lang); |
162
|
|
|
|
163
|
|
|
$event->userDetails = get_user_block($event->owner_guid, $lang); |
164
|
|
|
$eventObj = get_entity($event->guid); |
165
|
|
|
$event->startDate = date("Y-m-d H:i:s", $eventObj->start_date); |
166
|
|
|
$event->endDate = date("Y-m-d H:i:s", $eventObj->end_date); |
167
|
|
|
$event->organizer = $eventObj->contact; |
168
|
|
|
$event->phone = $eventObj->contact_phone; |
169
|
|
|
$event->email = $eventObj->contact_email; |
170
|
|
|
$event->fee = $eventObj->fees; |
171
|
|
|
$event->eventLang = $eventObj->language; |
172
|
|
|
$event->location = $eventObj->venue; |
173
|
|
|
if ($eventObj->group_guid){ |
174
|
|
|
$group = get_entity($eventObj->group_guid); |
175
|
|
|
$event->group = gc_explode_translation($group->name, $lang); |
176
|
|
|
$event->groupGUID = $eventObj->group_guid; |
177
|
|
|
} |
178
|
|
|
|
179
|
|
|
|
180
|
|
|
return $event; |
181
|
|
|
} |
182
|
|
|
|
183
|
|
|
function get_events($user, $from, $to, $limit, $offset, $lang) |
184
|
|
|
{ |
185
|
|
|
$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user)); |
186
|
|
|
if (!$user_entity) { |
187
|
|
|
return "User was not found. Please try a different GUID, username, or email address"; |
188
|
|
|
} |
189
|
|
|
if (!$user_entity instanceof ElggUser) { |
190
|
|
|
return "Invalid user. Please try a different GUID, username, or email address"; |
191
|
|
|
} |
192
|
|
|
|
193
|
|
|
if (!elgg_is_logged_in()) { |
194
|
|
|
login($user_entity); |
195
|
|
|
} |
196
|
|
|
|
197
|
|
|
$params = array( |
198
|
|
|
'type' => 'object', |
199
|
|
|
'subtype' => 'event_calendar', |
200
|
|
|
'limit' => $limit, |
201
|
|
|
'offset' => $offset, |
202
|
|
|
'order_by_metadata' => array(array('name' => 'start_date', 'direction' => 'DESC', 'as' => 'integer')) |
203
|
|
|
); |
204
|
|
|
|
205
|
|
View Code Duplication |
if ($from) { |
206
|
|
|
$params['metadata_name_value_pairs'][] = array( |
207
|
|
|
'name' => 'start_date', |
208
|
|
|
'value' => strtotime($from), |
209
|
|
|
'operand' => '>=' |
210
|
|
|
); |
211
|
|
|
} |
212
|
|
View Code Duplication |
if ($to) { |
213
|
|
|
$params['metadata_name_value_pairs'][] = array( |
214
|
|
|
'name' => 'end_date', |
215
|
|
|
'value' => strtotime($to), |
216
|
|
|
'operand' => '<=' |
217
|
|
|
); |
218
|
|
|
} |
219
|
|
|
|
220
|
|
|
$all_events = elgg_list_entities_from_metadata($params); |
221
|
|
|
$events = json_decode($all_events); |
222
|
|
|
$now = time(); |
223
|
|
|
$one_day = 60*60*24; |
224
|
|
|
|
225
|
|
|
foreach ($events as $event) { |
226
|
|
|
|
227
|
|
|
$eventObj = get_entity($event->guid); |
228
|
|
|
if (($eventObj->start_date > $now-$one_day) || ($eventObj->end_date && ($eventObj->end_date > $now-$one_day))) { |
229
|
|
|
|
230
|
|
|
$options = array( |
231
|
|
|
'type' => 'user', |
232
|
|
|
'relationship' => 'personal_event', |
233
|
|
|
'relationship_guid' => $event->guid, |
234
|
|
|
'inverse_relationship' => true, |
235
|
|
|
'limit' => false, |
236
|
|
|
'count' => true, |
237
|
|
|
); |
238
|
|
|
|
239
|
|
|
$count = elgg_get_entities_from_relationship($options); |
240
|
|
|
if ($count == 1) { |
241
|
|
|
$event->in_calendar = elgg_echo('event_calendar:personal_event_calendars_link_one'); |
242
|
|
|
} else { |
243
|
|
|
$event->in_calendar = elgg_echo('event_calendar:personal_event_calendars_link', array($count)); |
244
|
|
|
} |
245
|
|
|
|
246
|
|
|
$likes = elgg_get_annotations(array( |
247
|
|
|
'guid' => $event->guid, |
248
|
|
|
'annotation_name' => 'likes' |
249
|
|
|
)); |
250
|
|
|
$event->likes = count($likes); |
251
|
|
|
|
252
|
|
|
$liked = elgg_get_annotations(array( |
253
|
|
|
'guid' => $event->guid, |
254
|
|
|
'annotation_owner_guid' => $user_entity->guid, |
255
|
|
|
'annotation_name' => 'likes' |
256
|
|
|
)); |
257
|
|
|
$event->liked = count($liked) > 0; |
258
|
|
|
|
259
|
|
|
$event->title = gc_explode_translation($event->title, $lang); |
260
|
|
|
$event->description = gc_explode_translation($event->description, $lang); |
261
|
|
|
$event->userDetails = get_user_block($event->owner_guid, $lang); |
262
|
|
|
$event->startDate = date("Y-m-d H:i:s", $eventObj->start_date); |
263
|
|
|
$event->endDate = date("Y-m-d H:i:s", $eventObj->end_date); |
264
|
|
|
|
265
|
|
|
$event->location = $eventObj->venue; |
266
|
|
|
|
267
|
|
|
if ($eventObj->group_guid){ |
268
|
|
|
$group = get_entity($eventObj->group_guid); |
269
|
|
|
$event->group = gc_explode_translation($group->name, $lang); |
270
|
|
|
$event->groupGUID = $eventObj->group_guid; |
271
|
|
|
} |
272
|
|
|
} |
273
|
|
|
} |
274
|
|
|
return $events; |
275
|
|
|
} |
276
|
|
|
|
277
|
|
|
function get_events_by_owner($user, $from, $to, $limit, $lang) |
278
|
|
|
{ |
279
|
|
|
$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user)); |
280
|
|
|
if (!$user_entity) { |
281
|
|
|
return "User was not found. Please try a different GUID, username, or email address"; |
282
|
|
|
} |
283
|
|
|
if (!$user_entity instanceof ElggUser) { |
284
|
|
|
return "Invalid user. Please try a different GUID, username, or email address"; |
285
|
|
|
} |
286
|
|
|
|
287
|
|
|
if (!elgg_is_logged_in()) { |
288
|
|
|
login($user_entity); |
289
|
|
|
} |
290
|
|
|
|
291
|
|
|
$params = array( |
292
|
|
|
'type' => 'object', |
293
|
|
|
'subtype' => 'event_calendar', |
294
|
|
|
'limit' => $limit, |
295
|
|
|
'offset' => $offset, |
|
|
|
|
296
|
|
|
'order_by_metadata' => array(array('name' => 'start_date', 'direction' => 'DESC', 'as' => 'integer')), |
297
|
|
|
'filter' => 'mine', |
298
|
|
|
'relationship' => 'personal_event', |
299
|
|
|
'relationship_guid' => $user_entity->entity, |
300
|
|
|
); |
301
|
|
|
|
302
|
|
View Code Duplication |
if ($from) { |
303
|
|
|
$params['metadata_name_value_pairs'][] = array( |
304
|
|
|
'name' => 'start_date', |
305
|
|
|
'value' => strtotime($from), |
306
|
|
|
'operand' => '>=' |
307
|
|
|
); |
308
|
|
|
} |
309
|
|
View Code Duplication |
if ($to) { |
310
|
|
|
$params['metadata_name_value_pairs'][] = array( |
311
|
|
|
'name' => 'end_date', |
312
|
|
|
'value' => strtotime($to), |
313
|
|
|
'operand' => '<=' |
314
|
|
|
); |
315
|
|
|
} |
316
|
|
|
|
317
|
|
|
$all_events = elgg_list_entities_from_relationship($params); |
318
|
|
|
|
319
|
|
|
$events = json_decode($all_events); |
320
|
|
|
$now = time(); |
321
|
|
|
$one_day = 60*60*24; |
322
|
|
View Code Duplication |
foreach ($events as $event) { |
323
|
|
|
|
324
|
|
|
$eventObj = get_entity($event->guid); |
325
|
|
|
if (($eventObj->start_date > $now-$one_day) || ($eventObj->end_date && ($eventObj->end_date > $now-$one_day))) { |
326
|
|
|
|
327
|
|
|
$likes = elgg_get_annotations(array( |
328
|
|
|
'guid' => $event->guid, |
329
|
|
|
'annotation_name' => 'likes' |
330
|
|
|
)); |
331
|
|
|
$event->likes = count($likes); |
332
|
|
|
|
333
|
|
|
$liked = elgg_get_annotations(array( |
334
|
|
|
'guid' => $event->guid, |
335
|
|
|
'annotation_owner_guid' => $user_entity->guid, |
336
|
|
|
'annotation_name' => 'likes' |
337
|
|
|
)); |
338
|
|
|
$event->liked = count($liked) > 0; |
339
|
|
|
|
340
|
|
|
$event->title = gc_explode_translation($event->title, $lang); |
341
|
|
|
$event->description = gc_explode_translation($event->description, $lang); |
342
|
|
|
|
343
|
|
|
$event->userDetails = get_user_block($event->owner_guid, $lang); |
344
|
|
|
|
345
|
|
|
$eventObj = get_entity($event->guid); |
346
|
|
|
$event->startDate = date("Y-m-d H:i:s", $eventObj->start_date); |
347
|
|
|
$event->endDate = date("Y-m-d H:i:s", $eventObj->end_date); |
348
|
|
|
$event->location = $eventObj->venue; |
349
|
|
|
|
350
|
|
|
if ($eventObj->group_guid){ |
351
|
|
|
$group = get_entity($eventObj->group_guid); |
352
|
|
|
$event->group = gc_explode_translation($group->name, $lang); |
353
|
|
|
$event->groupGUID = $eventObj->group_guid; |
354
|
|
|
} |
355
|
|
|
} |
356
|
|
|
} |
357
|
|
|
return $events; |
358
|
|
|
} |
359
|
|
|
|
360
|
|
|
function get_events_by_colleagues($user, $from, $to, $limit, $lang) |
361
|
|
|
{ |
362
|
|
|
$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user)); |
363
|
|
|
if (!$user_entity) { |
364
|
|
|
return "User was not found. Please try a different GUID, username, or email address"; |
365
|
|
|
} |
366
|
|
|
if (!$user_entity instanceof ElggUser) { |
367
|
|
|
return "Invalid user. Please try a different GUID, username, or email address"; |
368
|
|
|
} |
369
|
|
|
|
370
|
|
|
if (!elgg_is_logged_in()) { |
371
|
|
|
login($user_entity); |
372
|
|
|
} |
373
|
|
|
$friends = $user_entity->getFriends(array('limit' => false)); |
374
|
|
|
|
375
|
|
|
if ($friends) { |
376
|
|
|
$friend_guids = array(); |
377
|
|
|
|
378
|
|
|
foreach($friends as $friend) { |
379
|
|
|
$friend_guids[] = $friend->getGUID(); |
380
|
|
|
} |
381
|
|
|
$friend_list = implode(",", $friend_guids); |
382
|
|
|
$db_prefix = elgg_get_config('dbprefix'); |
383
|
|
|
$params = array( |
384
|
|
|
'type' => 'object', |
385
|
|
|
'subtype' => 'event_calendar', |
386
|
|
|
'limit' => $limit, |
387
|
|
|
'order_by_metadata' => array(array('name' => 'start_date', 'direction' => 'DESC', 'as' => 'integer')), |
388
|
|
|
'filter' => 'friends', |
389
|
|
|
'relationship' => 'personal_event', |
390
|
|
|
'relationship_guid' => $user_entity->entity, |
391
|
|
|
'joins' => array("JOIN {$db_prefix}entity_relationships r ON (r.guid_two = e.guid)"), |
392
|
|
|
'wheres' => array("r.relationship = 'personal_event'","r.guid_one IN ($friend_list)"), |
393
|
|
|
); |
394
|
|
|
|
395
|
|
View Code Duplication |
if ($from) { |
396
|
|
|
$params['metadata_name_value_pairs'][] = array( |
397
|
|
|
'name' => 'start_date', |
398
|
|
|
'value' => strtotime($from), |
399
|
|
|
'operand' => '>=' |
400
|
|
|
); |
401
|
|
|
} |
402
|
|
View Code Duplication |
if ($to) { |
403
|
|
|
$params['metadata_name_value_pairs'][] = array( |
404
|
|
|
'name' => 'end_date', |
405
|
|
|
'value' => strtotime($to), |
406
|
|
|
'operand' => '<=' |
407
|
|
|
); |
408
|
|
|
} |
409
|
|
|
|
410
|
|
|
$all_events = elgg_list_entities_from_metadata($params); |
411
|
|
|
$events = json_decode($all_events); |
412
|
|
|
$now = time(); |
413
|
|
|
$one_day = 60*60*24; |
414
|
|
View Code Duplication |
foreach ($events as $event) { |
415
|
|
|
|
416
|
|
|
$eventObj = get_entity($event->guid); |
417
|
|
|
if (($eventObj->start_date > $now-$one_day) || ($eventObj->end_date && ($eventObj->end_date > $now-$one_day))) { |
418
|
|
|
|
419
|
|
|
$likes = elgg_get_annotations(array( |
420
|
|
|
'guid' => $event->guid, |
421
|
|
|
'annotation_name' => 'likes' |
422
|
|
|
)); |
423
|
|
|
$event->likes = count($likes); |
424
|
|
|
|
425
|
|
|
$liked = elgg_get_annotations(array( |
426
|
|
|
'guid' => $event->guid, |
427
|
|
|
'annotation_owner_guid' => $user_entity->guid, |
428
|
|
|
'annotation_name' => 'likes' |
429
|
|
|
)); |
430
|
|
|
$event->liked = count($liked) > 0; |
431
|
|
|
|
432
|
|
|
$event->title = gc_explode_translation($event->title, $lang); |
433
|
|
|
$event->description = gc_explode_translation($event->description, $lang); |
434
|
|
|
|
435
|
|
|
$event->userDetails = get_user_block($event->owner_guid, $lang); |
436
|
|
|
|
437
|
|
|
$eventObj = get_entity($event->guid); |
438
|
|
|
$event->startDate = date("Y-m-d H:i:s", $eventObj->start_date); |
439
|
|
|
$event->endDate = date("Y-m-d H:i:s", $eventObj->end_date); |
440
|
|
|
$event->location = $eventObj->venue; |
441
|
|
|
|
442
|
|
|
if ($eventObj->group_guid){ |
443
|
|
|
$group = get_entity($eventObj->group_guid); |
444
|
|
|
$event->group = gc_explode_translation($group->name, $lang); |
445
|
|
|
$event->groupGUID = $eventObj->group_guid; |
446
|
|
|
} |
447
|
|
|
} |
448
|
|
|
} |
449
|
|
|
} |
450
|
|
|
return $events; |
|
|
|
|
451
|
|
|
} |
452
|
|
|
|
453
|
|
|
function event_add_calendar($user, $guid, $lang) |
454
|
|
|
{ |
455
|
|
|
$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user)); |
456
|
|
|
if (!$user_entity) { |
457
|
|
|
return "User was not found. Please try a different GUID, username, or email address"; |
458
|
|
|
} |
459
|
|
|
if (!$user_entity instanceof ElggUser) { |
460
|
|
|
return "Invalid user. Please try a different GUID, username, or email address"; |
461
|
|
|
} |
462
|
|
|
|
463
|
|
|
if (!elgg_is_logged_in()) { |
464
|
|
|
login($user_entity); |
465
|
|
|
} |
466
|
|
|
|
467
|
|
|
elgg_load_library('elgg:event_calendar'); |
468
|
|
|
|
469
|
|
|
$event_guid = $guid; |
470
|
|
|
$event = get_entity($event_guid); |
471
|
|
|
if (elgg_instanceof($event, 'object', 'event_calendar')) { |
472
|
|
|
|
473
|
|
|
if (!event_calendar_has_personal_event($event_guid,$user_entity->guid)) { |
474
|
|
|
if (event_calendar_add_personal_event($event_guid,$user_entity->guid)) { |
475
|
|
|
return(elgg_echo('event_calendar:add_to_my_calendar_response')); |
476
|
|
|
} else { |
477
|
|
|
return(elgg_echo('event_calendar:add_to_my_calendar_error')); |
478
|
|
|
} |
479
|
|
|
}else{ |
480
|
|
|
return elgg_echo('event_calendar:already_in'); |
481
|
|
|
|
482
|
|
|
} |
483
|
|
|
} |
484
|
|
|
} |
485
|
|
|
|
486
|
|
|
function get_see_calendar($user, $guid, $lang) |
487
|
|
|
{ |
488
|
|
|
$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user)); |
489
|
|
|
if (!$user_entity) { |
490
|
|
|
return "User was not found. Please try a different GUID, username, or email address"; |
491
|
|
|
} |
492
|
|
|
if (!$user_entity instanceof ElggUser) { |
493
|
|
|
return "Invalid user. Please try a different GUID, username, or email address"; |
494
|
|
|
} |
495
|
|
|
|
496
|
|
|
if (!elgg_is_logged_in()) { |
497
|
|
|
login($user_entity); |
498
|
|
|
} |
499
|
|
|
|
500
|
|
|
elgg_load_library('elgg:event_calendar'); |
501
|
|
|
|
502
|
|
|
$limit = 12; |
503
|
|
|
$offset = get_input('offset', 0); |
504
|
|
|
$users = event_calendar_get_users_for_event($guid, $limit, $offset, false); |
505
|
|
|
|
506
|
|
|
$data = array(); |
507
|
|
|
foreach ($users as $user) { |
508
|
|
|
$user_obj = get_user($user->guid); |
509
|
|
|
$user_data = get_user_block($user->guid, $lang); |
510
|
|
|
$data[] = $user_data; |
511
|
|
|
} |
512
|
|
|
|
513
|
|
|
return $data; |
514
|
|
|
|
515
|
|
|
} |
516
|
|
|
|
517
|
|
|
|
518
|
|
|
function save_event($user, $title, $excerpt, $body, $container_guid, $event_guid, $comments, $access, $status, $lang) |
519
|
|
|
{ |
520
|
|
|
$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user)); |
521
|
|
|
if (!$user_entity) { |
522
|
|
|
return "User was not found. Please try a different GUID, username, or email address"; |
523
|
|
|
} |
524
|
|
|
if (!$user_entity instanceof ElggUser) { |
525
|
|
|
return "Invalid user. Please try a different GUID, username, or email address"; |
526
|
|
|
} |
527
|
|
|
if (!elgg_is_logged_in()) { |
528
|
|
|
login($user_entity); |
529
|
|
|
} |
530
|
|
|
$error = FALSE; |
531
|
|
|
//check required fields being not empty |
532
|
|
|
$titles = json_decode($title); |
533
|
|
|
$bodies = json_decode($body); |
534
|
|
|
$excerpts = json_decode($excerpt); |
535
|
|
|
//Check Required |
536
|
|
|
if (!$titles->en && !$titles->fr) { return elgg_echo("blog:error:missing:title"); } |
537
|
|
|
if (!$bodies->en && !$bodies->fr) { return elgg_echo("blog:error:missing:description"); } |
538
|
|
|
if (!($titles->en && $bodies->en) && !($titles->fr && $bodies->fr)) { return "require-same-lang"; } |
539
|
|
|
//Default any Missing or faulty |
540
|
|
|
if (!$titles->en) { $titles->en = ''; } |
541
|
|
|
if (!$titles->fr) { $titles->fr = ''; } |
542
|
|
|
if (!$bodies->en) { $bodies->en = ''; } |
543
|
|
|
if (!$bodies->fr) { $bodies->fr = ''; } |
544
|
|
|
if (!$excerpts->en) { $excerpts->en = ''; } |
545
|
|
|
if (!$excerpts->fr) { $excerpts->fr = ''; } |
546
|
|
|
if ($comments != 0 && $comments != 1) { $comments = 1; } |
547
|
|
View Code Duplication |
if ($access != 0 && $access != 1 && $access != -2 && $access !=2 ) { $access = 1; } |
548
|
|
|
if ($status != 0 && $status != 1) { $status = 0; } |
549
|
|
|
|
550
|
|
|
// if there is a container_guid, .: group, and access is set to group only, set access to proper group only |
551
|
|
View Code Duplication |
if (!empty($container_guid) && $access == 2){ |
552
|
|
|
$container = get_entity($container_guid); |
553
|
|
|
//validate container and ability to write to it |
554
|
|
|
if (!$container || !$container->canWriteToContainer(0, 'object', 'blog')) { |
555
|
|
|
return elgg_echo('blog:error:cannot_write_to_container'); |
556
|
|
|
} else { |
557
|
|
|
$access = $container->group_acl; |
558
|
|
|
} |
559
|
|
|
//If no group container, use user guid. |
560
|
|
|
} else if ($container_guid=='') { $container_guid = $user_entity->guid; } |
561
|
|
|
|
562
|
|
|
//Set int variables to correct |
563
|
|
|
if ($status == 1) { $status = 'published'; } else { $status = 'draft'; } |
564
|
|
|
if ($comments == 1) { $comments = 'On'; } else { $comments = 'Off'; } |
565
|
|
|
if ($status == 'draft') { $access = 0; } |
566
|
|
|
$titles->en = htmlspecialchars($titles->en, ENT_QUOTES, 'UTF-8'); |
567
|
|
|
$titles->fr = htmlspecialchars($titles->fr, ENT_QUOTES, 'UTF-8'); |
568
|
|
|
$excerpts->en = elgg_get_excerpt($excerpts->en); |
569
|
|
|
$excerpts->fr = elgg_get_excerpt($excerpts->fr); |
570
|
|
|
|
571
|
|
|
$values = array( |
572
|
|
|
'title' => JSON_encode($titles), |
573
|
|
|
'title2' => '', |
574
|
|
|
'description' => JSON_encode($bodies), |
575
|
|
|
'description2' => '', |
576
|
|
|
'status' => $status, |
577
|
|
|
'access_id' => $access, |
578
|
|
|
'comments_on' => $comments, |
579
|
|
|
'excerpt' => JSON_encode($excerpts), |
580
|
|
|
'excerpt2' => '', |
581
|
|
|
'tags' => '', |
582
|
|
|
'publication_date' => '', |
583
|
|
|
'expiration_date' => '', |
584
|
|
|
'show_owner' => 'no' |
585
|
|
|
); |
586
|
|
|
|
587
|
|
|
$event = new stdClass(); |
588
|
|
|
$revision_text = ''; |
589
|
|
View Code Duplication |
if ($event_guid){ |
590
|
|
|
$entity = get_entity($event_guid); |
591
|
|
|
if (elgg_instanceof($entity, 'object', 'event') && $entity->canEdit()) { |
592
|
|
|
$event = $entity; |
593
|
|
|
} else { |
594
|
|
|
return elgg_echo('blog:error:post_not_found'); |
595
|
|
|
} |
596
|
|
|
$revision_text = $event->description; |
597
|
|
|
$new_post = $event->new_post; //what? |
598
|
|
|
} else { |
599
|
|
|
//Create blog |
600
|
|
|
$event = new ElggEvent(); |
601
|
|
|
$event->subtype = 'event'; |
602
|
|
|
$event->container_guid = $container_guid; |
603
|
|
|
$new_post = TRUE; |
604
|
|
|
} |
605
|
|
|
|
606
|
|
|
$old_status = $event->status; |
607
|
|
|
|
608
|
|
|
// assign values to the entity, stopping on error. |
609
|
|
View Code Duplication |
if (!$error) { |
610
|
|
|
foreach ($values as $name => $value) { |
611
|
|
|
if (($name != 'title2') && ($name != 'description2') && ($name != 'excerpt2')){ // remove input 2 in metastring table |
612
|
|
|
$event->$name = $value; |
613
|
|
|
} |
614
|
|
|
} |
615
|
|
|
} |
616
|
|
|
|
617
|
|
|
if (!$error){ |
618
|
|
View Code Duplication |
if ($event->save()){ |
619
|
|
|
|
620
|
|
|
if (!$event_guid && $event->web_conference) { |
621
|
|
|
if (!event_calendar_create_bbb_conf($event)) { |
622
|
|
|
register_error(elgg_echo('event_calendar:conference_create_error')); |
623
|
|
|
} |
624
|
|
|
} |
625
|
|
|
if ($group_guid && (elgg_get_plugin_setting('autogroup', 'event_calendar') == 'yes')) { |
626
|
|
|
event_calendar_add_personal_events_from_group($event->guid, $group_guid); |
|
|
|
|
627
|
|
|
} |
628
|
|
|
} |
629
|
|
|
return $event; |
630
|
|
|
|
631
|
|
|
} else { |
632
|
|
|
return elgg_echo('blog:error:cannot_save'); |
633
|
|
|
} |
634
|
|
|
} |
635
|
|
|
|
This check looks for the bodies of
if
statements that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.These
if
bodies can be removed. If you have an empty if but statements in theelse
branch, consider inverting the condition.could be turned into
This is much more concise to read.