user.php ➔ get_user_data()   F
last analyzed

Complexity

Conditions 59
Paths > 20000

Size

Total Lines 270

Duplication

Lines 42
Ratio 15.56 %

Importance

Changes 0
Metric Value
cc 59
nc 207618088
nop 3
dl 42
loc 270
rs 0
c 0
b 0
f 0

How to fix   Long Method    Complexity   

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 User entities
4
 */
5
6
elgg_ws_expose_function(
7
	"get.user",
8
	"get_user_data",
9
	array(
10
		"profileemail" => array('type' => 'string', 'required' => true),
11
		"user" => array('type' => 'string', 'required' => false),
12
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
13
	),
14
	'Retrieves a user\'s profile information based on user id',
15
	'POST',
16
	true,
17
	false
18
);
19
20
elgg_ws_expose_function(
21
	"get.userexists",
22
	"get_user_exists",
23
	array(
24
		"user" => array('type' => 'string', 'required' => false),
25
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
26
	),
27
	'Retrieves whether a user exists based on user id',
28
	'POST',
29
	true,
30
	false
31
);
32
33
elgg_ws_expose_function(
34
	"get.useractivity",
35
	"get_user_activity",
36
	array(
37
		"profileemail" => array('type' => 'string', 'required' => true),
38
		"user" => array('type' => 'string', 'required' => true),
39
		"limit" => array('type' => 'int', 'required' => false, 'default' => 10),
40
		"offset" => array('type' => 'int', 'required' => false, 'default' => 0),
41
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en"),
42
		"api_version" => array('type' => 'float', 'required' => false, 'default' => 0)
43
	),
44
	'Retrieves a user\'s activity information based on user id',
45
	'POST',
46
	true,
47
	false
48
);
49
50
elgg_ws_expose_function(
51
	"get.usergroups",
52
	"get_user_groups",
53
	array(
54
		"profileemail" => array('type' => 'string', 'required' => true),
55
		"user" => array('type' => 'string', 'required' => true),
56
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
57
	),
58
	'Retrieves a user\'s group information based on user id',
59
	'POST',
60
	true,
61
	false
62
);
63
64
elgg_ws_expose_function(
65
	"get.newsfeed",
66
	"get_newsfeed",
67
	array(
68
		"user" => array('type' => 'string', 'required' => true),
69
		"limit" => array('type' => 'int', 'required' => false, 'default' => 10),
70
		"offset" => array('type' => 'int', 'required' => false, 'default' => 0),
71
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
72
	),
73
	'Retrieves a user\'s newsfeed based on user id',
74
	'POST',
75
	true,
76
	false
77
);
78
79
elgg_ws_expose_function(
80
	"get.colleaguerequests",
81
	"get_colleague_requests",
82
	array(
83
		"user" => array('type' => 'string', 'required' => true),
84
		"limit" => array('type' => 'int', 'required' => false, 'default' => 10),
85
		"offset" => array('type' => 'int', 'required' => false, 'default' => 0),
86
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
87
	),
88
	'Retrieves a user\'s colleague requests based on user id',
89
	'POST',
90
	true,
91
	false
92
);
93
94
elgg_ws_expose_function(
95
	"add.colleague",
96
	"add_colleague",
97
	array(
98
		"profileemail" => array('type' => 'string', 'required' => true),
99
		"user" => array('type' => 'string', 'required' => true),
100
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
101
	),
102
	'Adds a colleague for a user based on user ids',
103
	'POST',
104
	true,
105
	false
106
);
107
108
elgg_ws_expose_function(
109
	"remove.colleague",
110
	"remove_colleague",
111
	array(
112
		"profileemail" => array('type' => 'string', 'required' => true),
113
		"user" => array('type' => 'string', 'required' => true),
114
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
115
	),
116
	'Removes a colleague for a user based on user ids',
117
	'POST',
118
	true,
119
	false
120
);
121
122
elgg_ws_expose_function(
123
	"approve.colleague",
124
	"approve_colleague",
125
	array(
126
		"profileemail" => array('type' => 'string', 'required' => true),
127
		"user" => array('type' => 'string', 'required' => true),
128
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
129
	),
130
	'Approves a colleague request for a user based on user ids',
131
	'POST',
132
	true,
133
	false
134
);
135
136
elgg_ws_expose_function(
137
	"decline.colleague",
138
	"decline_colleague",
139
	array(
140
		"profileemail" => array('type' => 'string', 'required' => true),
141
		"user" => array('type' => 'string', 'required' => true),
142
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
143
	),
144
	'Declines a colleague request for a user based on user ids',
145
	'POST',
146
	true,
147
	false
148
);
149
150
elgg_ws_expose_function(
151
	"revoke.colleague",
152
	"revoke_colleague",
153
	array(
154
		"profileemail" => array('type' => 'string', 'required' => true),
155
		"user" => array('type' => 'string', 'required' => true),
156
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
157
	),
158
	'Revokes a colleague request for a user based on user ids',
159
	'POST',
160
	true,
161
	false
162
);
163
164
elgg_ws_expose_function(
165
	"delete.post",
166
	"delete_post",
167
	array(
168
		"user" => array('type' => 'string', 'required' => true),
169
		"guid" => array('type' => 'string', 'required' => true),
170
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
171
	),
172
	'Deletes a user-owned object based on user id and post id',
173
	'POST',
174
	true,
175
	false
176
);
177
178
elgg_ws_expose_function(
179
	"share.post",
180
	"share_post",
181
	array(
182
		"user" => array('type' => 'string', 'required' => true),
183
		"message" => array('type' => 'string', 'required' => true),
184
		"guid" => array('type' => 'string', 'required' => true),
185
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
186
	),
187
	'Shares a user-owned object based on user id and post id',
188
	'POST',
189
	true,
190
	false
191
);
192
193
elgg_ws_expose_function(
194
	"entity.url",
195
	"fetch_entity_url",
196
	array(
197
		"user" => array('type' => 'string', 'required' => true),
198
		"guid" => array('type' => 'string', 'required' => true),
199
		"lang" => array('type' => 'string', 'required' => false, 'default' => "en")
200
	),
201
	'Gets the URL for an entity',
202
	'POST',
203
	true,
204
	false
205
);
206
207 View Code Duplication
function build_date($month, $year)
208
{
209
	$string = "01/";
210
	switch ($month) {
211
		case 1:
212
			$string = "01/";
213
			break;
214
		case 2:
215
			$string = "02/";
216
			break;
217
		case 3:
218
			$string = "03/";
219
			break;
220
		case 4:
221
			$string = "04/";
222
			break;
223
		case 5:
224
			$string = "05/";
225
			break;
226
		case 6:
227
			$string = "06/";
228
			break;
229
		case 7:
230
			$string = "07/";
231
			break;
232
		case 8:
233
			$string = "08/";
234
			break;
235
		case 9:
236
			$string = "09/";
237
			break;
238
		case 10:
239
			$string = "10/";
240
			break;
241
		case 11:
242
			$string = "11/";
243
			break;
244
		case 12:
245
			$string = "12/";
246
			break;
247
	}
248
	return $string . $year;
249
}
250
251
function get_user_data($profileemail, $user, $lang)
252
{
253
	$user_entity = is_numeric($profileemail) ? get_user($profileemail) : (strpos($profileemail, '@') !== false ? get_user_by_email($profileemail)[0] : get_user_by_username($profileemail));
254
	if (!$user_entity) {
255
		return "User was not found. Please try a different GUID, username, or email address";
256
	}
257
	if (!$user_entity instanceof ElggUser) {
258
		return "Invalid user. Please try a different GUID, username, or email address";
259
	}
260
261
	if ($user) {
262
		$viewer = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
263
		if (!$viewer) {
264
			return "Viewer user was not found. Please try a different GUID, username, or email address";
265
		}
266
		if (!$viewer instanceof ElggUser) {
267
			return "Invalid viewer user. Please try a different GUID, username, or email address";
268
		}
269
270
		$friends = $viewer->isFriendsWith($user_entity->guid);
271
272
		if (!elgg_is_logged_in()) {
273
			login($viewer);
274
		}
275
	} else {
276
		$friends = false;
277
	}
278
279
	$user = array();
280
	$user['id'] = $user_entity->guid;
281
	$user['friend'] = $friends;
282
	$user['user_type'] = $user_entity->user_type;
283
	$user['username'] = $user_entity->username;
284
	$user['displayName'] = $user_entity->name;
285
	$user['email'] = $user_entity->email;
286
	$user['profileURL'] = $user_entity->getURL();
287
	$user['iconURL'] = $user_entity->getIconURL();
288
	$user['jobTitle'] = $user_entity->job;
289
290
	switch ($user_entity->user_type) {
291
		case "federal":
292
			$user['department'] = $user_entity->federal;
293
			break;
294
		case "student":
295 View Code Duplication
		case "academic":
296
			$institution = $user_entity->institution;
297
			$user['department'] = ($institution == 'university') ? $user_entity->university : ($institution == 'college' ? $user_entity->college : $user_entity->highschool);
298
			break;
299
		case "provincial":
300
			$user['department'] = $user_entity->provincial . ' / ' . $user_entity->ministry;
301
			break;
302
		default:
303
			$user['department'] = $user_entity->{$user_entity->user_type};
304
			break;
305
	}
306
307
	$user['telephone'] = $user_entity->phone;
308
	$user['mobile'] = $user_entity->mobile;
309
	$user['website'] = $user_entity->website;
310
311
	if ($user_entity->facebook) {
312
		$user['links']['facebook'] = "http://www.facebook.com/".$user_entity->facebook;
313
	}
314
	if ($user_entity->google) {
315
		$user['links']['google'] = "http://www.google.com/".$user_entity->google;
316
	}
317
	if ($user_entity->github) {
318
		$user['links']['github'] = "https://github.com/".$user_entity->github;
319
	}
320
	if ($user_entity->twitter) {
321
		$user['links']['twitter'] = "https://twitter.com/".$user_entity->twitter;
322
	}
323
	if ($user_entity->linkedin) {
324
		$user['links']['linkedin'] = "http://ca.linkedin.com/in/".$user_entity->linkedin;
325
	}
326
	if ($user_entity->pinterest) {
327
		$user['links']['pinterest'] = "http://www.pinterest.com/".$user_entity->pinterest;
328
	}
329
	if ($user_entity->tumblr) {
330
		$user['links']['tumblr'] = "https://www.tumblr.com/blog/".$user_entity->tumblr;
331
	}
332
	if ($user_entity->instagram) {
333
		$user['links']['instagram'] = "http://instagram.com/".$user_entity->instagram;
334
	}
335
	if ($user_entity->flickr) {
336
		$user['links']['flickr'] = "http://flickr.com/".$user_entity->flickr;
337
	}
338
	if ($user_entity->youtube) {
339
		$user['links']['youtube'] = "http://www.youtube.com/".$user_entity->youtube;
340
	}
341
342
	// About Me
343
	$about_me = strip_tags($user_entity->description, '<p>');
344
	$about_me = str_replace("<p>&nbsp;</p>", '', $about_me);
345
	$user['about_me'] = $about_me;
346
347
	// Education
348
	$educationEntity = elgg_get_entities(array(
349
		'owner_guid'=>$user['id'],
350
		'subtype'=>'education',
351
		'type' => 'object',
352
		'limit' => 0
353
	));
354
	$i = 0;
355
	foreach ($educationEntity as $school) {
356
		if ($school->access_id == ACCESS_PUBLIC || $school->access_id == ACCESS_LOGGED_IN || ($friends && $school->access_id == ACCESS_FRIENDS)) {
357
			$user['education']['item_'.$i]['school_name'] = $school->school;
358
359
			$user['education']['item_'.$i]['start_date'] = build_date($school->startdate, $school->startyear);
360
361 View Code Duplication
			if ($school->ongoing == "false") {
362
				$user['education']['item_'.$i]['end_date'] = build_date($school->enddate, $school->endyear);
363
			} else {
364
				$user['education']['item_'.$i]['end_date'] = "present/actuel";
365
			}
366
			$user['education']['item_'.$i]['degree'] = $school->degree;
367
			$user['education']['item_'.$i]['field_of_study'] = $school->field;
368
			$i++;
369
		}
370
	}
371
372
	// Experience
373
	$experienceEntity = elgg_get_entities(array(
374
		'owner_guid'=>$user['id'],
375
		'subtype'=>'experience',
376
		'type' => 'object',
377
		'limit' => 0
378
	));
379
	usort($experienceEntity, "sortDate");
380
	$i = 0;
381
	foreach ($experienceEntity as $job) {
382
		if ($job->access_id == ACCESS_PUBLIC || $job->access_id == ACCESS_LOGGED_IN || ($friends && $job->access_id == ACCESS_FRIENDS)) {
383
			$jobMetadata = elgg_get_metadata(array(
384
				'guid' => $job->guid,
385
				'limit' => 0
386
			));
387
388
			$user['experience']['item_'.$i]['job_title'] = $job->title;
389
			$user['experience']['item_'.$i]['organization'] = $job->organization;
390
			$user['experience']['item_'.$i]['start_date'] = build_date($job->startdate, $job->startyear);
391 View Code Duplication
			if ($job->ongoing == "false") {
392
				$user['experience']['item_'.$i]['end_date'] = build_date($job->enddate, $job->endyear);
393
			} else {
394
				$user['experience']['item_'.$i]['end_date'] = "present/actuel";
395
			}
396
			$user['experience']['item_'.$i]['responsibilities'] = $job->responsibilities;
397
398
			$j = 0;
399
			if (is_array($job->colleagues)) {
400
				foreach ($job->colleagues as $friend) {
401
					$friendEntity = get_user($friend);
402
					$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["id"] = $friendEntity->guid;
403
					$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["username"] = $friendEntity->username;
404
405
					//get and store user display name
406
					$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["displayName"] = $friendEntity->name;
407
408
					//get and store URL for profile
409
					$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["profileURL"] = $friendEntity->getURL();
410
411
					//get and store URL of profile avatar
412
					$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["iconURL"] = $friendEntity->getIconURL();
413
					$j++;
414
				}
415
			} elseif (!is_null($job->colleagues) && !empty(trim($job->colleagues))) {
416
				$friendEntity = get_user($job->colleagues);
417
				$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["id"] = $friendEntity->guid;
418
				$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["username"] = $friendEntity->username;
419
420
				//get and store user display name
421
				$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["displayName"] = $friendEntity->name;
422
423
				//get and store URL for profile
424
				$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["profileURL"] = $friendEntity->getURL();
425
426
				//get and store URL of profile avatar
427
				$user['experience']['item_'.$i]['colleagues']['colleague_'.$j]["iconURL"] = $friendEntity->getIconURL();
428
			}
429
			$i++;
430
		}
431
	}
432
433
	// Skills
434
	if ($user_entity->skill_access == ACCESS_PUBLIC || $user_entity->skill_access == ACCESS_LOGGED_IN || ($friends && $user_entity->skill_access == ACCESS_FRIENDS)) {
435
		$skillsEntity = elgg_get_entities(array(
436
			'owner_guid'=>$user['id'],
437
			'subtype'=>'MySkill',
438
			'type' => 'object',
439
			'limit' => 0
440
		));
441
442
		$i=0;
443 View Code Duplication
		foreach ($skillsEntity as $skill) {
444
			$user['skills']['item_'.$i]['skill'] = $skill->title;
445
446
			$j = 0;
447
			if (is_array($skill->endorsements)) {
448
				foreach ($skill->endorsements as $friend) {
449
					$friendEntity = get_user($friend);
450
					if ($friendEntity instanceof ElggUser) {
451
						$user['skills']['item_'.$i]['endorsements']["user_".$j]["id"] = $friendEntity->guid;
452
						$user['skills']['item_'.$i]['endorsements']["user_".$j]["username"] = $friendEntity->username;
453
						$user['skills']['item_'.$i]['endorsements']["user_".$j]["displayName"] = $friendEntity->name;
454
						$user['skills']['item_'.$i]['endorsements']["user_".$j]["profileURL"] = $friendEntity->getURL();
455
						$user['skills']['item_'.$i]['endorsements']["user_".$j]["iconURL"] = $friendEntity->getIconURL();
456
					}
457
					$j++;
458
				}
459
			} elseif (!is_null($skill->endorsements)) {
460
				$friendEntity = get_user($skill->endorsements);
461
				$user['skills']['item_'.$i]['endorsements']["user_".$j]["id"] = $friendEntity->guid;
462
				$user['skills']['item_'.$i]['endorsements']["user_".$j]["username"] = $friendEntity->username;
463
				$user['skills']['item_'.$i]['endorsements']["user_".$j]["displayName"] = $friendEntity->name;
464
				$user['skills']['item_'.$i]['endorsements']["user_".$j]["profileURL"] = $friendEntity->getURL();
465
				$user['skills']['item_'.$i]['endorsements']["user_".$j]["iconURL"] = $friendEntity->getIconURL();
466
			}
467
			$i++;
468
		}
469
	}
470
471
	// Portfolio
472
	$portfolioEntity = elgg_get_entities(array(
473
		'owner_guid'=>$user['id'],
474
		'subtype'=>'portfolio',
475
		'type' => 'object',
476
		'limit' => 0
477
	));
478
	$i = 0;
479
	foreach ($portfolioEntity as $portfolio) {
480
		if ($portfolio->access_id == ACCESS_PUBLIC || $portfolio->access_id == ACCESS_LOGGED_IN || ($friends && $portfolio->access_id == ACCESS_FRIENDS)) {
481
			$user['portfolio']['item_'.$i]['title'] = $portfolio->title;
482
			$user['portfolio']['item_'.$i]['link'] = $portfolio->link;
483 View Code Duplication
			if ($portfolio->datestamped == "on") {
484
				$user['portfolio']['item_'.$i]['date'] = $portfolio->publishdate;
485
			}
486
			$user['portfolio']['item_'.$i]['description'] = $portfolio->description;
487
		}
488
	}
489
490
	$user['dateJoined'] = date("Y-m-d H:i:s", $user_entity->time_created);
491
	$user['lastActivity'] = date("Y-m-d H:i:s", $user_entity->last_action);
492
	$user['lastLogin'] = date("Y-m-d H:i:s", $user_entity->last_login);
493
494
	$options = array(
495
		'type' => 'object',
496
		'subtype' => 'thewire',
497
		'owner_guid' => $user_entity->guid,
498
		'limit' => 0
499
	);
500
	$wires = elgg_get_entities($options);
501
	$user['wires'] = count($wires);
502
503
	$options = array(
504
		'type' => 'object',
505
		'subtype' => 'blog',
506
		'owner_guid' => $user_entity->guid,
507
		'limit' => 0
508
	);
509
	$blogs = elgg_get_entities($options);
510
	$user['blogs'] = count($blogs);
511
512
	$colleagues = $user_entity->getFriends(array('limit' => 2000));
513
	$plus = "";
514
	if(count($colleagues) == 2000)
515
		$plus = "+";
516
517
	$user['colleagues'] = count($colleagues).''.$plus;
518
519
	return $user;
520
}
521
522 View Code Duplication
function get_user_exists($user, $lang)
523
{
524
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
525
526
	$valid = false;
527
	if ($user_entity instanceof ElggUser) {
528
		$is_validated = elgg_get_user_validation_status($user->guid);
529
		if ($is_validated) {
530
			$valid = true;
531
		}
532
	}
533
534
	return $valid;
535
}
536
537
function get_user_activity($profileemail, $user, $limit, $offset, $lang, $api_version)
538
{
539
	$user_entity = is_numeric($profileemail) ? get_user($profileemail) : (strpos($profileemail, '@') !== false ? get_user_by_email($profileemail)[0] : get_user_by_username($profileemail));
540
	if (!$user_entity) {
541
		return "User was not found. Please try a different GUID, username, or email address";
542
	}
543
	if (!$user_entity instanceof ElggUser) {
544
		return "Invalid user. Please try a different GUID, username, or email address";
545
	}
546
547
	$viewer = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
548
	if (!$viewer) {
549
		return "Viewer user was not found. Please try a different GUID, username, or email address";
550
	}
551
	if (!$viewer instanceof ElggUser) {
552
		return "Invalid viewer user. Please try a different GUID, username, or email address";
553
	}
554
555
	if (!elgg_is_logged_in()) {
556
		login($viewer);
557
	}
558
559
	$all_activity = elgg_list_river(array(
560
		'subject_guid' => $user_entity->guid,
561
		'distinct' => false,
562
		'limit' => $limit,
563
		'offset' => $offset
564
	));
565
566
	$activity = json_decode($all_activity);
567
	foreach ($activity as $event) {
568
		$subject = get_user($event->subject_guid);
569
		$object = get_entity($event->object_guid);
570
		$event->userDetails = get_user_block($event->subject_guid, $lang);
571
572
		if ($object instanceof ElggUser) {
573
			$event->object = get_user_block($event->object_guid, $lang);
574
			$event->object['type'] = 'user';
575 View Code Duplication
		} elseif ($object instanceof ElggWire) {
576
			$event->object['type'] = 'wire';
577
			$event->object['wire'] = wire_filter($object->description);
578
579
			$thread_id = $object->wire_thread;
580
			$reshare = $object->getEntitiesFromRelationship(array("relationship" => "reshare", "limit" => 1))[0];
581
582
			$url = "";
583
			if (!empty($reshare)) {
584
				$url = $reshare->getURL();
585
			}
586
587
			$text = "";
588
			if (!empty($reshare->title)) {
589
				$text = $reshare->title;
590
			} elseif (!empty($reshare->name)) {
591
				$text = $reshare->name;
592
			} elseif (!empty($reshare->description)) {
593
				$text = elgg_get_excerpt($reshare->description, 140);
594
			}
595
596
			$event->shareURL = $url;
597
			$event->shareText = gc_explode_translation($text, $lang);
598
		} elseif ($object instanceof ElggGroup) {
599
			$event->object['type'] = 'group';
600
			$event->object['name'] = gc_explode_translation($object->name, $lang);
601 View Code Duplication
		} elseif ($object instanceof ElggDiscussionReply) {
602
			$event->object['type'] = 'discussion-reply';
603
			$original_discussion = get_entity($object->container_guid);
604
			$event->object['name'] = gc_explode_translation($original_discussion->title, $lang);
605
			$event->object['description'] = gc_explode_translation($object->description, $lang);
606
		} elseif ($object instanceof ElggFile) {
607
			$event->object['type'] = 'file';
608
			$event->object['name'] = gc_explode_translation($object->title, $lang);
609
			$event->object['description'] = gc_explode_translation($object->description, $lang);
610 View Code Duplication
		} elseif ($object instanceof ElggObject) {
611
			$event->object['type'] = 'discussion-add';
612
613
			if($object->title){
614
				if (strpos($object->title, '"en":') !== false) {
615
					$event->object['name'] = gc_explode_translation($object->title, $lang);
616
				} else {
617
					$event->object['name'] = $object->title;
618
				}
619
			} else if($object->name){
620
				if (strpos($object->name, '"en":') !== false) {
621
					$event->object['name'] = gc_explode_translation($object->name, $lang);
622
				} else {
623
					$event->object['name'] = $object->name;
624
				}
625
			}
626
627
			if (strpos($object->description, '"en":') !== false) {
628
				$event->object['description'] = gc_explode_translation($object->description, $lang);
629
			} else {
630
				$event->object['description'] = $object->description;
631
			}
632
633
			$other = get_entity($event->object_guid);
634
			$parent = get_entity($other->container_guid);
635
			if ($parent instanceof ElggGroup) {
636
				if (!isset($event->object['name'])) {
637
					$event->object['name'] = ($parent->title) ? $parent->title : $parent->name;
638
				}
639
			} else {
640
				if (!isset($event->object['name'])) {
641
					$event->object['name'] = ($parent->title) ? $parent->title : $parent->name;
642
				}
643
			}
644
		} else {
645
			//@TODO handle any unknown events
646
			if (strpos($object->title, '"en":') !== false) {
647
				$event->object['name'] = gc_explode_translation($object->title, $lang);
648
			} else {
649
				$event->object['name'] = $object->title;
650
			}
651
652
			if (strpos($object->description, '"en":') !== false) {
653
				$event->object['description'] = gc_explode_translation($object->description, $lang);
654
			} else {
655
				$event->object['description'] = $object->description;
656
			}
657
		}
658
	}
659
660
	return $activity;
661
}
662
663
function get_user_groups($profileemail, $user, $lang)
664
{
665
	$user_entity = is_numeric($profileemail) ? get_user($profileemail) : (strpos($profileemail, '@') !== false ? get_user_by_email($profileemail)[0] : get_user_by_username($profileemail));
666
	if (!$user_entity) {
667
		return "User was not found. Please try a different GUID, username, or email address";
668
	}
669
	if (!$user_entity instanceof ElggUser) {
670
		return "Invalid user. Please try a different GUID, username, or email address";
671
	}
672
673
	$viewer = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
674
	if (!$viewer) {
675
		return "Viewer user was not found. Please try a different GUID, username, or email address";
676
	}
677
	if (!$viewer instanceof ElggUser) {
678
		return "Invalid viewer user. Please try a different GUID, username, or email address";
679
	}
680
681
	if (!elgg_is_logged_in()) {
682
		login($viewer);
683
	}
684
685
	$all_groups = elgg_list_entities_from_relationship(array(
686
		'relationship' => 'member',
687
		'relationship_guid' => $user_entity->guid,
688
		'inverse_relationship' => false,
689
		'type' => 'group',
690
		'limit' => 0
691
	));
692
693
	$groups = json_decode($all_groups);
694
	foreach ($groups as $group) {
695
		$groupObj = get_entity($group->guid);
696
		$group->name = gc_explode_translation($group->name, $lang);
697
		$group->iconURL = $groupObj->getIconURL();
698
		$group->count = $groupObj->getMembers(array('count' => true));
699
		$group->description = clean_text(gc_explode_translation($group->description, $lang));
700
	}
701
702
	return $groups;
703
}
704
705
function get_newsfeed($user, $limit, $offset, $lang)
706
{
707
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
708
	if (!$user_entity) {
709
		return "User was not found. Please try a different GUID, username, or email address";
710
	}
711
	if (!$user_entity instanceof ElggUser) {
712
		return "Invalid user. Please try a different GUID, username, or email address";
713
	}
714
715
	if (!elgg_is_logged_in()) {
716
		login($user_entity);
717
	}
718
719
	$db_prefix = elgg_get_config('dbprefix');
720
721
722
	// check if user has friends or groups
723
	$hasfriends = $user_entity->getFriends();
724
	$hasgroups = $user_entity->getGroups();
725
	if ($hasgroups) {
726
		// loop through group guids
727
		$groups = $user_entity->getGroups(array('limit'=>0));
728
		$group_guids = array();
729
		foreach ($groups as $group) {
730
			$group_guids[] = $group->getGUID();
731
		}
732
	}
733
734
	$actionTypes = array('comment', 'create', 'join', 'update', 'friend', 'reply');
735
736
	if (!$hasgroups) {
737
	 	if(!$hasfriends) {
738
			// no friends and no groups :(
739
			$activity = '';
740
		} else {
741
			// has friends but no groups
742
			$optionsf = array();
743
			$optionsf['relationship_guid'] = $user_entity->guid;
744
			$optionsf['relationship'] = 'friend';
745
			$optionsf['pagination'] = true;
746
747
			// turn off friend connections
748
			// remove friend connections from action types
749
			// load user's preference
750
			$filteredItems = array($user_entity->colleagueNotif);
751
			// filter out preference
752
			$optionsf['action_types'] = array_diff($actionTypes, $filteredItems);
753
754
			$activity = json_decode(newsfeed_list_river($optionsf));
755
		}
756
	} elseif (!$hasfriends) {
757
		// if no friends but groups
758
		$guids_in = implode(',', array_unique(array_filter($group_guids)));
0 ignored issues
show
Bug introduced by
The variable $group_guids 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...
759
760
		// display created content and replies and comments
761
		$optionsg = array();
762
		$optionsg['wheres'] = array("( oe.container_guid IN({$guids_in}) OR te.container_guid IN({$guids_in}) )");
763
		$optionsg['pagination'] = true;
764
		$activity = json_decode(newsfeed_list_river($optionsg));
765
	} else {
766
		// if friends and groups :3
767
		// turn off friend connections
768
		// remove friend connections from action types
769
		// load user's preference
770
		$filteredItems = array($user_entity->colleagueNotif);
771
		// filter out preference
772
		$optionsfg = array();
773
		$optionsfg['action_types'] = array_diff($actionTypes, $filteredItems);
774
775
		$guids_in = implode(',', array_unique(array_filter($group_guids)));
776
777
		// Groups + Friends activity query
778
		// This query grabs new created content and comments and replies in the groups the user is a member of *** te.container_guid grabs comments and replies
779
		$optionsfg['wheres'] = array(
780
			"( oe.container_guid IN({$guids_in})
781
         	OR te.container_guid IN({$guids_in}) )
782
        	OR rv.subject_guid IN (SELECT guid_two FROM {$db_prefix}entity_relationships WHERE guid_one=$user_entity->guid AND relationship='friend')"
783
		);
784
		$optionsfg['pagination'] = true;
785
		$activity = json_decode(newsfeed_list_river($optionsfg));
786
	}
