diff options
Diffstat (limited to 'mod/groups/actions')
-rw-r--r-- | mod/groups/actions/discussion/delete.php | 29 | ||||
-rw-r--r-- | mod/groups/actions/discussion/save.php | 75 | ||||
-rw-r--r-- | mod/groups/actions/forums/addtopic.php | 76 | ||||
-rw-r--r-- | mod/groups/actions/forums/deletetopic.php | 38 | ||||
-rw-r--r-- | mod/groups/actions/forums/edittopic.php | 66 |
5 files changed, 104 insertions, 180 deletions
diff --git a/mod/groups/actions/discussion/delete.php b/mod/groups/actions/discussion/delete.php new file mode 100644 index 000000000..c3de612d7 --- /dev/null +++ b/mod/groups/actions/discussion/delete.php @@ -0,0 +1,29 @@ +<?php +/** + * Delete topic action + * + */ + +$topic_guid = (int) get_input('guid'); + +$topic = get_entity($topic_guid); +if (!$topic || !$topic->getSubtype() == "groupforumtopic") { + register_error(elgg_echo('discussion:error:notdeleted')); + forward(REFERER); +} + +if (!$topic->canEdit()) { + register_error(elgg_echo('discussion:error:permissions')); + forward(REFERER); +} + +$container = $topic->getContainerEntity(); + +$result = $topic->delete(); +if ($result) { + system_message(elgg_echo('discussion:topic:deleted')); +} else { + register_error(elgg_echo('discussion:error:notdeleted')); +} + +forward("pg/discussion/owner/$container->guid"); diff --git a/mod/groups/actions/discussion/save.php b/mod/groups/actions/discussion/save.php new file mode 100644 index 000000000..8e8f08a50 --- /dev/null +++ b/mod/groups/actions/discussion/save.php @@ -0,0 +1,75 @@ +<?php +/** + * Topic save action + */ + +// Get variables +$title = get_input("title"); +$desc = get_input("description"); +$status = get_input("status"); +$access_id = (int) get_input("access_id"); +$container_guid = (int) get_input('container_guid'); +$guid = (int) get_input('topic_guid'); +$tags = get_input("tags"); + +elgg_make_sticky_form('topic'); + +// validation of inputs +if (!$title || !$desc) { + register_error(elgg_echo('discussion:error:missing')); + forward(REFERER); +} + +$container = get_entity($container_guid); +if (!$container || (!$container->isMember() && !$container->canEdit())) { + register_error(elgg_echo('discussion:error:permissions')); + forward(REFERER); +} + +// check whether this is a new topic or an edit +$new_topic = true; +if ($guid > 0) { + $new_topic = false; +} + +if ($new_topic) { + $topic = new ElggObject(); + $topic->subtype = 'groupforumtopic'; +} else { + // load original file object + $topic = new ElggObject($guid); + if (!$topic || !$topic->canEdit()) { + register_error(elgg_echo('discussion:topic:notfound')); + forward(REFERER); + } +} + +$topic->title = $title; +$topic->description = $desc; +$topic->status = $status; +$topic->access_id = $access_id; +$topic->container_guid = $container_guid; + +$tags = explode(",", $tags); +$topic->tags = $tags; + +$result = $topic->save(); + +if (!$result) { + register_error(elgg_echo('discussion:error:notsaved')); + forward(REFERER); +} + +// topic saved so clear sticky form +elgg_clear_sticky_form('topic'); + + +// handle results differently for new topics and topic edits +if ($new_topic) { + system_message(elgg_echo('discussion:topic:created')); + add_to_river('river/forum/topic/create', 'create', get_loggedin_userid(), $topic->guid); +} else { + system_message(elgg_echo('discussion:topic:updated')); +} + +forward($topic->getURL()); diff --git a/mod/groups/actions/forums/addtopic.php b/mod/groups/actions/forums/addtopic.php deleted file mode 100644 index 0b8a0f590..000000000 --- a/mod/groups/actions/forums/addtopic.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - - /** - * Elgg groups plugin add topic action. - * - * @package ElggGroups - */ - - // Make sure we're logged in; forward to the front page if not - if (!isloggedin()) forward(); - - // Check the user is a group member - $group_entity = get_entity(get_input('group_guid')); - if (!$group_entity->isMember(get_loggedin_user())) forward(); - - // Get input data - $title = strip_tags(get_input('topictitle')); - $message = get_input('topicmessage'); - $tags = get_input('topictags'); - $access = get_input('access_id'); - $group_guid = (int) get_input('group_guid'); - $user = get_loggedin_userid(); // you need to be logged in to comment on a group forum - $status = get_input('status'); // sticky, resolved, closed - - // Convert string of tags into a preformatted array - $tagarray = string_to_tag_array($tags); - - // Make sure the title / message aren't blank - if (empty($title) || empty($message)) { - register_error(elgg_echo("grouptopic:blank")); - forward("pg/groups/forum/{$group_guid}/"); - - // Otherwise, save the topic - } else { - - // Initialise a new ElggObject - $grouptopic = new ElggObject(); - // Tell the system it's a group forum topic - $grouptopic->subtype = "groupforumtopic"; - // Set its owner to the current user - $grouptopic->owner_guid = $user; - // Set the group it belongs to - $grouptopic->container_guid = $group_guid; - // For now, set its access to public (we'll add an access dropdown shortly) - $grouptopic->access_id = $access; - // Set its title and description appropriately - $grouptopic->title = $title; - // Set its title and description appropriately - $grouptopic->description = $message; - // Before we can set metadata, we need to save the topic - if (!$grouptopic->save()) { - register_error(elgg_echo("grouptopic:error")); - forward("pg/groups/forum/{$group_guid}/"); - } - // Now let's add tags. We can pass an array directly to the object property! Easy. - if (is_array($tagarray)) { - $grouptopic->tags = $tagarray; - } - // add metadata - $grouptopic->status = $status; // the current status i.e sticky, closed, resolved, open - - // add to river - add_to_river('river/forum/topic/create','create',get_loggedin_userid(),$grouptopic->guid); - - // Success message - system_message(elgg_echo("grouptopic:created")); - - // Forward to the group forum page - global $CONFIG; - $url = elgg_get_site_url() . "pg/groups/forum/{$group_guid}/"; - forward($url); - - } - -?> - diff --git a/mod/groups/actions/forums/deletetopic.php b/mod/groups/actions/forums/deletetopic.php deleted file mode 100644 index c67228a2f..000000000 --- a/mod/groups/actions/forums/deletetopic.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - - /** - * Elgg Groups: delete topic action - * - * @package ElggGroups - */ - - $group_entity = get_entity(get_input('group')); - - // Get input data - $topic_guid = (int) get_input('topic'); - $group_guid = (int) get_input('group'); - - $topic = get_entity($topic_guid); - if ($topic->getSubtype() == "groupforumtopic") { - - // Make sure we actually have permission to edit - if (!$topic->canEdit()) { - register_error(elgg_echo("groupstopic:notdeleted")); - forward(REFERER); - } - - // Delete it! - $rowsaffected = $topic->delete(); - if ($rowsaffected > 0) { - // Success message - system_message(elgg_echo("groupstopic:deleted")); - } else { - register_error(elgg_echo("groupstopic:notdeleted")); - } - // Forward to the group forum page - $url = elgg_get_site_url() . "pg/groups/forum/{$group_guid}/"; - forward($url); - - } - -?>
\ No newline at end of file diff --git a/mod/groups/actions/forums/edittopic.php b/mod/groups/actions/forums/edittopic.php deleted file mode 100644 index b032e37d7..000000000 --- a/mod/groups/actions/forums/edittopic.php +++ /dev/null @@ -1,66 +0,0 @@ -<?php -/** -* Elgg groups plugin edit topic action. - */ - -// Make sure we're logged in (send us to the front page if not) -if (!isloggedin()) forward(); - -// Check the user is a group member -$group_entity = get_entity(get_input('group_guid')); -if (!$group_entity->isMember(get_loggedin_user())) forward(); - -// Get input data -$title = strip_tags(get_input('topictitle')); -$message = get_input('topicmessage'); -$message_id = get_input('message_id'); -$tags = get_input('topictags'); -$topic_guid = get_input('topic'); -$access = get_input('access_id'); -$group_guid = get_input('group_guid'); -$status = get_input('status'); // open, closed - -// Convert string of tags into a preformatted array -$tagarray = string_to_tag_array($tags); - -// Make sure we actually have permission to edit -$topic = get_entity($topic_guid); -if ($topic){ - $user = $topic->getOwnerGUID(); - if ($topic->getSubtype() == "groupforumtopic") { - - // Convert string of tags into a preformatted array - $tagarray = string_to_tag_array($tags); - - // Make sure the title isn't blank - if (empty($title) || empty($message)) { - register_error(elgg_echo("groupstopic:blank")); - - // Otherwise, save the forum - } else { - $topic->access_id = $access; - // Set its title - $topic->title = $title; - // Set the message - $topic->description = $message; - // if no tags are present, clear existing ones - if (is_array($tagarray)) { - $topic->tags = $tagarray; - } else $topic->clearMetadata('tags'); - // edit metadata - $topic->status = $status; // the current status i.e sticky, closed, resolved - - // save the changes - if (!$topic->save()) { - // register_error(elgg_echo("forumtopic:error")); - } - // Success message - system_message(elgg_echo("groups:forumtopic:edited")); - } - } -} -// Forward to the discussion -global $CONFIG; -$url = elgg_get_site_url() . "mod/groups/topicposts.php?topic={$topic_guid}&group_guid={$group_guid}/"; -forward($url); - |