From 306844a74237a26ea332468e78c9b5732e3e5fa7 Mon Sep 17 00:00:00 2001 From: Sem Date: Thu, 8 Dec 2011 16:33:51 +0100 Subject: Page created and link added in menu. --- languages/en.php | 11 ++++++++++ manifest.xml | 17 ++++++++++++++ start.php | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 languages/en.php create mode 100644 manifest.xml create mode 100644 start.php diff --git a/languages/en.php b/languages/en.php new file mode 100644 index 000000000..346ea0633 --- /dev/null +++ b/languages/en.php @@ -0,0 +1,11 @@ + 'Friend Requests', +); + +add_translation('en', $english); diff --git a/manifest.xml b/manifest.xml new file mode 100644 index 000000000..8bc2d9cfd --- /dev/null +++ b/manifest.xml @@ -0,0 +1,17 @@ + + + Friend request + Bosssumon and Zac Hopkinson, Lorea + 1.8 + bundled + social + Let users confirm friend requests. Make all friend requests reciprocal + https://lorea.cc/ + (C) Lorea 2011 + GNU General Public License version 2 + + elgg_release + 1.8 + + true + diff --git a/start.php b/start.php new file mode 100644 index 000000000..744a3ef84 --- /dev/null +++ b/start.php @@ -0,0 +1,67 @@ + 'friendrequests', + 'text' => elgg_echo('friendrequest'), + 'href' => "friendrequests", + 'contexts' => array('friends'), + ); + elgg_register_menu_item('page', $params); + } + + $actions_dir = elgg_get_plugins_path().'friendrequest/actions/friendrequest'; + elgg_register_action('friendrequest/approve', "$actions_dir/approve.php"); + elgg_register_action('friendrequest/decline', "$actions_dir/decline.php"); + + //We need to override the friend remove action to remove the relationship we created + elgg_register_action('friends/remove', "$actions_dir/removefriend.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"); + } + + elgg_push_context('friends'); + + $params = array( + 'title' => elgg_echo('friendrequest'), + 'filter' => '', + ); + + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($params['title'], $body); + return true; +} + +function friendrequest_event_create_friend(){ + +} + +function friendrequest_event_create_friendrequest(){ + +} -- cgit v1.2.3 From f14c7d977d57e7a2cca8bff8931a56fe405cf50c Mon Sep 17 00:00:00 2001 From: Sem Date: Thu, 8 Dec 2011 18:48:23 +0100 Subject: Add friend refactored. --- actions/friends/add.php | 24 ++++++++++++++++++++++++ languages/en.php | 6 ++++++ start.php | 17 +++++++++++++---- 3 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 actions/friends/add.php diff --git a/actions/friends/add.php b/actions/friends/add.php new file mode 100644 index 000000000..702a384d3 --- /dev/null +++ b/actions/friends/add.php @@ -0,0 +1,24 @@ +guid, "friendrequest", $user->guid) + || check_entity_relationship($friend->guid, "friend", $user->guid)) { + $user->addFriend($friend->guid); + remove_entity_relationship($friend->guid, "friendrequest", $user->guid); + + system_message(elgg_echo("friends:add:successful", array($friend->name))); + +} elseif(add_entity_relationship($user->guid, "friendrequest", $friend->guid)) { + system_message(elgg_echo("friendrequest:add:successful", array($friend->name))); +} else { + register_error(elgg_echo("friendrequest:add:exists", array($friend->name))); +} + +forward(REFERER); diff --git a/languages/en.php b/languages/en.php index 346ea0633..1f9e88a46 100644 --- a/languages/en.php +++ b/languages/en.php @@ -6,6 +6,12 @@ $english = array( 'friendrequest' => 'Friend Requests', + + 'friendrequest:add:successful' => 'You sent a friend request to %s. She has to accept it. Give she time.', + 'friendrequest:add:failure' => 'Oops! There was a problem while trying to send the request. Try it again.', + 'friendrequest:add:exists' => 'You already sent a friend request to %s, don\'t be so intense.', + + ); add_translation('en', $english); diff --git a/start.php b/start.php index 744a3ef84..0b38a341d 100644 --- a/start.php +++ b/start.php @@ -27,7 +27,9 @@ function friendrequest_init() { elgg_register_action('friendrequest/decline', "$actions_dir/decline.php"); //We need to override the friend remove action to remove the relationship we created - elgg_register_action('friends/remove', "$actions_dir/removefriend.php"); + $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"); //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. @@ -58,10 +60,17 @@ function friendrequest_page_handler($page){ return true; } -function friendrequest_event_create_friend(){ - +function friendrequest_event_create_friend($event, $object_type, $object){ + 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(){ +function friendrequest_event_create_friendrequest($event, $object_type, $object){ } -- cgit v1.2.3 From 5c4dc1474ae89437f52101039f1452c267c252a7 Mon Sep 17 00:00:00 2001 From: Sem Date: Thu, 8 Dec 2011 19:15:33 +0100 Subject: Added friend/remove and friendrequest/decline actions. --- actions/friendrequest/decline.php | 12 ++++++++++++ actions/friends/add.php | 3 ++- actions/friends/remove.php | 24 ++++++++++++++++++++++++ start.php | 7 +++---- 4 files changed, 41 insertions(+), 5 deletions(-) create mode 100755 actions/friendrequest/decline.php create mode 100644 actions/friends/remove.php diff --git a/actions/friendrequest/decline.php b/actions/friendrequest/decline.php new file mode 100755 index 000000000..5b48acfb4 --- /dev/null +++ b/actions/friendrequest/decline.php @@ -0,0 +1,12 @@ +guid, 'friendrequest', $user->guid)) { + system_message(elgg_echo("friendrequest:remove:success")); +} else { + system_message(elgg_echo("friendrequest:remove:fail")); +} + +forward(REFERER); diff --git a/actions/friends/add.php b/actions/friends/add.php index 702a384d3..5d4ecc078 100644 --- a/actions/friends/add.php +++ b/actions/friends/add.php @@ -9,7 +9,8 @@ if(!elgg_instanceof($friend, 'user')){ } if(check_entity_relationship($friend->guid, "friendrequest", $user->guid) - || check_entity_relationship($friend->guid, "friend", $user->guid)) { + || check_entity_relationship($friend->guid, "friend", $user->guid)) { + $user->addFriend($friend->guid); remove_entity_relationship($friend->guid, "friendrequest", $user->guid); diff --git a/actions/friends/remove.php b/actions/friends/remove.php new file mode 100644 index 000000000..4ba7bc572 --- /dev/null +++ b/actions/friends/remove.php @@ -0,0 +1,24 @@ +name))); + forward(REFERER); +} + +if(check_entity_relationship($user->guid, "friend", $friend->guid)) { + try { + $user->removeFriend($friend->guid); + if(check_entity_relationship($friend->guid, "friend", $user->guid)){ + $friend->removeFriend($user->guid); + } + } catch (Exception $e) { + register_error(elgg_echo('friendrequest:remove:failure', array($friend->name))); + forward(REFERER); + } +} + +system_message(elgg_echo('friendrequest:remove:successful', array($friend->name))); +forward(REFERER); diff --git a/start.php b/start.php index 0b38a341d..e044cc9b5 100644 --- a/start.php +++ b/start.php @@ -22,15 +22,14 @@ function friendrequest_init() { elgg_register_menu_item('page', $params); } - $actions_dir = elgg_get_plugins_path().'friendrequest/actions/friendrequest'; - elgg_register_action('friendrequest/approve', "$actions_dir/approve.php"); - elgg_register_action('friendrequest/decline', "$actions_dir/decline.php"); - //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); -- cgit v1.2.3 From ab09c2001bd9384c4e3c2964c5d1a39a0e91b013 Mon Sep 17 00:00:00 2001 From: Sem Date: Thu, 8 Dec 2011 21:19:02 +0100 Subject: Arranged page to see friend requests. --- actions/friendrequest/decline.php | 4 +-- actions/friends/remove.php | 6 ++-- languages/en.php | 6 ++++ start.php | 25 +++++++++++++++-- views/default/friendrequest/requests.php | 47 ++++++++++++++++++++++++++++++++ 5 files changed, 80 insertions(+), 8 deletions(-) mode change 100755 => 100644 actions/friendrequest/decline.php create mode 100644 views/default/friendrequest/requests.php diff --git a/actions/friendrequest/decline.php b/actions/friendrequest/decline.php old mode 100755 new mode 100644 index 5b48acfb4..247023c60 --- a/actions/friendrequest/decline.php +++ b/actions/friendrequest/decline.php @@ -4,9 +4,9 @@ $user = elgg_get_logged_in_user_entity(); $friend = get_entity(sanitize_int(get_input("guid"))); if(remove_entity_relationship($friend->guid, 'friendrequest', $user->guid)) { - system_message(elgg_echo("friendrequest:remove:success")); + system_message(elgg_echo("friendrequest:decline:success", array($user->name))); } else { - system_message(elgg_echo("friendrequest:remove:fail")); + system_message(elgg_echo("friendrequest:decline:fail")); } forward(REFERER); diff --git a/actions/friends/remove.php b/actions/friends/remove.php index 4ba7bc572..1ad9471b3 100644 --- a/actions/friends/remove.php +++ b/actions/friends/remove.php @@ -4,7 +4,7 @@ $friend = get_entity(sanitize_int(get_input('friend'))); $user = elgg_get_logged_in_user_entity(); if(!elgg_instanceof($friend, 'user')){ - register_error(elgg_echo('friendrequest:remove:failure', array($friend->name))); + register_error(elgg_echo('friends:remove:failure', array($friend->name))); forward(REFERER); } @@ -15,10 +15,10 @@ if(check_entity_relationship($user->guid, "friend", $friend->guid)) { $friend->removeFriend($user->guid); } } catch (Exception $e) { - register_error(elgg_echo('friendrequest:remove:failure', array($friend->name))); + register_error(elgg_echo('friends:remove:failure', array($friend->name))); forward(REFERER); } } -system_message(elgg_echo('friendrequest:remove:successful', array($friend->name))); +system_message(elgg_echo('friends:remove:successful', array($friend->name))); forward(REFERER); diff --git a/languages/en.php b/languages/en.php index 1f9e88a46..821278c1a 100644 --- a/languages/en.php +++ b/languages/en.php @@ -11,6 +11,12 @@ $english = array( 'friendrequest:add:failure' => 'Oops! There was a problem while trying to send the request. Try it again.', 'friendrequest:add:exists' => 'You already sent a friend request to %s, don\'t be so intense.', + 'friendrequest:decline:success' => 'You just delined %s friend request', + 'friendrequest:decline:fail' => 'For any reason this friend request cannot be deleted', + + 'friendrequest:remove:check' => 'Are you sure you want to decline the friend request?', + 'friendrequest:none' => 'No pending friend requests.', + ); diff --git a/start.php b/start.php index e044cc9b5..f3ea460cc 100644 --- a/start.php +++ b/start.php @@ -46,16 +46,35 @@ function friendrequest_page_handler($page){ 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( - 'title' => elgg_echo('friendrequest'), + 'content' => $content, + 'title' => $title, 'filter' => '', ); - $body = elgg_view_layout('content', $params); - echo elgg_view_page($params['title'], $body); + echo elgg_view_page($title, $body); + return true; } diff --git a/views/default/friendrequest/requests.php b/views/default/friendrequest/requests.php new file mode 100644 index 000000000..1680bdc4e --- /dev/null +++ b/views/default/friendrequest/requests.php @@ -0,0 +1,47 @@ +'; + foreach ($vars['requests'] as $user) { + $icon = elgg_view_entity_icon($user, 'tiny', array('use_hover' => 'true')); + + $user_title = elgg_view('output/url', array( + 'href' => $user->getURL(), + 'text' => $user->name, + 'is_trusted' => true, + )); + + $url = "action/friends/add?friend={$user->guid}"; + $accept_button = elgg_view('output/url', array( + 'href' => $url, + 'text' => elgg_echo('accept'), + 'class' => 'elgg-button elgg-button-submit', + 'is_action' => true, + 'is_trusted' => true, + )); + + $url = "action/friendrequest/decline?guid={$user->guid}"; + $delete_button = elgg_view('output/confirmlink', array( + 'href' => $url, + 'confirm' => elgg_echo('friendrequest:remove:check'), + 'text' => elgg_echo('delete'), + 'class' => 'elgg-button elgg-button-delete mlm', + )); + + $body = "

