Completed
Push — api_discussion ( e68ea7...a50bfe )
by
unknown
18:28
created

user.php ➔ share_post()   C

Complexity

Conditions 7
Paths 24

Size

Total Lines 33
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

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