diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/groups.php | 564 | ||||
-rw-r--r-- | lib/subgroups.php | 84 |
2 files changed, 0 insertions, 648 deletions
diff --git a/lib/groups.php b/lib/groups.php deleted file mode 100644 index 82bd6226d..000000000 --- a/lib/groups.php +++ /dev/null @@ -1,564 +0,0 @@ -<?php -/** - * Groups function library - */ - -/** - * List all groups - */ -function groups_handle_all_page() { - - // all groups doesn't get link to self - elgg_pop_breadcrumb(); - elgg_push_breadcrumb(elgg_echo('groups')); - - if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) { - elgg_register_title_button(); - } - - $selected_tab = get_input('filter', 'newest'); - - switch ($selected_tab) { - case 'popular': - $content = elgg_list_entities_from_relationship_count(array( - 'type' => 'group', - 'container_guid' => 0, - 'relationship' => 'member', - 'inverse_relationship' => false, - 'full_view' => false, - )); - if (!$content) { - $content = elgg_echo('groups:none'); - } - break; - case 'discussion': - $content = elgg_list_entities(array( - 'type' => 'object', - 'subtype' => 'groupforumtopic', - 'order_by' => 'e.last_action desc', - 'limit' => 40, - 'full_view' => false, - )); - if (!$content) { - $content = elgg_echo('discussion:none'); - } - break; - case 'newest': - default: - $content = elgg_list_entities(array( - 'type' => 'group', - 'container_guid' => 0, - 'full_view' => false, - )); - if (!$content) { - $content = elgg_echo('groups:none'); - } - 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(elgg_echo('groups:all'), $body); -} - -function groups_search_page() { - elgg_push_breadcrumb(elgg_echo('search')); - - $tag = get_input("tag"); - $title = elgg_echo('groups:search:title', array($tag)); - - // groups plugin saves tags as "interests" - see groups_fields_setup() in start.php - $params = array( - 'metadata_name' => 'interests', - 'metadata_value' => $tag, - 'types' => 'group', - 'full_view' => FALSE, - ); - $content = elgg_list_entities_from_metadata($params); - if (!$content) { - $content = elgg_echo('groups:search:none'); - } - - $sidebar = elgg_view('groups/sidebar/find'); - $sidebar .= elgg_view('groups/sidebar/featured'); - - $params = array( - 'content' => $content, - 'sidebar' => $sidebar, - 'filter' => false, - 'title' => $title, - ); - $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_entity(); - - if ($page_owner->guid == elgg_get_logged_in_user_guid()) { - $title = elgg_echo('groups:owned'); - } else { - $title = elgg_echo('groups:owned:user', array($page_owner->name)); - } - elgg_push_breadcrumb($title); - - elgg_register_title_button(); - - $content = elgg_list_entities(array( - 'type' => 'group', - 'owner_guid' => elgg_get_page_owner_guid(), - 'full_view' => false, - )); - if (!$content) { - $content = elgg_echo('groups:none'); - } - - $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_entity(); - - if ($page_owner->guid == elgg_get_logged_in_user_guid()) { - $title = elgg_echo('groups:yours'); - } else { - $title = elgg_echo('groups:user', array($page_owner->name)); - } - elgg_push_breadcrumb($title); - - elgg_register_title_button(); - - $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, - )); - if (!$content) { - $content = elgg_echo('groups:none'); - } - - $filter = elgg_view('groups/group_sort_menu', array('selected' => $selected_tab)); - - $params = array( - 'content' => $content, - 'title' => $title, - 'filter' => $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(elgg_get_logged_in_user_guid()); - $title = elgg_echo('groups:add'); - elgg_push_breadcrumb($title); - if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) { - $content = elgg_view('groups/edit'); - } else { - $content = elgg_echo('groups:cantcreate'); - } - } 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("groups/edit", array('entity' => $group)); - } else { - $content = elgg_echo('groups:noaccess'); - } - } - - $params = array( - 'content' => $content, - 'title' => $title, - 'filter' => '', - ); - $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_entity(); - - $title = elgg_echo('groups:invitations'); - elgg_push_breadcrumb($title); - - // @todo temporary workaround for exts #287. - $invitations = groups_get_invited_groups(elgg_get_logged_in_user_guid()); - $content = elgg_view('groups/invitationrequests', array('invitations' => $invitations)); - - $params = array( - 'content' => $content, - 'title' => $title, - 'filter' => '', - ); - $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; - - elgg_push_context('group_profile'); - - $group = get_entity($guid); - if (!$group) { - forward('groups/all'); - } - elgg_push_breadcrumb($group->name); - - groups_register_profile_buttons($group); - - $content = elgg_view('groups/profile/layout', array('entity' => $group)); - if (group_gatekeeper(false)) { - $sidebar = ''; - if (elgg_is_active_plugin('search')) { - $sidebar .= elgg_view('groups/sidebar/search', array('entity' => $group)); - } - $sidebar .= elgg_view('groups/sidebar/members', array('entity' => $group)); - } else { - $sidebar = ''; - } - - $params = array( - 'content' => $content, - 'sidebar' => $sidebar, - 'title' => $group->name, - 'filter' => '', - ); - $body = elgg_view_layout('content', $params); - - echo elgg_view_page($group->name, $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); - - $db_prefix = elgg_get_config('dbprefix'); - - $content = elgg_list_river(array( - 'joins' => array("JOIN {$db_prefix}entities e ON e.guid = rv.object_guid"), - 'wheres' => array("e.container_guid = $guid") - )); - if (!$content) { - $content = '<p>' . elgg_echo('groups:activity:none') . '</p>'; - } - - $params = array( - 'content' => $content, - 'title' => $title, - 'filter' => '', - ); - $body = elgg_view_layout('content', $params); - - echo elgg_view_page($title, $body); -} - -/** - * Group members page - * - * @param int $guid Group entity GUID - */ -function groups_handle_members_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:members:title', array($group->name)); - - elgg_push_breadcrumb($group->name, $group->getURL()); - elgg_push_breadcrumb(elgg_echo('groups:members')); - - $content = elgg_list_entities_from_relationship(array( - 'relationship' => 'member', - 'relationship_guid' => $group->guid, - 'inverse_relationship' => true, - 'types' => 'user', - 'limit' => 20, - )); - - $params = array( - 'content' => $content, - 'title' => $title, - 'filter' => '', - ); - $body = elgg_view_layout('content', $params); - - echo elgg_view_page($title, $body); -} - -/** - * Invite users to a group - * - * @param int $guid Group entity GUID - */ -function groups_handle_invite_page($guid) { - gatekeeper(); - - elgg_set_page_owner_guid($guid); - - $group = get_entity($guid); - - $title = elgg_echo('groups:invite:title'); - - elgg_push_breadcrumb($group->name, $group->getURL()); - elgg_push_breadcrumb(elgg_echo('groups:invite')); - - if ($group && $group->canEdit()) { - $content = elgg_view_form('groups/invite', array( - 'id' => 'invite_to_group', - 'class' => 'elgg-form-alt mtm', - ), array( - 'entity' => $group, - )); - } else { - $content .= elgg_echo('groups:noaccess'); - } - - $params = array( - 'content' => $content, - 'title' => $title, - 'filter' => '', - ); - $body = elgg_view_layout('content', $params); - - echo elgg_view_page($title, $body); -} - -/** - * Manage requests to join a group - * - * @param int $guid Group entity GUID - */ -function groups_handle_requests_page($guid) { - - gatekeeper(); - - elgg_set_page_owner_guid($guid); - - $group = get_entity($guid); - - $title = elgg_echo('groups:membershiprequests'); - - if ($group && $group->canEdit()) { - elgg_push_breadcrumb($group->name, $group->getURL()); - elgg_push_breadcrumb($title); - - $requests = elgg_get_entities_from_relationship(array( - 'type' => 'user', - 'relationship' => 'membership_request', - 'relationship_guid' => $guid, - 'inverse_relationship' => true, - 'limit' => 0, - )); - $content = elgg_view('groups/membershiprequests', array( - 'requests' => $requests, - 'entity' => $group, - )); - - } else { - $content = elgg_echo("groups:noaccess"); - } - - $params = array( - 'content' => $content, - 'title' => $title, - 'filter' => '', - ); - $body = elgg_view_layout('content', $params); - - echo elgg_view_page($title, $body); -} - -/** - * Registers the buttons for title area of the group profile page - * - * @param ElggGroup $group - */ -function groups_register_profile_buttons($group) { - - $actions = array(); - - // group owners - if ($group->canEdit()) { - // edit and invite - $url = elgg_get_site_url() . "groups/edit/{$group->getGUID()}"; - $actions[$url] = 'groups:edit'; - $url = elgg_get_site_url() . "groups/invite/{$group->getGUID()}"; - $actions[$url] = 'groups:invite'; - } - - // group members - if ($group->isMember(elgg_get_logged_in_user_entity())) { - if ($group->getOwnerGUID() != elgg_get_logged_in_user_guid()) { - // leave - $url = elgg_get_site_url() . "action/groups/leave?group_guid={$group->getGUID()}"; - $url = elgg_add_action_tokens_to_url($url); - $actions[$url] = 'groups:leave'; - } - } elseif (elgg_is_logged_in()) { - // join - admins can always join. - $url = elgg_get_site_url() . "action/groups/join?group_guid={$group->getGUID()}"; - $url = elgg_add_action_tokens_to_url($url); - if ($group->isPublicMembership() || $group->canEdit()) { - $actions[$url] = 'groups:join'; - } else { - // request membership - $actions[$url] = 'groups:joinrequest'; - } - } - - if ($actions) { - foreach ($actions as $url => $text) { - elgg_register_menu_item('title', array( - 'name' => $text, - 'href' => $url, - 'text' => elgg_echo($text), - 'link_class' => 'elgg-button elgg-button-action', - )); - } - } -} - -/** - * Prepares variables for the group edit form view. - * - * @param mixed $group ElggGroup or null. If a group, uses values from the group. - * @return array - */ -function groups_prepare_form_vars($group = null) { - $values = array( - 'name' => '', - 'membership' => ACCESS_PUBLIC, - 'vis' => ACCESS_PUBLIC, - 'guid' => null, - 'entity' => null - ); - - // handle customizable profile fields - $fields = elgg_get_config('group'); - - if ($fields) { - foreach ($fields as $name => $type) { - $values[$name] = ''; - } - } - - // handle tool options - $tools = elgg_get_config('group_tool_options'); - if ($tools) { - foreach ($tools as $group_option) { - $option_name = $group_option->name . "_enable"; - $values[$option_name] = $group_option->default_on ? 'yes' : 'no'; - } - } - - // get current group settings - if ($group) { - foreach (array_keys($values) as $field) { - if (isset($group->$field)) { - $values[$field] = $group->$field; - } - } - - if ($group->access_id != ACCESS_PUBLIC && $group->access_id != ACCESS_LOGGED_IN) { - // group only access - this is done to handle access not created when group is created - $values['vis'] = ACCESS_PRIVATE; - } - - $values['entity'] = $group; - } - - // get any sticky form settings - if (elgg_is_sticky_form('groups')) { - $sticky_values = elgg_get_sticky_values('groups'); - foreach ($sticky_values as $key => $value) { - $values[$key] = $value; - } - } - - elgg_clear_sticky_form('groups'); - - return $values; -} diff --git a/lib/subgroups.php b/lib/subgroups.php deleted file mode 100644 index ffa531e16..000000000 --- a/lib/subgroups.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php -/** - * Subgroups helper functions - * - * @package ElggSubgroups - */ - - -/** - * Gives the list of the group subgroups - * - * @param ElggGroup $group - * @return array - */ -function get_subgroups($group, $options = array()){ - if($group instanceof ElggGroup){ - - $options['type'] = 'group'; - $options['container_guid'] = $group->guid; - return elgg_get_entities($options); - - } else { - return false; - } -} - -function list_subgroups($group, $options = array()){ - - if($group instanceof ElggGroup){ - - $defaults = array( - 'full_view' => false, - 'pagination' => true, - ); - $options = array_merge($defaults, $options); - - $options['type'] = 'group'; - $options['container_guid'] = $group->guid; - - elgg_push_context('subgroups'); - $list = elgg_list_entities($options); - elgg_pop_context(); - - return $list; - - } else { - return ""; - } -} - -function subgroups_group_url_matches($url){ - $url = parse_url($url); - $pattern1 = "/groups\/profile\/(?P<group_guid>\d+)/"; - $pattern2 = "/g\/(?P<group_alias>[^\/]+)/"; - - $matches1 = array(); - $matches2 = array(); - - preg_match($pattern1, $url['path'], $matches1); - preg_match($pattern2, $url['path'], $matches2); - - if(!empty($matches1) || !empty($matches2)) { - return array_merge($matches1, $matches2); - } else { - return false; - } -} - -function subgroups_get_group_from_url($group_url){ - $matches = subgroups_group_url_matches($group_url); - $group_guid = $matches['group_guid']; - $group_alias = $matches['group_alias']; - - $group = get_entity($group_guid); - if(!$group && elgg_is_active_plugin('group_alias')) { - $group = get_group_from_group_alias($group_alias); - } - - if($group && $group->getURL() == $group_url){ - return $group; - } else { - return false; - } -} |