diff options
Diffstat (limited to 'mod/groups/lib/discussion.php')
| -rw-r--r-- | mod/groups/lib/discussion.php | 52 |
1 files changed, 29 insertions, 23 deletions
diff --git a/mod/groups/lib/discussion.php b/mod/groups/lib/discussion.php index 2a3de783b..874e21b2d 100644 --- a/mod/groups/lib/discussion.php +++ b/mod/groups/lib/discussion.php @@ -15,7 +15,7 @@ function discussion_handle_all_page() { 'type' => 'object', 'subtype' => 'groupforumtopic', 'order_by' => 'e.last_action desc', - 'limit' => 40, + 'limit' => 20, 'full_view' => false, )); @@ -23,7 +23,6 @@ function discussion_handle_all_page() { 'content' => $content, 'title' => elgg_echo('discussion:latest'), 'filter' => '', - 'buttons' => '', ); $body = elgg_view_layout('content', $params); @@ -40,12 +39,13 @@ function discussion_handle_list_page($guid) { elgg_set_page_owner_guid($guid); $group = get_entity($guid); - if (!$group) { - register_error(elgg_echo('group:notfound')); - forward(); + if (!elgg_instanceof($group, 'group')) { + forward('', '404'); } elgg_push_breadcrumb($group->name); + elgg_register_title_button(); + group_gatekeeper(); $title = elgg_echo('item:object:groupforumtopic'); @@ -59,6 +59,9 @@ function discussion_handle_list_page($guid) { 'full_view' => false, ); $content = elgg_list_entities($options); + if (!$content) { + $content = elgg_echo('discussion:none'); + } $params = array( @@ -67,10 +70,6 @@ function discussion_handle_list_page($guid) { 'filter' => '', ); - if (!$group->isMember() && !$group->canEdit()) { - $params['buttons'] = ''; - } - $body = elgg_view_layout('content', $params); echo elgg_view_page($title, $body); @@ -91,11 +90,16 @@ function discussion_handle_edit_page($type, $guid) { register_error(elgg_echo('group:notfound')); forward(); } - group_gatekeeper(); + + // 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()); + } $title = elgg_echo('groups:addtopic'); - elgg_push_breadcrumb($group->name, "pg/discussion/owner/$group->guid"); + elgg_push_breadcrumb($group->name, "discussion/owner/$group->guid"); elgg_push_breadcrumb($title); $body_vars = discussion_prepare_form_vars(); @@ -114,7 +118,7 @@ function discussion_handle_edit_page($type, $guid) { $title = elgg_echo('groups:edittopic'); - elgg_push_breadcrumb($group->name, "pg/discussion/owner/$group->guid"); + elgg_push_breadcrumb($group->name, "discussion/owner/$group->guid"); elgg_push_breadcrumb($topic->title, $topic->getURL()); elgg_push_breadcrumb($title); @@ -126,7 +130,6 @@ function discussion_handle_edit_page($type, $guid) { 'content' => $content, 'title' => $title, 'filter' => '', - 'buttons' => '', ); $body = elgg_view_layout('content', $params); @@ -145,8 +148,9 @@ function discussion_handle_view_page($guid) { $topic = get_entity($guid); if (!$topic) { - register_error(elgg_echo('discussion:topic:notfound')); - forward(); + register_error(elgg_echo('noaccess')); + $_SESSION['last_forward_from'] = current_page_url(); + forward(''); } $group = $topic->getContainerEntity(); @@ -159,17 +163,17 @@ function discussion_handle_view_page($guid) { group_gatekeeper(); - elgg_push_breadcrumb($group->name, "pg/discussion/owner/$group->guid"); + elgg_push_breadcrumb($group->name, "discussion/owner/$group->guid"); elgg_push_breadcrumb($topic->title); - $content = elgg_view_entity($topic, true); + $content = elgg_view_entity($topic, array('full_view' => true)); if ($topic->status == 'closed') { $content .= elgg_view('discussion/replies', array( 'entity' => $topic, 'show_add_form' => false, )); $content .= elgg_view('discussion/closed'); - } elseif ($group->isMember() || 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, @@ -185,11 +189,10 @@ function discussion_handle_view_page($guid) { 'content' => $content, 'title' => $topic->title, 'filter' => '', - 'buttons' => '', ); $body = elgg_view_layout('content', $params); - echo elgg_view_page($title, $body); + echo elgg_view_page($topic->title, $body); } /** @@ -213,13 +216,16 @@ function discussion_prepare_form_vars($topic = NULL) { if ($topic) { foreach (array_keys($values) as $field) { - $values[$field] = $topic->$field; + if (isset($topic->$field)) { + $values[$field] = $topic->$field; + } } } if (elgg_is_sticky_form('topic')) { - foreach (array_keys($values) as $field) { - $values[$field] = elgg_get_sticky_value('topic', $field); + $sticky_values = elgg_get_sticky_values('topic'); + foreach ($sticky_values as $key => $value) { + $values[$key] = $value; } } |