$user_title

"; + $alt = $accept_button . $delete_button; + + echo '
  • '; + echo elgg_view_image_block($icon, $body, array('image_alt' => $alt)); + echo '
  • '; + } + echo ''; +} else { + echo '

    ' . elgg_echo('friendrequest:none') . "

    "; +} -- cgit v1.2.3 From 862cec3dec4bdb4983a22db7d79d2aae4f1031fd Mon Sep 17 00:00:00 2001 From: Sem Date: Thu, 8 Dec 2011 21:54:34 +0100 Subject: Added river on add a friend. --- actions/friends/add.php | 1 + 1 file changed, 1 insertion(+) diff --git a/actions/friends/add.php b/actions/friends/add.php index 5d4ecc078..1ead0dc9e 100644 --- a/actions/friends/add.php +++ b/actions/friends/add.php @@ -14,6 +14,7 @@ if(check_entity_relationship($friend->guid, "friendrequest", $user->guid) $user->addFriend($friend->guid); remove_entity_relationship($friend->guid, "friendrequest", $user->guid); + add_to_river('river/relationship/friend/create', 'friend', $user->guid, $friend->guid); system_message(elgg_echo("friends:add:successful", array($friend->name))); } elseif(add_entity_relationship($user->guid, "friendrequest", $friend->guid)) { -- cgit v1.2.3 From 33f82b5ada858508d97d81a5e2c686b3ba7d0d9c Mon Sep 17 00:00:00 2001 From: Sem Date: Fri, 9 Dec 2011 02:43:48 +0100 Subject: Added a num of friend requests on menu text and fixed a bug in decline message. --- actions/friendrequest/decline.php | 2 +- start.php | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/actions/friendrequest/decline.php b/actions/friendrequest/decline.php index 247023c60..ca3f1c9e4 100644 --- a/actions/friendrequest/decline.php +++ b/actions/friendrequest/decline.php @@ -4,7 +4,7 @@ $user = elgg_get_logged_in_user_entity(); $friend = get_entity(sanitize_int(get_input("guid"))); if(remove_entity_relationship($friend->guid, 'friendrequest', $user->guid)) { - system_message(elgg_echo("friendrequest:decline:success", array($user->name))); + system_message(elgg_echo("friendrequest:decline:success", array($friend->name))); } else { system_message(elgg_echo("friendrequest:decline:fail")); } diff --git a/start.php b/start.php index f3ea460cc..3f01824ec 100644 --- a/start.php +++ b/start.php @@ -13,9 +13,19 @@ function friendrequest_init() { elgg_register_page_handler('friendrequests', 'friendrequest_page_handler'); if (elgg_is_logged_in()) { + + $count = elgg_get_entities_from_relationship(array( + 'type' => 'user', + 'relationship' => 'friendrequest', + 'relationship_guid' => $page_owner->guid, + 'inverse_relationship' => true, + 'limit' => 0, + 'count' => true, + )); + $params = array( 'name' => 'friendrequests', - 'text' => elgg_echo('friendrequest'), + 'text' => elgg_echo('friendrequest').($count? " ($count)": ""), 'href' => "friendrequests", 'contexts' => array('friends'), ); -- cgit v1.2.3 From 342ef1d2eac8914793a24ee1627eeaa8c57c9038 Mon Sep 17 00:00:00 2001 From: Sem Date: Fri, 9 Dec 2011 03:26:55 +0100 Subject: Added number in the topbar icon. --- start.php | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/start.php b/start.php index 3f01824ec..44e4cec68 100644 --- a/start.php +++ b/start.php @@ -13,16 +13,7 @@ function friendrequest_init() { elgg_register_page_handler('friendrequests', 'friendrequest_page_handler'); if (elgg_is_logged_in()) { - - $count = elgg_get_entities_from_relationship(array( - 'type' => 'user', - 'relationship' => 'friendrequest', - 'relationship_guid' => $page_owner->guid, - 'inverse_relationship' => true, - 'limit' => 0, - 'count' => true, - )); - + $count = friendrequest_count(); $params = array( 'name' => 'friendrequests', 'text' => elgg_echo('friendrequest').($count? " ($count)": ""), @@ -32,6 +23,8 @@ function friendrequest_init() { 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"); @@ -88,6 +81,36 @@ function friendrequest_page_handler($page){ 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){ if (($object instanceof ElggRelationship) && ($event == 'create') && ($object_type == 'friend')) { //We don't want anything happening here... (no email/etc) -- cgit v1.2.3 From 0722c977bbd3a1bac5f6cb080022bca2ff5766cb Mon Sep 17 00:00:00 2001 From: Sem Date: Fri, 9 Dec 2011 17:58:03 +0100 Subject: Registered an event handler to notify users about friend requests. --- languages/en.php | 8 ++++++++ start.php | 24 +++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/languages/en.php b/languages/en.php index 821278c1a..9b34a6030 100644 --- a/languages/en.php +++ b/languages/en.php @@ -17,6 +17,14 @@ $english = array( 'friendrequest:remove:check' => 'Are you sure you want to decline the friend request?', 'friendrequest:none' => 'No pending friend requests.', + 'friendrequest:new:subject' => '%s want to be your friend', + 'friendrequest:new:body' => '%s want to be your friend. She is waiting that you aprovate her petition. Do not her wait! + +You can see your pending friend requests following this link (remember you have to be logged in to see it): + + %s + +(Do not try to reply this mail, because is a machine who is sending it)', ); diff --git a/start.php b/start.php index 44e4cec68..4becf5efa 100644 --- a/start.php +++ b/start.php @@ -38,7 +38,7 @@ function friendrequest_init() { //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'); + elgg_register_event_handler('create', 'friendrequest', 'friendrequest_event_create_friendrequest'); } @@ -111,7 +111,7 @@ function friendrequest_topbar_menu($hook, $entity_type, $returnvalue, $params) { return $returnvalue; } -function friendrequest_event_create_friend($event, $object_type, $object){ +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) @@ -123,5 +123,23 @@ function friendrequest_event_create_friend($event, $object_type, $object){ } 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) + ); + } } -- cgit v1.2.3 From e1081bd87837f5bf5fdbaf26b4b9bb8e50c61ff5 Mon Sep 17 00:00:00 2001 From: Sem Date: Sat, 10 Dec 2011 00:51:57 +0100 Subject: Added more languages. --- languages/ca.php | 31 +++++++++++++++++++++++++++++++ languages/en.php | 2 +- languages/es.php | 31 +++++++++++++++++++++++++++++++ languages/gl.php | 31 +++++++++++++++++++++++++++++++ languages/pt.php | 31 +++++++++++++++++++++++++++++++ languages/sr.php | 31 +++++++++++++++++++++++++++++++ 6 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 languages/ca.php create mode 100644 languages/es.php create mode 100644 languages/gl.php create mode 100644 languages/pt.php create mode 100644 languages/sr.php diff --git a/languages/ca.php b/languages/ca.php new file mode 100644 index 000000000..6b22d7c8c --- /dev/null +++ b/languages/ca.php @@ -0,0 +1,31 @@ + 'Peticions d\'amistat', + + 'friendrequest:add:successful' => 'Has enviat una petició d\'amistat a %s. Has d\'aprovar-la abans de que surti al teu llistat d\'amistats. Dona-li temps :)', + 'friendrequest:add:failure' => 'Ui! no se sap gaire bé perquè, però el sistema no pot completar la teva petició. Torna-ho a provar més tard o posa\'t en contacte amb l\'administrador/a.', + 'friendrequest:add:exists' => 'Ja has enviat en anterioritat una petició d\'admistat a %s. Ja ho llegirà, sigues pacient! ;)', + + 'friendrequest:decline:success' => 'Has esborrat la petició d\'amistat', + 'friendrequest:decline:fail' => 'No s\'ha pogut esborrar la petició d\'amistat. Torna-ho a provar més tard o posa\'t en contacte amb l\'administrador/a.', + + 'friendrequest:remove:check' => 'Estàs segura que vols eliminar aquesta petició d\'amistat?', + 'friendrequest:none' => 'No queden peticions d\'amistat pendents.', + + 'friendrequest:new:subject' => '%s vol ser el teu amic', + 'friendrequest:new:body' => '%s vol ser una amistat teva! Està esperant que aprovis la seva petició, no facis que s\'impacienti :) + +Pots veure les peticions que tens pendents a través del següent vincle (recorda que has d\'estar autentificat/da a la xarxa per fer-ho): + +%s + +Siusplau no responguis aquest correu, si ho fas no ens en fem responsables >:)', + +); + +add_translation('ca', $catalan); diff --git a/languages/en.php b/languages/en.php index 9b34a6030..40bfbd36a 100644 --- a/languages/en.php +++ b/languages/en.php @@ -11,7 +11,7 @@ $english = array( 'friendrequest:add:failure' => 'Oops! There was a problem while trying to send the request. Try it again.', 'friendrequest:add:exists' => 'You already sent a friend request to %s, don\'t be so intense.', - 'friendrequest:decline:success' => 'You just delined %s friend request', + 'friendrequest:decline:success' => 'You just declined %s friend request', 'friendrequest:decline:fail' => 'For any reason this friend request cannot be deleted', 'friendrequest:remove:check' => 'Are you sure you want to decline the friend request?', diff --git a/languages/es.php b/languages/es.php new file mode 100644 index 000000000..a5c60df34 --- /dev/null +++ b/languages/es.php @@ -0,0 +1,31 @@ + 'Peticiones de amistad', + + 'friendrequest:add:successful' => 'Has enviado una petición de amistad a %s. Tiene que aprobarla antes de salir en tu lista de amigos. Dale tiempo :)', + 'friendrequest:add:failure' => 'Ups!, no se sabe muy bien por qué, pero el sistema no puede completar tu petición. Inténtalo de nuevo o ponte en contacto con lxs administradorxs.', + 'friendrequest:add:exists' => 'Ya has enviado antes una petición de amistad a %s. Ya lo leerá, ¡ten paciencia!', + + 'friendrequest:decline:success' => 'Has rechazado la petición de amistad de %s', + 'friendrequest:decline:fail' => 'No ha sido posible borrar la petición de amistad. Inténtalo de nuevo o ponte en contacto con lxs administradorxs.', + + 'friendrequest:remove:check' => 'Estás seguro de rechazar esta petición de amistad?', + 'friendrequest:none' => 'No hay peticiones de amistad pendientes.', + + 'friendrequest:new:subject' => '%s quiere ser tu amigx', + 'friendrequest:new:body' => '%s quiere ser tu amigx. Está esperando a que apruebes su petición, no hagas que se impaciente ;) + +Puedes ver las peticiones que tienes pendientes a través del siguiente link (recuerda que tienes estar logeadx en la red para poder hacerlo): + + %s + +No puedes responder a este email porque soy una máquina y no te leeré, no lo intentes ;)', + +); + +add_translation('es', $spanish); diff --git a/languages/gl.php b/languages/gl.php new file mode 100644 index 000000000..9b8c12440 --- /dev/null +++ b/languages/gl.php @@ -0,0 +1,31 @@ + 'Peticións de amizade', + + 'friendrequest:add:successful' => 'Enviaches unha petición de amizade a %s. Ten que aprobala se quere, dálle tempo :)', + 'friendrequest:add:failure' => 'Mimá!, non se sabe moi ben por qué, pero o sistema non pode completa-la túa petición. Téntao de novo ou ponte en contacto cxs administran a rede.', + 'friendrequest:add:exists' => 'Xa lle tes enviado unha petición de amizade s %s. Xa o lerá, ten paciencia meu!', + + 'friendrequest:decline:success' => 'Borrache-la petición de amizade', + 'friendrequest:decline:fail' => 'Non foi posible borra-la petición de amizade. Téntao de novo ou ponte en contacto coxs que administran a rede.', + +// 'friendrequest:remove:check' => 'Are you sure you want to decline the friend request?', +// 'friendrequest:none' => 'No pending friend requests.', + + 'friendrequest:new:subject' => '%s quere ter amizade contigo', + 'friendrequest:new:body' => '%s quere ter amizade contigo. Está a agardar a que aprobe-la súa petición, non fagas que se impaciente ;) + +Si te logueaches na rede, podes ve-las peticións que tes pendentes a través da seguinte ligazón: + +%s + +Non podes responder a este email porque son unha máquina e non te vou ler, non o tentes ;)', + +); + +add_translation('gl', $galician); diff --git a/languages/pt.php b/languages/pt.php new file mode 100644 index 000000000..73010fd06 --- /dev/null +++ b/languages/pt.php @@ -0,0 +1,31 @@ + 'Pedidos de amizade', + + 'friendrequest:add:successful' => 'Você enviou um pedido de amizade a &s. Elx tem que aprova-la antes de aparecer na tua lista de amigxs. Espere um pouco :)', + 'friendrequest:add:failure' => 'Erro. Não foi possível completar seu pedido. Tente novamente ou entre em contato com xs administradorxs.', + 'friendrequest:add:exists' => 'Você já enviou um pedido de amizade a &s. Elx Leerá em breve, seja paciente!', + + 'friendrequest:decline:success' => 'O pedido de amizade foi apagado corretamente', + 'friendrequest:decline:fail' => 'Não foi possível apagar o pedido de amizade. Tente novamente ou entre em contato com xs administradorxs.', + +// 'friendrequest:remove:check' => 'Are you sure you want to decline the friend request?', +// 'friendrequest:none' => 'No pending friend requests.', + + 'friendrequest:new:subject' => '%s quer ser teu/tua amigx!', + 'friendrequest:new:body' => '%s quer ser teu/tua amigx. Elx está esperando que você aceite o pedido. + +Você pode ver os teus pedidos pendentes clicando em (lembre-se que você tem que estar loga)): + +%s + +Não responda a esta mensagem porque eu sou uma máquina e não vou te ler ;)', + +); + +add_translation('pt', $portuguese); diff --git a/languages/sr.php b/languages/sr.php new file mode 100644 index 000000000..d7d693a09 --- /dev/null +++ b/languages/sr.php @@ -0,0 +1,31 @@ + 'Dodaj u prijatelje', + + 'friendrequest:add:successful' => 'Zahtevao si da postanes prijatelj sa %s. Moras sacekati da odobri tvoj zahtev pre nego sto se pojave u tvojoj listi prijatelja.', + 'friendrequest:add:failure' => 'Izvini, zbog sistemske greske nismo u mogucnosti da izvrsimo zahtev. Molim pokusaj ponovo.', + 'friendrequest:add:exists' => 'Vec si pozvao %s da budete prijatelji.', + + 'friendrequest:decline:success' => 'Uspesno uklonjen zahtev za prijateljstvo.', + 'friendrequest:decline:fail' => 'Nemogu da uklonim zahtev za prijateljstvo.', + +// 'friendrequest:remove:check' => 'Are you sure you want to decline the friend request?', +// 'friendrequest:none' => 'No pending friend requests.', + + 'friendrequest:new:subject' => '%s zeli da bude tvoj prijatelj!', + 'friendrequest:new:body' => '%s zeli da bude tvoj prijatelj! Ali ceka da odobris zahtev...uloguj se sada i odobri zahtev! + +Mozes pogledati cekajuce zahteve na: + +%s + +(Ne mozes odgovoriti na ovaj email.)', + +); + +add_translation('sr', $serbian); -- cgit v1.2.3 From b19fa6f54d89137ca55b3ddd343c5f22da16839a Mon Sep 17 00:00:00 2001 From: Sem Date: Sat, 10 Dec 2011 01:24:32 +0100 Subject: Removed "Friends of" menu item. --- start.php | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/start.php b/start.php index 4becf5efa..2ea3c80f9 100644 --- a/start.php +++ b/start.php @@ -12,18 +12,8 @@ function friendrequest_init() { //This will let users view their friend requests elgg_register_page_handler('friendrequests', 'friendrequest_page_handler'); - if (elgg_is_logged_in()) { - $count = friendrequest_count(); - $params = array( - 'name' => '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'); + elgg_register_plugin_hook_handler('register', 'menu:page', 'friendrequest_page_menu'); //We need to override the friend remove action to remove the relationship we created $actions_dir = elgg_get_plugins_path().'friendrequest/actions/friends'; @@ -111,6 +101,22 @@ function friendrequest_topbar_menu($hook, $entity_type, $returnvalue, $params) { return $returnvalue; } +function friendrequest_page_menu($hook, $entity_type, $returnvalue, $params) { + if(elgg_in_context('friends')){ + foreach($returnvalue as $i => $item) { + if($item->getName() == 'friends:of') { + unset($returnvalue[$i]); + } + } + if (elgg_is_logged_in()) { + $count = friendrequest_count(); + $item = new ElggMenuItem('friendrequests', elgg_echo('friendrequest').($count? " ($count)": ""), "friendrequests"); + $returnvalue[] = $item; + } + } + 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) -- cgit v1.2.3 From 3bbff4f7bd1ae793a99ba5c6b04f17e4cdb34514 Mon Sep 17 00:00:00 2001 From: Sem Date: Tue, 7 Feb 2012 23:50:59 +0100 Subject: Friendship must be reciprocal. --- actions/friends/add.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/actions/friends/add.php b/actions/friends/add.php index 1ead0dc9e..46e2a6c09 100644 --- a/actions/friends/add.php +++ b/actions/friends/add.php @@ -12,6 +12,8 @@ if(check_entity_relationship($friend->guid, "friendrequest", $user->guid) || check_entity_relationship($friend->guid, "friend", $user->guid)) { $user->addFriend($friend->guid); + + $friend->addFriend($user->guid); remove_entity_relationship($friend->guid, "friendrequest", $user->guid); add_to_river('river/relationship/friend/create', 'friend', $user->guid, $friend->guid); -- cgit v1.2.3 From f3aee5808ae6adf499f971310804da995032a723 Mon Sep 17 00:00:00 2001 From: Sem Date: Sat, 18 Feb 2012 16:17:22 +0100 Subject: Both friendships in the river. --- actions/friends/add.php | 1 + 1 file changed, 1 insertion(+) diff --git a/actions/friends/add.php b/actions/friends/add.php index 46e2a6c09..04168c4c3 100644 --- a/actions/friends/add.php +++ b/actions/friends/add.php @@ -17,6 +17,7 @@ if(check_entity_relationship($friend->guid, "friendrequest", $user->guid) remove_entity_relationship($friend->guid, "friendrequest", $user->guid); add_to_river('river/relationship/friend/create', 'friend', $user->guid, $friend->guid); + add_to_river('river/relationship/friend/create', 'friend', $friend->guid, $user->guid); system_message(elgg_echo("friends:add:successful", array($friend->name))); } elseif(add_entity_relationship($user->guid, "friendrequest", $friend->guid)) { -- cgit v1.2.3 From 5acba1ab8c4fac37dccf33cc47bcab61a96f5cb8 Mon Sep 17 00:00:00 2001 From: Sem Date: Mon, 7 May 2012 18:56:20 +0200 Subject: Modified spanish language file. --- languages/es.php | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/languages/es.php b/languages/es.php index a5c60df34..1677ef4fb 100644 --- a/languages/es.php +++ b/languages/es.php @@ -1,31 +1,22 @@ 'Peticiones de amistad', - - 'friendrequest:add:successful' => 'Has enviado una petición de amistad a %s. Tiene que aprobarla antes de salir en tu lista de amigos. Dale tiempo :)', - 'friendrequest:add:failure' => 'Ups!, no se sabe muy bien por qué, pero el sistema no puede completar tu petición. Inténtalo de nuevo o ponte en contacto con lxs administradorxs.', - 'friendrequest:add:exists' => 'Ya has enviado antes una petición de amistad a %s. Ya lo leerá, ¡ten paciencia!', - - 'friendrequest:decline:success' => 'Has rechazado la petición de amistad de %s', - 'friendrequest:decline:fail' => 'No ha sido posible borrar la petición de amistad. Inténtalo de nuevo o ponte en contacto con lxs administradorxs.', - - 'friendrequest:remove:check' => 'Estás seguro de rechazar esta petición de amistad?', - 'friendrequest:none' => 'No hay peticiones de amistad pendientes.', - - 'friendrequest:new:subject' => '%s quiere ser tu amigx', - 'friendrequest:new:body' => '%s quiere ser tu amigx. Está esperando a que apruebes su petición, no hagas que se impaciente ;) +$es = array ( + 'friendrequest' => 'Peticiones de amistad', + 'friendrequest:add:successful' => 'Has enviado una petición de amistad a %s. Tiene que aprobarla antes de salir en tu lista de amigos. Dale tiempo :)', + 'friendrequest:add:failure' => 'Ups!, no se sabe muy bien por qué, pero el sistema no puede completar tu petición. Inténtalo de nuevo o ponte en contacto con lxs administradorxs.', + 'friendrequest:add:exists' => 'Ya has enviado antes una petición de amistad a %s. Ya lo leerá, ¡ten paciencia!', + 'friendrequest:decline:success' => 'Has rechazado la petición de amistad de %s', + 'friendrequest:decline:fail' => 'No ha sido posible borrar la petición de amistad. Inténtalo de nuevo o ponte en contacto con lxs administradorxs.', + 'friendrequest:remove:check' => 'Estás seguro de rechazar esta petición de amistad?', + 'friendrequest:none' => 'No hay peticiones de amistad pendientes.', + 'friendrequest:new:subject' => '%s quiere ser tu amigx', + 'friendrequest:new:body' => '%s quiere ser tu amigx. Está esperando a que apruebes su petición, no hagas que se impaciente ;) Puedes ver las peticiones que tienes pendientes a través del siguiente link (recuerda que tienes estar logeadx en la red para poder hacerlo): %s No puedes responder a este email porque soy una máquina y no te leeré, no lo intentes ;)', - ); -add_translation('es', $spanish); +add_translation("es", $es); + -- cgit v1.2.3 From bc99d5609275d0949cb1c4830cf6e7c1c5a5d758 Mon Sep 17 00:00:00 2001 From: Sem Date: Fri, 12 Oct 2012 17:55:22 +0200 Subject: Updated languages. --- languages/ca.php | 39 ++++++++++++++------------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/languages/ca.php b/languages/ca.php index 6b22d7c8c..ab17319c1 100644 --- a/languages/ca.php +++ b/languages/ca.php @@ -1,31 +1,20 @@ 'Sol·licituds d\'Amistat', + 'friendrequest:add:successful' => 'Has enviat una sol·licitud d\'amistat a %s. La ha d\'acceptar. Dóna-li temps.', + 'friendrequest:add:failure' => 'Oops! Hi ha hagut algun problema mentre s\'intentava enviar la sol·licitud. Torna-ho a provar.', + 'friendrequest:add:exists' => 'Ja has enviat la sol·licitud d\'amistat a %s, no siguis tan insistent.', + 'friendrequest:decline:success' => 'Has denegat la sol·licitud d\'amistat de %s', + 'friendrequest:decline:fail' => 'Per algun motiu aquesta petició d\'amistat no pot ésser eliminada', + 'friendrequest:remove:check' => 'Estas segur de que vols denegar la sol·licitud d\'amistat?', + 'friendrequest:none' => 'No hi ha sol·licitud d\'amistat pendents.', + 'friendrequest:new:subject' => '%s vol ser la teva amiga', + 'friendrequest:new:body' => '% vol ser la teva amiga. Està esperant que aprovis la seva sol·licitud. No la facis esperar! -$catalan = array( - 'friendrequest' => 'Peticions d\'amistat', - - 'friendrequest:add:successful' => 'Has enviat una petició d\'amistat a %s. Has d\'aprovar-la abans de que surti al teu llistat d\'amistats. Dona-li temps :)', - 'friendrequest:add:failure' => 'Ui! no se sap gaire bé perquè, però el sistema no pot completar la teva petició. Torna-ho a provar més tard o posa\'t en contacte amb l\'administrador/a.', - 'friendrequest:add:exists' => 'Ja has enviat en anterioritat una petició d\'admistat a %s. Ja ho llegirà, sigues pacient! ;)', - - 'friendrequest:decline:success' => 'Has esborrat la petició d\'amistat', - 'friendrequest:decline:fail' => 'No s\'ha pogut esborrar la petició d\'amistat. Torna-ho a provar més tard o posa\'t en contacte amb l\'administrador/a.', - - 'friendrequest:remove:check' => 'Estàs segura que vols eliminar aquesta petició d\'amistat?', - 'friendrequest:none' => 'No queden peticions d\'amistat pendents.', - - 'friendrequest:new:subject' => '%s vol ser el teu amic', - 'friendrequest:new:body' => '%s vol ser una amistat teva! Està esperant que aprovis la seva petició, no facis que s\'impacienti :) - -Pots veure les peticions que tens pendents a través del següent vincle (recorda que has d\'estar autentificat/da a la xarxa per fer-ho): +Pots veure les teves sol·licituds d\'amistat pendents clicant a aquest link (recorda que has d\'estar loginat per veure-la): %s -Siusplau no responguis aquest correu, si ho fas no ens en fem responsables >:)', - +(No responguis aquest mail, perquè és una màquina qui l\'envia)', ); - -add_translation('ca', $catalan); +add_translation("ca", $language); \ No newline at end of file -- cgit v1.2.3 From 3545f0d797ee157bfa1654b318cf0a14e1637483 Mon Sep 17 00:00:00 2001 From: Sem Date: Thu, 22 Aug 2013 17:34:15 -0400 Subject: Added @override keyword at some actions and views --- actions/friends/add.php | 3 +++ actions/friends/remove.php | 3 +++ 2 files changed, 6 insertions(+) diff --git a/actions/friends/add.php b/actions/friends/add.php index 04168c4c3..3e1c9b2d4 100644 --- a/actions/friends/add.php +++ b/actions/friends/add.php @@ -1,4 +1,7 @@ Date: Fri, 23 Aug 2013 04:57:17 +0200 Subject: Updated to Elgg 1.8.16. --- actions/friends/add.php | 44 ++++++++++++++++++++++++++++++-------------- actions/friends/remove.php | 43 +++++++++++++++++++++++++++---------------- 2 files changed, 57 insertions(+), 30 deletions(-) diff --git a/actions/friends/add.php b/actions/friends/add.php index 04168c4c3..38c29448b 100644 --- a/actions/friends/add.php +++ b/actions/friends/add.php @@ -1,29 +1,45 @@ guid, "friendrequest", $user->guid) || check_entity_relationship($friend->guid, "friend", $user->guid)) { - - $user->addFriend($friend->guid); - $friend->addFriend($user->guid); - remove_entity_relationship($friend->guid, "friendrequest", $user->guid); - - add_to_river('river/relationship/friend/create', 'friend', $user->guid, $friend->guid); - add_to_river('river/relationship/friend/create', 'friend', $friend->guid, $user->guid); - system_message(elgg_echo("friends:add:successful", array($friend->name))); - + try { + if (!$user->addFriend($friend_guid)) { + $errors = true; + } + remove_entity_relationship($friend->guid, "friendrequest", $user->guid); + } catch (Exception $e) { + register_error(elgg_echo("friends:add:failure", array($friend->name))); + $errors = true; + } + if (!$errors) { + // add to river + add_to_river('river/relationship/friend/create', 'friend', $user->guid, $friend->guid); + add_to_river('river/relationship/friend/create', 'friend', $friend->guid, $user->guid); + system_message(elgg_echo("friends:add:successful", array($friend->name))); + } } elseif(add_entity_relationship($user->guid, "friendrequest", $friend->guid)) { system_message(elgg_echo("friendrequest:add:successful", array($friend->name))); } else { register_error(elgg_echo("friendrequest:add:exists", array($friend->name))); } +// Forward back to the page you friended the user on forward(REFERER); diff --git a/actions/friends/remove.php b/actions/friends/remove.php index 1ad9471b3..786f08352 100644 --- a/actions/friends/remove.php +++ b/actions/friends/remove.php @@ -1,24 +1,35 @@ name))); - forward(REFERER); +// Get the user +try{ + if ($friend instanceof ElggUser) { + elgg_get_logged_in_user_entity()->removeFriend($friend_guid); + $ia = elgg_set_ignore_access(true); + $friend->removeFriend($elgg_get_logged_in_user_guid()); + elgg_set_ignore_access($ia); + } else { + register_error(elgg_echo("friends:remove:failure", array($friend->name))); + $errors = true; + } +} catch (Exception $e) { + register_error(elgg_echo("friends:remove:failure", array($friend->name))); + $errors = true; } -if(check_entity_relationship($user->guid, "friend", $friend->guid)) { - try { - $user->removeFriend($friend->guid); - if(check_entity_relationship($friend->guid, "friend", $user->guid)){ - $friend->removeFriend($user->guid); - } - } catch (Exception $e) { - register_error(elgg_echo('friends:remove:failure', array($friend->name))); - forward(REFERER); - } +if (!$errors) { + system_message(elgg_echo("friends:remove:successful", array($friend->name))); } -system_message(elgg_echo('friends:remove:successful', array($friend->name))); +// Forward back to the page you made the friend on forward(REFERER); -- cgit v1.2.3 From 3d06a9f35740be34ec36509f76d4ce874c80e808 Mon Sep 17 00:00:00 2001 From: Sem Date: Sat, 24 Aug 2013 12:04:08 +0200 Subject: Fixed add and remove friend actions. --- actions/friends/add.php | 8 +++++++- actions/friends/remove.php | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/actions/friends/add.php b/actions/friends/add.php index c464a8162..e6efe1db1 100644 --- a/actions/friends/add.php +++ b/actions/friends/add.php @@ -26,7 +26,13 @@ if(check_entity_relationship($friend->guid, "friendrequest", $user->guid) if (!$user->addFriend($friend_guid)) { $errors = true; } - remove_entity_relationship($friend->guid, "friendrequest", $user->guid); + + $ia = elgg_set_ignore_access(true); + $friend->addFriend($user->guid); + elgg_set_ignore_access($ia); + + remove_entity_relationship($friend->guid, "friendrequest", $user->guid); + } catch (Exception $e) { register_error(elgg_echo("friends:add:failure", array($friend->name))); $errors = true; diff --git a/actions/friends/remove.php b/actions/friends/remove.php index 936f6f43b..62bccb891 100644 --- a/actions/friends/remove.php +++ b/actions/friends/remove.php @@ -17,7 +17,7 @@ try{ if ($friend instanceof ElggUser) { elgg_get_logged_in_user_entity()->removeFriend($friend_guid); $ia = elgg_set_ignore_access(true); - $friend->removeFriend($elgg_get_logged_in_user_guid()); + $friend->removeFriend(elgg_get_logged_in_user_guid()); elgg_set_ignore_access($ia); } else { register_error(elgg_echo("friends:remove:failure", array($friend->name))); -- cgit v1.2.3 From 2dab150bd655470c16a1e7cc792ff79ace274347 Mon Sep 17 00:00:00 2001 From: Sem Date: Fri, 8 Nov 2013 07:10:44 +0100 Subject: Bumped version 1.8.0 --- manifest.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/manifest.xml b/manifest.xml index 8bc2d9cfd..e5b4aad6a 100644 --- a/manifest.xml +++ b/manifest.xml @@ -2,12 +2,11 @@ Friend request Bosssumon and Zac Hopkinson, Lorea - 1.8 - bundled + 1.8.0 social Let users confirm friend requests. Make all friend requests reciprocal - https://lorea.cc/ - (C) Lorea 2011 + https://lorea.org/ + (C) Lorea 2011-2013 GNU General Public License version 2 elgg_release -- cgit v1.2.3