From ad54e40e2b2aede586f27efb94c9a29516c7f00f Mon Sep 17 00:00:00 2001 From: ben Date: Thu, 29 May 2008 12:42:47 +0000 Subject: Added friends pages and related functionality git-svn-id: https://code.elgg.org/elgg/trunk@754 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/social.php | 2 ++ engine/lib/users.php | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) (limited to 'engine') diff --git a/engine/lib/social.php b/engine/lib/social.php index bc66c0466..14328376e 100644 --- a/engine/lib/social.php +++ b/engine/lib/social.php @@ -62,6 +62,8 @@ } // Set the shout words blacklist, these do not become tags when the string is converted + // Any language packs should include their own! + GLOBAL $CONFIG; $CONFIG->wordblacklist = array( 'and', diff --git a/engine/lib/users.php b/engine/lib/users.php index 358abc133..ffa39570a 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -216,7 +216,7 @@ * * @return true|false */ - function isFriend() { return user_is_friend($this->getGUID(), $_SESSION['id']); } + function isFriend() { return user_is_friend($_SESSION['guid'], $this->getGUID()); } /** * Determines whether this user is friends with another user @@ -244,6 +244,16 @@ */ function getFriends($subtype = "", $limit = 10, $offset = 0) { return get_user_friends($this->getGUID(), $subtype, $limit, $offset); } + /** + * Retrieves a list of people who have made this user a friend + * + * @param string $subtype Optionally, the subtype of user to filter to (leave blank for all) + * @param int $limit The number of users to retrieve + * @param int $offset Indexing offset, if any + * @return array|false Array of ElggUsers, or false, depending on success + */ + function getFriendsOf($subtype = "", $limit = 10, $offset = 0) { return get_user_friends_of($this->getGUID(), $subtype, $limit, $offset); } + /** * Get an array of ElggObjects owned by this user. * @@ -404,6 +414,9 @@ function user_add_friend($user_guid, $friend_guid) { $user_guid = (int) $user_guid; $friend_guid = (int) $friend_guid; + if (!$friend = get_entity($friend_guid)) return false; + if (!$user = get_entity($user_guid)) return false; + if (get_class($user) != "ElggUser" || get_class($friend) != "ElggUser") return false; return add_entity_relationship($user_guid, "friend", $friend_guid); } @@ -443,6 +456,19 @@ function get_user_friends($user_guid, $subtype = "", $limit = 10, $offset = 0) { return get_entities_from_relationship("friend",$user_guid,false,"user",$subtype,0,"time_created desc",$limit,$offset); } + + /** + * Obtains the people who have made a given user a friend + * + * @param int $user_guid The user's GUID + * @param string $subtype The subtype of users, if any + * @param int $limit Number of results to return (default 10) + * @param int $offset Indexing offset, if any + * @return false|array Either an array of ElggUsers or false, depending on success + */ + function get_user_friends_of($user_guid, $subtype = "", $limit = 10, $offset = 0) { + return get_entities_from_relationship("friend",$user_guid,true,"user",$subtype,0,"time_created desc",$limit,$offset); + } /** * Obtains a list of objects owned by a user @@ -617,8 +643,48 @@ } + /** + * Page handler for friends + * + */ + function friends_page_handler($page_elements) { + + if (isset($page_elements[0]) && $user = get_user_by_username($page_elements[0])) { + set_page_owner($user->getGUID()); + } + require_once(dirname(dirname(dirname(__FILE__))) . "/friends/index.php"); + + } + + /** + * Page handler for friends of + * + */ + function friends_of_page_handler($page_elements) { + + if (isset($page_elements[0]) && $user = get_user_by_username($page_elements[0])) { + set_page_owner($user->getGUID()); + } + require_once(dirname(dirname(dirname(__FILE__))) . "/friends/of.php"); + + } + + /** + * Users initialisation function, which establishes the page handler + * + */ + function users_init() { + + register_page_handler('friends','friends_page_handler'); + register_page_handler('friendsof','friends_of_page_handler'); + + } + //register actions ************************************************************* register_action("register",true); + register_action("friends/add"); + register_action("friends/remove"); + register_event_handler('init','system','users_init',0); ?> \ No newline at end of file -- cgit v1.2.3