*/ $cidReset = true; require_once __DIR__.'/../inc/global.inc.php'; api_block_anonymous_users(); if (api_get_setting('allow_social_tool') !== 'true') { api_not_allowed(); } $this_section = SECTION_SOCIAL; // prepare anchor for message group topic $anchor = ''; if (isset($_GET['anchor_topic'])) { $anchor = Security::remove_XSS($_GET['anchor_topic']); } else { $match = 0; $param_names = array_keys($_GET); foreach ($param_names as $param) { if (preg_match('/^items_(\d)_page_nr$/', $param, $match)) { break; } } if (isset($match[1])) { $anchor = 'topic_'.$match[1]; } } $htmlHeadXtra[] = ''; $allowed_views = ['mygroups', 'newest', 'pop']; $content = null; if (isset($_GET['view']) && in_array($_GET['view'], $allowed_views)) { if ($_GET['view'] == 'mygroups') { $interbreadcrumb[] = ['url' => 'groups.php', 'name' => get_lang('Groups')]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('My groups')]; } elseif ($_GET['view'] == 'newest') { $interbreadcrumb[] = ['url' => 'groups.php', 'name' => get_lang('Groups')]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Newest')]; } else { $interbreadcrumb[] = ['url' => 'groups.php', 'name' => get_lang('Groups')]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Popular')]; } } else { $interbreadcrumb[] = ['url' => 'groups.php', 'name' => get_lang('Groups')]; if (!isset($_GET['id'])) { $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Groups list')]; } else { //$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Group')); } } // getting group information $group_id = isset($_GET['id']) ? (int) $_GET['id'] : null; $relation_group_title = ''; $role = 0; $usergroup = new UserGroup(); if ($group_id != 0) { $groupInfo = $usergroup->get($group_id); $groupInfo['name'] = Security::remove_XSS($groupInfo['name']); $groupInfo['description'] = Security::remove_XSS($groupInfo['description']); $interbreadcrumb[] = ['url' => '#', 'name' => $groupInfo['name']]; if (isset($_GET['action']) && $_GET['action'] == 'leave') { $user_leaved = intval($_GET['u']); // I can "leave me myself" if (api_get_user_id() == $user_leaved) { if (UserGroup::canLeave($groupInfo)) { $usergroup->delete_user_rel_group($user_leaved, $group_id); Display::addFlash( Display::return_message(get_lang('User is not subscribed to this group'), '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 $user_join = intval($_GET['u']); if (api_get_user_id() == $user_join && !empty($group_id)) { if ($groupInfo['visibility'] == GROUP_PERMISSION_OPEN) { $usergroup->add_user_to_group($user_join, $group_id); Display::addFlash( Display::return_message(get_lang('User is subscribed to this group'), 'confirmation', false) ); } else { $usergroup->add_user_to_group( $user_join, $group_id, GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER ); Display::addFlash( Display::return_message(get_lang('Invitation sent'), 'confirmation', false) ); } } } } $create_thread_link = ''; $social_right_content = null; $socialForum = ''; $groupInfo = $usergroup->get($group_id); $groupInfo['name'] = Security::remove_XSS($groupInfo['name']); $groupInfo['description'] = Security::remove_XSS($groupInfo['description']); //Loading group information if (isset($_GET['status']) && $_GET['status'] === 'sent') { $social_right_content .= Display::return_message(get_lang('Your message has been sent.'), 'confirmation', false); } $is_group_member = $usergroup->is_group_member($group_id); $role = $usergroup->get_user_group_role(api_get_user_id(), $group_id); if (!$is_group_member && $groupInfo['visibility'] == GROUP_PERMISSION_CLOSED) { if ($role == GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER) { $social_right_content .= Display::return_message(get_lang('You already sent an invitation')); } } if ($is_group_member || $groupInfo['visibility'] == GROUP_PERMISSION_OPEN) { if (!$is_group_member) { if (!in_array( $role, [GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, GROUP_USER_PERMISSION_PENDING_INVITATION] )) { $social_right_content .= '
'; $social_right_content .= '
'; $social_right_content .= ''. get_lang('Join group').''; $social_right_content .= '
'; $social_right_content .= '
'; } elseif ($role == GROUP_USER_PERMISSION_PENDING_INVITATION) { $social_right_content .= '
'; $social_right_content .= '
'; $social_right_content .= ''. Display::returnFontAwesomeIcon('envelope').' '. get_lang('You have been invited to join now').''; } $social_right_content .= '
'; $social_right_content .= '
'; } $content = MessageManager::display_messages_for_group($group_id); if ($is_group_member) { if (empty($content)) { $createThreadUrl = api_get_path(WEB_CODE_PATH) .'social/message_for_group_form.inc.php?' .http_build_query([ 'view_panel' => 1, 'user_friend' => api_get_user_id(), 'group_id' => $group_id, 'action' => 'add_message_group', ]); $create_thread_link = Display::url( Display::returnFontAwesomeIcon('commenting').' '. get_lang('You should create a topic'), $createThreadUrl, [ 'class' => 'ajax btn btn-primary', 'title' => get_lang('Compose message'), 'data-title' => get_lang('Compose message'), 'data-size' => 'lg', ] ); } else { $createThreadUrl = api_get_path(WEB_CODE_PATH) .'social/message_for_group_form.inc.php?' .http_build_query([ 'view_panel' => 1, 'user_friend' => api_get_user_id(), 'group_id' => $group_id, 'action' => 'add_message_group', ]); $create_thread_link = Display::url( Display::returnFontAwesomeIcon('commenting').' '. get_lang('Create thread'), $createThreadUrl, [ 'class' => 'ajax btn btn-default', 'title' => get_lang('Compose message'), 'data-title' => get_lang('Compose message'), 'data-size' => 'lg', ] ); } } $members = $usergroup->get_users_by_group($group_id, true); $member_content = ''; // My friends $friend_html = SocialManager::listMyFriendsBlock( api_get_user_id(), '', '' ); // Members if (count($members) > 0) { if ($role == GROUP_USER_PERMISSION_ADMIN) { $member_content .= '
'; $member_content .= '
'; $member_content .= Display::url( Display::returnFontAwesomeIcon('pencil').' '.get_lang('Edit members list'), 'group_members.php?id='.$group_id, ['class' => 'btn btn-default btn-sm', 'title' => get_lang('Edit members list')] ); $member_content .= '
'; $member_content .= '
'; } $member_content .= '
'; $member_content .= '
'; foreach ($members as $member) { // if is a member if (in_array( $member['relation_type'], [GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR] )) { //add icons if ($member['relation_type'] == GROUP_USER_PERMISSION_ADMIN) { $icon = Display::return_icon('social_group_admin.png', get_lang('Admin')); } elseif ($member['relation_type'] == GROUP_USER_PERMISSION_MODERATOR) { $icon = Display::return_icon('social_group_moderator.png', get_lang('Moderator')); } else { $icon = ''; } $userPicture = UserManager::getUserPicture($member['id']); $member_content .= '
'; $member_content .= '
'; $member_name = Display::url( api_get_person_name( cut($member['user_info']['firstname'], 15), cut($member['user_info']['lastname'], 15) ).' '.$icon, $member['user_info']['profile_url'] ); $member_content .= Display::div('', ['class' => 'avatar']); $member_content .= Display::div($member_name, ['class' => 'name']); $member_content .= '
'; $member_content .= '
'; } } $member_content .= '
'; $member_content .= '
'; } if (!empty($create_thread_link)) { $create_thread_link = Display::div($create_thread_link, ['class' => 'pull-right']); } $headers = [get_lang('Discussions'), get_lang('Members')]; $socialForum = Display::tabs($headers, [$content, $member_content], 'tabs'); } else { // if I already sent an invitation message if (!in_array( $role, [ GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, GROUP_USER_PERMISSION_PENDING_INVITATION, ] )) { $social_right_content .= ''.get_lang('Join group').''; } elseif ($role == GROUP_USER_PERMISSION_PENDING_INVITATION) { $social_right_content .= ''.get_lang('You have been invited to join now').''; } } $tpl = new Template(null); // Block Social Avatar SocialManager::setSocialUserBlock($tpl, api_get_user_id(), 'groups', $group_id); $social_menu_block = SocialManager::show_social_menu('groups', $group_id); $tpl->setHelp('Groups'); $tpl->assign('create_link', $create_thread_link); $tpl->assign('is_group_member', $is_group_member); $tpl->assign('group_info', $groupInfo); $tpl->assign('social_friend_block', $friend_html); $tpl->assign('social_menu_block', $social_menu_block); $tpl->assign('social_forum', $socialForum); $tpl->assign('social_right_content', $social_right_content); $social_layout = $tpl->get_template('social/group_view.tpl'); $tpl->display($social_layout);