Completed
Pull Request — gcconnex (#1558)
by
unknown
15:36
created

user.php ➔ delete_post()   D

Complexity

Conditions 9
Paths 32

Size

Total Lines 25
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

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