From 1bcc2d793704bf43f6ecf9a01259e9cd6f6f8b2a Mon Sep 17 00:00:00 2001
From: cash
Date: Fri, 4 Mar 2011 01:26:36 +0000
Subject: updated the group actions - edit group needs more work
git-svn-id: http://code.elgg.org/elgg/trunk@8573 36083f99-b078-4883-b0ff-0f9b5a30f544
---
mod/groups/actions/addtogroup.php | 77 ----------
mod/groups/actions/delete.php | 32 ----
mod/groups/actions/edit.php | 161 ---------------------
mod/groups/actions/featured.php | 27 ----
mod/groups/actions/groups/delete.php | 37 +++++
mod/groups/actions/groups/edit.php | 152 +++++++++++++++++++
mod/groups/actions/groups/featured.php | 26 ++++
mod/groups/actions/groups/membership/add.php | 42 ++++++
.../actions/groups/membership/delete_invite.php | 20 +++
.../actions/groups/membership/delete_request.php | 20 +++
mod/groups/actions/groups/membership/invite.php | 51 +++++++
mod/groups/actions/groups/membership/join.php | 70 +++++++++
mod/groups/actions/groups/membership/leave.php | 36 +++++
mod/groups/actions/groupskillinvitation.php | 20 ---
mod/groups/actions/groupskillrequest.php | 20 ---
mod/groups/actions/invite.php | 54 -------
mod/groups/actions/join.php | 50 -------
mod/groups/actions/joinrequest.php | 70 ---------
mod/groups/actions/leave.php | 36 -----
mod/groups/start.php | 48 ++++--
.../views/default/groups/invitationrequests.php | 55 ++++---
.../views/default/groups/profile/buttons.php | 6 +-
22 files changed, 522 insertions(+), 588 deletions(-)
delete mode 100644 mod/groups/actions/addtogroup.php
delete mode 100644 mod/groups/actions/delete.php
delete mode 100644 mod/groups/actions/edit.php
delete mode 100644 mod/groups/actions/featured.php
create mode 100644 mod/groups/actions/groups/delete.php
create mode 100644 mod/groups/actions/groups/edit.php
create mode 100644 mod/groups/actions/groups/featured.php
create mode 100644 mod/groups/actions/groups/membership/add.php
create mode 100644 mod/groups/actions/groups/membership/delete_invite.php
create mode 100644 mod/groups/actions/groups/membership/delete_request.php
create mode 100644 mod/groups/actions/groups/membership/invite.php
create mode 100644 mod/groups/actions/groups/membership/join.php
create mode 100644 mod/groups/actions/groups/membership/leave.php
delete mode 100644 mod/groups/actions/groupskillinvitation.php
delete mode 100644 mod/groups/actions/groupskillrequest.php
delete mode 100644 mod/groups/actions/invite.php
delete mode 100644 mod/groups/actions/join.php
delete mode 100644 mod/groups/actions/joinrequest.php
delete mode 100644 mod/groups/actions/leave.php
(limited to 'mod')
diff --git a/mod/groups/actions/addtogroup.php b/mod/groups/actions/addtogroup.php
deleted file mode 100644
index d75c5fdb8..000000000
--- a/mod/groups/actions/addtogroup.php
+++ /dev/null
@@ -1,77 +0,0 @@
-guid);
-
- if ($user && $group) {
-
- //if (elgg_get_logged_in_user_guid() == $group->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,
- elgg_echo('groups:welcome:subject', array($group->name)),
- elgg_echo('groups:welcome:body', array($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 = elgg_get_site_url() . "pg/groups/invited?user_guid={$user->guid}&group_guid={$group->guid}";
- if (notify_user($user->getGUID(), $group->owner_guid,
- elgg_echo('groups:invite:subject', array($user->name, $group->name)),
- elgg_echo('groups:invite:body', array($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(REFERER);
diff --git a/mod/groups/actions/delete.php b/mod/groups/actions/delete.php
deleted file mode 100644
index 6eed12a9c..000000000
--- a/mod/groups/actions/delete.php
+++ /dev/null
@@ -1,32 +0,0 @@
-owner_guid;
- $prefix = "groups/" . $entity->guid;
- $imagenames = array('.jpg', 'tiny.jpg', 'small.jpg', 'medium.jpg', 'large.jpg');
- $img = new ElggFile();
- $img->owner_guid = $owner_guid;
- foreach ($imagenames as $name) {
- $img->setFilename($prefix . $name);
- $img->delete();
- }
-
- // delete group
- if ($entity->delete()) {
- system_message(elgg_echo('group:deleted'));
- } else {
- register_error(elgg_echo('group:notdeleted'));
- }
-} else {
- register_error(elgg_echo('group:notdeleted'));
-}
-
-$url_name = elgg_get_logged_in_user_entity()->username;
-forward(elgg_get_site_url() . "pg/groups/member/{$url_name}");
diff --git a/mod/groups/actions/edit.php b/mod/groups/actions/edit.php
deleted file mode 100644
index baa1a7065..000000000
--- a/mod/groups/actions/edit.php
+++ /dev/null
@@ -1,161 +0,0 @@
-group as $shortname => $valuetype) {
- // another work around for Elgg's encoding problems: #561, #1963
- $input[$shortname] = get_input($shortname);
- if (is_array($input[$shortname])) {
- array_walk_recursive($input[$shortname], 'profile_array_decoder');
- } else {
- $input[$shortname] = html_entity_decode($input[$shortname], ENT_COMPAT, 'UTF-8');
- }
-
- if ($valuetype == 'tags') {
- $input[$shortname] = string_to_tag_array($input[$shortname]);
- }
-}
-
-$input['name'] = get_input('name');
-$input['name'] = html_entity_decode($input['name'], ENT_COMPAT, 'UTF-8');
-
-$user = elgg_get_logged_in_user_entity();
-
-$group_guid = (int)get_input('group_guid');
-$new_group_flag = $group_guid == 0;
-
-$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(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(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 (elgg_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();
-
-// group creator needs to be member of new group and river entry created
-if ($new_group_flag) {
- set_page_owner($group->guid);
- $group->join($user);
- add_to_river('river/group/create', 'create', $user->guid, $group->guid);
-}
-
-
-
-// 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($group->getUrl());
-
diff --git a/mod/groups/actions/featured.php b/mod/groups/actions/featured.php
deleted file mode 100644
index 72ca7eebd..000000000
--- a/mod/groups/actions/featured.php
+++ /dev/null
@@ -1,27 +0,0 @@
-featured_group = "yes";
- system_message(elgg_echo('groups:featuredon'));
- }
-
- if ($action == "unfeature") {
- $group->featured_group = "no";
- system_message(elgg_echo('groups:unfeatured'));
- }
-}
-
-forward(REFERER);
diff --git a/mod/groups/actions/groups/delete.php b/mod/groups/actions/groups/delete.php
new file mode 100644
index 000000000..9ed7954dc
--- /dev/null
+++ b/mod/groups/actions/groups/delete.php
@@ -0,0 +1,37 @@
+canEdit()) {
+ register_error(elgg_echo('group:notdeleted'));
+ forward(REFERER);
+}
+
+if (($entity) && ($entity instanceof ElggGroup)) {
+ // delete group icons
+ $owner_guid = $entity->owner_guid;
+ $prefix = "groups/" . $entity->guid;
+ $imagenames = array('.jpg', 'tiny.jpg', 'small.jpg', 'medium.jpg', 'large.jpg');
+ $img = new ElggFile();
+ $img->owner_guid = $owner_guid;
+ foreach ($imagenames as $name) {
+ $img->setFilename($prefix . $name);
+ $img->delete();
+ }
+
+ // delete group
+ if ($entity->delete()) {
+ system_message(elgg_echo('group:deleted'));
+ } else {
+ register_error(elgg_echo('group:notdeleted'));
+ }
+} else {
+ register_error(elgg_echo('group:notdeleted'));
+}
+
+$url_name = elgg_get_logged_in_user_entity()->username;
+forward(elgg_get_site_url() . "pg/groups/member/{$url_name}");
diff --git a/mod/groups/actions/groups/edit.php b/mod/groups/actions/groups/edit.php
new file mode 100644
index 000000000..b3c39c461
--- /dev/null
+++ b/mod/groups/actions/groups/edit.php
@@ -0,0 +1,152 @@
+group as $shortname => $valuetype) {
+ // another work around for Elgg's encoding problems: #561, #1963
+ $input[$shortname] = get_input($shortname);
+ if (is_array($input[$shortname])) {
+ array_walk_recursive($input[$shortname], 'profile_array_decoder');
+ } else {
+ $input[$shortname] = html_entity_decode($input[$shortname], ENT_COMPAT, 'UTF-8');
+ }
+
+ if ($valuetype == 'tags') {
+ $input[$shortname] = string_to_tag_array($input[$shortname]);
+ }
+}
+
+$input['name'] = get_input('name');
+$input['name'] = html_entity_decode($input['name'], ENT_COMPAT, 'UTF-8');
+
+$user = elgg_get_logged_in_user_entity();
+
+$group_guid = (int)get_input('group_guid');
+$new_group_flag = $group_guid == 0;
+
+$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(REFERER);
+}
+
+// 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(REFERER);
+}
+
+// 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 (elgg_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
+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();
+
+// group creator needs to be member of new group and river entry created
+if ($new_group_flag) {
+ set_page_owner($group->guid);
+ $group->join($user);
+ add_to_river('river/group/create', 'create', $user->guid, $group->guid);
+}
+
+
+
+// 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($group->getUrl());
diff --git a/mod/groups/actions/groups/featured.php b/mod/groups/actions/groups/featured.php
new file mode 100644
index 000000000..2d623b1e4
--- /dev/null
+++ b/mod/groups/actions/groups/featured.php
@@ -0,0 +1,26 @@
+featured_group = "yes";
+ system_message(elgg_echo('groups:featuredon'));
+ }
+
+ if ($action == "unfeature") {
+ $group->featured_group = "no";
+ system_message(elgg_echo('groups:unfeatured'));
+ }
+}
+
+forward(REFERER);
diff --git a/mod/groups/actions/groups/membership/add.php b/mod/groups/actions/groups/membership/add.php
new file mode 100644
index 000000000..de0cba613
--- /dev/null
+++ b/mod/groups/actions/groups/membership/add.php
@@ -0,0 +1,42 @@
+canEdit()) {
+ if (!$group->isMember($user)) {
+ if (groups_join_group($group, $user)) {
+
+ // send welcome email to user
+ notify_user($user->getGUID(), $group->owner_guid,
+ elgg_echo('groups:welcome:subject', array($group->name)),
+ elgg_echo('groups:welcome:body', array(
+ $user->name,
+ $group->name,
+ $group->getURL())
+ ));
+
+ system_message(elgg_echo('groups:addedtogroup'));
+ } else {
+ // huh
+ }
+ }
+ }
+ }
+}
+
+forward(REFERER);
diff --git a/mod/groups/actions/groups/membership/delete_invite.php b/mod/groups/actions/groups/membership/delete_invite.php
new file mode 100644
index 000000000..4b654f0b6
--- /dev/null
+++ b/mod/groups/actions/groups/membership/delete_invite.php
@@ -0,0 +1,20 @@
+guid, 'invited', $user->guid)) {
+ remove_entity_relationship($group->guid, 'invited', $user->guid);
+ system_message(elgg_echo("groups:invitekilled"));
+}
+
+forward(REFERER);
diff --git a/mod/groups/actions/groups/membership/delete_request.php b/mod/groups/actions/groups/membership/delete_request.php
new file mode 100644
index 000000000..883c9d748
--- /dev/null
+++ b/mod/groups/actions/groups/membership/delete_request.php
@@ -0,0 +1,20 @@
+guid, 'membership_request', $group->guid)) {
+ remove_entity_relationship($user->guid, 'membership_request', $group->guid);
+ system_message(elgg_echo("groups:joinrequestkilled"));
+}
+
+forward(REFERER);
diff --git a/mod/groups/actions/groups/membership/invite.php b/mod/groups/actions/groups/membership/invite.php
new file mode 100644
index 000000000..b106e4869
--- /dev/null
+++ b/mod/groups/actions/groups/membership/invite.php
@@ -0,0 +1,51 @@
+canEdit()) {
+
+ if (!check_entity_relationship($group->guid, 'invited', $user->guid)) {
+
+ // Create relationship
+ add_entity_relationship($group->guid, 'invited', $user->guid);
+
+ // Send email
+ $url = elgg_normalize_url("pg/groups/invitations/$user->username");
+ $result = notify_user($user->getGUID(), $group->owner_guid,
+ elgg_echo('groups:invite:subject', array($user->name, $group->name)),
+ elgg_echo('groups:invite:body', array(
+ $user->name,
+ $logged_in_user->name,
+ $group->name,
+ $url,
+ )),
+ NULL);
+ if ($result) {
+ system_message(elgg_echo("groups:userinvited"));
+ } else {
+ register_error(elgg_echo("groups:usernotinvited"));
+ }
+ } else {
+ register_error(elgg_echo("groups:useralreadyinvited"));
+ }
+ }
+ }
+}
+
+forward(REFERER);
diff --git a/mod/groups/actions/groups/membership/join.php b/mod/groups/actions/groups/membership/join.php
new file mode 100644
index 000000000..3c4571a59
--- /dev/null
+++ b/mod/groups/actions/groups/membership/join.php
@@ -0,0 +1,70 @@
+isPublicMembership() || $group->canEdit($user->guid)) {
+ // anyone can join public groups and admins can join any group
+ $join = true;
+ } else {
+ if (check_entity_relationship($user->guid, 'membership_request', $group->guid)) {
+ // user has invite to closed group
+ $join = true;
+ }
+ }
+
+ if ($join) {
+ if (groups_join_group($group, $user)) {
+ system_message(elgg_echo("groups:joined"));
+ forward($group->getURL());
+ } else {
+ register_error(elgg_echo("groups:cantjoin"));
+ }
+ } else {
+ add_entity_relationship($user->guid, 'membership_request', $group->guid);
+
+ // Notify group owner
+ $url = "{$CONFIG->url}mod/groups/membershipreq.php?group_guid={$group->guid}";
+ $subject = elgg_echo('groups:request:subject', array(
+ $user->name,
+ $group->name,
+ ));
+ $body = elgg_echo('groups:request:body', array(
+ $group->getOwnerEntity()->name,
+ $user->name,
+ $group->name,
+ $user->getURL(),
+ $url,
+ ));
+ if (notify_user($group->owner_guid, $user->getGUID(), $subject, $body)) {
+ system_message(elgg_echo("groups:joinrequestmade"));
+ } else {
+ register_error(elgg_echo("groups:joinrequestnotmade"));
+ }
+ }
+} else {
+ register_error(elgg_echo("groups:cantjoin"));
+}
+
+forward(REFERER);
diff --git a/mod/groups/actions/groups/membership/leave.php b/mod/groups/actions/groups/membership/leave.php
new file mode 100644
index 000000000..390870df1
--- /dev/null
+++ b/mod/groups/actions/groups/membership/leave.php
@@ -0,0 +1,36 @@
+guid);
+
+if (($user instanceof ElggUser) && ($group instanceof ElggGroup)) {
+ if ($group->getOwnerGUID() != elgg_get_logged_in_user_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(REFERER);
diff --git a/mod/groups/actions/groupskillinvitation.php b/mod/groups/actions/groupskillinvitation.php
deleted file mode 100644
index 516490bc9..000000000
--- a/mod/groups/actions/groupskillinvitation.php
+++ /dev/null
@@ -1,20 +0,0 @@
-guid, 'invited', $user->guid)) {
- remove_entity_relationship($group->guid, 'invited', $user->guid);
- system_message(elgg_echo("groups:invitekilled"));
-}
-
-forward(REFERER);
diff --git a/mod/groups/actions/groupskillrequest.php b/mod/groups/actions/groupskillrequest.php
deleted file mode 100644
index 9d45bb25f..000000000
--- a/mod/groups/actions/groupskillrequest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-guid, 'membership_request', $group->guid)) {
- remove_entity_relationship($user->guid, 'membership_request', $group->guid);
- system_message(elgg_echo("groups:joinrequestkilled"));
-}
-
-forward(REFERER);
diff --git a/mod/groups/actions/invite.php b/mod/groups/actions/invite.php
deleted file mode 100644
index 1f8281071..000000000
--- a/mod/groups/actions/invite.php
+++ /dev/null
@@ -1,54 +0,0 @@
-canEdit())) {
- 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 = elgg_normalize_url("pg/groups/invitations/$user->username");
- $result = notify_user($user->getGUID(), $group->owner_guid,
- elgg_echo('groups:invite:subject', array($user->name, $group->name)),
- elgg_echo('groups:invite:body', array($user->name, $logged_in_user->name, $group->name, $url)),
- NULL);
- if ($result) {
- 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(REFERER);
diff --git a/mod/groups/actions/join.php b/mod/groups/actions/join.php
deleted file mode 100644
index 72294c3ad..000000000
--- a/mod/groups/actions/join.php
+++ /dev/null
@@ -1,50 +0,0 @@
-guid);
-
-if (($user instanceof ElggUser) && ($group instanceof ElggGroup)) {
- if ($group->isPublicMembership() || $group->canEdit($user->guid)) {
- 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/relationship/member/create','join',$user->guid,$group->guid);
-
- forward($group->getURL());
- } 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("action/groups/joinrequest?user_guid=$user_guid&group_guid=$group_guid", FALSE));
- }
-} else {
- register_error(elgg_echo("groups:cantjoin"));
-}
-
-forward(REFERER);
-
diff --git a/mod/groups/actions/joinrequest.php b/mod/groups/actions/joinrequest.php
deleted file mode 100644
index 1631712b6..000000000
--- a/mod/groups/actions/joinrequest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-guid);
-
-// If not a member of this group
-if (($group) && ($user) && (!$group->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());
- } 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 = elgg_normalize_url("mod/groups/membershipreq.php?group_guid={$group->guid}");
- if (notify_user($group->owner_guid, $user->getGUID(),
- elgg_echo('groups:request:subject', array($user->name, $group->name)),
- elgg_echo('groups:request:body', array($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(REFERER);
\ No newline at end of file
diff --git a/mod/groups/actions/leave.php b/mod/groups/actions/leave.php
deleted file mode 100644
index 390870df1..000000000
--- a/mod/groups/actions/leave.php
+++ /dev/null
@@ -1,36 +0,0 @@
-guid);
-
-if (($user instanceof ElggUser) && ($group instanceof ElggGroup)) {
- if ($group->getOwnerGUID() != elgg_get_logged_in_user_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(REFERER);
diff --git a/mod/groups/start.php b/mod/groups/start.php
index fe3600dec..04f50919a 100644
--- a/mod/groups/start.php
+++ b/mod/groups/start.php
@@ -35,17 +35,18 @@ function groups_init() {
elgg_register_page_handler('groupicon', 'groups_icon_handler');
// Register some actions
- $action_base = elgg_get_plugins_path() . 'groups/actions';
+ $action_base = elgg_get_plugins_path() . 'groups/actions/groups';
elgg_register_action("groups/edit", "$action_base/edit.php");
elgg_register_action("groups/delete", "$action_base/delete.php");
+ elgg_register_action("groups/featured", "$action_base/featured.php", 'admin');
+
+ $action_base .= '/membership';
+ elgg_register_action("groups/invite", "$action_base/invite.php");
elgg_register_action("groups/join", "$action_base/join.php");
elgg_register_action("groups/leave", "$action_base/leave.php");
- elgg_register_action("groups/joinrequest", "$action_base/joinrequest.php");
- elgg_register_action("groups/killrequest", "$action_base/groupskillrequest.php");
- elgg_register_action("groups/killinvitation", "$action_base/groupskillinvitation.php");
- elgg_register_action("groups/addtogroup", "$action_base/addtogroup.php");
- elgg_register_action("groups/invite", "$action_base/invite.php");
- elgg_register_action("groups/featured", "$action_base/featured.php", 'admin');
+ elgg_register_action("groups/killrequest", "$action_base/delete_request.php");
+ elgg_register_action("groups/killinvitation", "$action_base/delete_invite.php");
+ elgg_register_action("groups/addtogroup", "$action_base/add.php");
// Add some widgets
elgg_register_widget_type('a_users_groups', elgg_echo('groups:widget:membership'), elgg_echo('groups:widgets:description'));
@@ -393,24 +394,45 @@ function groups_user_leave_event_listener($event, $object_type, $object) {
* 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
+ * @param int $user_guid The user's guid
+ * @param bool $return_guids Return guids rather than ElggGroup objects
+ *
+ * @return array ElggGroups or guids depending on $return_guids
*/
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));
+ $groups = elgg_get_entities_from_relationship(array(
+ 'relationship' => 'invited',
+ 'relationship_guid' => $user_guid,
+ 'inverse_relationship' => TRUE,
+ 'limit' => 0,
+ ));
elgg_set_ignore_access($ia);
if ($return_guids) {
$guids = array();
- foreach ($invitations as $invitation) {
- $guids[] = $invitation->getGUID();
+ foreach ($groups as $group) {
+ $guids[] = $group->getGUID();
}
return $guids;
}
- return $invitations;
+ return $groups;
+}
+
+function groups_join_group($group, $user) {
+ if ($group->join($user)) {
+ // 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('river/relationship/member/create', 'join', $user->guid, $group->guid);
+
+ return true;
+ }
+
+ return false;
}
/**
diff --git a/mod/groups/views/default/groups/invitationrequests.php b/mod/groups/views/default/groups/invitationrequests.php
index 60a0ec853..11cac52de 100644
--- a/mod/groups/views/default/groups/invitationrequests.php
+++ b/mod/groups/views/default/groups/invitationrequests.php
@@ -1,37 +1,44 @@
-
- ";
- echo elgg_view_entity_icon($group, 'tiny', array('override' => 'true'));
- echo "
";
+ $icon = elgg_view_entity_icon($group, 'tiny', array('override' => 'true'));
+
+ $group_title = elgg_view('output/url', array(
+ 'href' => $group->getURL(),
+ 'text' => $group->name,
+ ));
$url = elgg_add_action_tokens_to_url(elgg_get_site_url()."action/groups/join?user_guid={$user->guid}&group_guid={$group->guid}");
- ?>
-
-
- "action/groups/killinvitation?user_guid={$user->getGUID()}&group_guid={$group->getGUID()}",
+ $accept_button = elgg_view('output/url', array(
+ 'href' => $url,
+ 'text' => elgg_echo('accept'),
+ 'class' => 'elgg-button elgg-button-submit',
+ ));
+
+ $url = "action/groups/killinvitation?user_guid={$user->getGUID()}&group_guid={$group->getGUID()}";
+ $delete_button = elgg_view('output/confirmlink', array(
+ 'href' => $url,
'confirm' => elgg_echo('groups:invite:remove:check'),
'text' => elgg_echo('delete'),
- )));
-
- echo "
getUrl() . "\">" . $group->name . "
";
- echo "
" . $group->briefdescription . "
";
+ 'class' => 'elgg-button elgg-button-action elgg-state-disabled',
+ ));
- ?>
-
- $group_title
+$group->briefdescription
+$accept_button $delete_button
+HTML;
+ echo elgg_view_image_block($icon, $body);
}
-
- } else {
+ }
+} else {
echo "" . elgg_echo('groups:invitations:none') . "
";
}
-?>
\ No newline at end of file
diff --git a/mod/groups/views/default/groups/profile/buttons.php b/mod/groups/views/default/groups/profile/buttons.php
index 0aef3920b..32d9867ab 100644
--- a/mod/groups/views/default/groups/profile/buttons.php
+++ b/mod/groups/views/default/groups/profile/buttons.php
@@ -31,14 +31,12 @@ if ($vars['entity']->isMember($user)) {
$actions[$url] = elgg_echo('groups:leave');
} else {
// join - admins can always join.
+ $url = elgg_get_site_url() . "action/groups/join?group_guid={$vars['entity']->getGUID()}";
+ $url = elgg_add_action_tokens_to_url($url);
if ($vars['entity']->isPublicMembership() || $vars['entity']->canEdit()) {
- $url = elgg_get_site_url() . "action/groups/join?group_guid={$vars['entity']->getGUID()}";
- $url = elgg_add_action_tokens_to_url($url);
$actions[$url] = elgg_echo('groups:join');
} else {
// request membership
- $url = elgg_get_site_url() . "action/groups/joinrequest?group_guid={$vars['entity']->getGUID()}";
- $url = elgg_add_action_tokens_to_url($url);
$actions[$url] = elgg_echo('groups:joinrequest');
}
}
--
cgit v1.2.3