From 23a912aa6678bb16f866b01c175b8e73e7bf417d Mon Sep 17 00:00:00 2001 From: cash Date: Fri, 23 Dec 2011 15:07:49 -0500 Subject: Refs #4239 fixed upgrade scripts with bad limits --- mod/groups/upgrades/2011030101.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'mod/groups') diff --git a/mod/groups/upgrades/2011030101.php b/mod/groups/upgrades/2011030101.php index c2a80c08c..666ae3736 100644 --- a/mod/groups/upgrades/2011030101.php +++ b/mod/groups/upgrades/2011030101.php @@ -43,7 +43,11 @@ function groups_2011030101($topic) { return $annotation[0]->delete(); } -$options = array('type' => 'object', 'subtype' => 'groupforumtopic'); +$options = array( + 'type' => 'object', + 'subtype' => 'groupforumtopic', + 'limit' => 0, +); $batch = new ElggBatch('elgg_get_entities', $options, 'groups_2011030101', 100); if ($batch->callbackResult) { -- cgit v1.2.3 From 74f3f133432cfd4100b04db66b57dcc19ab09a20 Mon Sep 17 00:00:00 2001 From: cash Date: Fri, 23 Dec 2011 15:32:15 -0500 Subject: added access override to the forum upgrade --- mod/groups/upgrades/2011030101.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'mod/groups') diff --git a/mod/groups/upgrades/2011030101.php b/mod/groups/upgrades/2011030101.php index 666ae3736..9ed5b321b 100644 --- a/mod/groups/upgrades/2011030101.php +++ b/mod/groups/upgrades/2011030101.php @@ -25,7 +25,7 @@ foreach ($topics as $topic) { /** - * Condense annotation into object + * Condense first annotation into object * * @param ElggObject $topic */ @@ -43,12 +43,14 @@ function groups_2011030101($topic) { return $annotation[0]->delete(); } +$previous_access = elgg_set_ignore_access(true); $options = array( 'type' => 'object', 'subtype' => 'groupforumtopic', 'limit' => 0, ); $batch = new ElggBatch('elgg_get_entities', $options, 'groups_2011030101', 100); +elgg_set_ignore_access($previous_access); if ($batch->callbackResult) { error_log("Elgg Groups upgrade (2011030101) succeeded"); -- cgit v1.2.3 From 2c4e77c49fc43add737daaa76aef710de8d01d30 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 23 Dec 2011 19:58:27 -0500 Subject: Fixes #1922 can now delete invites to invisible groups --- mod/groups/actions/groups/membership/delete_invite.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'mod/groups') diff --git a/mod/groups/actions/groups/membership/delete_invite.php b/mod/groups/actions/groups/membership/delete_invite.php index 4b654f0b6..d21aa0309 100644 --- a/mod/groups/actions/groups/membership/delete_invite.php +++ b/mod/groups/actions/groups/membership/delete_invite.php @@ -9,7 +9,11 @@ $user_guid = get_input('user_guid', elgg_get_logged_in_user_guid()); $group_guid = get_input('group_guid'); $user = get_entity($user_guid); + +// invisible groups require overriding access to delete invite +$old_access = elgg_set_ignore_access(true); $group = get_entity($group_guid); +elgg_set_ignore_access($old_access); // If join request made if (check_entity_relationship($group->guid, 'invited', $user->guid)) { -- cgit v1.2.3 From a9394e1035147e3910b2dc3cf156b0361ea791cc Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 23 Dec 2011 20:43:48 -0500 Subject: Fixes #2074 adds group search --- mod/groups/languages/en.php | 1 + mod/groups/lib/groups.php | 8 +++++++- mod/groups/views/default/forms/groups/find.php | 16 ++++++++++++++++ mod/groups/views/default/forms/groups/search.php | 14 +++++++++----- mod/groups/views/default/groups/sidebar/find.php | 2 +- mod/groups/views/default/groups/sidebar/search.php | 15 +++++++++++++++ 6 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 mod/groups/views/default/forms/groups/find.php create mode 100644 mod/groups/views/default/groups/sidebar/search.php (limited to 'mod/groups') diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index 09feaf8d1..3623c95fc 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -61,6 +61,7 @@ $english = array( 'groups:search:tags' => "tag", 'groups:search:title' => "Search for groups tagged with '%s'", 'groups:search:none' => "No matching groups were found", + 'groups:search_in_group' => "Search in this group", 'groups:activity' => "Group activity", 'groups:enableactivity' => 'Enable group activity', diff --git a/mod/groups/lib/groups.php b/mod/groups/lib/groups.php index 7798e5dc3..5d6083077 100644 --- a/mod/groups/lib/groups.php +++ b/mod/groups/lib/groups.php @@ -234,6 +234,8 @@ function groups_handle_invitations_page() { function groups_handle_profile_page($guid) { elgg_set_page_owner_guid($guid); + elgg_push_context('group_profile'); + // turn this into a core function global $autofeed; $autofeed = true; @@ -247,7 +249,11 @@ function groups_handle_profile_page($guid) { $content = elgg_view('groups/profile/layout', array('entity' => $group)); if (group_gatekeeper(false)) { - $sidebar = elgg_view('groups/sidebar/members', array('entity' => $group)); + $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 = ''; } diff --git a/mod/groups/views/default/forms/groups/find.php b/mod/groups/views/default/forms/groups/find.php new file mode 100644 index 000000000..ddf639b74 --- /dev/null +++ b/mod/groups/views/default/forms/groups/find.php @@ -0,0 +1,16 @@ + 'tag', + 'class' => 'elgg-input-search mbm', + 'value' => $tag_string, + 'onclick' => "if (this.value=='$tag_string') { this.value='' }", +); +echo elgg_view('input/text', $params); + +echo elgg_view('input/submit', array('value' => elgg_echo('search:go'))); diff --git a/mod/groups/views/default/forms/groups/search.php b/mod/groups/views/default/forms/groups/search.php index ddf639b74..850b6088e 100644 --- a/mod/groups/views/default/forms/groups/search.php +++ b/mod/groups/views/default/forms/groups/search.php @@ -1,16 +1,20 @@ 'tag', + 'name' => 'q', 'class' => 'elgg-input-search mbm', 'value' => $tag_string, - 'onclick' => "if (this.value=='$tag_string') { this.value='' }", ); echo elgg_view('input/text', $params); +echo elgg_view('input/hidden', array( + 'name' => 'container_guid', + 'value' => $vars['entity']->getGUID(), +)); + echo elgg_view('input/submit', array('value' => elgg_echo('search:go'))); diff --git a/mod/groups/views/default/groups/sidebar/find.php b/mod/groups/views/default/groups/sidebar/find.php index c5c986759..c1a8da3c2 100644 --- a/mod/groups/views/default/groups/sidebar/find.php +++ b/mod/groups/views/default/groups/sidebar/find.php @@ -5,7 +5,7 @@ * @package ElggGroups */ $url = elgg_get_site_url() . 'groups/search'; -$body = elgg_view_form('groups/search', array( +$body = elgg_view_form('groups/find', array( 'action' => $url, 'method' => 'get', 'disable_security' => true, diff --git a/mod/groups/views/default/groups/sidebar/search.php b/mod/groups/views/default/groups/sidebar/search.php new file mode 100644 index 000000000..226835715 --- /dev/null +++ b/mod/groups/views/default/groups/sidebar/search.php @@ -0,0 +1,15 @@ + $url, + 'method' => 'get', + 'disable_security' => true, +), $vars); + +echo elgg_view_module('aside', elgg_echo('groups:search_in_group'), $body); \ No newline at end of file -- cgit v1.2.3 From 6dc5a90146595b78f5fd0d9b10b628a78ca2dac7 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 31 Dec 2011 10:18:01 -0500 Subject: Fixes #4256 reruns the forum topic upgrade by checking the 5 oldest topics --- mod/groups/upgrades/2011030101.php | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'mod/groups') diff --git a/mod/groups/upgrades/2011030101.php b/mod/groups/upgrades/2011030101.php index 9ed5b321b..55edb1a16 100644 --- a/mod/groups/upgrades/2011030101.php +++ b/mod/groups/upgrades/2011030101.php @@ -9,6 +9,7 @@ $topics = elgg_get_entities(array( 'type' => 'object', 'subtype' => 'groupforumtopic', 'limit' => 5, + 'order_by' => 'e.time_created asc', )); // if not topics, no upgrade required @@ -31,6 +32,11 @@ foreach ($topics as $topic) { */ function groups_2011030101($topic) { + // do not upgrade topics that have already been upgraded + if ($topic->description) { + return true; + } + $annotation = $topic->getAnnotations('group_topic_post', 1); if (!$annotation) { // no text for this forum post so we delete (probably caused by #2624) -- cgit v1.2.3 From c49f6d145700c878851ed6b548674d7693238841 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 31 Dec 2011 10:47:06 -0500 Subject: Fixes #4228 group sort menu view accepts selected menu item from page handler --- mod/groups/views/default/groups/group_sort_menu.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'mod/groups') diff --git a/mod/groups/views/default/groups/group_sort_menu.php b/mod/groups/views/default/groups/group_sort_menu.php index c53b49c8e..f5631a31f 100644 --- a/mod/groups/views/default/groups/group_sort_menu.php +++ b/mod/groups/views/default/groups/group_sort_menu.php @@ -2,6 +2,7 @@ /** * All groups listing page navigation * + * @uses $vars['selected'] Name of the tab that has been selected */ $tabs = array( @@ -22,14 +23,13 @@ $tabs = array( ), ); -// sets default selected item -if (strpos(full_url(), 'filter') === false) { - $tabs['newest']['selected'] = true; -} - foreach ($tabs as $name => $tab) { $tab['name'] = $name; + if ($vars['selected'] == $name) { + $tab['selected'] = true; + } + elgg_register_menu_item('filter', $tab); } -- cgit v1.2.3 From 63dfdab76fef0e44fac550b0bb1a15780470f6c6 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 31 Dec 2011 11:13:01 -0500 Subject: Fixes #4152 setting access on group creation river item --- mod/groups/actions/groups/edit.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'mod/groups') diff --git a/mod/groups/actions/groups/edit.php b/mod/groups/actions/groups/edit.php index c4cf6667e..b513a6098 100644 --- a/mod/groups/actions/groups/edit.php +++ b/mod/groups/actions/groups/edit.php @@ -89,14 +89,10 @@ if ($new_group_flag) { $group->save(); -// group creator needs to be member of new group and river entry created -if ($new_group_flag) { - elgg_set_page_owner_guid($group->guid); - $group->join($user); - add_to_river('river/group/create', 'create', $user->guid, $group->guid); -} - // Invisible group support +// @todo this requires save to be called to create the acl for the group. This +// is an odd requirement and should be removed. Either the acl creation happens +// in the action or the visibility moves to a plugin hook if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') { $visibility = (int)get_input('vis', '', false); if ($visibility != ACCESS_PUBLIC && $visibility != ACCESS_LOGGED_IN) { @@ -105,10 +101,18 @@ if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') { if ($group->access_id != $visibility) { $group->access_id = $visibility; - $group->save(); } } +$group->save(); + +// group creator needs to be member of new group and river entry created +if ($new_group_flag) { + elgg_set_page_owner_guid($group->guid); + $group->join($user); + add_to_river('river/group/create', 'create', $user->guid, $group->guid, $group->access_id); +} + // Now see if we have a file icon if ((isset($_FILES['icon'])) && (substr_count($_FILES['icon']['type'],'image/'))) { -- cgit v1.2.3 From 147223bc786833d539b3325db966a3a1eed44956 Mon Sep 17 00:00:00 2001 From: cash Date: Sun, 1 Jan 2012 19:35:23 -0500 Subject: Fixes #2230 group acl names are not i18n friendly --- mod/groups/languages/en.php | 1 + mod/groups/start.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'mod/groups') diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index 3623c95fc..a4a9e2b2b 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -62,6 +62,7 @@ $english = array( 'groups:search:title' => "Search for groups tagged with '%s'", 'groups:search:none' => "No matching groups were found", 'groups:search_in_group' => "Search in this group", + 'groups:acl' => "Group: %s", 'groups:activity' => "Group activity", 'groups:enableactivity' => 'Enable group activity', diff --git a/mod/groups/start.php b/mod/groups/start.php index 09362cbbc..86a1da279 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -663,7 +663,7 @@ function group_access_options($group) { ACCESS_PRIVATE => 'private', ACCESS_LOGGED_IN => 'logged in users', ACCESS_PUBLIC => 'public', - $group->group_acl => 'Group: ' . $group->name, + $group->group_acl => elgg_echo('groups:acl', array($group->name)), ); return $access_array; } -- cgit v1.2.3 From 946a1229a126b91de9b64d2def672c628a77e6c6 Mon Sep 17 00:00:00 2001 From: Sem Date: Tue, 3 Jan 2012 16:14:31 +0100 Subject: Refs #4142. Also added ETag in group icon. --- mod/groups/icon.php | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'mod/groups') diff --git a/mod/groups/icon.php b/mod/groups/icon.php index f4c0f8010..607f38939 100644 --- a/mod/groups/icon.php +++ b/mod/groups/icon.php @@ -10,6 +10,13 @@ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); $group_guid = get_input('group_guid'); $group = get_entity($group_guid); +// If is the same eTag, content didn't changed. +$eTag = $group->icontime . $group_guid; +if (trim($_SERVER['HTTP_IF_NONE_MATCH']) == $eTag) { + header("HTTP/1.1 304 Not Modified"); + exit; +} + $size = strtolower(get_input('size')); if (!in_array($size,array('large','medium','small','tiny','master','topbar'))) $size = "medium"; @@ -37,4 +44,5 @@ header('Expires: ' . date('r',time() + 864000)); header("Pragma: public"); header("Cache-Control: public"); header("Content-Length: " . strlen($contents)); +header("ETag: $eTag"); echo $contents; -- cgit v1.2.3 From 6b8301f6433ec22b065d734e9fc26d09f723b07d Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sat, 7 Jan 2012 12:32:46 -0500 Subject: added check for existance of IF-NONE-MATCH header in request --- mod/groups/icon.php | 10 +++++----- mod/profile/icondirect.php | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'mod/groups') diff --git a/mod/groups/icon.php b/mod/groups/icon.php index 607f38939..104da4b41 100644 --- a/mod/groups/icon.php +++ b/mod/groups/icon.php @@ -10,15 +10,15 @@ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); $group_guid = get_input('group_guid'); $group = get_entity($group_guid); -// If is the same eTag, content didn't changed. -$eTag = $group->icontime . $group_guid; -if (trim($_SERVER['HTTP_IF_NONE_MATCH']) == $eTag) { +// If is the same ETag, content didn't changed. +$etag = $group->icontime . $group_guid; +if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) { header("HTTP/1.1 304 Not Modified"); exit; } $size = strtolower(get_input('size')); -if (!in_array($size,array('large','medium','small','tiny','master','topbar'))) +if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar'))) $size = "medium"; $success = false; @@ -44,5 +44,5 @@ header('Expires: ' . date('r',time() + 864000)); header("Pragma: public"); header("Cache-Control: public"); header("Content-Length: " . strlen($contents)); -header("ETag: $eTag"); +header("ETag: $etag"); echo $contents; diff --git a/mod/profile/icondirect.php b/mod/profile/icondirect.php index 1680d8fce..6c3148f2b 100644 --- a/mod/profile/icondirect.php +++ b/mod/profile/icondirect.php @@ -15,9 +15,9 @@ $join_date = (int)$_GET['joindate']; $last_cache = (int)$_GET['lastcache']; // icontime $guid = (int)$_GET['guid']; -// If is the same eTag, content didn't changed. -$eTag = $last_cache . $guid; -if (trim($_SERVER['HTTP_IF_NONE_MATCH']) == $eTag) { +// If is the same ETag, content didn't changed. +$etag = $last_cache . $guid; +if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) { header("HTTP/1.1 304 Not Modified"); exit; } @@ -56,7 +56,7 @@ if ($mysql_dblink) { header("Pragma: public"); header("Cache-Control: public"); header("Content-Length: " . strlen($contents)); - header("ETag: $eTag"); + header("ETag: $etag"); // this chunking is done for supposedly better performance $split_string = str_split($contents, 1024); foreach ($split_string as $chunk) { -- cgit v1.2.3 From cfcf985b803e2ce4187d1dad30905a30e4c937b8 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sun, 8 Jan 2012 14:24:09 -0500 Subject: updated groups js to use new JS hook system --- mod/groups/views/default/groups/js.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'mod/groups') diff --git a/mod/groups/views/default/groups/js.php b/mod/groups/views/default/groups/js.php index ad742445b..1b4d33f32 100644 --- a/mod/groups/views/default/groups/js.php +++ b/mod/groups/views/default/groups/js.php @@ -1,5 +1,6 @@ -$(function() { +// this adds a class to support IE8 and older +elgg.register_hook_handler('init', 'system', function() { // jQuery uses 0-based indexing $('#groups-tools').children('li:even').addClass('odd'); }); -- cgit v1.2.3 From 4f4f5a8be736c36ca8af0cd65731dd7c64da3b1a Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sun, 8 Jan 2012 16:09:14 -0500 Subject: Fixes #3216 passing type/subtype for group discussions --- mod/groups/actions/discussion/reply/save.php | 6 ++---- mod/groups/actions/discussion/save.php | 2 +- mod/groups/lib/discussion.php | 6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) (limited to 'mod/groups') diff --git a/mod/groups/actions/discussion/reply/save.php b/mod/groups/actions/discussion/reply/save.php index a1ed036b6..f8be8aa2c 100644 --- a/mod/groups/actions/discussion/reply/save.php +++ b/mod/groups/actions/discussion/reply/save.php @@ -4,8 +4,6 @@ * */ -gatekeeper(); - // Get input $entity_guid = (int) get_input('entity_guid'); $text = get_input('group_topic_post'); @@ -23,10 +21,10 @@ if (!$topic) { forward(REFERER); } -$user = get_loggedin_user(); +$user = elgg_get_logged_in_user_entity(); $group = $topic->getContainerEntity(); -if (!$group->canWriteToContainer($user)) { +if (!$group->canWriteToContainer()) { register_error(elgg_echo('groups:notmember')); forward(REFERER); } diff --git a/mod/groups/actions/discussion/save.php b/mod/groups/actions/discussion/save.php index a51775cd6..de4afadfb 100644 --- a/mod/groups/actions/discussion/save.php +++ b/mod/groups/actions/discussion/save.php @@ -21,7 +21,7 @@ if (!$title || !$desc) { } $container = get_entity($container_guid); -if (!$container || !$container->canWriteToContainer()) { +if (!$container || !$container->canWriteToContainer(0, 'object', 'groupforumtopic')) { register_error(elgg_echo('discussion:error:permissions')); forward(REFERER); } diff --git a/mod/groups/lib/discussion.php b/mod/groups/lib/discussion.php index 2bda4678e..55642644d 100644 --- a/mod/groups/lib/discussion.php +++ b/mod/groups/lib/discussion.php @@ -92,8 +92,8 @@ function discussion_handle_edit_page($type, $guid) { forward(); } - // make sure user has permissions to write to container - if (!$group->canWriteToContainer()) { + // make sure user has permissions to add a topic to container + if (!$group->canWriteToContainer(0, 'object', 'groupforumtopic')) { register_error(elgg_echo('groups:permissions:error')); forward($group->getURL()); } @@ -173,7 +173,7 @@ function discussion_handle_view_page($guid) { 'show_add_form' => false, )); $content .= elgg_view('discussion/closed'); - } elseif ($group->canWriteToContainer() || elgg_is_admin_logged_in()) { + } elseif ($group->canWriteToContainer(0, 'object', 'groupforumtopic') || elgg_is_admin_logged_in()) { $content .= elgg_view('discussion/replies', array( 'entity' => $topic, 'show_add_form' => true, -- cgit v1.2.3