Passed
Push — mobile-API-for-each ( 641f4e...f7eabe )
by
unknown
22:19
created

event.php ➔ get_event()   B

Complexity

Conditions 9
Paths 48

Size

Total Lines 69

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 9
nc 48
nop 3
dl 0
loc 69
rs 7.1208
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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
		"offset" => array('type' => 'int', 'required' => false, 'default' => 0),
43
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
44
	),
45
	'Retrieves an event based on user id and event id',
46
	'POST',
47
	true,
48
	false
49
);
50
51
elgg_ws_expose_function(
52
	"get.eventsbyowner",
53
	"get_events_by_owner",
54
	array(
55
		"user" => array('type' => 'string', 'required' => true),
56
		"target" => array('type' => 'string', 'required' => false, 'default' => ""),
57
		"from" => array('type' => 'string', 'required' => false, 'default' => ""),
58
		"to" => array('type' => 'string', 'required' => false, 'default' => ""),
59
		"limit" => array('type' => 'int', 'required' => false, 'default' => 10),
60
		"offset" => array('type' => 'int', 'required' => false, 'default' => 0),
61
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
62
	),
63
	'Retrieves an event based on user id and event id',
64
	'POST',
65
	true,
66
	false
67
);
68
69
elgg_ws_expose_function(
70
	"get.eventsbycolleagues",
71
	"get_events_by_colleagues",
72
	array(
73
		"user" => array('type' => 'string', 'required' => true),
74
		"from" => array('type' => 'string', 'required' => false, 'default' => ""),
75
		"to" => array('type' => 'string', 'required' => false, 'default' => ""),
76
		"limit" => array('type' => 'int', 'required' => false, 'default' => 10),
77
		"offset" => array('type' => 'int', 'required' => false, 'default' => 0),
78
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
79
	),
80
	'Retrieves an event based on user id and event id',
81
	'POST',
82
	true,
83
	false
84
);
85
86
elgg_ws_expose_function(
87
	"get.seecalendar",
88
	"get_see_calendar",
89
	array(
90
		"user" => array('type' => 'string', 'required' => true),
91
		"guid" => array('type' => 'int', 'required' => true),
92
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
93
	),
94
	'Retrieves an event based on user id and event id',
95
	'POST',
96
	true,
97
	false
98
);
99
100
elgg_ws_expose_function(
101
	"save.event",
102
	"save_event",
103
	array(
104
		"user" => array('type' => 'string', 'required' => true),
105
		"title" => array('type' => 'string', 'required' => true),
106
		"body" => array('type' =>'string', 'required' => true),
107
		"startdate" => array('type' =>'string', 'required' => true),
108
		"starttime" => array('type' =>'string', 'required' => false,'default' => ''),
109
		"enddate" => array('type' =>'string', 'required' => true),
110
		"endtime" => array('type' =>'string', 'required' => false,'default' => ''),
111
		"venue" => array('type' =>'string', 'required' => true),
112
		"room" => array('type' =>'string', 'required' => false,'default' => ''),
113
		"allday" => array('type' =>'string', 'required' => false,'default' => ''),
114
		"web_conference" => array('type' =>'string', 'required' => false,'default' => ''),
115
		"url" => array('type' =>'string', 'required' => false,'default' => ''),
116
		"additionnal" => array('type' =>'string', 'required' => false,'default' => ''),
117
		"fees" => array('type' =>'string', 'required' => false,'default' => ''),
118
		"contact_checkbox" => array('type' =>'string', 'required' => false,'default' => ''),
119
		"contact_text" => array('type' =>'string', 'required' => false,'default' => ''),
120
		"contact_email_text" => array('type' =>'string', 'required' => false,'default' => ''),
121
		"contact_phone_text" => array('type' =>'string', 'required' => false,'default' => ''),
122
		'picker_language'=> array('type' =>'string', 'required' => false,'default' => ''),
123
		"container_guid" => array('type' =>'string', 'required' => false, 'default' => ''),
124
		"event_guid" => array('type' =>'string', 'required' => false, 'default' => ''),
125
		"comments" => array('type' =>'int', 'required' => false, 'default' => 1),
126
		"access" => array('type' =>'int', 'required' => false, 'default' => 1),
127
		"status" => array('type' =>'int', 'required' => false, 'default' => 0),
128
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
129
	),
130
	'Posts/Saves an event post',
131
	'POST',
132
	true,
133
	false
134
   );
