aboutsummaryrefslogtreecommitdiff
path: root/mod/groups/lib/discussion.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/groups/lib/discussion.php')
-rw-r--r--mod/groups/lib/discussion.php52
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;
}
}