From 4766f36a4d74924f21ff329c4318ce4e069ffa04 Mon Sep 17 00:00:00 2001
From: brettp
Date: Wed, 3 Mar 2010 17:53:05 +0000
Subject: Pulled in the interface changes.
git-svn-id: http://code.elgg.org/elgg/trunk@5257 36083f99-b078-4883-b0ff-0f9b5a30f544
---
mod/groups/actions/addtogroup.php | 96 ++++
mod/groups/actions/delete.php | 19 +
mod/groups/actions/edit.php | 153 +++++
mod/groups/actions/featured.php | 44 ++
mod/groups/actions/forums/addpost.php | 58 ++
mod/groups/actions/forums/addtopic.php | 81 +++
mod/groups/actions/forums/deletepost.php | 44 ++
mod/groups/actions/forums/deletetopic.php | 45 ++
mod/groups/actions/forums/editpost.php | 53 ++
mod/groups/actions/forums/edittopic.php | 87 +++
mod/groups/actions/groupskillinvitation.php | 32 ++
mod/groups/actions/groupskillrequest.php | 32 ++
mod/groups/actions/invite.php | 69 +++
mod/groups/actions/join.php | 65 +++
mod/groups/actions/joinrequest.php | 84 +++
mod/groups/actions/leave.php | 43 ++
mod/groups/addtopic.php | 29 +
mod/groups/all.php | 71 +++
mod/groups/discussions.php | 32 ++
mod/groups/edit.php | 33 ++
mod/groups/edittopic.php | 36 ++
mod/groups/forum.php | 35 ++
mod/groups/graphics/defaultlarge.gif | Bin 0 -> 4939 bytes
mod/groups/graphics/defaultmedium.gif | Bin 0 -> 2336 bytes
mod/groups/graphics/defaultsmall.gif | Bin 0 -> 1127 bytes
mod/groups/graphics/defaulttiny.gif | Bin 0 -> 782 bytes
mod/groups/graphics/icon.php | 45 ++
mod/groups/groupprofile.php | 60 ++
mod/groups/index.php | 31 ++
mod/groups/invitations.php | 33 ++
mod/groups/invite.php | 34 ++
mod/groups/languages/en.php | 228 ++++++++
mod/groups/manifest.xml | 10 +
mod/groups/membership.php | 38 ++
mod/groups/membershipreq.php | 36 ++
mod/groups/new.php | 22 +
mod/groups/start.php | 613 +++++++++++++++++++++
mod/groups/topicposts.php | 37 ++
mod/groups/views/default/forms/forums/addpost.php | 40 ++
mod/groups/views/default/forms/forums/addtopic.php | 101 ++++
.../views/default/forms/forums/edittopic.php | 109 ++++
mod/groups/views/default/forms/groups/edit.php | 162 ++++++
mod/groups/views/default/forms/groups/invite.php | 34 ++
mod/groups/views/default/forum/topicposts.php | 106 ++++
mod/groups/views/default/forum/topics.php | 33 ++
mod/groups/views/default/forum/viewposts.php | 58 ++
mod/groups/views/default/group/group.php | 21 +
.../views/default/groups/closedmembership.php | 15 +
mod/groups/views/default/groups/contentwrapper.php | 5 +
mod/groups/views/default/groups/css.php | 401 ++++++++++++++
mod/groups/views/default/groups/featured.php | 29 +
mod/groups/views/default/groups/find.php | 20 +
mod/groups/views/default/groups/forum_latest.php | 38 ++
.../views/default/groups/group_sort_menu.php | 28 +
mod/groups/views/default/groups/groupgallery.php | 25 +
mod/groups/views/default/groups/grouplisting.php | 49 ++
mod/groups/views/default/groups/groupprofile.php | 102 ++++
mod/groups/views/default/groups/icon.php | 48 ++
.../views/default/groups/invitationrequests.php | 44 ++
mod/groups/views/default/groups/members.php | 30 +
.../views/default/groups/membershiprequests.php | 44 ++
mod/groups/views/default/groups/profileitems.php | 28 +
mod/groups/views/default/groups/side_menu.php | 10 +
.../views/default/icon/group/default/large.php | 3 +
.../views/default/icon/group/default/medium.php | 3 +
.../views/default/icon/group/default/small.php | 3 +
.../views/default/icon/group/default/tiny.php | 3 +
.../views/default/object/groupforumtopic.php | 77 +++
mod/groups/views/default/river/forum/create.php | 27 +
.../views/default/river/forum/topic/create.php | 27 +
mod/groups/views/default/river/group/create.php | 13 +
.../views/default/river/object/group/create.php | 13 +
.../river/object/groupforumtopic/annotate.php | 14 +
.../river/object/groupforumtopic/create.php | 14 +
.../river/object/groupforumtopic/update.php | 13 +
.../default/river/relationship/member/create.php | 40 ++
mod/groups/views/default/settings/groups/edit.php | 18 +
mod/groups/views/default/sharing/invite.php | 41 ++
.../views/default/widgets/a_users_groups/edit.php | 14 +
.../views/default/widgets/a_users_groups/view.php | 42 ++
.../default/widgets/group_entities_widget/edit.php | 23 +
.../default/widgets/group_entities_widget/view.php | 35 ++
.../default/widgets/group_members_widget/edit.php | 23 +
.../default/widgets/group_members_widget/view.php | 35 ++
mod/groups/views/rss/forum/topicposts.php | 3 +
mod/groups/views/rss/forum/topics.php | 14 +
mod/groups/views/rss/forum/viewposts.php | 26 +
mod/groups/views/rss/groups/contentwrapper.php | 5 +
mod/groups/views/rss/groups/profileitems.php | 20 +
89 files changed, 4557 insertions(+)
create mode 100644 mod/groups/actions/addtogroup.php
create mode 100644 mod/groups/actions/delete.php
create mode 100644 mod/groups/actions/edit.php
create mode 100644 mod/groups/actions/featured.php
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/deletepost.php
create mode 100644 mod/groups/actions/forums/deletetopic.php
create mode 100644 mod/groups/actions/forums/editpost.php
create mode 100644 mod/groups/actions/forums/edittopic.php
create mode 100644 mod/groups/actions/groupskillinvitation.php
create mode 100644 mod/groups/actions/groupskillrequest.php
create mode 100644 mod/groups/actions/invite.php
create mode 100644 mod/groups/actions/join.php
create mode 100644 mod/groups/actions/joinrequest.php
create mode 100644 mod/groups/actions/leave.php
create mode 100644 mod/groups/addtopic.php
create mode 100644 mod/groups/all.php
create mode 100644 mod/groups/discussions.php
create mode 100644 mod/groups/edit.php
create mode 100644 mod/groups/edittopic.php
create mode 100644 mod/groups/forum.php
create mode 100644 mod/groups/graphics/defaultlarge.gif
create mode 100644 mod/groups/graphics/defaultmedium.gif
create mode 100644 mod/groups/graphics/defaultsmall.gif
create mode 100644 mod/groups/graphics/defaulttiny.gif
create mode 100644 mod/groups/graphics/icon.php
create mode 100644 mod/groups/groupprofile.php
create mode 100644 mod/groups/index.php
create mode 100644 mod/groups/invitations.php
create mode 100644 mod/groups/invite.php
create mode 100644 mod/groups/languages/en.php
create mode 100644 mod/groups/manifest.xml
create mode 100644 mod/groups/membership.php
create mode 100644 mod/groups/membershipreq.php
create mode 100644 mod/groups/new.php
create mode 100644 mod/groups/start.php
create mode 100644 mod/groups/topicposts.php
create mode 100644 mod/groups/views/default/forms/forums/addpost.php
create mode 100644 mod/groups/views/default/forms/forums/addtopic.php
create mode 100644 mod/groups/views/default/forms/forums/edittopic.php
create mode 100644 mod/groups/views/default/forms/groups/edit.php
create mode 100644 mod/groups/views/default/forms/groups/invite.php
create mode 100644 mod/groups/views/default/forum/topicposts.php
create mode 100644 mod/groups/views/default/forum/topics.php
create mode 100644 mod/groups/views/default/forum/viewposts.php
create mode 100644 mod/groups/views/default/group/group.php
create mode 100644 mod/groups/views/default/groups/closedmembership.php
create mode 100644 mod/groups/views/default/groups/contentwrapper.php
create mode 100644 mod/groups/views/default/groups/css.php
create mode 100644 mod/groups/views/default/groups/featured.php
create mode 100644 mod/groups/views/default/groups/find.php
create mode 100644 mod/groups/views/default/groups/forum_latest.php
create mode 100644 mod/groups/views/default/groups/group_sort_menu.php
create mode 100644 mod/groups/views/default/groups/groupgallery.php
create mode 100644 mod/groups/views/default/groups/grouplisting.php
create mode 100644 mod/groups/views/default/groups/groupprofile.php
create mode 100644 mod/groups/views/default/groups/icon.php
create mode 100644 mod/groups/views/default/groups/invitationrequests.php
create mode 100644 mod/groups/views/default/groups/members.php
create mode 100644 mod/groups/views/default/groups/membershiprequests.php
create mode 100644 mod/groups/views/default/groups/profileitems.php
create mode 100644 mod/groups/views/default/groups/side_menu.php
create mode 100644 mod/groups/views/default/icon/group/default/large.php
create mode 100644 mod/groups/views/default/icon/group/default/medium.php
create mode 100644 mod/groups/views/default/icon/group/default/small.php
create mode 100644 mod/groups/views/default/icon/group/default/tiny.php
create mode 100644 mod/groups/views/default/object/groupforumtopic.php
create mode 100644 mod/groups/views/default/river/forum/create.php
create mode 100644 mod/groups/views/default/river/forum/topic/create.php
create mode 100644 mod/groups/views/default/river/group/create.php
create mode 100644 mod/groups/views/default/river/object/group/create.php
create mode 100644 mod/groups/views/default/river/object/groupforumtopic/annotate.php
create mode 100644 mod/groups/views/default/river/object/groupforumtopic/create.php
create mode 100644 mod/groups/views/default/river/object/groupforumtopic/update.php
create mode 100644 mod/groups/views/default/river/relationship/member/create.php
create mode 100644 mod/groups/views/default/settings/groups/edit.php
create mode 100644 mod/groups/views/default/sharing/invite.php
create mode 100644 mod/groups/views/default/widgets/a_users_groups/edit.php
create mode 100644 mod/groups/views/default/widgets/a_users_groups/view.php
create mode 100644 mod/groups/views/default/widgets/group_entities_widget/edit.php
create mode 100644 mod/groups/views/default/widgets/group_entities_widget/view.php
create mode 100644 mod/groups/views/default/widgets/group_members_widget/edit.php
create mode 100644 mod/groups/views/default/widgets/group_members_widget/view.php
create mode 100644 mod/groups/views/rss/forum/topicposts.php
create mode 100644 mod/groups/views/rss/forum/topics.php
create mode 100644 mod/groups/views/rss/forum/viewposts.php
create mode 100644 mod/groups/views/rss/groups/contentwrapper.php
create mode 100644 mod/groups/views/rss/groups/profileitems.php
(limited to 'mod/groups')
diff --git a/mod/groups/actions/addtogroup.php b/mod/groups/actions/addtogroup.php
new file mode 100644
index 000000000..0b99ea917
--- /dev/null
+++ b/mod/groups/actions/addtogroup.php
@@ -0,0 +1,96 @@
+owner_guid)
+ if ($group->canEdit())
+ {
+
+ // If the group is open or the user has requested membership
+ if (
+ (check_entity_relationship($user->guid, 'membership_request', $group->guid)) ||
+ ($group->isPublicMembership())
+ )
+ {
+
+ if (!$group->isMember($user))
+ {
+ // Remove relationships
+ remove_entity_relationship($group->guid, 'invited', $user->guid);
+ remove_entity_relationship($user->guid, 'membership_request', $group->guid);
+
+ //add_entity_relationship($user->guid, 'member', $group->guid);
+ $group->join($user);
+
+ // send welcome email
+ notify_user($user->getGUID(), $group->owner_guid,
+ sprintf(elgg_echo('groups:welcome:subject'), $group->name),
+ sprintf(elgg_echo('groups:welcome:body'), $user->name, $logged_in_user->name, $group->name, $group->getURL()),
+ NULL);
+
+ system_message(elgg_echo('groups:addedtogroup'));
+ }
+ else
+ register_error(elgg_echo("groups:cantjoin"));
+ }
+ else
+ {
+ if ($user->isFriend())
+ {
+
+ // Create relationship
+ add_entity_relationship($group->guid, 'invited', $user->guid);
+
+ // Send email
+ $url = "{$CONFIG->url}pg/groups/invited?user_guid={$user->guid}&group_guid={$group->guid}";
+ if (notify_user($user->getGUID(), $group->owner_guid,
+ sprintf(elgg_echo('groups:invite:subject'), $user->name, $group->name),
+ sprintf(elgg_echo('groups:invite:body'), $user->name, $logged_in_user->name, $group->name, $url),
+ NULL))
+ system_message(elgg_echo("groups:userinvited"));
+ else
+ register_error(elgg_echo("groups:usernotinvited"));
+
+ }
+ else
+ register_error(elgg_echo("groups:usernotinvited"));
+ }
+ }
+ else
+ register_error(elgg_echo("groups:notowner"));
+ }
+ }
+ }
+
+ forward($_SERVER['HTTP_REFERER']);
+
+?>
diff --git a/mod/groups/actions/delete.php b/mod/groups/actions/delete.php
new file mode 100644
index 000000000..b4bc71838
--- /dev/null
+++ b/mod/groups/actions/delete.php
@@ -0,0 +1,19 @@
+delete())
+ system_message(elgg_echo('group:deleted'));
+ else
+ register_error(elgg_echo('group:notdeleted'));
+ }
+ else
+ register_error(elgg_echo('group:notdeleted'));
+
+ $url_name = $_SESSION['user']->username;
+ forward("{$vars['url']}pg/groups/member/{$url_name}");
+?>
\ No newline at end of file
diff --git a/mod/groups/actions/edit.php b/mod/groups/actions/edit.php
new file mode 100644
index 000000000..b6eb3eb71
--- /dev/null
+++ b/mod/groups/actions/edit.php
@@ -0,0 +1,153 @@
+group as $shortname => $valuetype) {
+ $input[$shortname] = get_input($shortname);
+ if ($valuetype == 'tags')
+ $input[$shortname] = string_to_tag_array($input[$shortname]);
+ }
+
+ $user_guid = get_input('user_guid');
+ $user = NULL;
+ if (!$user_guid) $user = $_SESSION['user'];
+ else
+ $user = get_entity($user_guid);
+
+ $group_guid = get_input('group_guid');
+
+ $group = new ElggGroup($group_guid); // load if present, if not create a new group
+ if (($group_guid) && (!$group->canEdit()))
+ {
+ register_error(elgg_echo("groups:cantedit"));
+
+ forward($_SERVER['HTTP_REFERER']);
+ exit;
+ }
+
+ // Assume we can edit or this is a new group
+ if (sizeof($input) > 0)
+ {
+ foreach($input as $shortname => $value) {
+ $group->$shortname = $value;
+ }
+ }
+
+ // Validate create
+ if (!$group->name)
+ {
+ register_error(elgg_echo("groups:notitle"));
+
+ forward($_SERVER['HTTP_REFERER']);
+ exit;
+ }
+
+ // Group membership - should these be treated with same constants as access permissions?
+ switch (get_input('membership'))
+ {
+ case ACCESS_PUBLIC:
+ $group->membership = ACCESS_PUBLIC;
+ break;
+ default:
+ $group->membership = ACCESS_PRIVATE;
+ }
+
+ // Set access - all groups are public from elgg's point of view, unless the override is in place
+
+ if (get_plugin_setting('hidden_groups', 'groups') == 'yes')
+ {
+ $visibility = (int)get_input('vis','',false);
+
+ $group->access_id = $visibility;
+ }
+ else
+ $group->access_id = ACCESS_PUBLIC;
+
+ // Set group tool options
+ //$group->files_enable = get_input('files_enable', 'yes');
+ //$group->pages_enable = get_input('pages_enable', 'yes');
+ //$group->forum_enable = get_input('forum_enable', 'yes');
+
+ // Set group tool options
+ if (isset($CONFIG->group_tool_options)) {
+ foreach($CONFIG->group_tool_options as $group_option) {
+ $group_option_toggle_name = $group_option->name."_enable";
+ if ($group_option->default_on) {
+ $group_option_default_value = 'yes';
+ } else {
+ $group_option_default_value = 'no';
+ }
+ $group->$group_option_toggle_name = get_input($group_option_toggle_name, $group_option_default_value);
+ }
+ }
+
+ $group->save();
+
+ if (!$group->isMember($user))
+ $group->join($user); // Creator always a member
+
+
+ // Now see if we have a file icon
+ if ((isset($_FILES['icon'])) && (substr_count($_FILES['icon']['type'],'image/')))
+ {
+ $prefix = "groups/".$group->guid;
+
+ $filehandler = new ElggFile();
+ $filehandler->owner_guid = $group->owner_guid;
+ $filehandler->setFilename($prefix . ".jpg");
+ $filehandler->open("write");
+ $filehandler->write(get_uploaded_file('icon'));
+ $filehandler->close();
+
+ $thumbtiny = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),25,25, true);
+ $thumbsmall = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),40,40, true);
+ $thumbmedium = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),100,100, true);
+ $thumblarge = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),200,200, false);
+ if ($thumbtiny) {
+
+ $thumb = new ElggFile();
+ $thumb->owner_guid = $group->owner_guid;
+ $thumb->setMimeType('image/jpeg');
+
+ $thumb->setFilename($prefix."tiny.jpg");
+ $thumb->open("write");
+ $thumb->write($thumbtiny);
+ $thumb->close();
+
+ $thumb->setFilename($prefix."small.jpg");
+ $thumb->open("write");
+ $thumb->write($thumbsmall);
+ $thumb->close();
+
+ $thumb->setFilename($prefix."medium.jpg");
+ $thumb->open("write");
+ $thumb->write($thumbmedium);
+ $thumb->close();
+
+ $thumb->setFilename($prefix."large.jpg");
+ $thumb->open("write");
+ $thumb->write($thumblarge);
+ $thumb->close();
+
+ $group->icontime = time();
+ }
+ }
+
+ system_message(elgg_echo("groups:saved"));
+
+ // Forward to the user's profile
+ forward($group->getUrl());
+ exit;
+?>
diff --git a/mod/groups/actions/featured.php b/mod/groups/actions/featured.php
new file mode 100644
index 000000000..2d16113df
--- /dev/null
+++ b/mod/groups/actions/featured.php
@@ -0,0 +1,44 @@
+featured_group = "yes";
+ system_message(elgg_echo('groups:featuredon'));
+
+ }
+
+ if($action == "unfeature"){
+
+ $group->featured_group = "no";
+ system_message(elgg_echo('groups:unfeatured'));
+
+ }
+
+ }
+
+ forward("pg/groups/world/");
+
+?>
\ No newline at end of file
diff --git a/mod/groups/actions/forums/addpost.php b/mod/groups/actions/forums/addpost.php
new file mode 100644
index 000000000..c277b795d
--- /dev/null
+++ b/mod/groups/actions/forums/addpost.php
@@ -0,0 +1,58 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.org/
+ */
+
+// Make sure we're logged in and have a CSRF token
+gatekeeper();
+
+// Get input
+$topic_guid = (int) get_input('topic_guid');
+$group_guid = (int) get_input('group_guid');
+$post = get_input('topic_post');
+
+
+// make sure we have text in the post
+if (!$post) {
+ register_error(elgg_echo("grouppost:nopost"));
+ forward($_SERVER['HTTP_REFERER']);
+}
+
+
+// Check that user is a group member
+$group = get_entity($group_guid);
+$user = get_loggedin_user();
+if (!$group->isMember($user)) {
+ register_error(elgg_echo("groups:notmember"));
+ forward($_SERVER['HTTP_REFERER']);
+}
+
+
+// Let's see if we can get an form topic with the specified GUID, and that it's a group forum topic
+$topic = get_entity($topic_guid);
+if (!$topic || $topic->getSubtype() != "groupforumtopic") {
+ register_error(elgg_echo("grouptopic:notfound"));
+ forward($_SERVER['HTTP_REFERER']);
+}
+
+
+// add the post to the forum topic
+$post_id = $topic->annotate('group_topic_post', $post, $topic->access_id, $user->guid);
+if ($post_id == false) {
+ system_message(elgg_echo("groupspost:failure"));
+ forward($_SERVER['HTTP_REFERER']);
+}
+
+// add to river
+add_to_river('river/forum/create', 'create', $user->guid, $topic_guid, "", 0, $post_id);
+
+system_message(elgg_echo("groupspost:success"));
+
+forward($_SERVER['HTTP_REFERER']);
diff --git a/mod/groups/actions/forums/addtopic.php b/mod/groups/actions/forums/addtopic.php
new file mode 100644
index 000000000..740ea17aa
--- /dev/null
+++ b/mod/groups/actions/forums/addtopic.php
@@ -0,0 +1,81 @@
+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);
+
+ // add to river
+ add_to_river('river/forum/topic/create','create',$_SESSION['user']->guid,$grouptopic->guid);
+
+ // 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/deletepost.php b/mod/groups/actions/forums/deletepost.php
new file mode 100644
index 000000000..4066b7456
--- /dev/null
+++ b/mod/groups/actions/forums/deletepost.php
@@ -0,0 +1,44 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.org/
+ */
+
+ // Ensure we're logged in
+ if (!isloggedin()) forward();
+
+
+ // Make sure we can get the comment in question
+ $post_id = (int) get_input('post');
+ $group_guid = (int) get_input('group');
+ $topic_guid = (int) get_input('topic');
+
+ if ($post = get_annotation($post_id)) {
+
+ //check that the user can edit as well as admin
+ if ($post->canEdit() || ($post->owner_guid == $_SESSION['user']->guid)) {
+
+ //delete
+ $post->delete();
+ //display confirmation message
+ system_message(elgg_echo("grouppost:deleted"));
+
+ }
+
+ } else {
+ $url = "";
+ system_message(elgg_echo("grouppost:notdeleted"));
+ }
+
+ // 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/deletetopic.php b/mod/groups/actions/forums/deletetopic.php
new file mode 100644
index 000000000..1095fc44a
--- /dev/null
+++ b/mod/groups/actions/forums/deletetopic.php
@@ -0,0 +1,45 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @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/editpost.php b/mod/groups/actions/forums/editpost.php
new file mode 100644
index 000000000..d30fad31f
--- /dev/null
+++ b/mod/groups/actions/forums/editpost.php
@@ -0,0 +1,53 @@
+isMember($vars['user'])) forward();
+
+ //get the required variables
+ $post = get_input("post");
+ $field_num = get_input("field_num");
+ $post_comment = get_input("postComment{$field_num}");
+ $annotation = get_annotation($post);
+ $commentOwner = $annotation->owner_guid;
+ $access_id = $annotation->access_id;
+ $topic = get_input("topic");
+
+ if($annotation){
+
+ //can edit? Either the comment owner or admin can
+ if(groups_can_edit_discussion($annotation, page_owner_entity()->owner_guid)){
+
+ update_annotation($post, "group_topic_post", $post_comment, "",$commentOwner, $access_id);
+ system_message(elgg_echo("groups:forumpost:edited"));
+
+ }else{
+ system_message(elgg_echo("groups:forumpost:error"));
+ }
+
+ }else{
+
+ system_message(elgg_echo("groups:forumpost:error"));
+ }
+
+ // Forward to the group forum page
+ global $CONFIG;
+ $url = $CONFIG->wwwroot . "mod/groups/topicposts.php?topic={$topic}&group_guid={$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..2898c31dc
--- /dev/null
+++ b/mod/groups/actions/forums/edittopic.php
@@ -0,0 +1,87 @@
+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)
+ {
+
+ $user = $topic->getOwner();
+
+ 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("groups:forumtopic:edited"));
+
+ }
+ }
+ }
+ // Forward to the group forum page
+ global $CONFIG;
+ $url = $CONFIG->wwwroot . "pg/groups/forum/{$group_guid}/";
+ forward($url);
+
+?>
+
diff --git a/mod/groups/actions/groupskillinvitation.php b/mod/groups/actions/groupskillinvitation.php
new file mode 100644
index 000000000..78c920df0
--- /dev/null
+++ b/mod/groups/actions/groupskillinvitation.php
@@ -0,0 +1,32 @@
+guid, 'invited', $user->guid))
+ {
+ remove_entity_relationship($group->guid, 'invited', $user->guid);
+ system_message(elgg_echo("groups:joinrequestkilled"));
+ }
+
+ forward($_SERVER['HTTP_REFERER']);
+
+?>
\ No newline at end of file
diff --git a/mod/groups/actions/groupskillrequest.php b/mod/groups/actions/groupskillrequest.php
new file mode 100644
index 000000000..03a318e4a
--- /dev/null
+++ b/mod/groups/actions/groupskillrequest.php
@@ -0,0 +1,32 @@
+guid, 'membership_request', $group->guid))
+ {
+ remove_entity_relationship($user->guid, 'membership_request', $group->guid);
+ system_message(elgg_echo("groups:joinrequestkilled"));
+ }
+
+ forward($_SERVER['HTTP_REFERER']);
+
+?>
\ No newline at end of file
diff --git a/mod/groups/actions/invite.php b/mod/groups/actions/invite.php
new file mode 100644
index 000000000..d2fd75c28
--- /dev/null
+++ b/mod/groups/actions/invite.php
@@ -0,0 +1,69 @@
+owner_guid)
+ {
+ if (!check_entity_relationship($group->guid, 'invited', $user->guid))
+ {
+ if ($user->isFriend())
+ {
+
+ // Create relationship
+ add_entity_relationship($group->guid, 'invited', $user->guid);
+
+ // Send email
+ $url = "{$CONFIG->url}pg/groups/invitations/{$user->username}";
+ if (notify_user($user->getGUID(), $group->owner_guid,
+ sprintf(elgg_echo('groups:invite:subject'), $user->name, $group->name),
+ sprintf(elgg_echo('groups:invite:body'), $user->name, $logged_in_user->name, $group->name, $url),
+ NULL))
+ system_message(elgg_echo("groups:userinvited"));
+ else
+ register_error(elgg_echo("groups:usernotinvited"));
+
+ }
+ else
+ register_error(elgg_echo("groups:usernotinvited"));
+ }
+ else
+ register_error(elgg_echo("groups:useralreadyinvited"));
+ }
+ else
+ register_error(elgg_echo("groups:notowner"));
+ }
+ }
+}
+
+forward($_SERVER['HTTP_REFERER']);
+
+?>
diff --git a/mod/groups/actions/join.php b/mod/groups/actions/join.php
new file mode 100644
index 000000000..3947f8efc
--- /dev/null
+++ b/mod/groups/actions/join.php
@@ -0,0 +1,65 @@
+isPublicMembership())
+ {
+ if ($group->join($user))
+ {
+ system_message(elgg_echo("groups:joined"));
+
+ // Remove any invite or join request flags
+ remove_entity_relationship($group->guid, 'invited', $user->guid);
+ remove_entity_relationship($user->guid, 'membership_request', $group->guid);
+
+ // add to river
+ add_to_river('river/group/create','join',$user->guid,$group->guid);
+
+ forward($group->getURL());
+ exit;
+ }
+ else
+ register_error(elgg_echo("groups:cantjoin"));
+ }
+ else
+ {
+ // Closed group, request membership
+ system_message(elgg_echo('groups:privategroup'));
+ forward(elgg_add_action_tokens_to_url($CONFIG->url . "action/groups/joinrequest?user_guid=$user_guid&group_guid=$group_guid"));
+ exit;
+ }
+ }
+ else
+ register_error(elgg_echo("groups:cantjoin"));
+
+ forward($_SERVER['HTTP_REFERER']);
+ exit;
+?>
diff --git a/mod/groups/actions/joinrequest.php b/mod/groups/actions/joinrequest.php
new file mode 100644
index 000000000..51c400223
--- /dev/null
+++ b/mod/groups/actions/joinrequest.php
@@ -0,0 +1,84 @@
+isMember($user)))
+{
+ // If open group or invite exists
+ if (
+ ($group->isPublicMembership()) ||
+ (check_entity_relationship($group->guid, 'invited', $user->guid))
+ )
+ {
+ //$ia = elgg_set_ignore_access(TRUE);
+ if ($group->join($user))
+ {
+ // Remove relationships
+ remove_entity_relationship($group->guid, 'invited', $user->guid);
+ remove_entity_relationship($user->guid, 'membership_request', $group->guid);
+
+ // Group joined
+ system_message(elgg_echo('groups:joined'));
+ elgg_set_ignore_access($ia);
+
+ forward($group->getURL());
+ exit;
+ }
+ else {
+ elgg_set_ignore_access($ia);
+ system_message(elgg_echo('groups:cantjoin'));
+ }
+ }
+ else
+ {
+ // If join request not already made
+ if (!check_entity_relationship($user->guid, 'membership_request', $group->guid))
+ {
+ // Add membership requested
+ add_entity_relationship($user->guid, 'membership_request', $group->guid);
+
+ // Send email
+ $url = "{$CONFIG->url}mod/groups/membershipreq.php?group_guid={$group->guid}";
+ if (notify_user($group->owner_guid, $user->getGUID(),
+ sprintf(elgg_echo('groups:request:subject'), $user->name, $group->name),
+ sprintf(elgg_echo('groups:request:body'), $group->getOwnerEntity()->name, $user->name, $group->name, $user->getURL(), $url),
+ NULL))
+ system_message(elgg_echo("groups:joinrequestmade"));
+ else
+ register_error(elgg_echo("groups:joinrequestnotmade"));
+ }
+ else
+ system_message(elgg_echo("groups:joinrequestmade"));
+ }
+}
+
+forward($_SERVER['HTTP_REFERER']);
\ No newline at end of file
diff --git a/mod/groups/actions/leave.php b/mod/groups/actions/leave.php
new file mode 100644
index 000000000..b68eb7607
--- /dev/null
+++ b/mod/groups/actions/leave.php
@@ -0,0 +1,43 @@
+getOwner() != $_SESSION['guid']) {
+ if ($group->leave($user))
+ system_message(elgg_echo("groups:left"));
+ else
+ register_error(elgg_echo("groups:cantleave"));
+ } else {
+ register_error(elgg_echo("groups:cantleave"));
+ }
+ }
+ else
+ register_error(elgg_echo("groups:cantleave"));
+
+ forward($_SERVER['HTTP_REFERER']);
+ exit;
+?>
\ No newline at end of file
diff --git a/mod/groups/addtopic.php b/mod/groups/addtopic.php
new file mode 100644
index 000000000..39ef62eec
--- /dev/null
+++ b/mod/groups/addtopic.php
@@ -0,0 +1,29 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ */
+
+ // Load Elgg engine
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+ gatekeeper();
+
+ $page_owner = set_page_owner((int) get_input('group_guid'));
+
+ if (!(page_owner_entity() instanceof ElggGroup)) forward();
+
+ // sort the display
+ $area2 = elgg_view("forms/forums/addtopic");
+ $body = elgg_view_layout('two_column_left_sidebar',$area1, $area2);
+
+ // Display page
+ page_draw(elgg_echo('groups:addtopic'),$body);
+
+?>
\ No newline at end of file
diff --git a/mod/groups/all.php b/mod/groups/all.php
new file mode 100644
index 000000000..fd60ce90a
--- /dev/null
+++ b/mod/groups/all.php
@@ -0,0 +1,71 @@
+ 'group', 'owner_guid' => 0, 'limit' => $limit, 'full_view' => false));
+ break;
+ case "pop":
+ $objects = list_entities_by_relationship_count('member', true, "", "", 0, $limit, false);
+ break;
+ case "active":
+ $objects = list_entities_from_annotations("object", "groupforumtopic", "group_topic_post", "", 40, 0, 0, false, true);
+ break;
+ case 'default':
+ $objects = elgg_list_entities(array('types' => 'group', 'limit' => $limit, 'full_view' => FALSE));
+ break;
+ }
+ }
+
+ //get a group count
+ $group_count = elgg_get_entities(array('types' => 'group', 'limit' => 10, 'count' => TRUE));
+
+ //find groups
+ $area1 = elgg_view("groups/find");
+
+ //menu options
+ $area1 .= elgg_view("groups/side_menu");
+
+ //featured groups
+ $featured_groups = elgg_get_entities_from_metadata(array('metadata_name' => 'featured_group', 'metadata_value' => 'yes', 'types' => 'group', 'limit' => 10));
+ $area1 .= elgg_view("groups/featured", array("featured" => $featured_groups));
+
+
+ set_context($context);
+
+ $title = sprintf(elgg_echo("groups:all"),page_owner_entity()->name);
+ $area2 = elgg_view_title($title);
+ $area2 .= elgg_view('groups/contentwrapper', array('body' => elgg_view("groups/group_sort_menu", array("count" => $group_count, "filter" => $filter)) . $objects));
+ $body = elgg_view_layout('sidebar_boxes',$area1, $area2);
+
+ // Finally draw the page
+ page_draw($title, $body);
+
+
+
+?>
\ No newline at end of file
diff --git a/mod/groups/discussions.php b/mod/groups/discussions.php
new file mode 100644
index 000000000..64b73cd2b
--- /dev/null
+++ b/mod/groups/discussions.php
@@ -0,0 +1,32 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ */
+
+ // Load Elgg engine
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+ group_gatekeeper();
+
+ // Display them
+ $area2 = elgg_view_title(elgg_echo("groups:latestdiscussion"));
+ set_context('search');
+ $area2 .= list_entities_from_annotations("object", "groupforumtopic", "group_topic_post", "", 40, 0, 0, false, true);
+ set_context('groups');
+
+ $body = elgg_view_layout("two_column_left_sidebar", '', $area2);
+
+ // Display page
+ page_draw(elgg_echo('groups:latestdiscussion'),$body);
+
+
+?>
\ No newline at end of file
diff --git a/mod/groups/edit.php b/mod/groups/edit.php
new file mode 100644
index 000000000..2e99b578c
--- /dev/null
+++ b/mod/groups/edit.php
@@ -0,0 +1,33 @@
+canEdit()))
+ {
+ $body .= elgg_view("forms/groups/edit", array('entity' => $group));
+
+ } else {
+ $body .= elgg_view('groups/contentwrapper',array('body' => elgg_echo('groups:noaccess')));
+ }
+
+ $body = elgg_view_layout('two_column_left_sidebar', '', $body);
+
+ page_draw($title, $body);
+?>
\ No newline at end of file
diff --git a/mod/groups/edittopic.php b/mod/groups/edittopic.php
new file mode 100644
index 000000000..494c94ab9
--- /dev/null
+++ b/mod/groups/edittopic.php
@@ -0,0 +1,36 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ */
+
+ // Load Elgg engine
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+ gatekeeper();
+
+ get_input('group');
+ $page_owner = set_page_owner((int)get_input('group'));
+
+ // check the user is a member of the group
+ //if (!$page_owner->isMember($_SESSION['user'])) forward();
+
+ if (!(page_owner_entity() instanceof ElggGroup)) forward();
+
+ //get the topic
+ $topic = get_entity((int) get_input('topic'));
+
+ // sort the display
+ $area2 = elgg_view("forms/forums/edittopic", array('entity' => $topic));
+ $body = elgg_view_layout('two_column_left_sidebar', '', $area2);
+
+ // Display page
+ page_draw(elgg_echo('groups:edittopic'),$body);
+
+?>
\ No newline at end of file
diff --git a/mod/groups/forum.php b/mod/groups/forum.php
new file mode 100644
index 000000000..91a592373
--- /dev/null
+++ b/mod/groups/forum.php
@@ -0,0 +1,35 @@
+ $topics));
+ set_context('groups');
+
+ $body = elgg_view_layout('two_column_left_sidebar',$area1, $area2);
+
+ $title = elgg_echo('item:object:groupforumtopic');
+
+ // Finally draw the page
+ page_draw($title, $body);
+
+
+
+?>
\ No newline at end of file
diff --git a/mod/groups/graphics/defaultlarge.gif b/mod/groups/graphics/defaultlarge.gif
new file mode 100644
index 000000000..b0921b8d8
Binary files /dev/null and b/mod/groups/graphics/defaultlarge.gif differ
diff --git a/mod/groups/graphics/defaultmedium.gif b/mod/groups/graphics/defaultmedium.gif
new file mode 100644
index 000000000..ae230a3d7
Binary files /dev/null and b/mod/groups/graphics/defaultmedium.gif differ
diff --git a/mod/groups/graphics/defaultsmall.gif b/mod/groups/graphics/defaultsmall.gif
new file mode 100644
index 000000000..81d89110d
Binary files /dev/null and b/mod/groups/graphics/defaultsmall.gif differ
diff --git a/mod/groups/graphics/defaulttiny.gif b/mod/groups/graphics/defaulttiny.gif
new file mode 100644
index 000000000..86dc96ae4
Binary files /dev/null and b/mod/groups/graphics/defaulttiny.gif differ
diff --git a/mod/groups/graphics/icon.php b/mod/groups/graphics/icon.php
new file mode 100644
index 000000000..8c596d53b
--- /dev/null
+++ b/mod/groups/graphics/icon.php
@@ -0,0 +1,45 @@
+owner_guid = $group->owner_guid;
+ $filehandler->setFilename("groups/" . $group->guid . $size . ".jpg");
+
+ $success = false;
+ if ($filehandler->open("read")) {
+ if ($contents = $filehandler->read($filehandler->size())) {
+ $success = true;
+ }
+ }
+
+ if (!$success) {
+ $contents = @file_get_contents($CONFIG->pluginspath . "groups/graphics/default{$size}.jpg");
+ }
+
+ header("Content-type: image/jpeg");
+ header('Expires: ' . date('r',time() + 864000));
+ header("Pragma: public");
+ header("Cache-Control: public");
+ header("Content-Length: " . strlen($contents));
+ echo $contents;
+?>
\ No newline at end of file
diff --git a/mod/groups/groupprofile.php b/mod/groups/groupprofile.php
new file mode 100644
index 000000000..80cbd41ee
--- /dev/null
+++ b/mod/groups/groupprofile.php
@@ -0,0 +1,60 @@
+name;
+
+ // Hide some items from closed groups when the user is not logged in.
+ $view_all = true;
+
+ $groupaccess = group_gatekeeper(false);
+ if (!$groupaccess)
+ $view_all = false;
+
+
+ $area2 = elgg_view_title($title);
+ $area2 .= elgg_view('group/group', array('entity' => $group, 'user' => $_SESSION['user'], 'full' => true));
+
+ if ($view_all) {
+ //group profile 'items' - these are not real widgets, just contents to display
+ $area2 .= elgg_view('groups/profileitems',array('entity' => $group));
+
+ //group members
+ $area3 = elgg_view('groups/members',array('entity' => $group));
+ }
+ else
+ {
+ $area2 .= elgg_view('groups/closedmembership', array('entity' => $group, 'user' => $_SESSION['user'], 'full' => true));
+
+ }
+
+ $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2, $area3);
+ } else {
+ $title = elgg_echo('groups:notfound');
+
+ $area2 = elgg_view_title($title);
+ $area2 .= elgg_view('groups/contentwrapper',array('body' => elgg_echo('groups:notfound:details')));
+
+ $body = elgg_view_layout('two_column_left_sidebar', "", $area2,"");
+ }
+
+ // Finally draw the page
+ page_draw($title, $body);
+?>
\ No newline at end of file
diff --git a/mod/groups/index.php b/mod/groups/index.php
new file mode 100644
index 000000000..b21d5962b
--- /dev/null
+++ b/mod/groups/index.php
@@ -0,0 +1,31 @@
+name);
+
+ // Get objects
+ $area2 = elgg_view_title($title);
+
+ set_context('search');
+ $objects = elgg_list_entities(array('types' => 'group', 'owner_guid' => page_owner(), 'limit' => $limit, 'full_view' => FALSE));
+ set_context('groups');
+
+ $area2 .= $objects;
+ $body = elgg_view_layout('two_column_left_sidebar',$area1, $area2);
+
+ // Finally draw the page
+ page_draw($title, $body);
+?>
\ No newline at end of file
diff --git a/mod/groups/invitations.php b/mod/groups/invitations.php
new file mode 100644
index 000000000..fa2156b35
--- /dev/null
+++ b/mod/groups/invitations.php
@@ -0,0 +1,33 @@
+getGUID());
+
+ $area2 .= elgg_view('groups/invitationrequests',array('invitations' => $invitations));
+ elgg_set_ignore_access($ia);
+} else {
+ $area2 .= elgg_echo("groups:noaccess");
+}
+
+$body = elgg_view_layout('two_column_left_sidebar', '', $area2);
+
+page_draw($title, $body);
\ No newline at end of file
diff --git a/mod/groups/invite.php b/mod/groups/invite.php
new file mode 100644
index 000000000..3791b9b50
--- /dev/null
+++ b/mod/groups/invite.php
@@ -0,0 +1,34 @@
+canEdit()))
+ {
+ $area2 .= elgg_view("forms/groups/invite", array('entity' => $group));
+
+ } else {
+ $area2 .= elgg_echo("groups:noaccess");
+ }
+
+ $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2);
+
+ page_draw($title, $body);
+?>
\ No newline at end of file
diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php
new file mode 100644
index 000000000..6c0d8ef26
--- /dev/null
+++ b/mod/groups/languages/en.php
@@ -0,0 +1,228 @@
+ "Groups",
+ 'groups:owned' => "Groups you own",
+ 'groups:yours' => "Your groups",
+ 'groups:user' => "%s's groups",
+ 'groups:all' => "All site groups",
+ 'groups:new' => "Create a new group",
+ 'groups:edit' => "Edit group",
+ 'groups:delete' => 'Delete group',
+ 'groups:membershiprequests' => 'Manage join requests',
+ 'groups:invitations' => 'Group invitations',
+
+ 'groups:icon' => 'Group icon (leave blank to leave unchanged)',
+ 'groups:name' => 'Group name',
+ 'groups:username' => 'Group short name (displayed in URLs, alphanumeric characters only)',
+ 'groups:description' => 'Description',
+ 'groups:briefdescription' => 'Brief description',
+ 'groups:interests' => 'Tags',
+ 'groups:website' => 'Website',
+ 'groups:members' => 'Group members',
+ 'groups:membership' => "Group membership permissions",
+ 'groups:access' => "Access permissions",
+ 'groups:owner' => "Owner",
+ 'groups:widget:num_display' => 'Number of groups to display',
+ 'groups:widget:membership' => 'Group membership',
+ 'groups:widgets:description' => 'Display the groups you are a member of on your profile',
+ 'groups:noaccess' => 'No access to group',
+ 'groups:cantedit' => 'You can not edit this group',
+ 'groups:saved' => 'Group saved',
+ 'groups:featured' => 'Featured groups',
+ 'groups:makeunfeatured' => 'Unfeature',
+ 'groups:makefeatured' => 'Make featured',
+ 'groups:featuredon' => 'You have made this group a featured one.',
+ 'groups:unfeature' => 'You have removed this group from the featured list',
+ 'groups:joinrequest' => 'Request membership',
+ 'groups:join' => 'Join group',
+ 'groups:leave' => 'Leave group',
+ 'groups:invite' => 'Invite friends',
+ 'groups:inviteto' => "Invite friends to '%s'",
+ 'groups:nofriends' => "You have no friends left who have not been invited to this group.",
+ 'groups:viagroups' => "via groups",
+ 'groups:group' => "Group",
+ 'groups:search:tags' => "tag",
+
+ 'groups:notfound' => "Group not found",
+ 'groups:notfound:details' => "The requested group either does not exist or you do not have access to it",
+
+ 'groups:requests:none' => 'There are no outstanding membership requests at this time.',
+
+ 'groups:invitations:none' => 'There are no oustanding invitations at this time.',
+
+ 'item:object:groupforumtopic' => "Discussion topics",
+
+ 'groupforumtopic:new' => "New discussion post",
+
+ 'groups:count' => "groups created",
+ 'groups:open' => "open group",
+ 'groups:closed' => "closed group",
+ 'groups:member' => "members",
+ 'groups:searchtag' => "Search for groups by tag",
+
+
+ /*
+ * Access
+ */
+ 'groups:access:private' => 'Closed - Users must be invited',
+ 'groups:access:public' => 'Open - Any user may join',
+ 'groups:closedgroup' => 'This group has a closed membership. To ask to be added, click the "request membership" menu link.',
+ 'groups:visibility' => 'Who can see this group?',
+
+ /*
+ Group tools
+ */
+ 'groups:enablepages' => 'Enable group pages',
+ 'groups:enableforum' => 'Enable group discussion',
+ 'groups:enablefiles' => 'Enable group files',
+ 'groups:yes' => 'yes',
+ 'groups:no' => 'no',
+
+ 'group:created' => 'Created %s with %d posts',
+ 'groups:lastupdated' => 'Last updated %s by %s',
+ 'groups:pages' => 'Group pages',
+ 'groups:files' => 'Group files',
+
+ /*
+ Group forum strings
+ */
+
+ 'group:replies' => 'Replies',
+ 'groups:forum' => 'Group discussion',
+ 'groups:addtopic' => 'Add a topic',
+ 'groups:forumlatest' => 'Latest discussion',
+ 'groups:latestdiscussion' => 'Latest discussion',
+ 'groups:newest' => 'Newest',
+ 'groups:popular' => 'Popular',
+ 'groupspost:success' => 'Your comment was succesfully posted',
+ 'groups:alldiscussion' => 'Latest discussion',
+ 'groups:edittopic' => 'Edit topic',
+ 'groups:topicmessage' => 'Topic message',
+ 'groups:topicstatus' => 'Topic status',
+ 'groups:reply' => 'Post a comment',
+ 'groups:topic' => 'Topic',
+ 'groups:posts' => 'Posts',
+ 'groups:lastperson' => 'Last person',
+ 'groups:when' => 'When',
+ 'grouptopic:notcreated' => 'No topics have been created.',
+ 'groups:topicopen' => 'Open',
+ 'groups:topicclosed' => 'Closed',
+ 'groups:topicresolved' => 'Resolved',
+ 'grouptopic:created' => 'Your topic was created.',
+ 'groupstopic:deleted' => 'The topic has been deleted.',
+ 'groups:topicsticky' => 'Sticky',
+ 'groups:topicisclosed' => 'This topic is closed.',
+ 'groups:topiccloseddesc' => 'This topic has now been closed and is not accepting new comments.',
+ 'grouptopic:error' => 'Your group topic could not be created. Please try again or contact a system administrator.',
+ 'groups:forumpost:edited' => "You have successfully edited the forum post.",
+ 'groups:forumpost:error' => "There was a problem editing the forum post.",
+ 'groups:privategroup' => 'This group is private, requesting membership.',
+ 'groups:notitle' => 'Groups must have a title',
+ 'groups:cantjoin' => 'Can not join group',
+ 'groups:cantleave' => 'Could not leave group',
+ 'groups:addedtogroup' => 'Successfully added the user to the group',
+ 'groups:joinrequestnotmade' => 'Could not request to join group',
+ 'groups:joinrequestmade' => 'Requested to join group',
+ 'groups:joined' => 'Successfully joined group!',
+ 'groups:left' => 'Successfully left group',
+ 'groups:notowner' => 'Sorry, you are not the owner of this group.',
+ 'groups:notmember' => 'Sorry, you are not a member of this group.',
+ 'groups:alreadymember' => 'You are already a member of this group!',
+ 'groups:userinvited' => 'User has been invited.',
+ 'groups:usernotinvited' => 'User could not be invited.',
+ 'groups:useralreadyinvited' => 'User has already been invited',
+ 'groups:updated' => "Last comment",
+ 'groups:invite:subject' => "%s you have been invited to join %s!",
+ 'groups:started' => "Started by",
+ 'groups:joinrequest:remove:check' => 'Are you sure you want to remove this join request?',
+ 'groups:invite:body' => "Hi %s,
+
+%s invited you to join the '%s' group, click below to confirm:
+
+%s",
+
+ 'groups:welcome:subject' => "Welcome to the %s group!",
+ 'groups:welcome:body' => "Hi %s!
+
+You are now a member of the '%s' group! Click below to begin posting!
+
+%s",
+
+ 'groups:request:subject' => "%s has requested to join %s",
+ 'groups:request:body' => "Hi %s,
+
+%s has requested to join the '%s' group, click below to view their profile:
+
+%s
+
+or click below to confirm request:
+
+%s",
+
+ /*
+ Forum river items
+ */
+
+ 'groups:river:member' => 'is now a member of',
+ 'groupforum:river:updated' => '%s has updated',
+ 'groupforum:river:update' => 'this discussion topic',
+ 'groupforum:river:created' => '%s has created',
+ 'groupforum:river:create' => 'a new discussion topic titled',
+ 'groupforum:river:posted' => '%s has posted a new comment',
+ 'groupforum:river:annotate:create' => 'on this discussion topic',
+ 'groupforum:river:postedtopic' => '%s has started a new discussion topic titled',
+ 'groups:river:member' => '%s is now a member of',
+ 'groups:river:togroup' => 'to the group',
+
+ 'groups:nowidgets' => 'No widgets have been defined for this group.',
+
+
+ 'groups:widgets:members:title' => 'Group members',
+ 'groups:widgets:members:description' => 'List the members of a group.',
+ 'groups:widgets:members:label:displaynum' => 'List the members of a group.',
+ 'groups:widgets:members:label:pleaseedit' => 'Please configure this widget.',
+
+ 'groups:widgets:entities:title' => "Objects in group",
+ 'groups:widgets:entities:description' => "List the objects saved in this group",
+ 'groups:widgets:entities:label:displaynum' => 'List the objects of a group.',
+ 'groups:widgets:entities:label:pleaseedit' => 'Please configure this widget.',
+
+ 'groups:forumtopic:edited' => 'Forum topic successfully edited.',
+
+ 'groups:allowhiddengroups' => 'Do you want to allow private (invisible) groups?',
+
+ /**
+ * Action messages
+ */
+ 'group:deleted' => 'Group and group contents deleted',
+ 'group:notdeleted' => 'Group could not be deleted',
+
+ 'grouppost:deleted' => 'Group posting successfully deleted',
+ 'grouppost:notdeleted' => 'Group posting could not be deleted',
+ 'groupstopic:deleted' => 'Topic deleted',
+ 'groupstopic:notdeleted' => 'Topic not deleted',
+ 'grouptopic:blank' => 'No topic',
+ 'grouptopic:notfound' => 'Could not find the topic',
+ 'grouppost:nopost' => 'Empty post',
+ 'groups:deletewarning' => "Are you sure you want to delete this group? There is no undo!",
+
+ 'groups:joinrequestkilled' => 'The join request has been deleted.',
+ );
+
+ add_translation("en",$english);
+?>
diff --git a/mod/groups/manifest.xml b/mod/groups/manifest.xml
new file mode 100644
index 000000000..e2c36f92f
--- /dev/null
+++ b/mod/groups/manifest.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/mod/groups/membership.php b/mod/groups/membership.php
new file mode 100644
index 000000000..9226a56d5
--- /dev/null
+++ b/mod/groups/membership.php
@@ -0,0 +1,38 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ */
+
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+ gatekeeper();
+ group_gatekeeper();
+
+ $limit = get_input("limit", 10);
+ $offset = get_input("offset", 0);
+
+ if (page_owner() == $_SESSION['user']->guid) {
+ $title = elgg_echo("groups:yours");
+ } else $title = sprintf(elgg_echo("groups:owned"),page_owner_entity()->name);
+
+ // Get objects
+ $area2 = elgg_view_title($title);
+
+ set_context('search');
+ //$objects = list_entities("group", "", page_owner(), $limit, false);
+ $objects = list_entities_from_relationship('member',page_owner(),false,'group','',0, $limit,false, false);
+ set_context('groups');
+
+ $area2 .= $objects;
+ $body = elgg_view_layout('two_column_left_sidebar',$area1, $area2);
+
+ // Finally draw the page
+ page_draw($title, $body);
+?>
\ No newline at end of file
diff --git a/mod/groups/membershipreq.php b/mod/groups/membershipreq.php
new file mode 100644
index 000000000..368057711
--- /dev/null
+++ b/mod/groups/membershipreq.php
@@ -0,0 +1,36 @@
+canEdit()))
+ {
+
+ $requests = elgg_get_entities_from_relationship(array('relationship' => 'membership_request', 'relationship_guid' => $group_guid, 'inverse_relationship' => TRUE, 'limit' => 9999));
+ $area2 .= elgg_view('groups/membershiprequests',array('requests' => $requests, 'entity' => $group));
+
+ } else {
+ $area2 .= elgg_echo("groups:noaccess");
+ }
+
+ $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2);
+
+ page_draw($title, $body);
+?>
\ No newline at end of file
diff --git a/mod/groups/new.php b/mod/groups/new.php
new file mode 100644
index 000000000..b2a24f80f
--- /dev/null
+++ b/mod/groups/new.php
@@ -0,0 +1,22 @@
+
\ No newline at end of file
diff --git a/mod/groups/start.php b/mod/groups/start.php
new file mode 100644
index 000000000..b9dde5d10
--- /dev/null
+++ b/mod/groups/start.php
@@ -0,0 +1,613 @@
+wwwroot . "pg/groups/world/");
+ //add_menu(elgg_echo('groups:alldiscussion'),$CONFIG->wwwroot."mod/groups/discussions.php");
+ }
+ else
+ {
+ add_menu(elgg_echo('groups'), $CONFIG->wwwroot . "pg/groups/world/");
+ }
+
+ // Register a page handler, so we can have nice URLs
+ register_page_handler('groups','groups_page_handler');
+
+ // Register a URL handler for groups and forum topics
+ register_entity_url_handler('groups_url','group','all');
+ register_entity_url_handler('groups_groupforumtopic_url','object','groupforumtopic');
+
+ // Register an icon handler for groups
+ register_page_handler('groupicon','groups_icon_handler');
+
+ // Register some actions
+ register_action("groups/edit",false, $CONFIG->pluginspath . "groups/actions/edit.php");
+ register_action("groups/delete",false, $CONFIG->pluginspath . "groups/actions/delete.php");
+ register_action("groups/join",false, $CONFIG->pluginspath . "groups/actions/join.php");
+ register_action("groups/leave",false, $CONFIG->pluginspath . "groups/actions/leave.php");
+ register_action("groups/joinrequest",false, $CONFIG->pluginspath . "groups/actions/joinrequest.php");
+ register_action("groups/killrequest",false,$CONFIG->pluginspath . "groups/actions/groupskillrequest.php");
+ register_action("groups/killinvitation",false,$CONFIG->pluginspath . "groups/actions/groupskillinvitation.php");
+ register_action("groups/addtogroup",false, $CONFIG->pluginspath . "groups/actions/addtogroup.php");
+ register_action("groups/invite",false, $CONFIG->pluginspath . "groups/actions/invite.php");
+
+ // Use group widgets
+ use_widgets('groups');
+
+ // Add a page owner handler
+ add_page_owner_handler('groups_page_owner_handler');
+
+ // Add some widgets
+ add_widget_type('a_users_groups',elgg_echo('groups:widget:membership'), elgg_echo('groups:widgets:description'));
+
+
+ //extend some views
+ elgg_extend_view('profile/icon','groups/icon');
+ elgg_extend_view('css','groups/css');
+
+ // Access permissions
+ register_plugin_hook('access:collections:write', 'all', 'groups_write_acl_plugin_hook');
+ //register_plugin_hook('access:collections:read', 'all', 'groups_read_acl_plugin_hook');
+
+ // Notification hooks
+ if (is_callable('register_notification_object'))
+ register_notification_object('object', 'groupforumtopic', elgg_echo('groupforumtopic:new'));
+ register_plugin_hook('object:notifications','object','group_object_notifications_intercept');
+
+ // Listen to notification events and supply a more useful message
+ register_plugin_hook('notify:entity:message', 'object', 'groupforumtopic_notify_message');
+
+ // add the forum tool option
+ add_group_tool_option('forum',elgg_echo('groups:enableforum'),true);
+
+ // Now override icons
+ register_plugin_hook('entity:icon:url', 'group', 'groups_groupicon_hook');
+ }
+
+ /**
+ * Event handler for group forum posts
+ *
+ */
+ function group_object_notifications($event, $object_type, $object) {
+
+ static $flag;
+ if (!isset($flag)) $flag = 0;
+
+ if (is_callable('object_notifications'))
+ if ($object instanceof ElggObject) {
+ if ($object->getSubtype() == 'groupforumtopic') {
+ //if ($object->countAnnotations('group_topic_post') > 0) {
+ if ($flag == 0) {
+ $flag = 1;
+ object_notifications($event, $object_type, $object);
+ }
+ //}
+ }
+ }
+
+ }
+
+ /**
+ * Intercepts the notification on group topic creation and prevents a notification from going out
+ * (because one will be sent on the annotation)
+ *
+ * @param unknown_type $hook
+ * @param unknown_type $entity_type
+ * @param unknown_type $returnvalue
+ * @param unknown_type $params
+ * @return unknown
+ */
+ function group_object_notifications_intercept($hook, $entity_type, $returnvalue, $params) {
+ if (isset($params)) {
+ if ($params['event'] == 'create' && $params['object'] instanceof ElggObject) {
+ if ($params['object']->getSubtype() == 'groupforumtopic') {
+ return true;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns a more meaningful message
+ *
+ * @param unknown_type $hook
+ * @param unknown_type $entity_type
+ * @param unknown_type $returnvalue
+ * @param unknown_type $params
+ */
+ function groupforumtopic_notify_message($hook, $entity_type, $returnvalue, $params)
+ {
+ $entity = $params['entity'];
+ $to_entity = $params['to_entity'];
+ $method = $params['method'];
+ if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'groupforumtopic'))
+ {
+
+ $descr = $entity->description;
+ $title = $entity->title;
+ global $CONFIG;
+ $url = $entity->getURL();
+
+ $msg = get_input('topicmessage');
+ if (empty($msg)) $msg = get_input('topic_post');
+ if (!empty($msg)) $msg = $msg . "\n\n"; else $msg = '';
+
+ $owner = get_entity($entity->container_guid);
+ if ($method == 'sms') {
+ return elgg_echo("groupforumtopic:new") . ': ' . $url . " ({$owner->name}: {$title})";
+ } else {
+ return $_SESSION['user']->name . ' ' . elgg_echo("groups:viagroups") . ': ' . $title . "\n\n" . $msg . "\n\n" . $entity->getURL();
+ }
+
+ }
+ return null;
+ }
+
+ /**
+ * This function loads a set of default fields into the profile, then triggers a hook letting other plugins to edit
+ * add and delete fields.
+ *
+ * Note: This is a secondary system:init call and is run at a super low priority to guarantee that it is called after all
+ * other plugins have initialised.
+ */
+ function groups_fields_setup()
+ {
+ global $CONFIG;
+
+ $profile_defaults = array(
+
+ 'name' => 'text',
+ 'description' => 'longtext',
+ 'briefdescription' => 'text',
+ 'interests' => 'tags',
+ 'website' => 'url',
+
+ );
+
+ $CONFIG->group = trigger_plugin_hook('profile:fields', 'group', NULL, $profile_defaults);
+
+ // register any tag metadata names
+ foreach ($CONFIG->group as $name => $type) {
+ if ($type == 'tags') {
+ elgg_register_tag_metadata_name($name);
+
+ // register a tag name translation
+ add_translation(get_current_language(), array("tag_names:$name" => elgg_echo("groups:$name")));
+ }
+ }
+ }
+
+ /**
+ * Sets up submenus for the groups system. Triggered on pagesetup.
+ *
+ */
+ function groups_submenus() {
+
+ global $CONFIG;
+
+ // Get the page owner entity
+ $page_owner = page_owner_entity();
+
+ // Submenu items for all group pages
+ if ($page_owner instanceof ElggGroup && get_context() == 'groups') {
+ if (isloggedin()) {
+ if ($page_owner->canEdit()) {
+ add_submenu_item(elgg_echo('groups:edit'),$CONFIG->wwwroot . "mod/groups/edit.php?group_guid=" . $page_owner->getGUID(), '1groupsactions');
+ add_submenu_item(elgg_echo('groups:invite'),$CONFIG->wwwroot . "mod/groups/invite.php?group_guid={$page_owner->getGUID()}", '1groupsactions');
+ if (!$page_owner->isPublicMembership())
+ add_submenu_item(elgg_echo('groups:membershiprequests'),$CONFIG->wwwroot . "mod/groups/membershipreq.php?group_guid={$page_owner->getGUID()}", '1groupsactions');
+ }
+ if ($page_owner->isMember($_SESSION['user'])) {
+ if ($page_owner->getOwner() != $_SESSION['guid']) {
+ $url = elgg_add_action_tokens_to_url($CONFIG->wwwroot . "action/groups/leave?group_guid=" . $page_owner->getGUID());
+ add_submenu_item(elgg_echo('groups:leave'), $url, '1groupsactions');
+ }
+ } else {
+ if ($page_owner->isPublicMembership()) {
+ $url = elgg_add_action_tokens_to_url($CONFIG->wwwroot . "action/groups/join?group_guid={$page_owner->getGUID()}");
+ add_submenu_item(elgg_echo('groups:join'), $url, '1groupsactions');
+ } else {
+ $url = elgg_add_action_tokens_to_url($CONFIG->wwwroot . "action/groups/joinrequest?group_guid={$page_owner->getGUID()}");
+ add_submenu_item(elgg_echo('groups:joinrequest'), $url, '1groupsactions');
+ }
+ }
+ }
+
+ if($page_owner->forum_enable != "no"){
+ add_submenu_item(elgg_echo('groups:forum'),$CONFIG->wwwroot . "pg/groups/forum/{$page_owner->getGUID()}/", '1groupslinks');
+ }
+
+ }
+
+ // Add submenu options
+ if (get_context() == 'groups' && !($page_owner instanceof ElggGroup)) {
+ if (isloggedin()) {
+ add_submenu_item(elgg_echo('groups:new'), $CONFIG->wwwroot."pg/groups/new/", '1groupslinks');
+ add_submenu_item(elgg_echo('groups:owned'), $CONFIG->wwwroot . "pg/groups/owned/" . $_SESSION['user']->username, '1groupslinks');
+ add_submenu_item(elgg_echo('groups:yours'), $CONFIG->wwwroot . "pg/groups/member/" . $_SESSION['user']->username, '1groupslinks');
+ add_submenu_item(elgg_echo('groups:invitations'), $CONFIG->wwwroot . "pg/groups/invitations/" . $_SESSION['user']->username, '1groupslinks');
+ }
+ add_submenu_item(elgg_echo('groups:all'), $CONFIG->wwwroot . "pg/groups/world/", '1groupslinks');
+ }
+
+ }
+
+ /**
+ * Set a page owner handler.
+ *
+ */
+ function groups_page_owner_handler()
+ {
+ $group_guid = get_input('group_guid');
+ if ($group_guid)
+ {
+ $group = get_entity($group_guid);
+ if ($group instanceof ElggGroup)
+ return $group->owner_guid;
+ }
+
+ return false;
+ }
+
+ /**
+ * Group page handler
+ *
+ * @param array $page Array of page elements, forwarded by the page handling mechanism
+ */
+ function groups_page_handler($page)
+ {
+ global $CONFIG;
+
+
+ if (isset($page[0]))
+ {
+ // See what context we're using
+ switch($page[0])
+ {
+ case 'invitations':
+ include($CONFIG->pluginspath . "groups/invitations.php");
+ $user_guid = get_loggedin_userid();
+
+ $invitations = elgg_get_entities_from_relationship(array(
+ 'relationship' => 'membership_request',
+ 'guid' => $user_guid
+ ));
+
+ break;
+
+ case "new" :
+ include($CONFIG->pluginspath . "groups/new.php");
+ break;
+ case "world":
+ set_context('groups');
+ set_page_owner(0);
+ include($CONFIG->pluginspath . "groups/all.php");
+ break;
+ case "forum":
+ set_input('group_guid', $page[1]);
+ include($CONFIG->pluginspath . "groups/forum.php");
+ break;
+ case "owned" :
+ // Owned by a user
+ if (isset($page[1]))
+ set_input('username',$page[1]);
+
+ include($CONFIG->pluginspath . "groups/index.php");
+ break;
+ case "member" :
+ // User is a member of
+ if (isset($page[1]))
+ set_input('username',$page[1]);
+
+ include($CONFIG->pluginspath . "groups/membership.php");
+ break;
+ default:
+ set_input('group_guid', $page[0]);
+ include($CONFIG->pluginspath . "groups/groupprofile.php");
+ break;
+ }
+ }
+
+ }
+
+ /**
+ * Handle group icons.
+ *
+ * @param unknown_type $page
+ */
+ function groups_icon_handler($page) {
+
+ global $CONFIG;
+
+ // The username should be the file we're getting
+ if (isset($page[0])) {
+ set_input('group_guid',$page[0]);
+ }
+ if (isset($page[1])) {
+ set_input('size',$page[1]);
+ }
+ // Include the standard profile index
+ include($CONFIG->pluginspath . "groups/graphics/icon.php");
+
+ }
+
+ /**
+ * Populates the ->getUrl() method for group objects
+ *
+ * @param ElggEntity $entity File entity
+ * @return string File URL
+ */
+ function groups_url($entity) {
+
+ global $CONFIG;
+
+ $title = friendly_title($entity->name);
+
+ return $CONFIG->url . "pg/groups/{$entity->guid}/$title/";
+
+ }
+
+ function groups_groupforumtopic_url($entity) {
+
+ global $CONFIG;
+ return $CONFIG->url . 'mod/groups/topicposts.php?topic='. $entity->guid .'&group_guid=' . $entity->container_guid;
+
+ }
+
+ /**
+ * Groups created, so add users to access lists.
+ */
+ function groups_create_event_listener($event, $object_type, $object)
+ {
+ //if (($event == 'create') && ($object_type == 'group') && ($object instanceof ElggGroup))
+ //{
+ $group_id = create_access_collection(elgg_echo('groups:group') . ": " . $object->name);
+ if ($group_id)
+ {
+ $object->group_acl = $group_id;
+ }
+ else
+ return false;
+ //}
+
+ return true;
+ }
+
+ /**
+ * Hook to listen to read access control requests and return all the groups you are a member of.
+ */
+ function groups_read_acl_plugin_hook($hook, $entity_type, $returnvalue, $params)
+ {
+ //error_log("READ: " . var_export($returnvalue));
+ $user = $_SESSION['user'];
+ if ($user)
+ {
+ // Not using this because of recursion.
+ // Joining a group automatically add user to ACL,
+ // So just see if they're a member of the ACL.
+ //$membership = get_users_membership($user->guid);
+
+ $members = get_members_of_access_collection($group->group_acl);
+ print_r($members);
+ exit;
+
+ if ($membership)
+ {
+ foreach ($membership as $group)
+ $returnvalue[$user->guid][$group->group_acl] = elgg_echo('groups:group') . ": " . $group->name;
+ return $returnvalue;
+ }
+ }
+ }
+
+ /**
+ * Return the write access for the current group if the user has write access to it.
+ */
+ function groups_write_acl_plugin_hook($hook, $entity_type, $returnvalue, $params)
+ {
+ $page_owner = page_owner_entity();
+ // get all groups if logged in
+ if ($loggedin = get_loggedin_user()) {
+ $groups = elgg_get_entities_from_relationship(array('relationship' => 'member', 'relationship_guid' => $loggedin->getGUID(), 'inverse_relationship' => FALSE, 'limit' => 999));
+ if (is_array($groups)) {
+ foreach ($groups as $group) {
+ $returnvalue[$group->group_acl] = elgg_echo('groups:group') . ': ' . $group->name;
+ }
+ }
+ }
+
+ // This doesn't seem to do anything.
+ // There are no hooks to override container permissions for groups
+//
+// if ($page_owner instanceof ElggGroup)
+// {
+// if (can_write_to_container())
+// {
+// $returnvalue[$page_owner->group_acl] = elgg_echo('groups:group') . ": " . $page_owner->name;
+// }
+// }
+ return $returnvalue;
+ }
+
+ /**
+ * Groups deleted, so remove access lists.
+ */
+ function groups_delete_event_listener($event, $object_type, $object)
+ {
+ delete_access_collection($object->group_acl);
+
+ return true;
+ }
+
+ /**
+ * Listens to a group join event and adds a user to the group's access control
+ *
+ */
+ function groups_user_join_event_listener($event, $object_type, $object) {
+
+ $group = $object['group'];
+ $user = $object['user'];
+ $acl = $group->group_acl;
+
+ add_user_to_access_collection($user->guid, $acl);
+
+ return true;
+
+ }
+
+ /**
+ * Listens to a group leave event and removes a user from the group's access control
+ *
+ */
+ function groups_user_leave_event_listener($event, $object_type, $object) {
+
+ $group = $object['group'];
+ $user = $object['user'];
+ $acl = $group->group_acl;
+
+ remove_user_from_access_collection($user->guid, $acl);
+
+ return true;
+
+ }
+
+ /**
+ * This hooks into the getIcon API and provides nice user icons for users where possible.
+ *
+ * @param unknown_type $hook
+ * @param unknown_type $entity_type
+ * @param unknown_type $returnvalue
+ * @param unknown_type $params
+ * @return unknown
+ */
+ function groups_groupicon_hook($hook, $entity_type, $returnvalue, $params)
+ {
+ global $CONFIG;
+
+ if ((!$returnvalue) && ($hook == 'entity:icon:url') && ($params['entity'] instanceof ElggGroup))
+ {
+ $entity = $params['entity'];
+ $type = $entity->type;
+ $viewtype = $params['viewtype'];
+ $size = $params['size'];
+
+ if ($icontime = $entity->icontime) {
+ $icontime = "{$icontime}";
+ } else {
+ $icontime = "default";
+ }
+
+ $filehandler = new ElggFile();
+ $filehandler->owner_guid = $entity->owner_guid;
+ $filehandler->setFilename("groups/" . $entity->guid . $size . ".jpg");
+
+ if ($filehandler->exists()) {
+ $url = $CONFIG->url . "pg/groupicon/{$entity->guid}/$size/$icontime.jpg";
+
+ return $url;
+ }
+ }
+ }
+
+ /**
+ * A simple function to see who can edit a group discussion post
+ * @param the comment $entity
+ * @param user who owns the group $group_owner
+ * @return boolean
+ */
+ function groups_can_edit_discussion($entity, $group_owner)
+ {
+
+ //logged in user
+ $user = $_SESSION['user']->guid;
+
+ if (($entity->owner_guid == $user) || $group_owner == $user || isadminloggedin()) {
+ return true;
+ }else{
+ return false;
+ }
+
+ }
+
+ /**
+ * Overrides topic post getURL() value.
+ *
+ */
+ function group_topicpost_url($annotation) {
+ if ($parent = get_entity($annotation->entity_guid)) {
+ global $CONFIG;
+ return $CONFIG->wwwroot . 'mod/groups/topicposts.php?topic='.$parent->guid.'&group_guid='.$parent->container_guid.'#' . $annotation->id;
+ }
+ }
+
+ /**
+ * Grabs groups by invitations
+ * Have to override all access until there's a way override access to getter functions.
+ *
+ * @param $user_guid
+ * @return unknown_type
+ */
+ function groups_get_invited_groups($user_guid, $return_guids = FALSE) {
+ $ia = elgg_set_ignore_access(TRUE);
+ $invitations = elgg_get_entities_from_relationship(array('relationship' => 'invited', 'relationship_guid' => $user_guid, 'inverse_relationship' => TRUE, 'limit' => 9999));
+ elgg_set_ignore_access($ia);
+
+ if ($return_guids) {
+ $guids = array();
+ foreach ($invitations as $invitation) {
+ $guids[] = $invitation->getGUID();
+ }
+
+ return $guids;
+ }
+
+ return $invitations;
+ }
+
+ register_extender_url_handler('group_topicpost_url','annotation', 'group_topic_post');
+
+ // Register a handler for create groups
+ register_elgg_event_handler('create', 'group', 'groups_create_event_listener');
+
+ // Register a handler for delete groups
+ register_elgg_event_handler('delete', 'group', 'groups_delete_event_listener');
+
+ // Make sure the groups initialisation function is called on initialisation
+ register_elgg_event_handler('init','system','groups_init');
+ register_elgg_event_handler('init','system','groups_fields_setup', 10000); // Ensure this runs after other plugins
+ register_elgg_event_handler('join','group','groups_user_join_event_listener');
+ register_elgg_event_handler('leave','group','groups_user_leave_event_listener');
+ register_elgg_event_handler('pagesetup','system','groups_submenus');
+ register_elgg_event_handler('annotate','all','group_object_notifications');
+
+ // Register actions
+ global $CONFIG;
+ register_action("groups/addtopic",false,$CONFIG->pluginspath . "groups/actions/forums/addtopic.php");
+ register_action("groups/deletetopic",false,$CONFIG->pluginspath . "groups/actions/forums/deletetopic.php");
+ register_action("groups/addpost",false,$CONFIG->pluginspath . "groups/actions/forums/addpost.php");
+ register_action("groups/edittopic",false,$CONFIG->pluginspath . "groups/actions/forums/edittopic.php");
+ register_action("groups/deletepost",false,$CONFIG->pluginspath . "groups/actions/forums/deletepost.php");
+ register_action("groups/featured",false,$CONFIG->pluginspath . "groups/actions/featured.php");
+ register_action("groups/editpost",false,$CONFIG->pluginspath . "groups/actions/forums/editpost.php");
+
+?>
diff --git a/mod/groups/topicposts.php b/mod/groups/topicposts.php
new file mode 100644
index 000000000..bd2d3b1ed
--- /dev/null
+++ b/mod/groups/topicposts.php
@@ -0,0 +1,37 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ */
+
+ // Load Elgg engine
+ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+ // We now have RSS on topics
+ global $autofeed;
+ $autofeed = true;
+
+ //get_input('group_guid');
+ set_page_owner(get_input('group_guid'));
+ if (!(page_owner_entity() instanceof ElggGroup)) forward();
+
+ group_gatekeeper();
+
+ // get the entity from id
+ $topic = get_entity(get_input('topic'));
+ if (!$topic) forward();
+
+ // Display them
+ $area2 = elgg_view("forum/viewposts", array('entity' => $topic));
+ $body = elgg_view_layout("two_column_left_sidebar", '' , $area2);
+
+ // Display page
+ page_draw($topic->title,$body);
+
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/forms/forums/addpost.php b/mod/groups/views/default/forms/forums/addpost.php
new file mode 100644
index 000000000..004638f33
--- /dev/null
+++ b/mod/groups/views/default/forms/forums/addpost.php
@@ -0,0 +1,40 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ *
+ * @uses $vars['entity'] Optionally, the post to edit
+ */
+
+?>
+
\ No newline at end of file
diff --git a/mod/groups/views/default/forms/forums/addtopic.php b/mod/groups/views/default/forms/forums/addtopic.php
new file mode 100644
index 000000000..d002b110a
--- /dev/null
+++ b/mod/groups/views/default/forms/forums/addtopic.php
@@ -0,0 +1,101 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ *
+ * @uses $vars['object'] Optionally, the topic to edit
+ */
+
+ // Set title, form destination
+ $title = elgg_echo("groups:addtopic");
+ $action = "groups/addtopic";
+ $tags = "";
+ $title = "";
+ $message = "";
+ $message_id = "";
+ $status = "";
+ $access_id = ACCESS_DEFAULT;
+
+ // get the group guid
+ $group_guid = (int) get_input('group_guid');
+
+ // set the title
+ echo elgg_view_title(elgg_echo("groups:addtopic"));
+
+?>
+
diff --git a/mod/groups/views/default/forms/forums/edittopic.php b/mod/groups/views/default/forms/forums/edittopic.php
new file mode 100644
index 000000000..b88dfd866
--- /dev/null
+++ b/mod/groups/views/default/forms/forums/edittopic.php
@@ -0,0 +1,109 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ *
+ * @uses $vars['entity'] Optionally, the topic to edit
+ */
+
+ //users can edit the access and status for now
+ $access_id = $vars['entity']->access_id;
+ $status = $vars['entity']->status;
+ $tags = $vars['entity']->tags;
+ $title = $vars['entity']->title;
+ $message = $vars['entity']->getAnnotations('group_topic_post', 1, 0, "asc");
+
+ foreach($message as $mes){
+ $messsage_content = $mes->value;
+ $message_id = $mes->id;
+ }
+
+ // get the group GUID
+ $group_guid = get_input("group");
+
+ // topic guid
+ $topic_guid = $vars['entity']->guid;
+
+ // set the title
+ echo elgg_view_title(elgg_echo("groups:edittopic"));
+
+?>
+
+
+
diff --git a/mod/groups/views/default/forms/groups/edit.php b/mod/groups/views/default/forms/groups/edit.php
new file mode 100644
index 000000000..1c5cb9b6e
--- /dev/null
+++ b/mod/groups/views/default/forms/groups/edit.php
@@ -0,0 +1,162 @@
+membership;
+ } else {
+ $membership = ACCESS_PUBLIC;
+ }
+
+?>
+
+
+
+
+
+
diff --git a/mod/groups/views/default/forms/groups/invite.php b/mod/groups/views/default/forms/groups/invite.php
new file mode 100644
index 000000000..ebe184c53
--- /dev/null
+++ b/mod/groups/views/default/forms/groups/invite.php
@@ -0,0 +1,34 @@
+owner_guid);
+ $forward_url = $group->getURL();
+
+
+?>
+
+
+
diff --git a/mod/groups/views/default/forum/topicposts.php b/mod/groups/views/default/forum/topicposts.php
new file mode 100644
index 000000000..20a545eec
--- /dev/null
+++ b/mod/groups/views/default/forum/topicposts.php
@@ -0,0 +1,106 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ *
+ * @uses $vars['entity'] The posted comment to view
+ */
+
+
+?>
+
+
+
+
+
+
+
+ owner_guid)) {
+
+ //display the user icon
+ echo "" . elgg_view("profile/icon",array('entity' => $post_owner, 'size' => 'small')) . "
";
+
+ //display the user name
+ echo "" . $post_owner->name . " ";
+
+ } else {
+ echo "
";
+ echo "" . elgg_echo('profile:deleteduser') . " ";
+ }
+
+ //display the date of the comment
+ echo "" . friendly_time($vars['entity']->time_created) . "
";
+ ?>
+
+
+ $vars['entity']->value)));
+ ?>
+
+
+
+ owner_guid)) {
+ ?>
+
";
+ //get the edit form and details
+ $submit_input = elgg_view('input/submit', array('internalname' => 'submit', 'value' => elgg_echo('save')));
+ $text_textarea = elgg_view('input/longtext', array('internalname' => 'postComment'.$vars['entity']->id, 'value' => $vars['entity']->value));
+ $post = elgg_view('input/hidden', array('internalname' => 'post', 'value' => $vars['entity']->id));
+ $field = elgg_view('input/hidden', array('internalname' => 'field_num', 'value' => $vars['entity']->id));
+ $topic = elgg_view('input/hidden', array('internalname' => 'topic', 'value' => get_input('topic')));
+ $group = elgg_view('input/hidden', array('internalname' => 'group', 'value' => get_input('group_guid')));
+
+ $form_body = <<
+
+EOT;
+
+?>
+
+ "{$vars['url']}action/groups/editpost", 'body' => $form_body, 'internalid' => 'editforumpostForm'));
+ ?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/forum/topics.php b/mod/groups/views/default/forum/topics.php
new file mode 100644
index 000000000..c4cd9becf
--- /dev/null
+++ b/mod/groups/views/default/forum/topics.php
@@ -0,0 +1,33 @@
+
+
+
+
+isMember($vars['user'])){
+
+?>
+
+
+
+
+". elgg_echo("grouptopic:notcreated") . "";
+
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/forum/viewposts.php b/mod/groups/views/default/forum/viewposts.php
new file mode 100644
index 000000000..e7e194691
--- /dev/null
+++ b/mod/groups/views/default/forum/viewposts.php
@@ -0,0 +1,58 @@
+
+
+
+
+
+countAnnotations('group_topic_post');
+ $offset = (int) get_input('offset',0);
+
+ $baseurl = $vars['url'] . "mod/groups/topicposts.php?topic={$vars['entity']->guid}&group_guid={$vars['entity']->container_guid}";
+ echo elgg_view('navigation/pagination',array(
+ 'limit' => 50,
+ 'offset' => $offset,
+ 'baseurl' => $baseurl,
+ 'count' => $count,
+ ));
+
+?>
+
+
title; ?>
+getAnnotations('group_topic_post', 50, $offset, "asc") as $post) {
+
+ echo elgg_view("forum/topicposts",array('entity' => $post));
+
+ }
+
+ // check to find out the status of the topic and act
+ if($vars['entity']->status != "closed" && page_owner_entity()->isMember($vars['user'])){
+
+ //display the add comment form, this will appear after all the existing comments
+ echo elgg_view("forms/forums/addpost", array('entity' => $vars['entity']));
+
+ } elseif($vars['entity']->status == "closed") {
+
+ //this topic has been closed by the owner
+ echo "
" . elgg_echo("groups:topicisclosed") . " ";
+ echo "
" . elgg_echo("groups:topiccloseddesc") . "
";
+
+ } else {
+ }
+
+?>
+
\ No newline at end of file
diff --git a/mod/groups/views/default/group/group.php b/mod/groups/views/default/group/group.php
new file mode 100644
index 000000000..96f70d36a
--- /dev/null
+++ b/mod/groups/views/default/group/group.php
@@ -0,0 +1,21 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/closedmembership.php b/mod/groups/views/default/groups/closedmembership.php
new file mode 100644
index 000000000..34e4169eb
--- /dev/null
+++ b/mod/groups/views/default/groups/closedmembership.php
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/contentwrapper.php b/mod/groups/views/default/groups/contentwrapper.php
new file mode 100644
index 000000000..e11d3d09a
--- /dev/null
+++ b/mod/groups/views/default/groups/contentwrapper.php
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/css.php b/mod/groups/views/default/groups/css.php
new file mode 100644
index 000000000..bc8d2bfc0
--- /dev/null
+++ b/mod/groups/views/default/groups/css.php
@@ -0,0 +1,401 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ */
+
+?>
+
+#content_area_group_title h2 {
+ color:#0054A7;
+ font-size:1.35em;
+ line-height:1.2em;
+ margin:0 0 0 8px;
+ padding:5px;
+}
+#topic_posts #content_area_group_title h2 {
+ margin:0 0 0 0;
+}
+
+#two_column_left_sidebar_maincontent #owner_block_content {
+ margin:0 0 10px 0 !important;
+}
+
+#groups_info_column_left {
+ width:435px;
+ margin-left:230px;
+ margin-right:10px;
+}
+
+#groups_info_column_left .odd {
+ background:#E9E9E9;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+}
+#groups_info_column_left .even {
+ background:#E9E9E9;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+}
+#groups_info_column_left p {
+ margin:0 0 7px 0;
+ padding:2px 4px;
+}
+
+#groups_info_column_right {
+ float:left;
+ width:230px;
+ margin:0 0 0 10px;
+}
+#groups_info_wide p {
+ text-align: right;
+ padding-right:10px;
+}
+#group_stats {
+ width:190px;
+ background: #e9e9e9;
+ padding:5px;
+ margin:10px 0 20px 0;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+}
+#group_stats p {
+ margin:0;
+}
+#group_members {
+ margin:10px;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ background: white;
+}
+
+#right_column {
+ clear:left;
+ float:right;
+ width:340px;
+ margin:0 10px 0 0;
+}
+#left_column {
+ width:340px;
+ float:left;
+ margin:0 10px 0 10px;
+
+}
+/* IE 6 fixes */
+* html #left_column {
+ margin:0 0 0 5px;
+}
+* html #right_column {
+ margin:0 5px 0 0;
+}
+
+#group_members h2,
+#right_column h2,
+#left_column h2,
+#fullcolumn h2 {
+ margin:0 0 10px 0;
+ padding:5px;
+ color:#0054A7;
+ font-size:1.25em;
+ line-height:1.2em;
+}
+#fullcolumn .contentWrapper {
+ margin:0 10px 20px 10px;
+ padding:0 0 5px;
+}
+
+.member_icon {
+ margin:0 0 6px 6px;
+ float:left;
+}
+
+/* IE6 */
+* html #topic_post_tbl { width:676px !important;}
+
+/* all browsers - force tinyMCE on edit comments to be full-width */
+.edit_forum_comments .defaultSkin table.mceLayout {
+ width: 636px !important;
+}
+
+/* topics overview page */
+#forum_topics {
+ padding:10px;
+ margin:0 10px 0 10px;
+ background:white;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+}
+/* topics individual view page */
+#topic_posts {
+ margin:0 10px 5px 10px;
+}
+#topic_posts #pages_breadcrumbs {
+ margin:2px 0 0 0px;
+}
+#topic_posts form {
+ padding:10px;
+ margin:30px 0 0 0;
+ background:white;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+}
+.topic_post {
+ padding:10px;
+ margin:0 0 5px 0;
+ background:white;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+}
+.topic_post .post_icon {
+ float:left;
+ margin:0 8px 4px 0;
+}
+.topic_post h2 {
+ margin-bottom:20px;
+}
+.topic_post p.topic-post-menu {
+ margin:0;
+}
+.topic_post p.topic-post-menu a.collapsibleboxlink {
+ padding-left:10px;
+}
+.topic_post table, .topic_post td {
+ border:none;
+}
+
+/* group latest discussions widget */
+#latest_discussion_widget {
+ margin:0 0 20px 0;
+ background:white;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+}
+/* group files widget */
+#filerepo_widget_layout {
+ margin:0 0 20px 0;
+ padding: 0 0 5px 0;
+ background:white;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+}
+/* group pages widget */
+#group_pages_widget {
+ margin:0 0 20px 0;
+ padding: 0 0 5px 0;
+ background:white;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+}
+#group_pages_widget .search_listing {
+ border: 2px solid #cccccc;
+}
+#right_column .filerepo_widget_singleitem {
+ background: #dedede !important;
+ margin:0 10px 5px 10px;
+}
+#left_column .filerepo_widget_singleitem {
+ background: #dedede !important;
+ margin:0 10px 5px 10px;
+}
+.forum_latest {
+ margin:0 10px 5px 10px;
+ background: #dedede;
+ padding:5px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+}
+.forum_latest:hover {
+
+}
+.forum_latest .topic_owner_icon {
+ float:left;
+}
+.forum_latest .topic_title {
+ margin-left:35px;
+}
+.forum_latest .topic_title p {
+ line-height: 1.0em;
+ padding:0;
+ margin:0;
+ font-weight: bold;
+}
+.forum_latest p.topic_replies {
+ padding:3px 0 0 0;
+ margin:0;
+ color:#666666;
+}
+.add_topic {
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ background:white;
+ margin:5px 10px;
+ padding:10px 10px 10px 6px;
+}
+
+a.add_topic_button {
+ font: 12px/100% Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ color: white;
+ background:#4690d6;
+ border:none;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ width: auto;
+ height: auto;
+ padding: 3px 6px 3px 6px;
+ margin:0;
+ cursor: pointer;
+}
+a.add_topic_button:hover {
+ background: #0054a7;
+ color:white;
+ text-decoration: none;
+}
+
+
+
+/* latest discussion listing */
+.latest_discussion_info {
+ float:right;
+ width:300px;
+ text-align: right;
+ margin-left: 10px;
+}
+.groups .search_listing br {
+ height:0;
+ line-height:0;
+}
+span.timestamp {
+ color:#666666;
+ font-size: 90%;
+}
+.latest_discussion_info .timestamp {
+ font-size: 0.85em;
+}
+/* new groups page */
+.groups .search_listing {
+ border:2px solid #cccccc;
+ margin:0 0 5px 0;
+}
+.groups .search_listing:hover {
+ background:#dedede;
+}
+.groups .group_count {
+ font-weight: bold;
+ color: #666666;
+ margin:0 0 5px 4px;
+}
+.groups .search_listing_info {
+ color:#666666;
+}
+.groupdetails {
+ float:right;
+}
+.groupdetails p {
+ margin:0;
+ padding:0;
+ line-height: 1.1em;
+ text-align: right;
+}
+#groups_closed_membership {
+ margin:0 10px 20px 10px;
+ padding: 3px 5px 5px 5px;
+ background:#bbdaf7;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+}
+#groups_closed_membership p {
+ margin:0;
+}
+
+/* groups membership widget */
+.groupmembershipwidget .contentWrapper {
+ margin:0 10px 5px 10px;
+}
+.groupmembershipwidget .contentWrapper .groupicon {
+ float:left;
+ margin:0 10px 0 0;
+}
+.groupmembershipwidget .search_listing_info p {
+ color: #666666;
+}
+.groupmembershipwidget .search_listing_info span {
+ font-weight: bold;
+}
+
+/* groups sidebar */
+.featuredgroups .contentWrapper {
+ margin:0 0 10px 0;
+}
+.featuredgroups .contentWrapper .groupicon {
+ float:left;
+ margin:0 10px 0 0;
+}
+.featuredgroups .contentWrapper p {
+ margin: 0;
+ line-height: 1.2em;
+ color:#666666;
+}
+.featuredgroups .contentWrapper span {
+ font-weight: bold;
+}
+#groupssearchform {
+ border-bottom: 1px solid #cccccc;
+ margin-bottom: 10px;
+}
+#groupssearchform input[type="submit"] {
+ padding:2px;
+ height:auto;
+ margin:4px 0 5px 0;
+}
+.sidebarBox #owner_block_submenu {
+ margin:5px 0 0 0;
+}
+
+/* delete post */
+.delete_discussion {
+
+}
+.delete_discussion a {
+ display:block;
+ float:right;
+ cursor: pointer;
+ width:14px;
+ height:14px;
+ margin:0;
+ background: url("_graphics/icon_customise_remove.png") no-repeat 0 0;
+}
+.delete_discussion a:hover {
+ background-position: 0 -16px;
+ text-decoration: none;
+}
+/* IE6 */
+* html .delete_discussion a { font-size: 1px; }
+/* IE7 */
+*:first-child+html .delete_discussion a { font-size: 1px; }
+
+/* delete group button */
+#delete_group_option input[type="submit"] {
+ background:#dedede;
+ border-color:#dedede;
+ color:#333333;
+ margin:0;
+ float:right;
+ clear:both;
+}
+#delete_group_option input[type="submit"]:hover {
+ background:red;
+ border-color:red;
+ color:white;
+}
+
+#groupsearchform .search_input {
+ width:176px;
+}
+
diff --git a/mod/groups/views/default/groups/featured.php b/mod/groups/views/default/groups/featured.php
new file mode 100644
index 000000000..6e85bf5d8
--- /dev/null
+++ b/mod/groups/views/default/groups/featured.php
@@ -0,0 +1,29 @@
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/find.php b/mod/groups/views/default/groups/find.php
new file mode 100644
index 000000000..671d618bc
--- /dev/null
+++ b/mod/groups/views/default/groups/find.php
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/forum_latest.php b/mod/groups/views/default/groups/forum_latest.php
new file mode 100644
index 000000000..6baa8a575
--- /dev/null
+++ b/mod/groups/views/default/groups/forum_latest.php
@@ -0,0 +1,38 @@
+forum_enable != 'no'){
+
+?>
+
+
+
+ 'object', 'subtypes' => 'groupforumtopic', 'annotation_names' => 'group_topic_post', 'container_guid' => $vars['entity']->guid, 'limit' => 4, 'order_by' => 'maxtime desc'));
+
+ if($forum){
+ foreach($forum as $f){
+
+ $count_annotations = $f->countAnnotations("group_topic_post");
+
+ echo "
";
+ echo "
" . elgg_view('profile/icon',array('entity' => $f->getOwnerEntity(), 'size' => 'tiny', 'override' => true)) . "
";
+ echo "
";
+
+ echo "
";
+
+ }
+ } else {
+ echo "
";
+ echo elgg_echo("grouptopic:notcreated");
+ echo "
";
+ }
+?>
+
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/group_sort_menu.php b/mod/groups/views/default/groups/group_sort_menu.php
new file mode 100644
index 000000000..7314507e0
--- /dev/null
+++ b/mod/groups/views/default/groups/group_sort_menu.php
@@ -0,0 +1,28 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/groupgallery.php b/mod/groups/views/default/groups/groupgallery.php
new file mode 100644
index 000000000..7122dc098
--- /dev/null
+++ b/mod/groups/views/default/groups/groupgallery.php
@@ -0,0 +1,25 @@
+ $vars['entity'],
+ 'size' => 'large',
+ )
+ );
+
+ $info .= "getUrl() . "\">" . $vars['entity']->name . "
";
+
+ // num users, last activity, owner etc
+
+
+ echo elgg_view('search/gallery_listing',array('icon' => $icon, 'info' => $info));
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/grouplisting.php b/mod/groups/views/default/groups/grouplisting.php
new file mode 100644
index 000000000..d25eaff56
--- /dev/null
+++ b/mod/groups/views/default/groups/grouplisting.php
@@ -0,0 +1,49 @@
+ $vars['entity'],
+ 'size' => 'small',
+ )
+ );
+
+ //get the membership type
+ $membership = $vars['entity']->membership;
+ if($membership == 2)
+ $mem = elgg_echo("groups:open");
+ else
+ $mem = elgg_echo("groups:closed");
+
+ //for admins display the feature or unfeature option
+ if($vars['entity']->featured_group == "yes"){
+ $url = elgg_add_action_tokens_to_url($vars['url'] . "action/groups/featured?group_guid=" . $vars['entity']->guid . "&action=unfeature");
+ $wording = elgg_echo("groups:makeunfeatured");
+ }else{
+ $url = elgg_add_action_tokens_to_url($vars['url'] . "action/groups/featured?group_guid=" . $vars['entity']->guid . "&action=feature");
+ $wording = elgg_echo("groups:makefeatured");
+ }
+
+ $info .= "" . $mem . " / " . get_group_members($vars['entity']->guid, 10, 0, 0, true) ." " . elgg_echo("groups:member") . "
";
+ //if admin, show make featured option
+ if(isadminloggedin())
+ $info .= "
{$wording}
";
+ $info .= "
";
+ $info .= "getUrl() . "\">" . $vars['entity']->name . "
";
+ $info .= "" . $vars['entity']->briefdescription . "
";
+
+ // num users, last activity, owner etc
+
+ echo elgg_view_listing($icon, $info);
+
+?>
diff --git a/mod/groups/views/default/groups/groupprofile.php b/mod/groups/views/default/groups/groupprofile.php
new file mode 100644
index 000000000..1c989c9a8
--- /dev/null
+++ b/mod/groups/views/default/groups/groupprofile.php
@@ -0,0 +1,102 @@
+
+
+
+
+
+ $vars['entity'],
+ //'align' => "left",
+ 'size' => $iconsize,
+ )
+ );
+ ?>
+
+
+
+
+
+
+ group) && sizeof($vars['config']->group) > 0){
+
+ foreach($vars['config']->group as $shortname => $valtype) {
+ if ($shortname != "name") {
+ $value = $vars['entity']->$shortname;
+
+ if (!empty($value)) {
+ //This function controls the alternating class
+ $even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even';
+ }
+
+ echo "
";
+ echo "";
+ echo elgg_echo("groups:{$shortname}");
+ echo ": ";
+
+ $options = array(
+ 'value' => $vars['entity']->$shortname
+ );
+
+ if ($valtype == 'tags') {
+ $options['tag_names'] = $shortname;
+ }
+
+ echo elgg_view("output/{$valtype}", $options);
+
+ echo "
";
+ }
+ }
+ }
+ }
+ ?>
+
+
+
+
+
+
+canEdit())
+ {
+
+?>
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/icon.php b/mod/groups/views/default/groups/icon.php
new file mode 100644
index 000000000..7390200d9
--- /dev/null
+++ b/mod/groups/views/default/groups/icon.php
@@ -0,0 +1,48 @@
+icontime) {
+ $icontime = "{$icontime}";
+ } else {
+ $icontime = "default";
+ }
+
+
+?>
+
+
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/invitationrequests.php b/mod/groups/views/default/groups/invitationrequests.php
new file mode 100644
index 000000000..fbbbafb22
--- /dev/null
+++ b/mod/groups/views/default/groups/invitationrequests.php
@@ -0,0 +1,44 @@
+
+" . elgg_echo('groups:invitations:none') . "";
+
+ }
+
+?>
+
diff --git a/mod/groups/views/default/groups/members.php b/mod/groups/views/default/groups/members.php
new file mode 100644
index 000000000..66f2604c0
--- /dev/null
+++ b/mod/groups/views/default/groups/members.php
@@ -0,0 +1,30 @@
+
+
+
+
+
+getMembers(10);
+ foreach($members as $mem){
+
+ echo "
";
+
+ }
+
+?>
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/membershiprequests.php b/mod/groups/views/default/groups/membershiprequests.php
new file mode 100644
index 000000000..9ac37990a
--- /dev/null
+++ b/mod/groups/views/default/groups/membershiprequests.php
@@ -0,0 +1,44 @@
+
+" . elgg_echo('groups:requests:none') . "";
+
+ }
+
+?>
+
diff --git a/mod/groups/views/default/groups/profileitems.php b/mod/groups/views/default/groups/profileitems.php
new file mode 100644
index 000000000..7309c8a71
--- /dev/null
+++ b/mod/groups/views/default/groups/profileitems.php
@@ -0,0 +1,28 @@
+";
+ echo elgg_view("groups/forum_latest",array('entity' => $vars['entity']));
+ echo "
";
+
+ //right column
+ echo "";
+ echo elgg_view("groups/right_column",array('entity' => $vars['entity']));
+ echo "
";
+
+ //left column
+ echo "";
+ echo elgg_view("groups/left_column",array('entity' => $vars['entity']));
+ echo "
";
+
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/side_menu.php b/mod/groups/views/default/groups/side_menu.php
new file mode 100644
index 000000000..7de921ed0
--- /dev/null
+++ b/mod/groups/views/default/groups/side_menu.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/default/icon/group/default/large.php b/mod/groups/views/default/icon/group/default/large.php
new file mode 100644
index 000000000..a9d69a691
--- /dev/null
+++ b/mod/groups/views/default/icon/group/default/large.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/default/icon/group/default/medium.php b/mod/groups/views/default/icon/group/default/medium.php
new file mode 100644
index 000000000..47cf328b8
--- /dev/null
+++ b/mod/groups/views/default/icon/group/default/medium.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/default/icon/group/default/small.php b/mod/groups/views/default/icon/group/default/small.php
new file mode 100644
index 000000000..b052c1cc3
--- /dev/null
+++ b/mod/groups/views/default/icon/group/default/small.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/default/icon/group/default/tiny.php b/mod/groups/views/default/icon/group/default/tiny.php
new file mode 100644
index 000000000..1023d06e2
--- /dev/null
+++ b/mod/groups/views/default/icon/group/default/tiny.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/default/object/groupforumtopic.php b/mod/groups/views/default/object/groupforumtopic.php
new file mode 100644
index 000000000..1dd57c859
--- /dev/null
+++ b/mod/groups/views/default/object/groupforumtopic.php
@@ -0,0 +1,77 @@
+
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ */
+
+ //get the required variables
+ $title = htmlentities($vars['entity']->title, ENT_QUOTES, 'UTF-8');
+ //$description = get_entity($vars['entity']->description);
+ $topic_owner = get_user($vars['entity']->owner_guid);
+ $group = get_entity($vars['entity']->container_guid);
+ $forum_created = friendly_time($vars['entity']->time_created);
+ $counter = $vars['entity']->countAnnotations("group_topic_post");
+ $last_post = $vars['entity']->getAnnotations("group_topic_post", 1, 0, "desc");
+
+ //get the time and user
+ if ($last_post) {
+ foreach($last_post as $last)
+ {
+ $last_time = $last->time_created;
+ $last_user = $last->owner_guid;
+ }
+ }
+
+ $u = get_user($last_user);
+
+ //select the correct output depending on where you are
+ if(get_context() == "search"){
+
+ $info = "" . sprintf(elgg_echo('group:created'), $forum_created, $counter) . "";
+ if (($last_time) && ($u)) $info.= sprintf(elgg_echo('groups:lastupdated'), friendly_time($last_time), " getURL() . "\">" . $u->name . " ");
+ $info .= '
';
+ //get the group avatar
+ $icon = elgg_view("profile/icon",array('entity' => $group, 'size' => 'small'));
+ //get the group and topic title
+ if ($group instanceof ElggGroup)
+ $info .= "" . elgg_echo('group') . ": getURL()}\">".htmlentities($group->name, ENT_QUOTES, 'UTF-8') ."
";
+
+ $info .= "" . elgg_echo('topic') . ": guid}&group_guid={$group->guid}\">{$title}
";
+ //get the forum description
+ //$info .= $description;
+
+ }else{
+
+ $info = "" . sprintf(elgg_echo('group:created'), $forum_created, $counter) . " ";
+ if (($last_time) && ($u)) $info.= "" . elgg_echo('groups:updated') . " " . friendly_time($last_time) . " by getURL() . "\">" . $u->name . " ";
+
+ if (groups_can_edit_discussion($vars['entity'], page_owner_entity()->owner_guid)) {
+
+ // display the delete link to those allowed to delete
+ $info .= "" . elgg_view("output/confirmlink", array(
+ 'href' => $vars['url'] . "action/groups/deletetopic?topic=" . $vars['entity']->guid . "&group=" . $vars['entity']->container_guid,
+ 'text' => " ",
+ 'confirm' => elgg_echo('deleteconfirm'),
+ )) . " ";
+
+ }
+
+ $info .= " ";
+
+ //get the user avatar
+ $icon = elgg_view("profile/icon",array('entity' => $topic_owner, 'size' => 'small'));
+ $info .= "" . elgg_echo('groups:started') . " " . $topic_owner->name . ": guid}&group_guid={$group->guid}\">{$title}
";
+ $info .= "
";
+
+ }
+
+ //display
+ echo elgg_view_listing($icon, $info);
+
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/river/forum/create.php b/mod/groups/views/default/river/forum/create.php
new file mode 100644
index 000000000..fb6cd707c
--- /dev/null
+++ b/mod/groups/views/default/river/forum/create.php
@@ -0,0 +1,27 @@
+subject_guid); // $statement->getSubject();
+ $object = get_entity($vars['item']->object_guid);
+ //$url = $object->getURL();
+ $forumtopic = $object->guid;
+ $group_guid = $object->container_guid;
+ //grab the annotation, if one exists
+ if($vars['item']->annotation_id != 0)
+ $comment = get_annotation($vars['item']->annotation_id)->value;
+ $contents = strip_tags($contents);//this is so we don't get large images etc in the activity river
+ $url = $vars['url'] . "mod/groups/topicposts.php?topic=" . $forumtopic . "&group_guid=" . $group_guid;
+ $url_user = "getURL()}\">{$performed_by->name} ";
+ $string = sprintf(elgg_echo("groupforum:river:posted"),$url_user) . " ";
+ $string .= elgg_echo("groupforum:river:annotate:create") . " | " . $object->title . " ";
+ $string .= "";
+ if($comment){
+ $contents = strip_tags($comment);//this is so we don't get large images etc in the activity river
+ if(strlen($contents) > 200)
+ $string .= substr($contents, 0, strpos($contents, ' ', 200)) . "...";
+ else
+ $string .= $contents;
+ }
+ $string .= "
";
+?>
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/river/forum/topic/create.php b/mod/groups/views/default/river/forum/topic/create.php
new file mode 100644
index 000000000..f4c4aadfd
--- /dev/null
+++ b/mod/groups/views/default/river/forum/topic/create.php
@@ -0,0 +1,27 @@
+subject_guid); // $statement->getSubject();
+ $object = get_entity($vars['item']->object_guid);
+ //$url = $object->getURL();
+ $forumtopic = $object->guid;
+ $group_guid = $object->container_guid;
+ $url = $vars['url'] . "mod/groups/topicposts.php?topic=" . $forumtopic . "&group_guid=" . $group_guid;
+ $comment = $object->getAnnotations("group_topic_post", 1, 0, "asc");
+ foreach($comment as $c){
+ $contents = $c->value;
+ }
+ $contents = strip_tags($contents);//this is so we don't get large images etc in the activity river
+ $url_user = "getURL()}\">{$performed_by->name} ";
+ $string = sprintf(elgg_echo("groupforum:river:postedtopic"),$url_user) . ": ";
+ $string .= "" . $object->title . " ";
+ $string .= "";
+ if(strlen($contents) > 200) {
+ $string .= substr($contents, 0, strpos($contents, ' ', 200)) . "...";
+ }else{
+ $string .= $contents;
+ }
+ $string .= "
";
+
+?>
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/river/group/create.php b/mod/groups/views/default/river/group/create.php
new file mode 100644
index 000000000..e96bb9b34
--- /dev/null
+++ b/mod/groups/views/default/river/group/create.php
@@ -0,0 +1,13 @@
+subject_guid); // $statement->getSubject();
+ $object = get_entity($vars['item']->object_guid);
+ $objecturl = $object->getURL();
+
+ $url = "getURL()}\">{$performed_by->name} ";
+ $string = sprintf(elgg_echo("groups:river:member"),$url) . " ";
+ $string .= " getURL() . "\">" . $object->name . " ";
+
+?>
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/river/object/group/create.php b/mod/groups/views/default/river/object/group/create.php
new file mode 100644
index 000000000..94903fd66
--- /dev/null
+++ b/mod/groups/views/default/river/object/group/create.php
@@ -0,0 +1,13 @@
+getSubject();
+ $object = $statement->getObject();
+
+ $url = "getURL()}\">{$performed_by->name} ";
+ $string = sprintf(elgg_echo("group:river:created"),$url) . " ";
+ $string .= "getURL() . "\">" . elgg_echo("group:river:create") . " ";
+
+?>
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/river/object/groupforumtopic/annotate.php b/mod/groups/views/default/river/object/groupforumtopic/annotate.php
new file mode 100644
index 000000000..c6aa1e5ab
--- /dev/null
+++ b/mod/groups/views/default/river/object/groupforumtopic/annotate.php
@@ -0,0 +1,14 @@
+getSubject();
+ $object = $statement->getObject();
+
+ $url = "getURL()}\">{$performed_by->name} ";
+ $string = sprintf(elgg_echo("groupforum:river:posted"),$url) . " ";
+ $string .= elgg_echo("groupforum:river:annotate:create") . " | getURL() . "\">" . $object->title . " ";
+ //$string .= "Title: " . $object->title . "
";
+
+?>
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/river/object/groupforumtopic/create.php b/mod/groups/views/default/river/object/groupforumtopic/create.php
new file mode 100644
index 000000000..7c7d89bad
--- /dev/null
+++ b/mod/groups/views/default/river/object/groupforumtopic/create.php
@@ -0,0 +1,14 @@
+getSubject();
+ $object = $statement->getObject();
+
+ $url = "getURL()}\">{$performed_by->name} ";
+ $string = sprintf(elgg_echo("groupforum:river:created"),$url) . " ";
+ $string .= elgg_echo("groupforum:river:create") . " | getURL() . "\">" . $object->title . " ";
+ //$string .= "Discussion topic: " . $object->title . "
";
+
+?>
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/river/object/groupforumtopic/update.php b/mod/groups/views/default/river/object/groupforumtopic/update.php
new file mode 100644
index 000000000..d13c2b61f
--- /dev/null
+++ b/mod/groups/views/default/river/object/groupforumtopic/update.php
@@ -0,0 +1,13 @@
+getSubject();
+ $object = $statement->getObject();
+
+ $url = "getURL()}\">{$performed_by->name} ";
+ $string = sprintf(elgg_echo("groupforum:river:updated"),$url) . " ";
+ $string .= elgg_echo("groupforum:river:update") . " | getURL() . "\">" . $object->title . " ";
+
+?>
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/river/relationship/member/create.php b/mod/groups/views/default/river/relationship/member/create.php
new file mode 100644
index 000000000..e5e318ce0
--- /dev/null
+++ b/mod/groups/views/default/river/relationship/member/create.php
@@ -0,0 +1,40 @@
+getSubject();
+ $event = $statement->getEvent();
+ $object = $statement->getObject();
+
+ if (is_array($object))
+ {
+ switch ($object['relationship'])
+ {
+ // Friending
+ case 'member' :
+ $user = $object['subject'];
+ $group = $object['object'];
+
+ if (($user instanceof ElggUser) && ($group instanceof ElggGroup))
+ {
+ echo "getURL()}\">{$user->name} ";
+ echo elgg_echo("groups:river:member");
+ echo " 'getURL()}\">{$group->name} '";
+ }
+
+ break;
+ }
+ }
+
+
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/settings/groups/edit.php b/mod/groups/views/default/settings/groups/edit.php
new file mode 100644
index 000000000..311e58dee
--- /dev/null
+++ b/mod/groups/views/default/settings/groups/edit.php
@@ -0,0 +1,18 @@
+hidden_groups;
+ if (!$hidden_groups) $hidden_groups = 'no';
+?>
+
+
+
+ 'params[hidden_groups]',
+ 'options_values' => array(
+ 'no' => elgg_echo('option:no'),
+ 'yes' => elgg_echo('option:yes')
+ ),
+ 'value' => $hidden_groups
+ ));
+ ?>
+
\ No newline at end of file
diff --git a/mod/groups/views/default/sharing/invite.php b/mod/groups/views/default/sharing/invite.php
new file mode 100644
index 000000000..5c3d6b316
--- /dev/null
+++ b/mod/groups/views/default/sharing/invite.php
@@ -0,0 +1,41 @@
+getGUID(),false,'user','')) {
+
+ foreach($friends as $friend) {
+
+ if (!$group->isMember($friend))
+ {
+ $label = elgg_view("profile/icon",array('entity' => $friend, 'size' => 'tiny'));
+ $label .= "{$friend->name}";
+ $options[$label] = $friend->getGUID();
+ }
+ }
+
+ if ($options)
+ {
+ echo elgg_view('input/checkboxes',array(
+
+ 'internalname' => 'user_guid',
+ 'options' => $options,
+
+ ));
+ }
+ else
+ {
+ echo elgg_echo('groups:nofriends');
+ }
+ }
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/widgets/a_users_groups/edit.php b/mod/groups/views/default/widgets/a_users_groups/edit.php
new file mode 100644
index 000000000..fa47cdd62
--- /dev/null
+++ b/mod/groups/views/default/widgets/a_users_groups/edit.php
@@ -0,0 +1,14 @@
+
+ :
+
+ num_display == 1) echo "SELECTED"; ?>>1
+ num_display == 2) echo "SELECTED"; ?>>2
+ num_display == 3) echo "SELECTED"; ?>>3
+ num_display == 4) echo "SELECTED"; ?>>4
+ num_display == 5) echo "SELECTED"; ?>>5
+ num_display == 6) echo "SELECTED"; ?>>6
+ num_display == 7) echo "SELECTED"; ?>>7
+ num_display == 8) echo "SELECTED"; ?>>8
+ num_display == 9) echo "SELECTED"; ?>>9
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/widgets/a_users_groups/view.php b/mod/groups/views/default/widgets/a_users_groups/view.php
new file mode 100644
index 000000000..3328a8778
--- /dev/null
+++ b/mod/groups/views/default/widgets/a_users_groups/view.php
@@ -0,0 +1,42 @@
+num_display;
+ if (!$number)
+ $number = 4;
+
+ //the page owner
+ $owner = $vars['entity']->owner_guid;
+
+ //$groups = get_users_membership($owner);
+ //$groups = list_entities_from_relationship('member',$owner,false,'group','',0,$number,false,false,false);
+ $groups = get_entities_from_relationship('member', $owner, false, "group", "", 0, "", $number, 0, false, 0);
+
+
+ if($groups){
+
+ echo "";
+ }
+
+
+ // echo $groups;
+
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/widgets/group_entities_widget/edit.php b/mod/groups/views/default/widgets/group_entities_widget/edit.php
new file mode 100644
index 000000000..dbf82b2ec
--- /dev/null
+++ b/mod/groups/views/default/widgets/group_entities_widget/edit.php
@@ -0,0 +1,23 @@
+
+
+
+
+
+ limit == 5) echo " selected=\"yes\" "; ?>>5
+ limit) || ($vars['entity']->limit == 8)) echo " selected=\"yes\" "; ?>>8
+ limit == 12) echo " selected=\"yes\" "; ?>>12
+ limit == 15) echo " selected=\"yes\" "; ?>>15
+
+
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/widgets/group_entities_widget/view.php b/mod/groups/views/default/widgets/group_entities_widget/view.php
new file mode 100644
index 000000000..edba53cb5
--- /dev/null
+++ b/mod/groups/views/default/widgets/group_entities_widget/view.php
@@ -0,0 +1,35 @@
+limit)
+ $limit = $vars['entity']->limit;
+
+ $group_guid = $vars['entity']->group_guid;
+
+ if ($group_guid)
+ {
+ $group = get_entity($group_guid);
+ $members = $group->getMembers($limit, $offset);
+ $count = $group->getMembers($limit, $offset, true);
+
+ $result = list_entities_groups("", 0, $group_guid, $limit);
+ }
+ else
+ {
+ $result = elgg_echo('groups:widgets:entities:label:pleaseedit');
+ }
+
+ echo $result;
+?>
\ No newline at end of file
diff --git a/mod/groups/views/default/widgets/group_members_widget/edit.php b/mod/groups/views/default/widgets/group_members_widget/edit.php
new file mode 100644
index 000000000..6d385c204
--- /dev/null
+++ b/mod/groups/views/default/widgets/group_members_widget/edit.php
@@ -0,0 +1,23 @@
+
+
+
+
+
+ limit == 5) echo " selected=\"yes\" "; ?>>5
+ limit) || ($vars['entity']->limit == 8)) echo " selected=\"yes\" "; ?>>8
+ limit == 12) echo " selected=\"yes\" "; ?>>12
+ limit == 15) echo " selected=\"yes\" "; ?>>15
+
+
+
+
\ No newline at end of file
diff --git a/mod/groups/views/default/widgets/group_members_widget/view.php b/mod/groups/views/default/widgets/group_members_widget/view.php
new file mode 100644
index 000000000..502affd12
--- /dev/null
+++ b/mod/groups/views/default/widgets/group_members_widget/view.php
@@ -0,0 +1,35 @@
+limit)
+ $limit = $vars['entity']->limit;
+
+ $group_guid = $vars['entity']->group_guid;
+
+ if ($group_guid)
+ {
+ $group = get_entity($group_guid);
+ $members = $group->getMembers($limit, $offset);
+ $count = $group->getMembers($limit, $offset, true);
+
+ $result = elgg_view_entity_list($members, $count, $offset, $limit, false, false, false);
+ }
+ else
+ {
+ $result = elgg_echo('groups:widgets:members:label:pleaseedit');
+ }
+
+ echo $result;
+?>
\ No newline at end of file
diff --git a/mod/groups/views/rss/forum/topicposts.php b/mod/groups/views/rss/forum/topicposts.php
new file mode 100644
index 000000000..15c5adc7f
--- /dev/null
+++ b/mod/groups/views/rss/forum/topicposts.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/rss/forum/topics.php b/mod/groups/views/rss/forum/topics.php
new file mode 100644
index 000000000..6f3ca34f1
--- /dev/null
+++ b/mod/groups/views/rss/forum/topics.php
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/rss/forum/viewposts.php b/mod/groups/views/rss/forum/viewposts.php
new file mode 100644
index 000000000..464ca1a7b
--- /dev/null
+++ b/mod/groups/views/rss/forum/viewposts.php
@@ -0,0 +1,26 @@
+countAnnotations('group_topic_post');
+ $offset = (int) get_input('offset',0);
+
+ foreach($vars['entity']->getAnnotations('group_topic_post', 50, $offset, "asc") as $post) {
+
+ $post->title = '';
+ $post->description = $post->value;
+ echo elgg_view('object/default', array('entity' => $post));
+ // echo elgg_view("forum/topicposts",array('entity' => $post));
+
+ }
+
+?>
\ No newline at end of file
diff --git a/mod/groups/views/rss/groups/contentwrapper.php b/mod/groups/views/rss/groups/contentwrapper.php
new file mode 100644
index 000000000..15397d552
--- /dev/null
+++ b/mod/groups/views/rss/groups/contentwrapper.php
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/mod/groups/views/rss/groups/profileitems.php b/mod/groups/views/rss/groups/profileitems.php
new file mode 100644
index 000000000..bae449a4c
--- /dev/null
+++ b/mod/groups/views/rss/groups/profileitems.php
@@ -0,0 +1,20 @@
+ 'object', 'owner_guid' => $vars['entity']->guid))) {
+ //if ($forae = get_entities_from_annotations("object", "groupforumtopic", "group_topic_post", "", 0, $vars['entity']->guid, 20, 0, "desc", false)) {
+ foreach($forae as $forum)
+ echo elgg_view_entity($forum);
+ }
+
+?>
\ No newline at end of file
--
cgit v1.2.3