From 4d961e10c9e8849a0eb6f63f8aa3e9be33274a39 Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Thu, 28 Apr 2016 10:44:52 +0200 Subject: [PATCH] Adding feature from social groups "UserGroup::canLeave" --- main/inc/lib/usergroup.lib.php | 49 +++++++++++++++++++++++++++++----- main/social/group_view.php | 13 +++++---- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/main/inc/lib/usergroup.lib.php b/main/inc/lib/usergroup.lib.php index 413393264b..15f0807456 100755 --- a/main/inc/lib/usergroup.lib.php +++ b/main/inc/lib/usergroup.lib.php @@ -18,6 +18,7 @@ class UserGroup extends Model 'group_type', 'picture', 'url', + 'allow_members_leave_group', 'visibility', 'updated_at', 'created_at' @@ -949,6 +950,7 @@ class UserGroup extends Model { $params['updated_at'] = $params['created_at'] = api_get_utc_datetime(); $params['group_type'] = isset($params['group_type']) ? self::SOCIAL_CLASS : self::NORMAL_CLASS; + $params['allow_members_leave_group'] = isset($params['allow_members_leave_group']) ? 1 : 0; $groupExists = $this->usergroup_exists(trim($params['name'])); if ($groupExists == false) { @@ -991,6 +993,7 @@ class UserGroup extends Model { $values['updated_on'] = api_get_utc_datetime(); $values['group_type'] = isset($values['group_type']) ? self::SOCIAL_CLASS : self::NORMAL_CLASS; + $values['allow_members_leave_group'] = isset($values['allow_members_leave_group']) ? 1 : 0; if (isset($values['id'])) { $picture = isset($_FILES['picture']) ? $_FILES['picture'] : null; @@ -1350,6 +1353,8 @@ class UserGroup extends Model $form->addElement('select', 'visibility', get_lang('GroupPermissions'), $this->getGroupStatusList()); $form->setRequiredNote('* '.get_lang('ThisFieldIsRequired').''); + $form->addElement('checkbox', 'allow_members_leave_group', '', get_lang('AllowMemberLeaveGroup')); + // Setting the form elements if ($type == 'add') { $form->addButtonCreate($header); @@ -1994,9 +1999,16 @@ class UserGroup extends Model // I'm just a reader $relation_group_title = get_lang('IAmAReader'); $links .= '
  • '. - Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace'=>'6')).''.get_lang('InviteFriends').'
  • '; - $links .= '
  • '. - Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace'=>'6')).'
  • '; + Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace'=>'6')). + ''. + get_lang('InviteFriends').''; + + if (UserGroup::canLeave($group_info)) { + $links .= '
  • '. + Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace'=>'6')). + '
  • '; + } + break; case GROUP_USER_PERMISSION_ADMIN: $relation_group_title = get_lang('IAmAnAdmin'); @@ -2006,8 +2018,15 @@ class UserGroup extends Model Display::return_icon('waiting_list.png', get_lang('WaitingList'), array('hspace'=>'6')).''.get_lang('WaitingList').''; $links .= '
  • '. Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace'=>'6')).''.get_lang('InviteFriends').'
  • '; - $links .= '
  • '. - Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace'=>'6')).'
  • '; + + if (UserGroup::canLeave($group_info)) { + $links .= '
  • '. + Display::return_icon( + 'group_leave.png', + get_lang('LeaveGroup'), + array('hspace' => '6') + ).'
  • '; + } break; case GROUP_USER_PERMISSION_PENDING_INVITATION: // $links .= '
  • '.Display::return_icon('addd.gif', get_lang('YouHaveBeenInvitedJoinNow'), array('hspace'=>'6')).'
  • '; @@ -2026,8 +2045,14 @@ class UserGroup extends Model } $links .= '
  • '. Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace'=>'6')).''.get_lang('InviteFriends').'
  • '; - $links .= '
  • '. - Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace'=>'6')).'
  • '; + if (UserGroup::canLeave($group_info)) { + $links .= '
  • '. + Display::return_icon( + 'group_leave.png', + get_lang('LeaveGroup'), + array('hspace' => '6') + ).'
  • '; + } break; case GROUP_USER_PERMISSION_HRM: $relation_group_title = get_lang('IAmAHRM'); @@ -2394,5 +2419,15 @@ class UserGroup extends Model return $nameList; } + + /** + * @param array $groupInfo + * @return bool + */ + public static function canLeave($groupInfo) + { + return $groupInfo['allow_members_leave_group'] == 1 ? true : false; + } + } diff --git a/main/social/group_view.php b/main/social/group_view.php index ae459417bf..0c23d1f8fa 100644 --- a/main/social/group_view.php +++ b/main/social/group_view.php @@ -124,14 +124,17 @@ if ($group_id != 0) { if (isset($_GET['action']) && $_GET['action']=='leave') { $user_leaved = intval($_GET['u']); - //I can "leave me myself" + // I can "leave me myself" if (api_get_user_id() == $user_leaved) { - $usergroup->delete_user_rel_group($user_leaved, $group_id); - Display::addFlash( - Display::return_message(get_lang('UserIsNotSubscribedToThisGroup'), 'confirmation', false) - ); + if (UserGroup::canLeave($group_info)) { + $usergroup->delete_user_rel_group($user_leaved, $group_id); + Display::addFlash( + Display::return_message(get_lang('UserIsNotSubscribedToThisGroup'), 'confirmation', false) + ); + } } } + // add a user to a group if its open if (isset($_GET['action']) && $_GET['action']=='join') { // we add a user only if is a open group