787
788
	foreach ($activity as $event) {
789
		$subject = get_user($event->subject_guid);
790
		$object = get_entity($event->object_guid);
791
		$event->userDetails = get_user_block($event->subject_guid, $lang);
792
793
		$likes = elgg_get_annotations(array(
794
			'guid' => $event->object_guid,
795
			'annotation_name' => 'likes'
796
		));
797
		$event->likes = count($likes);
798
799
		$liked = elgg_get_annotations(array(
800
			'guid' => $event->object_guid,
801
			'annotation_owner_guid' => $user_entity->guid,
802
			'annotation_name' => 'likes'
803
		));
804
		$event->liked = count($liked) > 0;
805
806
		if ($object->description) {
807
			$object->description = str_replace("<p>&nbsp;</p>", '', $object->description);
808
		}
809
810
		if ($object instanceof ElggUser) {
811
			$event->object = get_user_block($event->object_guid, $lang);
812
			$event->object['type'] = 'user';
813 View Code Duplication
		} elseif ($object instanceof ElggWire) {
814
			$event->object['type'] = 'wire';
815
			$event->object['wire'] = wire_filter($object->description);
816
817
			$thread_id = $object->wire_thread;
818
			$reshare = $object->getEntitiesFromRelationship(array("relationship" => "reshare", "limit" => 1))[0];
819
820
			$url = "";
821
			if (!empty($reshare)) {
822
				$url = $reshare->getURL();
823
			}
824
825
			$text = "";
826
			if (!empty($reshare->title)) {
827
				$text = $reshare->title;
828
			} elseif (!empty($reshare->name)) {
829
				$text = $reshare->name;
830
			} elseif (!empty($reshare->description)) {
831
				$text = elgg_get_excerpt($reshare->description, 140);
832
			}
833
834
			$event->shareURL = $url;
835
			$event->shareText = gc_explode_translation($text, $lang);
836
		} elseif ($object instanceof ElggGroup) {
837
			$event->object['type'] = 'group';
838
			$event->object['name'] = gc_explode_translation($object->name, $lang);
839
			$event->object['description'] = gc_explode_translation($object->name, $lang);
840
841
			if (is_callable(array($object, 'getURL'))) {
842
				$event->object['url'] = $object->getURL();
843
			}
844
		} elseif ($object instanceof ElggDiscussionReply) {
845
			$event->object['type'] = 'discussion-reply';
846
			$original_discussion = get_entity($object->container_guid);
847
			$event->object['name'] = gc_explode_translation($original_discussion->title, $lang);
848
			$event->object['description'] = gc_explode_translation($object->description, $lang);
849
850
			$group = get_entity($original_discussion->container_guid);
851
			$event->object['group_guid'] = $group->guid;
852
			$event->object['group_title'] = gc_explode_translation($group->title, $lang);
853
854
			if (is_callable(array($original_discussion, 'getURL'))) {
855
				$event->object['url'] = $original_discussion->getURL();
856
			}
857 View Code Duplication
		} elseif ($object instanceof ElggFile) {
858
			$event->object['type'] = 'file';
859
			$event->object['name'] = gc_explode_translation($object->title, $lang);
860
			$event->object['description'] = gc_explode_translation($object->description, $lang);
861
			$event->object['url'] = $object->getURL();
862
		} elseif ($object instanceof ElggObject) {
863
			$subtype = $object->getSubtype();
864
			$event->object['type'] = $subtype;
865
866
			$name = ($object->title) ? $object->title : $object->name;
867
			if (empty(trim($name))) {
868
				$otherEntity = get_entity($object->container_guid);
869
				$name = ($otherEntity->title) ? $otherEntity->title : $otherEntity->name;
870
			}
871
			$event->object['name'] = $name;
872
873
			if (is_callable(array($object, 'getURL'))) {
874
				$event->object['url'] = $object->getURL();
875
			}
876
877
			$event->object['description'] = gc_explode_translation($object->description, $lang);
878
879
			$other = get_entity($object->container_guid);
880
			if ($other instanceof ElggGroup) {
881
				$event->object['group_title'] = gc_explode_translation($other->title, $lang);
882
				$event->object['group_guid'] = $other->guid;
883
			}
884
			if ($event->action == "comment") {
885
				$event->object['container_type'] = $other->getSubtype();
886
				$event->object['container_guid'] = $other->getGUID();
887
				$other_other = get_entity($other->container_guid);
888
				if ($other_other instanceof ElggGroup) {
889
					$event->object['group_title'] = gc_explode_translation($other_other->title, $lang);
890
					$event->object['group_guid'] = $other_other->guid;
891
				}
892
			}
893
894
			if (strpos($event->object['name'], '"en":') !== false) {
895
				$event->object['name'] = gc_explode_translation($event->object['name'], $lang);
896
			}
897
		} else {
898
			//@TODO handle any unknown events
899
			if (strpos($object->title, '"en":') !== false) {
900
				$event->object['name'] = gc_explode_translation($object->title, $lang);
901
			} else {
902
				$event->object['name'] = $object->title;
903
			}
904
905
			if (strpos($object->description, '"en":') !== false) {
906
				$event->object['description'] = gc_explode_translation($object->description, $lang);
907
			} else {
908
				$event->object['description'] = $object->description;
909
			}
910
911
			if (is_callable(array($object, 'getURL'))) {
912
				$event->object['url'] = $object->getURL();
913
			}
914
		}
915
	}
