From 69a750eb7b2a3c7a09369a3714bfaa9ef028f086 Mon Sep 17 00:00:00 2001 From: dave Date: Thu, 7 Aug 2008 15:02:05 +0000 Subject: groups now have forums git-svn-id: https://code.elgg.org/elgg/trunk@1761 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/groups/actions/forums/addpost.php | 57 +++++++++++++++++++++ mod/groups/actions/forums/addtopic.php | 78 +++++++++++++++++++++++++++++ mod/groups/actions/forums/deletetopic.php | 45 +++++++++++++++++ mod/groups/actions/forums/edittopic.php | 83 +++++++++++++++++++++++++++++++ 4 files changed, 263 insertions(+) create mode 100644 mod/groups/actions/forums/addpost.php create mode 100644 mod/groups/actions/forums/addtopic.php create mode 100644 mod/groups/actions/forums/deletetopic.php create mode 100644 mod/groups/actions/forums/edittopic.php (limited to 'mod/groups/actions') diff --git a/mod/groups/actions/forums/addpost.php b/mod/groups/actions/forums/addpost.php new file mode 100644 index 000000000..0c2f1b210 --- /dev/null +++ b/mod/groups/actions/forums/addpost.php @@ -0,0 +1,57 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + // 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($vars['user'])) forward(); + + // Get input + $topic_guid = (int) get_input('topic_guid'); + $group_guid = (int) get_input('group_guid'); + $post = get_input('topic_post'); + $access = get_input('access'); + + // Let's see if we can get an entity with the specified GUID, and that it's a group forum topic + if ($topic = get_entity($topic_guid)) { + if ($topic->getSubtype() == "groupforumtopic") { + + //check the user posted a message + if($post){ + // If posting the comment was successful, say so + if ($topic->annotate('group_topic_post',$post,$access, $_SESSION['guid'])) { + + system_message(elgg_echo("groupspost:success")); + + } else { + system_message(elgg_echo("groupspost:failure")); + } + }else{ + system_message(elgg_echo("groupspost:nopost")); + } + + } + + } else { + + system_message(elgg_echo("groupstopic:notfound")); + + } + + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "mod/groups/topicposts.php?topic={$topic_guid}&group_guid={$group_guid}"; + forward($url); + +?> \ No newline at end of file diff --git a/mod/groups/actions/forums/addtopic.php b/mod/groups/actions/forums/addtopic.php new file mode 100644 index 000000000..3159d639f --- /dev/null +++ b/mod/groups/actions/forums/addtopic.php @@ -0,0 +1,78 @@ +isMember($vars['user'])) forward(); + + // Get input data + $title = get_input('topictitle'); + $message = get_input('topicmessage'); + $tags = get_input('topictags'); + $access = get_input('access_id'); + $group_guid = (int) get_input('group_guid'); + $user = $_SESSION['user']->getGUID(); // 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; + // 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 + + // now add the topic message as an annotation + $grouptopic->annotate('group_topic_post',$message,$access, $user); + + // Success message + system_message(elgg_echo("grouptopic:created")); + + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "pg/groups/forum/{$group_guid}/"; + forward($url); + + } + +?> + diff --git a/mod/groups/actions/forums/deletetopic.php b/mod/groups/actions/forums/deletetopic.php new file mode 100644 index 000000000..3882e698b --- /dev/null +++ b/mod/groups/actions/forums/deletetopic.php @@ -0,0 +1,45 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + // 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')); + if (!$group_entity->isMember($vars['user'])) forward(); + + // Get input data + $topic_guid = (int) get_input('topic'); + $group_guid = (int) get_input('group'); + + // Make sure we actually have permission to edit + $topic = get_entity($topic_guid); + if ($topic->getSubtype() == "groupforumtopic") { + + // Get owning user + // $owner = get_entity($topic->getOwner()); + // Delete it! + $rowsaffected = $topic->delete(); + if ($rowsaffected > 0) { + // Success message + system_message(elgg_echo("groupstopic:deleted")); + } else { + system_message(elgg_echo("groupstopic:notdeleted")); + } + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "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 new file mode 100644 index 000000000..865af2173 --- /dev/null +++ b/mod/groups/actions/forums/edittopic.php @@ -0,0 +1,83 @@ +isMember($vars['user'])) forward(); + + + // Get input data + $title = 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'); + $user = $_SESSION['user']->getGUID(); // 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 we actually have permission to edit + $topic = get_entity($topic_guid); + + 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; + + // 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 + + // now let's edit the message annotation + update_annotation($message_id, "group_topic_post", $message, "",$user, $access); + + // save the changes + if (!$topic->save()) { + // register_error(elgg_echo("forumtopic:error")); + } + + // Success message + system_message(elgg_echo("forumtopic:edited")); + + } + } + + // Forward to the group forum page + global $CONFIG; + $url = $CONFIG->wwwroot . "pg/groups/forum/{$group_guid}/"; + forward($url); + +?> + -- cgit v1.2.3