'friendrequests', 'text' => elgg_echo('friendrequest').($count? " ($count)": ""), 'href' => "friendrequests", 'contexts' => array('friends'), ); elgg_register_menu_item('page', $params); } elgg_register_plugin_hook_handler('register', 'menu:topbar', 'friendrequest_topbar_menu'); //We need to override the friend remove action to remove the relationship we created $actions_dir = elgg_get_plugins_path().'friendrequest/actions/friends'; elgg_register_action('friends/add', "$actions_dir/add.php"); elgg_register_action('friends/remove', "$actions_dir/remove.php"); $actions_dir = elgg_get_plugins_path().'friendrequest/actions/friendrequest'; elgg_register_action('friendrequest/decline', "$actions_dir/decline.php"); //Regular Elgg engine sends out an email via an event. The 400 priority will let us run first. //Then we return false to stop the event chain. The normal event handler will never get to run. //elgg_register_event_handler('create', 'friend', 'friendrequest_event_create_friend', 400); //Handle our add action event: elgg_register_event_handler('create', 'friendrequest', 'friendrequest_event_create_friendrequest'); } function friendrequest_page_handler($page){ //Keep the URLs uniform: if (isset($page[0])) { forward("friendrequests"); } gatekeeper(); elgg_push_context('friends'); $title = elgg_echo('friendrequest'); $page_owner = elgg_get_logged_in_user_entity(); elgg_set_page_owner_guid($page_owner->guid); $requests = elgg_get_entities_from_relationship(array( 'type' => 'user', 'relationship' => 'friendrequest', 'relationship_guid' => $page_owner->guid, 'inverse_relationship' => true, 'limit' => 0, )); $content = elgg_view('friendrequest/requests', array( 'requests' => $requests, )); $params = array( 'content' => $content, 'title' => $title, 'filter' => '', ); $body = elgg_view_layout('content', $params); echo elgg_view_page($title, $body); return true; } function friendrequest_count(){ return elgg_get_entities_from_relationship(array( 'type' => 'user', 'relationship' => 'friendrequest', 'relationship_guid' => elgg_get_logged_in_user_guid(), 'inverse_relationship' => true, 'limit' => 0, 'count' => true, )); } function friendrequest_topbar_menu($hook, $entity_type, $returnvalue, $params) { $count = friendrequest_count(); if($count) { foreach($returnvalue as $item) { if($item->getName() == 'friends') { $item->setText( $item->getText() . elgg_view('output/url', array( 'href' => 'friendrequests', 'text' => "$count", 'title' => elgg_echo('friendrequest'), )) ); return $returnvalue; } } } return $returnvalue; } function friendrequest_event_create_friend($event, $object_type, $object){var_dump($object);elgg_echo('hola'); if (($object instanceof ElggRelationship) && ($event == 'create') && ($object_type == 'friend')) { //We don't want anything happening here... (no email/etc) //Returning false will interrupt the rest of the chain. //The normal handler for the create friend event has a priority of 500 so it will never be called. return false; } return true; //Shouldn't get here... } function friendrequest_event_create_friendrequest($event, $object_type, $object){ if (($object instanceof ElggRelationship) && ($event == 'create') && ($object_type == 'friendrequest')) { $requester = get_entity($object->guid_one); $requested = get_entity($object->guid_two); $friendrequests_url = elgg_get_site_url() . "friendrequests/"; // Notify target user return notify_user( $requested, $requester, elgg_echo('friendrequest:newfriend:subject', array( $requester->name ), $requested->language), elgg_echo('friendrequest:newfriend:body', array( $requester->name, $friendrequests_url, ), $requested->language) ); } }