aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/classes/ElggUser.php3
-rw-r--r--engine/lib/elgglib.php4
-rw-r--r--engine/lib/users.php70
3 files changed, 73 insertions, 4 deletions
diff --git a/engine/classes/ElggUser.php b/engine/classes/ElggUser.php
index eca011a36..ff449d601 100644
--- a/engine/classes/ElggUser.php
+++ b/engine/classes/ElggUser.php
@@ -303,10 +303,11 @@ class ElggUser extends ElggEntity
/**
* Determines whether or not this user is a friend of the currently logged in user
*
+ *
* @return true|false
*/
function isFriend() {
- return $this->isFriendsWith(get_loggedin_userid());
+ return $this->isFriendOf(get_loggedin_userid());
}
/**
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php
index 2ca1f90e3..8d2b8ed91 100644
--- a/engine/lib/elgglib.php
+++ b/engine/lib/elgglib.php
@@ -1616,13 +1616,13 @@ function elgg_http_build_url(array $parts, $html_encode = TRUE) {
* tokens.
*
* @param str $url Full action URL
- * @param bool $html_encode HTML encode the url?
+ * @param bool $html_encode HTML encode the url? (default: false)
*
* @return str URL with action tokens
* @since 1.7.0
* @link http://docs.elgg.org/Tutorials/Actions
*/
-function elgg_add_action_tokens_to_url($url, $html_encode = TRUE) {
+function elgg_add_action_tokens_to_url($url, $html_encode = FALSE) {
$components = parse_url(elgg_normalize_url($url));
if (isset($components['query'])) {
diff --git a/engine/lib/users.php b/engine/lib/users.php
index c9ac6603e..353575307 100644
--- a/engine/lib/users.php
+++ b/engine/lib/users.php
@@ -382,7 +382,7 @@ function user_remove_friend($user_guid, $friend_guid) {
* @return bool
*/
function user_is_friend($user_guid, $friend_guid) {
- return check_entity_relationship($user_guid, "friend", $friend_guid);
+ return check_entity_relationship($user_guid, "friend", $friend_guid) !== false;
}
/**
@@ -1476,6 +1476,73 @@ function user_avatar_hook($hook, $entity_type, $returnvalue, $params){
}
/**
+ * Setup the default user hover menu
+ */
+function elgg_user_hover_menu($hook, $type, $return, $params) {
+ $user = $params['entity'];
+
+ if (isloggedin()) {
+ if (get_loggedin_userid() != $user->guid) {
+ if ($user->isFriend()) {
+ $url = "action/friends/remove?friend={$user->guid}";
+ $text = elgg_echo('friend:remove');
+ } else {
+ $url = "action/friends/add?friend={$user->guid}";
+ $text = elgg_echo('friend:add');
+ }
+ $url = elgg_add_action_tokens_to_url($url);
+ $item = new ElggMenuItem('addfriend', $text, $url);
+ $item->setSection('action');
+ elgg_register_menu_item('user_hover', $item);
+ } else {
+ $url = "pg/profile/$user->username/edit";
+ $item = new ElggMenuItem('profile:edit', elgg_echo('profile:edit'), $url);
+ $item->setSection('action');
+ elgg_register_menu_item('user_hover', $item);
+
+ $url = "pg/avatar/edit/$user->username";
+ $item = new ElggMenuItem('avatar:edit', elgg_echo('avatar:edit'), $url);
+ $item->setSection('action');
+ elgg_register_menu_item('user_hover', $item);
+ }
+ }
+
+ // prevent admins from banning or deleting themselves
+ if (get_loggedin_userid() == $user->guid) {
+ return;
+ }
+
+ if (isadminloggedin()) {
+ $actions = array();
+ if (!$user->isBanned()) {
+ $actions[] = 'ban';
+ } else {
+ $actions[] = 'unban';
+ }
+ $actions[] = 'delete';
+ $actions[] = 'resetpassword';
+ if (!$user->isAdmin()) {
+ $actions[] = 'makeadmin';
+ } else {
+ $actions[] = 'removeadmin';
+ }
+
+ foreach ($actions as $action) {
+ $url = "action/admin/user/$action?guid={$user->guid}";
+ $url = elgg_add_action_tokens_to_url($url);
+ $item = new ElggMenuItem($action, elgg_echo($action), $url);
+ $item->setSection('admin');
+ elgg_register_menu_item('user_hover', $item);
+ }
+
+ $url = "pg/profile/$user->username/edit";
+ $item = new ElggMenuItem('profile:edit', elgg_echo('profile:edit'), $url);
+ $item->setSection('admin');
+ elgg_register_menu_item('user_hover', $item);
+ }
+}
+
+/**
* Setup the user admin menu
*/
function elgg_user_admin_menu($hook, $type, $return, $params) {
@@ -1682,6 +1749,7 @@ function users_init() {
elgg_register_menu_item('page', $params);
}
+ elgg_register_plugin_hook_handler('register', 'menu:user_hover', 'elgg_user_hover_menu');
elgg_register_plugin_hook_handler('register', 'menu:user_admin', 'elgg_user_admin_menu');
elgg_register_action("register", '', 'public');