Completed
Pull Request — gcconnex (#1725)
by
unknown
19:45
created

event.php ➔ get_event()   C

Complexity

Conditions 9
Paths 48

Size

Total Lines 67
Code Lines 43

Duplication

Lines 5
Ratio 7.46 %

Importance

Changes 0
Metric Value
cc 9
eloc 43
nc 48
nop 3
dl 5
loc 67
rs 6.3448
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
	"get.events",
22
	"get_events",
23
	array(
24
		"user" => array('type' => 'string', 'required' => true),
25
		"from" => array('type' => 'string', 'required' => false, 'default' => ""),
26
		"to" => array('type' => 'string', 'required' => false, 'default' => ""),
27
		"limit" => array('type' => 'int', 'required' => false, 'default' => 10),
28
		"offset" => array('type' => 'int', 'required' => false, 'default' => 0),
29
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
30
	),
31
	'Retrieves an event based on user id and event id',
32
	'POST',
33
	true,
34
	false
35
);
36
37
function get_event($user, $guid, $lang)
38
{
39
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
40
	if (!$user_entity) {
41
		return "User was not found. Please try a different GUID, username, or email address";
42
	}
43
	if (!$user_entity instanceof ElggUser) {
44
		return "Invalid user. Please try a different GUID, username, or email address";
45
	}
46
47
	if (!elgg_is_logged_in()) {
48
		login($user_entity);
49
	}
50
51
	$entity = get_entity($guid);
52
	if (!$entity) {
53
		return "Event was not found. Please try a different GUID";
54
	}
55
	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...
56
		//return "Invalid event. Please try a different GUID";
57
	}
58
59
60
61
	$events = elgg_list_entities(array(
62
		'type' => 'object',
63
		'subtype' => 'event_calendar',
64
		'guid' => $guid
65
	));
66
	$event = json_decode($events)[0];
67
68
	$likes = elgg_get_annotations(array(
69
		'guid' => $event->guid,
70
		'annotation_name' => 'likes'
71
	));
72
	$event->likes = count($likes);
73
74
	$liked = elgg_get_annotations(array(
75
		'guid' => $event->guid,
76
		'annotation_owner_guid' => $user_entity->guid,
77
		'annotation_name' => 'likes'
78
	));
79
	$event->liked = count($liked) > 0;
80
81
	$event->title = gc_explode_translation($event->title, $lang);
82
	$event->description = gc_explode_translation($event->description, $lang);
83
84
	$event->userDetails = get_user_block($event->owner_guid, $lang);
85
86
	$eventObj = get_entity($event->guid);
87
	$event->startDate = date("Y-m-d H:i:s", $eventObj->start_date);
88
	$event->endDate = date("Y-m-d H:i:s", $eventObj->end_date);
89
	$event->organizer = $eventObj->contact;
90
	$event->phone = $eventObj->contact_phone;
91
	$event->email = $eventObj->contact_email;
92
	$event->fee = $eventObj->fees;
93
	$event->eventLang = $eventObj->language;
94
	$event->location = $eventObj->venue;
95 View Code Duplication
	if ($eventObj->group_guid){
96
		$group = get_entity($eventObj->group_guid);
97
		$event->group = gc_explode_translation($group->name, $lang);
98
		$event->groupGUID = $eventObj->group_guid;
99
	}
100
101
102
	return $event;
103
}
104
105
function get_events($user, $from, $to, $limit, $offset, $lang)
106
{
107
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
108
	if (!$user_entity) {
109
		return "User was not found. Please try a different GUID, username, or email address";
110
	}
111
	if (!$user_entity instanceof ElggUser) {
112
		return "Invalid user. Please try a different GUID, username, or email address";
113
	}
114
115
	if (!elgg_is_logged_in()) {
116
		login($user_entity);
117
	}
118
119
	$params = array(
120
		'type' => 'object',
121
		'subtype' => 'event_calendar',
122
		'limit' => $limit,
123
		'offset' => $offset,
124
		'order_by_metadata' => array(array('name' => 'start_date', 'direction' => 'DESC', 'as' => 'integer'))
125
	);
126
127 View Code Duplication
	if ($from) {
128
		$params['metadata_name_value_pairs'][] = array(
129
			'name' => 'start_date',
130
			'value' => strtotime($from),
131
			'operand' => '>='
132
		);
133
	}
134 View Code Duplication
	if ($to) {
135
		$params['metadata_name_value_pairs'][] = array(
136
			'name' => 'end_date',
137
			'value' => strtotime($to),
138
			'operand' => '<='
139
		);
140
	}
141
142
	$all_events = elgg_list_entities_from_metadata($params);
143
	$events = json_decode($all_events);
144
145
	foreach ($events as $event) {
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
		$event->liked = count($liked) > 0;
158
159
		$event->title = gc_explode_translation($event->title, $lang);
160
		$event->description = gc_explode_translation($event->description, $lang);
161
162
		$event->userDetails = get_user_block($event->owner_guid, $lang);
163
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->location = $eventObj->venue;
168
169 View Code Duplication
		if ($eventObj->group_guid){
170
			$group = get_entity($eventObj->group_guid);
171
			$event->group = gc_explode_translation($group->name, $lang);
172
			$event->groupGUID = $eventObj->group_guid;
173
		}
174
		
175
	}
176
177
	return $events;
178
}
179