Completed
Push — Api_opt ( 47a261...24829b )
by
unknown
69:01 queued 36:29
created

user.php ➔ share_post()   C

Complexity

Conditions 7
Paths 24

Size

Total Lines 24
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

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