135
function get_event($user, $guid, $lang)
136
{
137
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
138
	if (!$user_entity) {
139
		return "User was not found. Please try a different GUID, username, or email address";
140
	}
141
	if (!$user_entity instanceof ElggUser) {
142
		return "Invalid user. Please try a different GUID, username, or email address";
143
	}
144
145
	if (!elgg_is_logged_in()) {
146
		login($user_entity);
147
	}
148
149
	$entity = get_entity($guid);
150
	if (!$entity) {
151
		return "Event was not found. Please try a different GUID";
152
	}
153
	if (!$entity->type !== "event_calendar") {
0 ignored issues
show
Unused Code introduced by
This if statement is empty and can be removed.

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 the else branch, consider inverting the condition.

if (rand(1, 6) > 3) {
//print "Check failed";
} else {
    print "Check succeeded";
}

could be turned into

if (rand(1, 6) <= 3) {
    print "Check succeeded";
}

This is much more concise to read.

Loading history...
154
		//return "Invalid event. Please try a different GUID";
155
	}
156
157
	$events = elgg_list_entities(array(
158
		'type' => 'object',
159
		'subtype' => 'event_calendar',
160
		'guid' => $guid
161
	));
162
	$event = json_decode($events)[0];
163
164
	$likes = elgg_get_annotations(array(
165
		'guid' => $event->guid,
166
		'annotation_name' => 'likes'
167
	));
168
	$event->likes = count($likes);
169
170
	$liked = elgg_get_annotations(array(
171
		'guid' => $event->guid,
172
		'annotation_owner_guid' => $user_entity->guid,
173
		'annotation_name' => 'likes'
174
	));
175
176
	$event->liked = count($liked) > 0;
177
178
	$event->title = gc_explode_translation($event->title, $lang);
179
	$event->description = gc_explode_translation($event->description, $lang);
180
181
	$event->userDetails = get_user_block($event->owner_guid, $lang);
182
	$eventObj = get_entity($event->guid);
183
	$event->startDate = date("Y-m-d H:i:s", $eventObj->start_date);
184
	$event->endDate = date("Y-m-d H:i:s", $eventObj->end_date);
185
	$event->organizer = $eventObj->contact;
186
	$event->phone = $eventObj->contact_phone;
187
	$event->email = $eventObj->contact_email;
188
	$event->fee = $eventObj->fees;
189
	$event->eventLang = $eventObj->language;
190
	$event->location = $eventObj->venue;
191
	if ($eventObj->group_guid){
192
		$group = get_entity($eventObj->group_guid);
193
		$event->group = gc_explode_translation($group->name, $lang);
194
		$event->groupGUID = $eventObj->group_guid;
195
	}
196
	$event->comment_count = elgg_get_entities(array(
197
		'container_guid' => $guid,
198
		'count' => true,
199
		'distinct' => false,
200
	));
201
202
	return $event;
203
}
204
205
function foreach_events($params, $from, $to, $user_entity, $lang)
206
{
207
	$now = time();
208
	if ($from && ($now<strtotime($from))) {
209
		$params['metadata_name_value_pairs'][] = array(
210
			'name' => 'end_date',
211
			'value' => strtotime($from),
212
			'operand' => '>='
213
		);
214
	} else {
215
		$params['metadata_name_value_pairs'][] = array(
216
			'name' => 'end_date',
217
			'value' => $now,
218
			'operand' => '>='
219
		);
220
	}
221
	if ($to) {
222
		$params['metadata_name_value_pairs'][] = array(
223
			'name' => 'end_date',
224
			'value' => strtotime($to),
225
			'operand' => '<='
226
		);
227
	}
228
229
	$all_events = elgg_list_entities_from_metadata($params);
230
	$events = json_decode($all_events);
231
	$one_day = 60*60*24;
232
233
	foreach ($events as $event) {
234
235
		$eventObj = get_entity($event->guid);
236
		if (($eventObj->start_date > $now-$one_day) || ($eventObj->end_date && ($eventObj->end_date > $now-$one_day))) {
237
238
			$options = array(
239
				'type' => 'user',
240
				'relationship' => 'personal_event',
241
				'relationship_guid' => $event->guid,
242
				'inverse_relationship' => true,
243
				'limit' => false,
244
				'count' => true,
245
			);
246
247
			$count = elgg_get_entities_from_relationship($options);
248
			if ($count == 1) {
249
				$event->in_calendar = elgg_echo('event_calendar:personal_event_calendars_link_one');
250
			} else {
251
				$event->in_calendar = elgg_echo('event_calendar:personal_event_calendars_link', array($count));
252
			}
253
254
			$likes = elgg_get_annotations(array(
255
				'guid' => $event->guid,
256
				'annotation_name' => 'likes'
257
			));
258
			$event->likes = count($likes);
259
260
			$liked = elgg_get_annotations(array(
261
				'guid' => $event->guid,
262
				'annotation_owner_guid' => $user_entity->guid,
263
				'annotation_name' => 'likes'
264
			));
265
			$event->liked = count($liked) > 0;
266
267
			$event->title = gc_explode_translation($event->title, $lang);
268
			$event->description = gc_explode_translation($event->description, $lang);
269
			$event->userDetails = get_user_block($event->owner_guid, $lang);
270
			$event->startDate = date("Y-m-d H:i:s", $eventObj->start_date);
271
			$event->endDate = date("Y-m-d H:i:s", $eventObj->end_date);
272
273
			$event->location = $eventObj->venue;
274
275
			if ($eventObj->group_guid){
276
				$group = get_entity($eventObj->group_guid);
277
				$event->group = gc_explode_translation($group->name, $lang);
278
				$event->groupGUID = $eventObj->group_guid;
279
			}
280
		}
281
	}
282
	return $events
283
}
0 ignored issues
show
Bug introduced by
This code did not parse for me. Apparently, there is an error somewhere around this line:

Syntax error, unexpected '}', expecting ';'
Loading history...
284
285
function get_events($user, $from, $to, $limit, $offset, $lang)
286
{
287
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
288
	if (!$user_entity) {
289
		return "User was not found. Please try a different GUID, username, or email address";
290
	}
291
	if (!$user_entity instanceof ElggUser) {
292
		return "Invalid user. Please try a different GUID, username, or email address";
293
	}
294
295
	if (!elgg_is_logged_in()) {
296
		login($user_entity);
297
	}
298
299
	$params = array(
300
		'type' => 'object',
301
		'subtype' => 'event_calendar',
302
		'limit' => $limit,
303
		'offset' => $offset,
304
		'order_by_metadata' => array(array('name' => 'start_date', 'direction' => 'ASC', 'as' => 'integer'))
305
	);
306
307
	$events = foreach_events($params, $from, $to, $user_entity, $lang);
308
309
	return $events;
310
}
311
312
function get_events_by_owner($user, $target, $from, $to, $limit, $offset, $lang)
313
{
314
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
315
	if (!$user_entity) {
316
		return "User was not found. Please try a different GUID, username, or email address";
317
	}
318
	if (!$user_entity instanceof ElggUser) {
319
		return "Invalid user. Please try a different GUID, username, or email address";
320
	}
321
	if (!elgg_is_logged_in()) {
322
		login($user_entity);
323
	}
324
	$target_entity = $user_entity;
325
	if ($target != ''){
326
		$target_entity = get_entity($target);
327
	}
328
	if ((!$target_entity instanceof ElggUser) && (!$target_entity instanceof ElggGroup)) {
329
		return "Invalid target. Please try a different GUID.";
330
	}
331
332
	$params = array(
333
		'type' => 'object',
334
		'subtype' => 'event_calendar',
335
		'limit' => $limit,
336
		'offset' => $offset,
337
		'order_by_metadata' => array(array('name' => 'start_date', 'direction' => 'ASC', 'as' => 'integer')),
338
		'container_guid' => $target_entity->guid,
339
	);
340
341
	$events = foreach_events($params, $from, $to, $user_entity, $lang);
342
343
	return $events;
344
}
345
346
function get_events_by_colleagues($user, $from, $to, $limit, $offset, $lang)
347
{
348
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
349
	if (!$user_entity) {
350
		return "User was not found. Please try a different GUID, username, or email address";
351
	}
352
	if (!$user_entity instanceof ElggUser) {
353
		return "Invalid user. Please try a different GUID, username, or email address";
354
	}
355
356
	if (!elgg_is_logged_in()) {
357
		login($user_entity);
358
	}
359
	$friends = $user_entity->getFriends(array('limit' => false));
360
361
	if ($friends) {
362
		$friend_guids = array();
363
364
		foreach($friends as $friend) {
365
			$friend_guids[] = $friend->getGUID();
366
		}
367
		$friend_list = implode(",", $friend_guids);
368
		$db_prefix = elgg_get_config('dbprefix');
369
		$params = array(
370
			'type' => 'object',
371
			'subtype' => 'event_calendar',
372
			'limit' => $limit,
373
			'offset' => $offset,
374
			'order_by_metadata' => array(array('name' => 'start_date', 'direction' => 'ASC', 'as' => 'integer')),
375
			'filter' => 'friends',
376
			'relationship' => 'personal_event',
377
			'relationship_guid' => $user_entity->entity,
378
			'joins' => array("JOIN {$db_prefix}entity_relationships r ON (r.guid_two = e.guid)"),
379
			'wheres' => array("r.relationship = 'personal_event'","r.guid_one IN ($friend_list)"),
380
		);
381
382
		$events = foreach_events($params, $from, $to, $user_entity, $lang);
383
	}
384
	return $events;
385
}
386
387
function event_add_calendar($user, $guid, $lang)
388
{
389
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
390
	if (!$user_entity) {
391
		return "User was not found. Please try a different GUID, username, or email address";
392
	}
393
	if (!$user_entity instanceof ElggUser) {
394
		return "Invalid user. Please try a different GUID, username, or email address";
395
	}
396
397
	if (!elgg_is_logged_in()) {
398
		login($user_entity);
399
	}
400
401
	elgg_load_library('elgg:event_calendar');
402
403
	$event_guid = $guid;
404
	$event = get_entity($event_guid);
405
	if (elgg_instanceof($event, 'object', 'event_calendar')) {
406
407
		if (!event_calendar_has_personal_event($event_guid,$user_entity->guid)) {
408
			if (event_calendar_add_personal_event($event_guid,$user_entity->guid)) {
409
				return(elgg_echo('event_calendar:add_to_my_calendar_response'));
410
			} else {
411
				return(elgg_echo('event_calendar:add_to_my_calendar_error'));
412
			}
413
		}else{
414
			return elgg_echo('event_calendar:already_in');
415
416
		}
417
	}
418
}
419
420
function get_see_calendar($user, $guid, $lang)
421
{
422
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
423
	if (!$user_entity) {
424
		return "User was not found. Please try a different GUID, username, or email address";
425
	}
426
	if (!$user_entity instanceof ElggUser) {
427
		return "Invalid user. Please try a different GUID, username, or email address";
428
	}
429
430
	if (!elgg_is_logged_in()) {
431
		login($user_entity);
432
	}
433
434
	elgg_load_library('elgg:event_calendar');
435
436
	$limit = 12;
437
	$offset = get_input('offset', 0);
438
	$users = event_calendar_get_users_for_event($guid, $limit, $offset, false);
439
440
	$data = array();
441
	foreach ($users as $user) {
442
		$user_obj = get_user($user->guid);
443
		$user_data = get_user_block($user->guid, $lang);
444
		$data[] = $user_data;
445
	}
446
447
	return $data;
448
449
}
450
451
452
function save_event($user, $title, $body, $startdate, $starttime, $enddate, $endtime,$venue,$room,$allday,$web_conference,$url, $additionnal, $fees,$contact_checkbox,$contact_text,$contact_email_text,$contact_phone_text,$picker_language, $container_guid, $event_guid, $comments, $access, $status, $lang)
453
{
454
 $user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
455
	 if (!$user_entity) {
456
		 return "User was not found. Please try a different GUID, username, or email address";
457
	 }
458
	 if (!$user_entity instanceof ElggUser) {
459
		 return "Invalid user. Please try a different GUID, username, or email address";
460
	 }
461
	 if (!elgg_is_logged_in()) {
462
		 login($user_entity);
463
	 }
464
465
	$startdate = new DateTime($startdate);
466
	$enddate = new DateTime($enddate);
467
468
	 $event_calendar_repeating_events = elgg_get_plugin_setting('repeating_events', 'event_calendar');
469
	 // temporary place to store values
470
	 $e = new stdClass();
471
	 $e->schedule_type = $allday;
472
473
		 $titles = json_decode($title);
474
		 $bodies = json_decode($body);
475
		 $user_guid = $user_entity->guid;
476
		 $event = new ElggObject();
477
		 $event->subtype = 'event_calendar';
478
		 $event->owner_guid = $user_guid;
479
		 $event->container_guid = $event->owner_guid;
480
481
482
	 if ($e->schedule_type != 'poll') {
483
		 if ($e->schedule_type == 'all_day') {
484
			 $start_date_text = $startdate;
485
		 } else {
486
			 $start_date_text = $startdate;
487
		 }
488
		 // TODO: is the timezone bit necessary?
489
		 $e->start_date = strtotime($start_date_text." ".date_default_timezone_get());
490
		 $end_date_text = $enddate;
491
		 if ($end_date_text) {
492
			 $e->end_date = strtotime($end_date_text." ".date_default_timezone_get());
493
		 } else {
494
			 $e->end_date = '';
495
		 }
496
497
		 if ($e->schedule_type != 'all_day') {
498
			$start_time_exp = explode(':',$starttime);
499
			$start_time =60*$start_time_exp[0]+$start_time_exp[1];
500
			$e->start_time = $start_time;
501
502
			$end_time_exp = explode(':',$endtime);
503
	 		$end_time =60*$end_time_exp[0]+$end_time_exp[1];
504
 			$e->end_time = $end_time;
505
			if (is_numeric($e->start_date) && is_numeric($e->start_time)) {
506
				// Set start date to the Unix start time, if set.
507
				// This allows sorting by date *and* time.
508
				$e->start_date += $e->start_time*60;
509
			}
510
		 } else {
511
			$e->start_time = '';
512
			$e->end_time = '';
513
		 }
514
	 }
515
	 $e->access_id = $access;
516
	 $e->title = JSON_encode($titles);
517
	 $e->venue = $venue;
518
	 $e->fees = $fees;
519
	 $e->language = $picker_language;
520
	 $e->teleconference_radio = $web_conference;
521
	 $e->teleconference = $url;
522
	 $e->start_date = $startdate->getTimestamp();
523
	 $e->end_date = $enddate->getTimestamp();
524
	 $e->calendar_additional = $additional;
525
	 $e->contact_checkbox = $contact_checkbox;
526
	 $e->contact = $contact_text;
527
	 $e->contact_phone = $contact_phone_text;
528
	 $e->contact_email = $contact_email_text;
529
	 if($contact_checkbox != 1){
530
		$e->contact_phone = $user_entity->phone;
531
		$e->contact_email = $user_entity->email;
532
		$e->contact = $user_entity->name;
533
	 }
534
535
	 $e->organiser = $user_entity->name;
536
	 //$e->tags = string_to_tag_array(get_input('tags'));
537
	 $e->description = JSON_encode($bodies);
538
	 //$e->group_guid = get_input('group_guid');
539
	 $e->room = $room;
540
541
	 // sanity check
542
	 if ($e->schedule_type == 'fixed' && $e->real_end_time <= $e->start_date) {
543
		 register_error(elgg_echo('event_calander:end_before_start:error'));
544
		 return "error 1";
545
	 }
546
547
	 if ($e->teleconference_radio == 'no'){
548
		 $e->teleconference = '';
549
		 $e->calendar_additional = '';
550
551
	 }
552
553
 if((!$e->title)||(!$e->start_date) || (!$e->end_date)){
554
	 return 'Missing title, start date or end date';
555
 }
556
557
 //Validation if recurrence box is check
558
 if ($event_calendar_repeating_events != 'no') {
559
	 $validation ='';
560
	 $repeats = get_input('repeats');
561
	 $e->repeats = $repeats;
562
	 if ($repeats == 'yes') {
563
564
		 $dow = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
565
		 foreach ($dow as $w) {
566
			 $v = 'event-calendar-repeating-'.$w.'-value';
567
			 $event->$v = get_input($v);
568
				 if($event->$v == 1){
569
					 $validation = '1';
570
				 }
571
		 }
572
		 if (!$validation){
573
			 return false;
574
		 }
575
	 }
576
	}
577
	$keys = array(
578
		'title',
579
		'access_id',
580
		'start_date',
581
		'start_time',
582
		'end_date',
583
		'end_time',
584
		'venue',
585
		'fees',
586
		'language',
587
		'teleconference_radio',
588
		'teleconference',
589
		'calendar_additional',
590
		'contact',
591
		'organiser',
592
		//'tags',
593
		'description',
594
		'send_reminder',
595
		'reminder_number',
596
		'reminder_interval',
597
		'web_conference',
598
		'real_end_time',
599
		'schedule_type',
600
		//'group_guid',
601
		'room',
602
		'email',
603
		'contact_phone',
604
		'contact_email',
605
		'contact_checkbox',
606
		);
607
608
	foreach ($keys as $key) {
609
		if(($key != 'title2') && ($key != 'description2') && ($key != 'calendar_additional2') ){
610
			$event->$key = $e->$key;
611
		}
612
	}
613
614
	if ($event->save()) {
615
		error_log('save');
616
		if (!$event_guid && $event->web_conference) {
617
			if (!event_calendar_create_bbb_conf($event)) {
618
				register_error(elgg_echo('event_calendar:conference_create_error'));
619
			}
620
		}
621
		if ($group_guid && (elgg_get_plugin_setting('autogroup', 'event_calendar') == 'yes')) {
622
			event_calendar_add_personal_events_from_group($event->guid, $group_guid);
623
		}
624
	}
625
626
	$event_guid = $event->guid;
627
	$event_calendar_autopersonal = elgg_get_plugin_setting('autopersonal', 'event_calendar');
628
	if (!$event_calendar_autopersonal || ($event_calendar_autopersonal == 'yes'))
629
	add_entity_relationship($user_entity->guid,'personal_event', $event_guid);
630
631
	$action = 'create';
632
633
	elgg_create_river_item(array(
634
		'view' => "river/object/event_calendar/$action",
635
		'action_type' => $action,
636
		'subject_guid' => $user_entity->guid,
637
		'object_guid' => $event->guid,
638
	));
639
640
	if ($event->schedule_type == 'poll')
641
		forward('event_poll/add/'.$event->guid);
642
643
	return elgg_echo('event_calendar:add_event_response');
644
}
645