From e378f5961943faf16995acda327b81a2d5a0bd05 Mon Sep 17 00:00:00 2001 From: cash Date: Mon, 10 Jan 2011 13:02:04 +0000 Subject: moved most of the groups pages into its library git-svn-id: http://code.elgg.org/elgg/trunk@7867 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/groups/activity.php | 57 -- mod/groups/all.php | 72 -- mod/groups/edit.php | 29 - mod/groups/groupprofile.php | 43 - mod/groups/index.php | 27 - mod/groups/invitations.php | 31 - mod/groups/languages/en.php | 2 +- mod/groups/lib/groups.php | 248 +++++ mod/groups/membership.php | 34 - mod/groups/new.php | 20 - mod/groups/start.php | 1083 ++++++++++---------- .../views/default/groups/group_sort_menu.php | 23 +- .../views/default/groups/profile/buttons.php | 2 +- 13 files changed, 793 insertions(+), 878 deletions(-) delete mode 100644 mod/groups/activity.php delete mode 100644 mod/groups/all.php delete mode 100644 mod/groups/edit.php delete mode 100644 mod/groups/groupprofile.php delete mode 100644 mod/groups/index.php delete mode 100644 mod/groups/invitations.php create mode 100644 mod/groups/lib/groups.php delete mode 100644 mod/groups/membership.php delete mode 100644 mod/groups/new.php (limited to 'mod') diff --git a/mod/groups/activity.php b/mod/groups/activity.php deleted file mode 100644 index 57678be6d..000000000 --- a/mod/groups/activity.php +++ /dev/null @@ -1,57 +0,0 @@ -name, $group->getURL()); -elgg_push_breadcrumb(elgg_echo('groups:activity')); - -$area1 = elgg_view('navigation/breadcrumbs'); - -$limit = get_input("limit", 20); -$offset = get_input("offset", 0); -$group_guid = get_input("group", 7); -// Sanitise variables -- future proof in case they get sourced elsewhere -$limit = (int) $limit; -$offset = (int) $offset; -$group_guid = (int) $group_guid; - -$entities = elgg_get_entities(array( - 'container_guids' => $group_guid, - 'group_by' => 'e.guid' -)); - -$entity_guids = array(); -foreach ($entities as $entity) { - $entity_guids[] = $entity->getGUID(); -} - -if (count($entity_guids) > 0) { - $river_items = elgg_view_river_items('', $entity_guids, '', '', '', '', $limit); - $river_items .= elgg_view('riverdashboard/js'); -} else { - $river_items .= elgg_echo('groups:no_activity'); -} - -$area1 .= elgg_view_title(elgg_echo('groups:activity')); -$area1 .= elgg_view("group_activity/extend"); -$area1 .= "
".$river_items."
"; -$title = elgg_echo("groups:activity", array(elgg_get_page_owner()->name)); -$body = elgg_view_layout('one_column_with_sidebar', array('content' => $area1)); - -// Finally draw the page -echo elgg_view_page($title, $body); \ No newline at end of file diff --git a/mod/groups/all.php b/mod/groups/all.php deleted file mode 100644 index 51030adc9..000000000 --- a/mod/groups/all.php +++ /dev/null @@ -1,72 +0,0 @@ - 'group', - 'limit' => $limit, - 'full_view' => false, - )); - break; - - case "pop": - $objects = list_entities_by_relationship_count('member', true, "", "", 0, $limit, false); - break; - - case "active": - case 'default': - $options = array( - 'type' => 'object', - 'subtype' => 'groupforumtopic', - 'annotation_name' => 'generic_comment', - 'order_by' => 'e.last_action desc', - 'limit' => 40, - 'fullview' => TRUE - ); - $objects = elgg_list_entities($options); - break; -} - -//get a group count -$group_count = elgg_get_entities(array('types' => 'group', 'limit' => 10, 'count' => TRUE)); - -//find groups -$area2 .= elgg_view("groups/sidebar/find"); - -//featured groups -$area2 .= elgg_view("groups/sidebar/featured"); - -elgg_set_context($context); - -$objects = "
" . $objects . "
"; - -$title = elgg_echo("groups:all", array(elgg_get_page_owner()->name)); -if (isloggedin ()) { - $area1 .= elgg_view('page/elements/content_header', array('context' => "everyone", 'type' => 'groups', 'new_link' => "pg/groups/new")); -} -$area1 .= elgg_view("groups/group_sort_menu", array("count" => $group_count, "filter" => $filter)) . $objects; - -$params = array( - 'content' => $area1, - 'sidebar' => $area2 -); -$body = elgg_view_layout('one_sidebar', $params); - -// Finally draw the page -echo elgg_view_page($title, $body); \ No newline at end of file diff --git a/mod/groups/edit.php b/mod/groups/edit.php deleted file mode 100644 index 59064b7d8..000000000 --- a/mod/groups/edit.php +++ /dev/null @@ -1,29 +0,0 @@ -canEdit())) - { - $body .= elgg_view("forms/groups/edit", array('entity' => $group)); - - } else { - $body .= elgg_echo('groups:noaccess'); - } - - $body = elgg_view_layout('one_column_with_sidebar', array('content' => $body)); - - echo elgg_view_page($title, $body); -?> \ No newline at end of file diff --git a/mod/groups/groupprofile.php b/mod/groups/groupprofile.php deleted file mode 100644 index 1c35163ad..000000000 --- a/mod/groups/groupprofile.php +++ /dev/null @@ -1,43 +0,0 @@ -name); - -$sidebar = ''; -$content = elgg_view('groups/profile/profile_block', array('entity' => $group)); -if (group_gatekeeper(false)) { - $content .= elgg_view('groups/profile/widgets', array('entity' => $group)); - $sidebar = elgg_view('groups/sidebar/members', array('entity' => $group)); -} else { - $content .= elgg_view('groups/profile/closed_membership'); -} - -$params = array( - 'content' => $content, - 'sidebar' => $sidebar, - 'title' => $group->name, - 'buttons' => elgg_view('groups/profile/buttons', array('entity' => $group)), - 'filter' => '', -); -$body = elgg_view_layout('content', $params); - -echo elgg_view_page($title, $body); diff --git a/mod/groups/index.php b/mod/groups/index.php deleted file mode 100644 index 1deabb3de..000000000 --- a/mod/groups/index.php +++ /dev/null @@ -1,27 +0,0 @@ - "everyone", 'type' => 'groups', 'new_link' => "pg/groups/new")); - - elgg_push_context('search'); - $objects = elgg_list_entities(array('types' => 'group', 'owner_guid' => elgg_get_page_owner_guid(), 'limit' => $limit, 'offset' => $offset, 'full_view' => FALSE)); - elgg_pop_context(); - - $area1 .= $objects; - $body = elgg_view_layout('one_column_with_sidebar', array('content' => $area1)); - - // Finally draw the page - echo elgg_view_page($title, $body); -?> diff --git a/mod/groups/invitations.php b/mod/groups/invitations.php deleted file mode 100644 index 6a187a8fa..000000000 --- a/mod/groups/invitations.php +++ /dev/null @@ -1,31 +0,0 @@ -getGUID()); - - $area2 .= elgg_view('groups/invitationrequests',array('invitations' => $invitations)); - elgg_set_ignore_access($ia); -} else { - $area2 .= elgg_echo("groups:noaccess"); -} - -$body = elgg_view_layout('one_column_with_sidebar', array('content' => $area1)); - -echo elgg_view_page($title, $body); \ No newline at end of file diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index f28bc0846..1d136e741 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -15,7 +15,7 @@ $english = array( 'groups:yours' => "My groups", 'groups:user' => "%s's groups", 'groups:all' => "All groups", - 'groups:new' => "Create a new group", + 'groups:add' => "Create a new group", 'groups:edit' => "Edit group", 'groups:delete' => 'Delete group', 'groups:membershiprequests' => 'Manage join requests', diff --git a/mod/groups/lib/groups.php b/mod/groups/lib/groups.php new file mode 100644 index 000000000..faedca18e --- /dev/null +++ b/mod/groups/lib/groups.php @@ -0,0 +1,248 @@ + 'group', + 'relationship' => 'member', + 'inverse_relationship' => false, + 'full_view' => false, + )); + break; + case 'active': + $content = elgg_list_entities(array( + 'type' => 'object', + 'subtype' => 'groupforumtopic', + 'annotation_name' => 'generic_comment', + 'order_by' => 'e.last_action desc', + 'limit' => 40, + 'fullview' => false, + )); + break; + case 'newest': + default: + $content = elgg_list_entities(array( + 'type' => 'group', + 'full_view' => false, + )); + break; + } + + $filter = elgg_view('groups/group_sort_menu', array('selected' => $selected_tab)); + + $sidebar = elgg_view('groups/sidebar/find'); + $sidebar .= elgg_view('groups/sidebar/featured'); + + $params = array( + 'content' => $content, + 'sidebar' => $sidebar, + 'filter' => $filter, + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * List owned groups + */ +function groups_handle_owned_page() { + + $page_owner = elgg_get_page_owner(); + + $title = elgg_echo('groups:owned'); + elgg_push_breadcrumb($title); + + $content = elgg_list_entities(array( + 'type' => 'group', + 'owner_guid' => elgg_get_page_owner_guid(), + 'full_view' => false, + )); + + $params = array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * List groups the user is memober of + */ +function groups_handle_mine_page() { + + $page_owner = elgg_get_page_owner(); + + $title = elgg_echo('groups:yours'); + elgg_push_breadcrumb($title); + + $content = elgg_list_entities_from_relationship_count(array( + 'type' => 'group', + 'relationship' => 'member', + 'relationship_guid' => elgg_get_page_owner_guid(), + 'inverse_relationship' => false, + 'full_view' => false, + )); + + $params = array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * Create or edit a group + * + * @param string $page + * @param int $guid + */ +function groups_handle_edit_page($page, $guid = 0) { + gatekeeper(); + + if ($page == 'add') { + elgg_set_page_owner_guid(get_loggedin_userid()); + $title = elgg_echo('groups:add'); + elgg_push_breadcrumb($title); + $content = elgg_view('forms/groups/edit'); + } else { + $title = elgg_echo("groups:edit"); + $group = get_entity($guid); + + if ($group && $group->canEdit()) { + elgg_set_page_owner_guid($group->getGUID()); + elgg_push_breadcrumb($group->name, $group->getURL()); + elgg_push_breadcrumb($title); + $content = elgg_view("forms/groups/edit", array('entity' => $group)); + } else { + $content = elgg_echo('groups:noaccess'); + } + } + + $params = array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + 'buttons' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * Group invitations for a user + */ +function groups_handle_invitations_page() { + gatekeeper(); + + $user = elgg_get_page_owner(); + + $title = elgg_echo('groups:invitations'); + elgg_push_breadcrumb($title); + + // @todo temporary workaround for exts #287. + $invitations = groups_get_invited_groups($user->getGUID()); + $content = elgg_view('groups/invitationrequests', array('invitations' => $invitations)); + + $params = array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + 'buttons' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * Group profile page + * + * @param int $guid Group entity GUID + */ +function groups_handle_profile_page($guid) { + elgg_set_page_owner_guid($guid); + + // turn this into a core function + global $autofeed; + $autofeed = true; + + $group = get_entity($guid); + + elgg_push_breadcrumb($group->name); + + $sidebar = ''; + $content = elgg_view('groups/profile/profile_block', array('entity' => $group)); + if (group_gatekeeper(false)) { + $content .= elgg_view('groups/profile/widgets', array('entity' => $group)); + $sidebar = elgg_view('groups/sidebar/members', array('entity' => $group)); + } else { + $content .= elgg_view('groups/profile/closed_membership'); + } + + $params = array( + 'content' => $content, + 'sidebar' => $sidebar, + 'title' => $group->name, + 'buttons' => elgg_view('groups/profile/buttons', array('entity' => $group)), + 'filter' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} + +/** + * Group activity page + * + * @param int $guid Group entity GUID + */ +function groups_handle_activity_page($guid) { + + elgg_set_page_owner_guid($guid); + + $group = get_entity($guid); + if (!$group || !elgg_instanceof($group, 'group')) { + forward(); + } + + group_gatekeeper(); + + $title = elgg_echo('groups:activity'); + + elgg_push_breadcrumb($group->name, $group->getURL()); + elgg_push_breadcrumb($title); + + $content = "Group activity goes here"; + + $params = array( + 'content' => $content, + 'title' => $title, + 'buttons' => '', + 'filter' => '', + ); + $body = elgg_view_layout('content', $params); + + echo elgg_view_page($title, $body); +} diff --git a/mod/groups/membership.php b/mod/groups/membership.php deleted file mode 100644 index 6af38f4ae..000000000 --- a/mod/groups/membership.php +++ /dev/null @@ -1,34 +0,0 @@ - "mine", 'type' => 'groups', 'new_link' => "pg/groups/new")); - - elgg_push_context('search'); - // offset is grabbed in the list_entities_from_relationship() function - $objects = list_entities_from_relationship('member',page_owner(),false,'group','',0, $limit,false, false); - elgg_pop_context(); - - $area2 .= $objects; - $body = elgg_view_layout('one_column_with_sidebar', array('content' => $area1. $area2)); - - // Finally draw the page - echo elgg_view_page($title, $body); -?> diff --git a/mod/groups/new.php b/mod/groups/new.php deleted file mode 100644 index 84d1539af..000000000 --- a/mod/groups/new.php +++ /dev/null @@ -1,20 +0,0 @@ - $area1 . $area2)); - - echo elgg_view_page($title, $body); -?> \ No newline at end of file diff --git a/mod/groups/start.php b/mod/groups/start.php index c2b3dc35b..23936fed7 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -1,92 +1,92 @@ pluginspath . "groups/actions/edit.php"); - elgg_register_action("groups/delete", $CONFIG->pluginspath . "groups/actions/delete.php"); - elgg_register_action("groups/join", $CONFIG->pluginspath . "groups/actions/join.php"); - elgg_register_action("groups/leave", $CONFIG->pluginspath . "groups/actions/leave.php"); - elgg_register_action("groups/joinrequest", $CONFIG->pluginspath . "groups/actions/joinrequest.php"); - elgg_register_action("groups/killrequest", $CONFIG->pluginspath . "groups/actions/groupskillrequest.php"); - elgg_register_action("groups/killinvitation", $CONFIG->pluginspath . "groups/actions/groupskillinvitation.php"); - elgg_register_action("groups/addtogroup", $CONFIG->pluginspath . "groups/actions/addtogroup.php"); - elgg_register_action("groups/invite", $CONFIG->pluginspath . "groups/actions/invite.php"); + // Register a page handler, so we can have nice URLs + register_page_handler('groups', 'groups_page_handler'); - // Add a page owner handler - //elgg_register_plugin_hook_handler('page_owner', 'system', 'groups_page_owner_handler'); + // Register a URL handler for groups and forum topics + register_entity_url_handler('groups_url', 'group', 'all'); + register_entity_url_handler('groups_groupforumtopic_url', 'object', 'groupforumtopic'); - // Add some widgets - elgg_register_widget_type('a_users_groups',elgg_echo('groups:widget:membership'), elgg_echo('groups:widgets:description')); + // Register an icon handler for groups + register_page_handler('groupicon', 'groups_icon_handler'); + // Register some actions + elgg_register_action("groups/edit", $CONFIG->pluginspath . "groups/actions/edit.php"); + elgg_register_action("groups/delete", $CONFIG->pluginspath . "groups/actions/delete.php"); + elgg_register_action("groups/join", $CONFIG->pluginspath . "groups/actions/join.php"); + elgg_register_action("groups/leave", $CONFIG->pluginspath . "groups/actions/leave.php"); + elgg_register_action("groups/joinrequest", $CONFIG->pluginspath . "groups/actions/joinrequest.php"); + elgg_register_action("groups/killrequest", $CONFIG->pluginspath . "groups/actions/groupskillrequest.php"); + elgg_register_action("groups/killinvitation", $CONFIG->pluginspath . "groups/actions/groupskillinvitation.php"); + elgg_register_action("groups/addtogroup", $CONFIG->pluginspath . "groups/actions/addtogroup.php"); + elgg_register_action("groups/invite", $CONFIG->pluginspath . "groups/actions/invite.php"); - //extend some views - elgg_extend_view('profile/icon','groups/icon'); - elgg_extend_view('css/screen','groups/css'); + // Add a page owner handler + //elgg_register_plugin_hook_handler('page_owner', 'system', 'groups_page_owner_handler'); + // Add some widgets + elgg_register_widget_type('a_users_groups', elgg_echo('groups:widget:membership'), elgg_echo('groups:widgets:description')); - // Access permissions - elgg_register_plugin_hook_handler('access:collections:write', 'all', 'groups_write_acl_plugin_hook'); - //elgg_register_plugin_hook_handler('access:collections:read', 'all', 'groups_read_acl_plugin_hook'); - // Notification hooks - if (is_callable('register_notification_object')) - register_notification_object('object', 'groupforumtopic', elgg_echo('groupforumtopic:new')); - elgg_register_plugin_hook_handler('object:notifications','object','group_object_notifications_intercept'); + //extend some views + elgg_extend_view('profile/icon', 'groups/icon'); + elgg_extend_view('css/screen', 'groups/css'); - // Listen to notification events and supply a more useful message - elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'groupforumtopic_notify_message'); + // Access permissions + elgg_register_plugin_hook_handler('access:collections:write', 'all', 'groups_write_acl_plugin_hook'); + //elgg_register_plugin_hook_handler('access:collections:read', 'all', 'groups_read_acl_plugin_hook'); + // Notification hooks + if (is_callable('register_notification_object')) + register_notification_object('object', 'groupforumtopic', elgg_echo('groupforumtopic:new')); + elgg_register_plugin_hook_handler('object:notifications', 'object', 'group_object_notifications_intercept'); - // add the forum tool option - add_group_tool_option('forum',elgg_echo('groups:enableforum'),true); + // Listen to notification events and supply a more useful message + elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'groupforumtopic_notify_message'); - // Now override icons - elgg_register_plugin_hook_handler('entity:icon:url', 'group', 'groups_groupicon_hook'); + // add the forum tool option + add_group_tool_option('forum', elgg_echo('groups:enableforum'), true); - // Register profile menu hook - elgg_register_plugin_hook_handler('profile_menu', 'profile', 'forum_profile_menu'); - elgg_register_plugin_hook_handler('profile_menu', 'profile', 'activity_profile_menu'); + // Now override icons + elgg_register_plugin_hook_handler('entity:icon:url', 'group', 'groups_groupicon_hook'); - // allow ecml in discussion and profiles - elgg_register_plugin_hook_handler('get_views', 'ecml', 'groups_ecml_views_hook'); - elgg_register_plugin_hook_handler('get_views', 'ecml', 'groupprofile_ecml_views_hook'); + // Register profile menu hook + elgg_register_plugin_hook_handler('profile_menu', 'profile', 'forum_profile_menu'); + elgg_register_plugin_hook_handler('profile_menu', 'profile', 'activity_profile_menu'); - } + // allow ecml in discussion and profiles + elgg_register_plugin_hook_handler('get_views', 'ecml', 'groups_ecml_views_hook'); + elgg_register_plugin_hook_handler('get_views', 'ecml', 'groupprofile_ecml_views_hook'); +} - /** - * Event handler for group forum posts - * - */ - function group_object_notifications($event, $object_type, $object) { +/** + * Event handler for group forum posts + * + */ +function group_object_notifications($event, $object_type, $object) { - static $flag; - if (!isset($flag)) $flag = 0; + static $flag; + if (!isset($flag)) + $flag = 0; - if (is_callable('object_notifications')) + if (is_callable('object_notifications')) if ($object instanceof ElggObject) { if ($object->getSubtype() == 'groupforumtopic') { //if ($object->countAnnotations('group_topic_post') > 0) { @@ -97,551 +97,534 @@ //} } } - - } - - /** - * Intercepts the notification on group topic creation and prevents a notification from going out - * (because one will be sent on the annotation) - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - * @return unknown - */ - function group_object_notifications_intercept($hook, $entity_type, $returnvalue, $params) { - if (isset($params)) { - if ($params['event'] == 'create' && $params['object'] instanceof ElggObject) { - if ($params['object']->getSubtype() == 'groupforumtopic') { - return true; - } - } +} + +/** + * Intercepts the notification on group topic creation and prevents a notification from going out + * (because one will be sent on the annotation) + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $returnvalue + * @param unknown_type $params + * @return unknown + */ +function group_object_notifications_intercept($hook, $entity_type, $returnvalue, $params) { + if (isset($params)) { + if ($params['event'] == 'create' && $params['object'] instanceof ElggObject) { + if ($params['object']->getSubtype() == 'groupforumtopic') { + return true; } - return null; } - - /** - * Returns a more meaningful message - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - */ - function groupforumtopic_notify_message($hook, $entity_type, $returnvalue, $params) - { - $entity = $params['entity']; - $to_entity = $params['to_entity']; - $method = $params['method']; - if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'groupforumtopic')) - { - - $descr = $entity->description; - $title = $entity->title; - global $CONFIG; - $url = $entity->getURL(); - - $msg = get_input('topicmessage'); - if (empty($msg)) $msg = get_input('topic_post'); - if (!empty($msg)) $msg = $msg . "\n\n"; else $msg = ''; - - $owner = get_entity($entity->container_guid); - if ($method == 'sms') { - return elgg_echo("groupforumtopic:new") . ': ' . $url . " ({$owner->name}: {$title})"; - } else { - return get_loggedin_user()->name . ' ' . elgg_echo("groups:viagroups") . ': ' . $title . "\n\n" . $msg . "\n\n" . $entity->getURL(); - } - - } - return null; - } - - /** - * This function loads a set of default fields into the profile, then triggers a hook letting other plugins to edit - * add and delete fields. - * - * Note: This is a secondary system:init call and is run at a super low priority to guarantee that it is called after all - * other plugins have initialised. - */ - function groups_fields_setup() - { + } + return null; +} + +/** + * Returns a more meaningful message + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $returnvalue + * @param unknown_type $params + */ +function groupforumtopic_notify_message($hook, $entity_type, $returnvalue, $params) { + $entity = $params['entity']; + $to_entity = $params['to_entity']; + $method = $params['method']; + if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'groupforumtopic')) { + + $descr = $entity->description; + $title = $entity->title; global $CONFIG; + $url = $entity->getURL(); + + $msg = get_input('topicmessage'); + if (empty($msg)) + $msg = get_input('topic_post'); + if (!empty($msg)) + $msg = $msg . "\n\n"; else + $msg = ''; + + $owner = get_entity($entity->container_guid); + if ($method == 'sms') { + return elgg_echo("groupforumtopic:new") . ': ' . $url . " ({$owner->name}: {$title})"; + } else { + return get_loggedin_user()->name . ' ' . elgg_echo("groups:viagroups") . ': ' . $title . "\n\n" . $msg . "\n\n" . $entity->getURL(); + } + } + return null; +} + +/** + * This function loads a set of default fields into the profile, then triggers a hook letting other plugins to edit + * add and delete fields. + * + * Note: This is a secondary system:init call and is run at a super low priority to guarantee that it is called after all + * other plugins have initialised. + */ +function groups_fields_setup() { + global $CONFIG; - $profile_defaults = array( - - 'name' => 'text', - 'description' => 'longtext', - 'briefdescription' => 'text', - 'interests' => 'tags', + $profile_defaults = array( + 'name' => 'text', + 'description' => 'longtext', + 'briefdescription' => 'text', + 'interests' => 'tags', //'website' => 'url', - ); + ); - $CONFIG->group = elgg_trigger_plugin_hook('profile:fields', 'group', NULL, $profile_defaults); + $CONFIG->group = elgg_trigger_plugin_hook('profile:fields', 'group', NULL, $profile_defaults); - // register any tag metadata names - foreach ($CONFIG->group as $name => $type) { - if ($type == 'tags') { - elgg_register_tag_metadata_name($name); + // register any tag metadata names + foreach ($CONFIG->group as $name => $type) { + if ($type == 'tags') { + elgg_register_tag_metadata_name($name); - // register a tag name translation - add_translation(get_current_language(), array("tag_names:$name" => elgg_echo("groups:$name"))); - } + // register a tag name translation + add_translation(get_current_language(), array("tag_names:$name" => elgg_echo("groups:$name"))); } } +} - /** - * Sets up submenus for the groups system. Triggered on pagesetup. - * - */ - function groups_submenus() { - global $CONFIG; +/** + * Sets up submenus for the groups system. Triggered on pagesetup. + * + */ +function groups_submenus() { + global $CONFIG; - // Get the page owner entity - $page_owner = elgg_get_page_owner(); + // Get the page owner entity + $page_owner = elgg_get_page_owner(); - if (elgg_get_context() == 'groups') { - if ($page_owner instanceof ElggGroup) { - if (isloggedin() && $page_owner->canEdit() && !$page_owner->isPublicMembership()) { - $url = elgg_get_site_url()."mod/groups/membershipreq.php?group_guid={$page_owner->getGUID()}"; - add_submenu_item(elgg_echo('groups:membershiprequests'), $url, 'groupsactions1'); - } - } else { - add_submenu_item(elgg_echo('groups:all'), "pg/groups/world/", 'groupslinks1'); + if (elgg_get_context() == 'groups') { + if ($page_owner instanceof ElggGroup) { + if (isloggedin() && $page_owner->canEdit() && !$page_owner->isPublicMembership()) { + $url = elgg_get_site_url() . "mod/groups/membershipreq.php?group_guid={$page_owner->getGUID()}"; + add_submenu_item(elgg_echo('groups:membershiprequests'), $url, 'groupsactions1'); + } + } else { + add_submenu_item(elgg_echo('groups:all'), "pg/groups/world/", 'groupslinks1'); - if ($user = get_loggedin_user()) { - add_submenu_item(elgg_echo('groups:owned'), "pg/groups/owned/$user->username", 'groupslinks1'); - add_submenu_item(elgg_echo('groups:yours'), "pg/groups/member/$user->username", 'groupslinks1'); - add_submenu_item(elgg_echo('groups:invitations'), "pg/groups/invitations/$user->username", 'groupslinks1'); - } + if ($user = get_loggedin_user()) { + add_submenu_item(elgg_echo('groups:owned'), "pg/groups/owned/$user->username", 'groupslinks1'); + add_submenu_item(elgg_echo('groups:yours'), "pg/groups/member/$user->username", 'groupslinks1'); + add_submenu_item(elgg_echo('groups:invitations'), "pg/groups/invitations/$user->username", 'groupslinks1'); } } } - - /** - * Set a page owner handler. - * - */ - function groups_page_owner_handler() - { - $group_guid = get_input('group_guid'); - if ($group_guid) - { - $group = get_entity($group_guid); - if ($group instanceof ElggGroup) - return $group->owner_guid; - } - - return false; +} + +/** + * Set a page owner handler. + * + */ +function groups_page_owner_handler() { + $group_guid = get_input('group_guid'); + if ($group_guid) { + $group = get_entity($group_guid); + if ($group instanceof ElggGroup) + return $group->owner_guid; } - /** - * Group page handler - * - * @param array $page Array of page elements, forwarded by the page handling mechanism - */ - function groups_page_handler($page) - { - global $CONFIG; - - - if (isset($page[0])) - { - // See what context we're using - switch($page[0]) - { - case 'invitations': - include($CONFIG->pluginspath . "groups/invitations.php"); - $user_guid = get_loggedin_userid(); - - $invitations = elgg_get_entities_from_relationship(array( - 'relationship' => 'membership_request', - 'guid' => $user_guid - )); - - break; - - case "new" : - include($CONFIG->pluginspath . "groups/new.php"); - break; - case "world": - elgg_set_context('groups'); - set_page_owner(0); - include($CONFIG->pluginspath . "groups/all.php"); - break; - case "forum": - set_input('group_guid', $page[1]); - include($CONFIG->pluginspath . "groups/forum.php"); - break; - case "edittopic": - set_input('group', $page[1]); - set_input('topic', $page[2]); - include($CONFIG->pluginspath . "groups/edittopic.php"); - break; - case "activity": - set_input('group', $page[1]); - include($CONFIG->pluginspath . "groups/activity.php"); - break; - case "owned" : - // Owned by a user - if (isset($page[1])) - set_input('username',$page[1]); + return false; +} + +/** + * Groups page handler + * URLs take the form of + * All groups: pg/groups/all + * User's owned groups: pg/groups/owned/ + * User's member groups: pg/groups/member/ + * Group profile: pg/groups/profile// + * New group: pg/groups/add/<guid> + * Edit group: pg/groups/edit/<guid> + * Group invitations: pg/groups/invitations/<username> + * Group activity: pg/groups/activity/<guid> + * + * @param array $page Array of url segments for routing + */ +function groups_page_handler($page) { + global $CONFIG; - include($CONFIG->pluginspath . "groups/index.php"); - break; - case "member" : - // User is a member of - if (isset($page[1])) - set_input('username',$page[1]); + elgg_load_library('elgg:groups'); + + elgg_push_breadcrumb(elgg_echo('groups'), "pg/groups/world"); + + // beginnings of new page handler + switch ($page[0]) { + case 'world': + groups_handle_all_page(); + break; + case 'owned': + set_input('username', $page[1]); + groups_handle_owned_page(); + break; + case 'member': + set_input('username', $page[1]); + groups_handle_mine_page(); + break; + case 'invitations': + set_input('username', $page[1]); + groups_handle_invitations_page(); + break; + case 'add': + groups_handle_edit_page('add'); + break; + case 'edit': + groups_handle_edit_page('edit', $page[1]); + break; + case 'profile': + groups_handle_profile_page($page[1]); + break; + case 'activity': + groups_handle_activity_page($page[1]); + break; + } - include($CONFIG->pluginspath . "groups/membership.php"); + // old page handler + if (isset($page[0])) { + // See what context we're using + switch ($page[0]) { + case "forum": + set_input('group_guid', $page[1]); + include($CONFIG->pluginspath . "groups/forum.php"); break; - default: - set_input('group_guid', $page[0]); - include($CONFIG->pluginspath . "groups/groupprofile.php"); + case "edittopic": + set_input('group', $page[1]); + set_input('topic', $page[2]); + include($CONFIG->pluginspath . "groups/edittopic.php"); break; - } } - } +} - /** - * Handle group icons. - * - * @param unknown_type $page - */ - function groups_icon_handler($page) { +/** + * Handle group icons. + * + * @param unknown_type $page + */ +function groups_icon_handler($page) { - global $CONFIG; - - // The username should be the file we're getting - if (isset($page[0])) { - set_input('group_guid',$page[0]); - } - if (isset($page[1])) { - set_input('size',$page[1]); - } - // Include the standard profile index - include($CONFIG->pluginspath . "groups/graphics/icon.php"); + global $CONFIG; + // The username should be the file we're getting + if (isset($page[0])) { + set_input('group_guid', $page[0]); } - - /** - * Populates the ->getUrl() method for group objects - * - * @param ElggEntity $entity File entity - * @return string File URL - */ - function groups_url($entity) { - $title = elgg_get_friendly_title($entity->name); - - return "pg/groups/{$entity->guid}/$title/"; + if (isset($page[1])) { + set_input('size', $page[1]); } - - function groups_groupforumtopic_url($entity) { - return 'mod/groups/topicposts.php?topic='. $entity->guid .'&group_guid=' . $entity->container_guid; + // Include the standard profile index + include($CONFIG->pluginspath . "groups/graphics/icon.php"); +} + +/** + * Populates the ->getUrl() method for group objects + * + * @param ElggEntity $entity File entity + * @return string File URL + */ +function groups_url($entity) { + $title = elgg_get_friendly_title($entity->name); + + return "pg/groups/profile/{$entity->guid}/$title"; +} + +function groups_groupforumtopic_url($entity) { + return 'mod/groups/topicposts.php?topic=' . $entity->guid . '&group_guid=' . $entity->container_guid; +} + +/** + * Groups created so create an access list for it + */ +function groups_create_event_listener($event, $object_type, $object) { + $ac_name = elgg_echo('groups:group') . ": " . $object->name; + $group_id = create_access_collection($ac_name, $object->guid); + if ($group_id) { + $object->group_acl = $group_id; + } else { + // delete group if access creation fails + return false; } - /** - * Groups created so create an access list for it - */ - function groups_create_event_listener($event, $object_type, $object) - { - $ac_name = elgg_echo('groups:group') . ": " . $object->name; - $group_id = create_access_collection($ac_name, $object->guid); - if ($group_id) { - $object->group_acl = $group_id; - } else { - // delete group if access creation fails - return false; + return true; +} + +/** + * Hook to listen to read access control requests and return all the groups you are a member of. + */ +function groups_read_acl_plugin_hook($hook, $entity_type, $returnvalue, $params) { + //error_log("READ: " . var_export($returnvalue)); + $user = get_loggedin_user(); + if ($user) { + // Not using this because of recursion. + // Joining a group automatically add user to ACL, + // So just see if they're a member of the ACL. + //$membership = get_users_membership($user->guid); + + $members = get_members_of_access_collection($group->group_acl); + print_r($members); + exit; + + if ($membership) { + foreach ($membership as $group) + $returnvalue[$user->guid][$group->group_acl] = elgg_echo('groups:group') . ": " . $group->name; + return $returnvalue; } - - return true; } - - /** - * Hook to listen to read access control requests and return all the groups you are a member of. - */ - function groups_read_acl_plugin_hook($hook, $entity_type, $returnvalue, $params) - { - //error_log("READ: " . var_export($returnvalue)); - $user = get_loggedin_user(); - if ($user) - { - // Not using this because of recursion. - // Joining a group automatically add user to ACL, - // So just see if they're a member of the ACL. - //$membership = get_users_membership($user->guid); - - $members = get_members_of_access_collection($group->group_acl); - print_r($members); - exit; - - if ($membership) - { - foreach ($membership as $group) - $returnvalue[$user->guid][$group->group_acl] = elgg_echo('groups:group') . ": " . $group->name; - return $returnvalue; - } - } +} + +/** + * Return the write access for the current group if the user has write access to it. + */ +function groups_write_acl_plugin_hook($hook, $entity_type, $returnvalue, $params) { + $page_owner = elgg_get_page_owner(); + if (!$loggedin = get_loggedin_user()) { + return $returnvalue; } - /** - * Return the write access for the current group if the user has write access to it. - */ - function groups_write_acl_plugin_hook($hook, $entity_type, $returnvalue, $params) - { - $page_owner = elgg_get_page_owner(); - if (!$loggedin = get_loggedin_user()) { - return $returnvalue; - } - - // only insert group access for current group - if ($page_owner instanceof ElggGroup && $loggedin) { - if ($page_owner->isMember($loggedin)) { - $returnvalue[$page_owner->group_acl] = elgg_echo('groups:group') . ': ' . $page_owner->name; + // only insert group access for current group + if ($page_owner instanceof ElggGroup && $loggedin) { + if ($page_owner->isMember($loggedin)) { + $returnvalue[$page_owner->group_acl] = elgg_echo('groups:group') . ': ' . $page_owner->name; - unset($returnvalue[ACCESS_FRIENDS]); - } - } else { - // if the user owns the group, remove all access collections manually - // this won't be a problem once the group itself owns the acl. - $groups = elgg_get_entities_from_relationship(array( - 'relationship' => 'member', - 'relationship_guid' => $loggedin->getGUID(), - 'inverse_relationship' => FALSE, - 'limit' => 999 - )); - - if ($groups) { - foreach ($groups as $group) { - unset($returnvalue[$group->group_acl]); - } + unset($returnvalue[ACCESS_FRIENDS]); + } + } else { + // if the user owns the group, remove all access collections manually + // this won't be a problem once the group itself owns the acl. + $groups = elgg_get_entities_from_relationship(array( + 'relationship' => 'member', + 'relationship_guid' => $loggedin->getGUID(), + 'inverse_relationship' => FALSE, + 'limit' => 999 + )); + + if ($groups) { + foreach ($groups as $group) { + unset($returnvalue[$group->group_acl]); } } - - return $returnvalue; } - /** - * Groups deleted, so remove access lists. - */ - function groups_delete_event_listener($event, $object_type, $object) - { - delete_access_collection($object->group_acl); + return $returnvalue; +} + +/** + * Groups deleted, so remove access lists. + */ +function groups_delete_event_listener($event, $object_type, $object) { + delete_access_collection($object->group_acl); + + return true; +} + +/** + * Listens to a group join event and adds a user to the group's access control + * + */ +function groups_user_join_event_listener($event, $object_type, $object) { + + $group = $object['group']; + $user = $object['user']; + $acl = $group->group_acl; + + add_user_to_access_collection($user->guid, $acl); + + return true; +} + +/** + * Listens to a group leave event and removes a user from the group's access control + * + */ +function groups_user_leave_event_listener($event, $object_type, $object) { + + $group = $object['group']; + $user = $object['user']; + $acl = $group->group_acl; + + remove_user_from_access_collection($user->guid, $acl); + + return true; +} + +/** + * This hooks into the getIcon API and provides nice user icons for users where possible. + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $returnvalue + * @param unknown_type $params + * @return unknown + */ +function groups_groupicon_hook($hook, $entity_type, $returnvalue, $params) { + global $CONFIG; - return true; - } + if ((!$returnvalue) && ($hook == 'entity:icon:url') && ($params['entity'] instanceof ElggGroup)) { + $entity = $params['entity']; + $type = $entity->type; + $viewtype = $params['viewtype']; + $size = $params['size']; - /** - * Listens to a group join event and adds a user to the group's access control - * - */ - function groups_user_join_event_listener($event, $object_type, $object) { + if ($icontime = $entity->icontime) { + $icontime = "{$icontime}"; + } else { + $icontime = "default"; + } - $group = $object['group']; - $user = $object['user']; - $acl = $group->group_acl; + $filehandler = new ElggFile(); + $filehandler->owner_guid = $entity->owner_guid; + $filehandler->setFilename("groups/" . $entity->guid . $size . ".jpg"); - add_user_to_access_collection($user->guid, $acl); + if ($filehandler->exists()) { + $url = elgg_get_site_url() . "pg/groupicon/{$entity->guid}/$size/$icontime.jpg"; - return true; + return $url; + } } +} - /** - * Listens to a group leave event and removes a user from the group's access control - * - */ - function groups_user_leave_event_listener($event, $object_type, $object) { - - $group = $object['group']; - $user = $object['user']; - $acl = $group->group_acl; +/** + * A simple function to see who can edit a group discussion post + * @param the comment $entity + * @param user who owns the group $group_owner + * @return boolean + */ +function groups_can_edit_discussion($entity, $group_owner) { - remove_user_from_access_collection($user->guid, $acl); + //logged in user + $user = get_loggedin_userid(); + if (($entity->owner_guid == $user) || $group_owner == $user || isadminloggedin()) { return true; + } else { + return false; } - - /** - * This hooks into the getIcon API and provides nice user icons for users where possible. - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - * @return unknown - */ - function groups_groupicon_hook($hook, $entity_type, $returnvalue, $params) - { +} + +/** + * Overrides topic post getURL() value. + * + */ +function group_topicpost_url($annotation) { + if ($parent = get_entity($annotation->entity_guid)) { global $CONFIG; - - if ((!$returnvalue) && ($hook == 'entity:icon:url') && ($params['entity'] instanceof ElggGroup)) - { - $entity = $params['entity']; - $type = $entity->type; - $viewtype = $params['viewtype']; - $size = $params['size']; - - if ($icontime = $entity->icontime) { - $icontime = "{$icontime}"; - } else { - $icontime = "default"; - } - - $filehandler = new ElggFile(); - $filehandler->owner_guid = $entity->owner_guid; - $filehandler->setFilename("groups/" . $entity->guid . $size . ".jpg"); - - if ($filehandler->exists()) { - $url = elgg_get_site_url() . "pg/groupicon/{$entity->guid}/$size/$icontime.jpg"; - - return $url; - } - } + return 'mod/groups/topicposts.php?topic=' . $parent->guid . '&group_guid=' . $parent->container_guid . '#' . $annotation->id; } - - /** - * A simple function to see who can edit a group discussion post - * @param the comment $entity - * @param user who owns the group $group_owner - * @return boolean - */ - function groups_can_edit_discussion($entity, $group_owner) - { - - //logged in user - $user = get_loggedin_userid(); - - if (($entity->owner_guid == $user) || $group_owner == $user || isadminloggedin()) { - return true; - }else{ - return false; +} + +/** + * Grabs groups by invitations + * Have to override all access until there's a way override access to getter functions. + * + * @param $user_guid + * @return unknown_type + */ +function groups_get_invited_groups($user_guid, $return_guids = FALSE) { + $ia = elgg_set_ignore_access(TRUE); + $invitations = elgg_get_entities_from_relationship(array('relationship' => 'invited', 'relationship_guid' => $user_guid, 'inverse_relationship' => TRUE, 'limit' => 9999)); + elgg_set_ignore_access($ia); + + if ($return_guids) { + $guids = array(); + foreach ($invitations as $invitation) { + $guids[] = $invitation->getGUID(); } + return $guids; } - /** - * Overrides topic post getURL() value. - * - */ - function group_topicpost_url($annotation) { - if ($parent = get_entity($annotation->entity_guid)) { - global $CONFIG; - return 'mod/groups/topicposts.php?topic='.$parent->guid.'&group_guid='.$parent->container_guid.'#' . $annotation->id; - } - } + return $invitations; +} - /** - * Grabs groups by invitations - * Have to override all access until there's a way override access to getter functions. - * - * @param $user_guid - * @return unknown_type - */ - function groups_get_invited_groups($user_guid, $return_guids = FALSE) { - $ia = elgg_set_ignore_access(TRUE); - $invitations = elgg_get_entities_from_relationship(array('relationship' => 'invited', 'relationship_guid' => $user_guid, 'inverse_relationship' => TRUE, 'limit' => 9999)); - elgg_set_ignore_access($ia); - - if ($return_guids) { - $guids = array(); - foreach ($invitations as $invitation) { - $guids[] = $invitation->getGUID(); - } - - return $guids; - } - - return $invitations; - } - - /** - * Function to use on groups for access. It will house private, loggedin, public, - * and the group itself. This is when you don't want other groups or channels in the access options available - * Returns an array - **/ - - function group_access_options($group){ - $access_array = array(0 => 'private',1 => 'logged in users',2 => 'public',$group->group_acl => 'Group: ' . $group->name ); - return $access_array; - } +/** + * Function to use on groups for access. It will house private, loggedin, public, + * and the group itself. This is when you don't want other groups or channels in the access options available + * Returns an array + * */ +function group_access_options($group) { + $access_array = array(0 => 'private', 1 => 'logged in users', 2 => 'public', $group->group_acl => 'Group: ' . $group->name); + return $access_array; +} - function forum_profile_menu($hook, $entity_type, $return_value, $params) { - global $CONFIG; +function forum_profile_menu($hook, $entity_type, $return_value, $params) { + global $CONFIG; - if ($params['owner'] instanceof ElggGroup && $group_owner->forum_enable != 'no') { - $return_value[] = array( - 'text' => elgg_echo('groups:forum'), - 'href' => "pg/groups/forum/{$params['owner']->getGUID()}" - ); - } - return $return_value; + if ($params['owner'] instanceof ElggGroup && $group_owner->forum_enable != 'no') { + $return_value[] = array( + 'text' => elgg_echo('groups:forum'), + 'href' => "pg/groups/forum/{$params['owner']->getGUID()}" + ); } - - function activity_profile_menu($hook, $entity_type, $return_value, $params) { - global $CONFIG; + return $return_value; +} - if ($params['owner'] instanceof ElggGroup) { - $return_value[] = array( - 'text' => elgg_echo('Activity'), - 'href' => "pg/groups/activity/{$params['owner']->getGUID()}" - ); - } - return $return_value; - } +function activity_profile_menu($hook, $entity_type, $return_value, $params) { + global $CONFIG; - /** - * Parse ECML on group discussion views - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $return_value - * @param unknown_type $params - */ - function groups_ecml_views_hook($hook, $entity_type, $return_value, $params) { - $return_value['forum/viewposts'] = elgg_echo('groups:ecml:discussion'); - - return $return_value; - } - /** - * Parse ECML on group profiles - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $return_value - * @param unknown_type $params - */ - function groupprofile_ecml_views_hook($hook, $entity_type, $return_value, $params) { - $return_value['groups/groupprofile'] = elgg_echo('groups:ecml:groupprofile'); - - return $return_value; + if ($params['owner'] instanceof ElggGroup) { + $return_value[] = array( + 'text' => elgg_echo('Activity'), + 'href' => "pg/groups/activity/{$params['owner']->getGUID()}" + ); } + return $return_value; +} + +/** + * Parse ECML on group discussion views + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $return_value + * @param unknown_type $params + */ +function groups_ecml_views_hook($hook, $entity_type, $return_value, $params) { + $return_value['forum/viewposts'] = elgg_echo('groups:ecml:discussion'); + + return $return_value; +} + +/** + * Parse ECML on group profiles + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $return_value + * @param unknown_type $params + */ +function groupprofile_ecml_views_hook($hook, $entity_type, $return_value, $params) { + $return_value['groups/groupprofile'] = elgg_echo('groups:ecml:groupprofile'); + + return $return_value; +} + +register_extender_url_handler('group_topicpost_url', 'annotation', 'group_topic_post'); + +// Register a handler for create groups +elgg_register_event_handler('create', 'group', 'groups_create_event_listener'); + +// Register a handler for delete groups +elgg_register_event_handler('delete', 'group', 'groups_delete_event_listener'); + +// Make sure the groups initialisation function is called on initialisation +elgg_register_event_handler('init', 'system', 'groups_init'); +elgg_register_event_handler('init', 'system', 'groups_fields_setup', 10000); // Ensure this runs after other plugins +elgg_register_event_handler('join', 'group', 'groups_user_join_event_listener'); +elgg_register_event_handler('leave', 'group', 'groups_user_leave_event_listener'); +elgg_register_event_handler('pagesetup', 'system', 'groups_submenus'); +elgg_register_event_handler('annotate', 'all', 'group_object_notifications'); + +// Register actions +global $CONFIG; +elgg_register_action("groups/addtopic", $CONFIG->pluginspath . "groups/actions/forums/addtopic.php"); +elgg_register_action("groups/deletetopic", $CONFIG->pluginspath . "groups/actions/forums/deletetopic.php"); +elgg_register_action("groups/addpost", $CONFIG->pluginspath . "groups/actions/forums/addpost.php"); +elgg_register_action("groups/edittopic", $CONFIG->pluginspath . "groups/actions/forums/edittopic.php"); +elgg_register_action("groups/deletepost", $CONFIG->pluginspath . "groups/actions/forums/deletepost.php"); +elgg_register_action("groups/featured", $CONFIG->pluginspath . "groups/actions/featured.php", 'admin'); +elgg_register_action("groups/editpost", $CONFIG->pluginspath . "groups/actions/forums/editpost.php"); - register_extender_url_handler('group_topicpost_url','annotation', 'group_topic_post'); - - // Register a handler for create groups - elgg_register_event_handler('create', 'group', 'groups_create_event_listener'); - // Register a handler for delete groups - elgg_register_event_handler('delete', 'group', 'groups_delete_event_listener'); - - // Make sure the groups initialisation function is called on initialisation - elgg_register_event_handler('init','system','groups_init'); - elgg_register_event_handler('init','system','groups_fields_setup', 10000); // Ensure this runs after other plugins - elgg_register_event_handler('join','group','groups_user_join_event_listener'); - elgg_register_event_handler('leave','group','groups_user_leave_event_listener'); - elgg_register_event_handler('pagesetup','system','groups_submenus'); - elgg_register_event_handler('annotate','all','group_object_notifications'); - - // Register actions - global $CONFIG; - elgg_register_action("groups/addtopic", $CONFIG->pluginspath . "groups/actions/forums/addtopic.php"); - elgg_register_action("groups/deletetopic", $CONFIG->pluginspath . "groups/actions/forums/deletetopic.php"); - elgg_register_action("groups/addpost", $CONFIG->pluginspath . "groups/actions/forums/addpost.php"); - elgg_register_action("groups/edittopic", $CONFIG->pluginspath . "groups/actions/forums/edittopic.php"); - elgg_register_action("groups/deletepost", $CONFIG->pluginspath . "groups/actions/forums/deletepost.php"); - elgg_register_action("groups/featured", $CONFIG->pluginspath . "groups/actions/featured.php", 'admin'); - elgg_register_action("groups/editpost", $CONFIG->pluginspath . "groups/actions/forums/editpost.php"); - -?> diff --git a/mod/groups/views/default/groups/group_sort_menu.php b/mod/groups/views/default/groups/group_sort_menu.php index b25f682e7..958c4084d 100644 --- a/mod/groups/views/default/groups/group_sort_menu.php +++ b/mod/groups/views/default/groups/group_sort_menu.php @@ -1,24 +1,21 @@ <?php +/** + * All groups navigation menu + */ - /** - * A simple view to provide the user with group filters and the number of group on the site - **/ - - $num_groups = $vars['count']; - if(!$num_groups) - $num_groups = 0; - - $filter = $vars['filter']; +$group_count = (int)elgg_get_entities(array('types' => 'group', 'count' => true)); + +$selected = elgg_get_array_value('selected', $vars); //url $url = elgg_get_site_url() . "pg/groups/world/"; ?> <div class="elgg-tabs margin-top"> -<div class="group_count"><?php echo $num_groups . " " . elgg_echo("groups:count"); ?></div> +<div class="group_count"><?php echo $group_count . " " . elgg_echo("groups:count"); ?></div> <ul> - <li <?php if($filter == "newest") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=newest"><?php echo elgg_echo('groups:newest'); ?></a></li> - <li <?php if($filter == "pop") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=pop"><?php echo elgg_echo('groups:popular'); ?></a></li> - <li <?php if($filter == "active") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=active"><?php echo elgg_echo('groups:latestdiscussion'); ?></a></li> + <li <?php if($selected == "newest") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=newest"><?php echo elgg_echo('groups:newest'); ?></a></li> + <li <?php if($selected == "pop") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=pop"><?php echo elgg_echo('groups:popular'); ?></a></li> + <li <?php if($selected == "active") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=active"><?php echo elgg_echo('groups:latestdiscussion'); ?></a></li> </ul> </div> diff --git a/mod/groups/views/default/groups/profile/buttons.php b/mod/groups/views/default/groups/profile/buttons.php index 68cd2591a..cd4ee49dd 100644 --- a/mod/groups/views/default/groups/profile/buttons.php +++ b/mod/groups/views/default/groups/profile/buttons.php @@ -15,7 +15,7 @@ $actions = array(); // group owners if ($vars['entity']->canEdit()) { // edit and invite - $url = elgg_get_site_url() . "mod/groups/edit.php?group_guid={$vars['entity']->getGUID()}"; + $url = elgg_get_site_url() . "pg/groups/edit/{$vars['entity']->getGUID()}"; $actions[$url] = elgg_echo('groups:edit'); $url = elgg_get_site_url() . "mod/groups/invite.php?group_guid={$vars['entity']->getGUID()}"; $actions[$url] = elgg_echo('groups:invite'); -- cgit v1.2.3