event.php ➔ save_event()   F
last analyzed

Complexity

Conditions 37
Paths > 20000

Size

Total Lines 193

Duplication

Lines 50
Ratio 25.91 %

Importance

Changes 0
Metric Value
cc 37
nc 105880
nop 25
dl 50
loc 193
rs 0
c 0
b 0
f 0

How to fix   Long Method    Complexity    Many Parameters   

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:

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

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") {
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 View Code Duplication
	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 View Code Duplication
	} else {
215
		$params['metadata_name_value_pairs'][] = array(
216
			'name' => 'end_date',
217
			'value' => $now,
218
			'operand' => '>='
219
		);
220
	}
221 View Code Duplication
	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 View Code Duplication
			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
}
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;
0 ignored issues
show
Bug introduced by
The variable $events does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
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 View Code Duplication
		 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 View Code Duplication
			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;
0 ignored issues
show
Bug introduced by
The variable $additional does not exist. Did you mean $additionnal?

This check looks for variables that are accessed but have not been defined. It raises an issue if it finds another variable that has a similar name.

The variable may have been renamed without also renaming all references.

Loading history...
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 View Code Duplication
	 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 View Code Duplication
 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 View Code Duplication
	foreach ($keys as $key) {
609
		if(($key != 'title2') && ($key != 'description2') && ($key != 'calendar_additional2') ){
610
			$event->$key = $e->$key;
611
		}
612
	}
613
614 View Code Duplication
	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);
0 ignored issues
show
Bug introduced by
The variable $group_guid does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
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