916
917
	return $activity;
918
}
919
920
function get_colleague_requests($user, $limit, $offset, $lang)
921
{
922
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
923
	if (!$user_entity) {
924
		return "User was not found. Please try a different GUID, username, or email address";
925
	}
926
	if (!$user_entity instanceof ElggUser) {
927
		return "Invalid user. Please try a different GUID, username, or email address";
928
	}
929
930
	if (!elgg_is_logged_in()) {
931
		login($user_entity);
932
	}
933
934
	$friendrequests = elgg_get_entities_from_relationship(array(
935
		"type" => "user",
936
		"relationship" => "friendrequest",
937
		"relationship_guid" => $user_entity->getGUID(),
938
		"inverse_relationship" => true,
939
		"limit" => $limit,
940
		"offset" => $offset
941
	));
942
943
	$data = array();
944 View Code Duplication
	foreach ($friendrequests as $member) {
945
		$member_obj = get_user($member->guid);
946
		$member_data = get_user_block($member->guid, $lang);
947
948
		$about = "";
949
		if ($member_obj->description) {
950
			$about = strip_tags($member_obj->description, '<p>');
951
			$about = str_replace("<p>&nbsp;</p>", '', $about);
952
		}
953
954
		$member_data['about'] = $about;
955
		$data[] = $member_data;
956
	}
957
958
	return $data;
959
}
960
961
function add_colleague($profileemail, $user, $lang)
962
{
963
	$friend = is_numeric($profileemail) ? get_user($profileemail) : (strpos($profileemail, '@') !== false ? get_user_by_email($profileemail)[0] : get_user_by_username($profileemail));
964
	if (!$friend) {
965
		return "User was not found. Please try a different GUID, username, or email address";
966
	}
967
	if (!$friend instanceof ElggUser) {
968
		return "Invalid user. Please try a different GUID, username, or email address";
969
	}
970
971
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
972
	if (!$user_entity) {
973
		return "Viewer user was not found. Please try a different GUID, username, or email address";
974
	}
975
	if (!$user_entity instanceof ElggUser) {
976
		return "Invalid viewer user. Please try a different GUID, username, or email address";
977
	}
978
979
	if (!elgg_is_logged_in()) {
980
		login($user_entity);
981
	}
982
983
	//Now we need to attempt to create the relationship
984
	if (empty($user_entity) || empty($friend)) {
985
		return elgg_echo("friend_request:add:failure");
986
	} else {
987
		//New for v1.1 - If the other user is already a friend (fan) of this user we should auto-approve the friend request...
988
		if (check_entity_relationship($friend->getGUID(), "friend", $user_entity->getGUID())) {
989
			try {
990
				$user_entity->addFriend($friend->getGUID());
991
				return true;
992
			} catch (Exception $e) {
993
				return elgg_echo("friends:add:failure", array($friend->name));
994
			}
995
		} elseif (check_entity_relationship($friend->getGUID(), "friendrequest", $user_entity->getGUID())) {
996
			// Check if your potential friend already invited you, if so make friends
997
			if (remove_entity_relationship($friend->getGUID(), "friendrequest", $user_entity->getGUID())) {
998
999
				// Friends mean reciprical...
1000
				$user_entity->addFriend($friend->getGUID());
1001
				$friend->addFriend($user_entity->getGUID());
1002
1003
				$n_result = notify_user(
1004
					$friend->guid,
1005
					$user_entity->guid,
1006
					elgg_echo('friend:newfriend:subject', array(
1007
						$user_entity->name,
1008
						$user_entity->name,
1009
					)),
1010
					elgg_echo("friend:newfriend:body", array(
1011
						$user_entity->name,
1012
						$user_entity->getURL(),
1013
						elgg_get_site_url().'notifications/personal/',
1014
1015
						$user_entity->name,
1016
						$user_entity->getURL(),
1017
						elgg_get_site_url().'notifications/personal/',
1018
					))
1019
				);
1020
1021
				// add to river
1022
				elgg_create_river_item(array(
1023
					"view" => "river/relationship/friend/create",
1024
					"action_type" => "friend",
1025
					"subject_guid" => $user_entity->getGUID(),
1026
					"object_guid" => $friend->getGUID(),
1027
				));
1028
				elgg_create_river_item(array(
1029
					"view" => "river/relationship/friend/create",
1030
					"action_type" => "friend",
1031
					"subject_guid" => $friend->getGUID(),
1032
					"object_guid" => $user_entity->getGUID(),
1033
				));
1034
1035
				return true;
1036
			} else {
1037
				return elgg_echo("friend_request:approve:fail", array($friend->name));
1038
			}
1039
		} else {
1040
			try {
1041 View Code Duplication
				if (!add_entity_relationship($user_entity->getGUID(), "friendrequest", $friend->getGUID())) {
1042
					return elgg_echo("friend_request:add:exists", array($friend->name));
1043
				}
1044
			} catch (Exception $e) {	//register_error calls insert_data which CAN raise Exceptions.
1045
				return elgg_echo("friend_request:add:exists", array($friend->name));
1046
			}
1047
		}
1048
	}
1049
}
1050
1051
function remove_colleague($profileemail, $user, $lang)
1052
{
1053
	$friend = is_numeric($profileemail) ? get_user($profileemail) : (strpos($profileemail, '@') !== false ? get_user_by_email($profileemail)[0] : get_user_by_username($profileemail));
1054
	if (!$friend) {
1055
		return "User was not found. Please try a different GUID, username, or email address";
1056
	}
1057
	if (!$friend instanceof ElggUser) {
1058
		return "Invalid user. Please try a different GUID, username, or email address";
1059
	}
1060
1061
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
1062
	if (!$user_entity) {
1063
		return "Viewer user was not found. Please try a different GUID, username, or email address";
1064
	}
1065
	if (!$user_entity instanceof ElggUser) {
1066
		return "Invalid viewer user. Please try a different GUID, username, or email address";
1067
	}
1068
1069
	if (!elgg_is_logged_in()) {
1070
		login($user_entity);
1071
	}
1072
1073
	if (!empty($friend)) {
1074
		try {
1075
			$user_entity->removeFriend($friend->getGUID());
1076
1077
			// remove river items
1078
			elgg_delete_river(array(
1079
				"view" => "river/relationship/friend/create",
1080
				"subject_guid" => $user_entity->getGUID(),
1081
				"object_guid" => $friend->getGUID()
1082
			));
1083
1084
			try {
1085
				//V1.1 - Old relationships might not have the 2 as friends...
1086
				$friend->removeFriend($user_entity->getGUID());
1087
1088
				// remove river items
1089
				elgg_delete_river(array(
1090
					"view" => "river/relationship/friend/create",
1091
					"subject_guid" => $friend->getGUID(),
1092
					"object_guid" => $user_entity->getGUID()
1093
				));
1094
1095
				// cyu - remove the relationship (if applicable) for the subscribed to user
1096
				remove_entity_relationship($user_entity->guid, 'cp_subscribed_to_email', $friend->getGUID());
1097
				remove_entity_relationship($user_entity->guid, 'cp_subscribe_to_site_mail', $friend->getGUID());
1098
1099
				return true;
1100
			} catch (Exception $e) {
1101
				// do nothing
1102
			}
1103
		} catch (Exception $e) {
1104
			return elgg_echo("friends:remove:failure", array($friend->name));
1105
		}
1106
	} else {
1107
		return elgg_echo("friends:remove:failure", array($friend->getGUID()));
1108
	}
1109
}
1110
1111
function approve_colleague($profileemail, $user, $lang)
1112
{
1113
	$friend = is_numeric($profileemail) ? get_user($profileemail) : (strpos($profileemail, '@') !== false ? get_user_by_email($profileemail)[0] : get_user_by_username($profileemail));
1114
	if (!$friend) {
1115
		return "User was not found. Please try a different GUID, username, or email address";
1116
	}
1117
	if (!$friend instanceof ElggUser) {
1118
		return "Invalid user. Please try a different GUID, username, or email address";
1119
	}
1120
1121
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
1122
	if (!$user_entity) {
1123
		return "Viewer user was not found. Please try a different GUID, username, or email address";
1124
	}
1125
	if (!$user_entity instanceof ElggUser) {
1126
		return "Invalid viewer user. Please try a different GUID, username, or email address";
1127
	}
1128
1129
	if (!elgg_is_logged_in()) {
1130
		login($user_entity);
1131
	}
1132
1133
	if (!empty($friend)) {
1134
		if (remove_entity_relationship($friend->getGUID(), "friendrequest", $user_entity->getGUID())) {
1135
			$user_entity->addFriend($friend->getGUID());
1136
			$friend->addFriend($user_entity->getGUID());			//Friends mean reciprical...
1137
1138
			// notify the user about the acceptance
1139
			$subject = elgg_echo("friend_request:approve:subject", array($user_entity->name, $user_entity->name));
1140
			$message = elgg_echo("friend_request:approve:message", array($user_entity->name, $user_entity->getURL(), $user_entity->name, $user_entity->getURL()));
1141
1142
			$params = array(
1143
				"action" => "add_friend",
1144
				"object" => $user_entity
1145
			);
1146
1147
			// cyu - 04/04/2016: use new notification system hook instead (if activated)
1148 View Code Duplication
			if (elgg_is_active_plugin('cp_notifications')) {
1149
				$message = array(
1150
					'object' => $user_entity,
1151
					'cp_request_guid' => $friend->getGUID(),
1152
					'cp_approver' => $user_entity->name,
1153
					'cp_approver_profile' => $user_entity->getURL(),
1154
					'cp_msg_type' => 'cp_friend_approve'
1155
				);
1156
				$result = elgg_trigger_plugin_hook('cp_overwrite_notification', 'all', $message);
1157
			} else {
1158
				notify_user($friend->getGUID(), $user_entity->getGUID(), $subject, $message, $params);
1159
			}
1160
1161
			// add to river
1162
			elgg_create_river_item(array(
1163
				"view" => "river/relationship/friend/create",
1164
				"action_type" => "friend",
1165
				"subject_guid" => $user_entity->getGUID(),
1166
				"object_guid" => $friend->getGUID(),
1167
			));
1168
			elgg_create_river_item(array(
1169
				"view" => "river/relationship/friend/create",
1170
				"action_type" => "friend",
1171
				"subject_guid" => $friend->getGUID(),
1172
				"object_guid" => $user_entity->getGUID(),
1173
			));
1174
1175
			return elgg_echo("friend_request:approve:successful", array($friend->name));
1176
		} else {
1177
			return elgg_echo("friend_request:approve:fail", array($friend->name));
1178
		}
1179
	}
1180
}
1181
1182
function decline_colleague($profileemail, $user, $lang)
1183
{
1184
	$friend = is_numeric($profileemail) ? get_user($profileemail) : (strpos($profileemail, '@') !== false ? get_user_by_email($profileemail)[0] : get_user_by_username($profileemail));
1185
	if (!$friend) {
1186
		return "User was not found. Please try a different GUID, username, or email address";
1187
	}
1188
	if (!$friend instanceof ElggUser) {
1189
		return "Invalid user. Please try a different GUID, username, or email address";
1190
	}
1191
1192
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
1193
	if (!$user_entity) {
1194
		return "Viewer user was not found. Please try a different GUID, username, or email address";
1195
	}
1196
	if (!$user_entity instanceof ElggUser) {
1197
		return "Invalid viewer user. Please try a different GUID, username, or email address";
1198
	}
1199
1200
	if (!elgg_is_logged_in()) {
1201
		login($user_entity);
1202
	}
1203
1204
	if (!empty($friend)) {
1205
		if (remove_entity_relationship($friend->getGUID(), "friendrequest", $user_entity->getGUID())) {
1206
			$subject = elgg_echo("friend_request:decline:subject", array($user_entity->name));
1207
			$message = elgg_echo("friend_request:decline:message", array($friend->name, $user_entity->name));
1208
1209
			return elgg_echo("friend_request:decline:success");
1210
		} else {
1211
			return elgg_echo("friend_request:decline:fail");
1212
		}
1213
	}
1214
}
1215
1216
function revoke_colleague($profileemail, $user, $lang)
1217
{
1218
	$friend = is_numeric($profileemail) ? get_user($profileemail) : (strpos($profileemail, '@') !== false ? get_user_by_email($profileemail)[0] : get_user_by_username($profileemail));
1219
	if (!$friend) {
1220
		return "User was not found. Please try a different GUID, username, or email address";
1221
	}
1222
	if (!$friend instanceof ElggUser) {
1223
		return "Invalid user. Please try a different GUID, username, or email address";
1224
	}
1225
1226
	$user_entity = is_numeric($user) ? get_user($user) : (strpos($user, '@') !== false ? get_user_by_email($user)[0] : get_user_by_username($user));
1227
	if (!$user_entity) {
1228
		return "Viewer user was not found. Please try a different GUID, username, or email address";
1229
	}
1230
	if (!$user_entity instanceof ElggUser) {
1231
		return "Invalid viewer user. Please try a different GUID, username, or email address";
1232
	}
1233
1234
	if (!elgg_is_logged_in()) {
1235
		login($user_entity);
1236
	}
1237
1238
	if (!empty($friend)) {
1239
		if (remove_entity_relationship($user_entity->getGUID(), "friendrequest", $friend->getGUID())) {
1240
			return elgg_echo("friend_request:revoke:success");
1241
		} else {
1242
			return elgg_echo("friend_request:revoke:fail");
1243
		}
1244
	}
1245
}
1246
1247
function delete_post($user, $guid, $lang)
1248
{
1249
	$user_entity = is_numeric($user) ? get_user($user) : ( strpos($user, '@') !== FALSE ? get_user_by_email($user)[0] : get_user_by_username($user));
1250
 	if (!$user_entity) {
1251
 		return "User was not found. Please try a different GUID, username, or email address";
1252
 	}
1253
	if (!$user_entity instanceof ElggUser) {
1254
		return "Invalid user. Please try a different GUID, username, or email address";
1255
	}
1256
1257
	if (!elgg_is_logged_in()) {
1258
		login($user_entity);
1259
	}
1260
1261
	$entity = get_entity($guid);
1262
	if (elgg_instanceof($entity, 'object') && $entity->canEdit()) {
1263
		if ($entity->delete()) {
1264
			return elgg_echo('blog:message:deleted_post');
1265
		} else {
1266
			return elgg_echo('blog:error:cannot_delete_post');
1267
		}
1268
	} else {
1269
		return elgg_echo('blog:error:post_not_found');
1270
	}
1271
}
1272
1273 View Code Duplication
function share_post($user, $message, $guid, $lang)
1274
{
1275
	$user_entity = is_numeric($user) ? get_user($user) : ( strpos($user, '@') !== FALSE ? get_user_by_email($user)[0] : get_user_by_username($user));
1276
 	if (!$user_entity) {
1277
 		return "User was not found. Please try a different GUID, username, or email address";
1278
 	}
1279
	if (!$user_entity instanceof ElggUser) {
1280
		return "Invalid user. Please try a different GUID, username, or email address";
1281
	}
1282
1283
	if (!elgg_is_logged_in()) {
1284
		login($user_entity);
1285
	}
1286
1287
	$entity = get_entity($guid);
1288
1289
	$new_wire = thewire_tools_save_post($message, $user_entity->guid, ACCESS_PUBLIC, 0,'site', $guid);
1290
	if (!$new_wire) {
1291
		return elgg_echo("thewire:notsaved");
1292
	}
1293
1294
	return elgg_echo("thewire:posted");
1295
1296
}
1297
1298
function fetch_entity_url($user, $guid, $lang)
1299
{
1300
	$user_entity = is_numeric($user) ? get_user($user) : ( strpos($user, '@') !== FALSE ? get_user_by_email($user)[0] : get_user_by_username($user));
1301
 	if (!$user_entity) {
1302
 		return "User was not found. Please try a different GUID, username, or email address";
1303
 	}
1304
	if (!$user_entity instanceof ElggUser) {
1305
		return "Invalid user. Please try a different GUID, username, or email address";
1306
	}
1307
1308
	if (!elgg_is_logged_in()) {
1309
		login($user_entity);
1310
	}
1311
1312
	$entity = get_entity($guid);
1313
1314
	if (!$entity instanceof ElggObject) {
1315
		return "Invalid object.";
1316
	}
1317
1318
	return $entity->getURL();
1319
}
1320