*/
$cidReset = true;
require_once '../inc/global.inc.php';
api_block_anonymous_users();
if (api_get_setting('allow_social_tool') != 'true' && !api_is_platform_admin()) {
    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 = array('mygroups', 'newest', 'pop');
$interbreadcrumb[] = array(
    'url' => 'home.php',
    'name' => get_lang('SocialNetwork')
);
$content = null;
if (isset($_GET['view']) && in_array($_GET['view'], $allowed_views)) {
    if ($_GET['view'] == 'mygroups') {
        $interbreadcrumb[] = array(
            'url' => 'groups.php',
            'name' => get_lang('Groups')
        );
        $interbreadcrumb[] = array(
            'url' => '#',
            'name' => get_lang('MyGroups')
        );
    } else {
        if ($_GET['view'] == 'newest') {
            $interbreadcrumb[] = array(
                'url' => 'groups.php',
                'name' => get_lang('Groups')
            );
            $interbreadcrumb[] = array(
                'url' => '#',
                'name' => get_lang('Newest')
            );
        } else {
            $interbreadcrumb[] = array(
                'url' => 'groups.php',
                'name' => get_lang('Groups')
            );
            $interbreadcrumb[] = array(
                'url' => '#',
                'name' => get_lang('Popular')
            );
        }
    }
} else {
    $interbreadcrumb[] = array(
        'url' => 'groups.php',
        'name' => get_lang('Groups')
    );
    if (!isset($_GET['id'])) {
        $interbreadcrumb[] = array(
            'url' => '#',
            'name' => get_lang('GroupList')
        );
    } else {
        //$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Group'));
    }
}
// getting group information
$group_id = isset($_GET['id']) ? intval($_GET['id']) : null;
$relation_group_title = '';
$my_group_role = 0;
if ($group_id != 0) {
    $user_leave_message = false;
    $user_added_group_message = false;
    $user_invitation_sent = false;
    $group_info = GroupPortalManager::get_group_data($group_id);
    if (!empty($group_id)) {
        $interbreadcrumb[] = array('url' => '#', 'name' => $group_info['name']);
    }
    if (isset($_GET['action']) && $_GET['action'] == 'leave') {
        $user_leaved = intval($_GET['u']);
        if (GroupPortalManager::canLeave($group_info)) {
            // I can "leave me myself"
            if (api_get_user_id() == $user_leaved) {
                GroupPortalManager::delete_user_rel_group(
                    $user_leaved,
                    $group_id
                );
                $user_leave_message = true;
            }
        }
    }
    // 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 ($group_info['visibility'] == GROUP_PERMISSION_OPEN) {
                GroupPortalManager::add_user_to_group($user_join, $group_id);
                $user_added_group_message = true;
            } else {
                GroupPortalManager::add_user_to_group(
                    $user_join,
                    $group_id,
                    GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER
                );
                $user_invitation_sent = true;
            }
        }
    }
}
$tpl = new Template();
$create_thread_link = '';
$userInfo = api_get_user_info(api_get_user_id(), true);
if ($group_id != 0) {
    SocialManager::setSocialUserBlock($tpl, $user_id, 'groups', $group_id);
    //Block Social Menu
    $social_menu_block = SocialManager::show_social_menu('groups', $group_id);
} else {
    $show_menu = 'browse_groups';
    if (isset($_GET['view']) && $_GET['view'] == 'mygroups') {
        $show_menu = $_GET['view'];
    }
    // Block Social Avatar
    SocialManager::setSocialUserBlock($tpl, $user_id, $show_menu, $group_id);
    $social_menu_block = SocialManager::show_social_menu($show_menu, $group_id);
}
$social_right_content = null;
if ($group_id != 0) {
    $group_info = GroupPortalManager::get_group_data($group_id);
    //Loading group information
    if (isset($_GET['status']) && $_GET['status'] == 'sent') {
        $social_right_content .= Display::return_message(
            get_lang('MessageHasBeenSent'),
            'confirmation',
            false
        );
    }
    if ($user_leave_message) {
        $social_right_content .= Display::return_message(
            get_lang('UserIsNotSubscribedToThisGroup'),
            'confirmation',
            false
        );
    }
    if ($user_added_group_message) {
        $social_right_content .= Display::return_message(
            get_lang('UserIsSubscribedToThisGroup'),
            'confirmation',
            false
        );
    }
    if ($user_invitation_sent) {
        $social_right_content .= Display::return_message(
            get_lang('InvitationSent'),
            'confirmation',
            false
        );
    }
    $is_group_member = GroupPortalManager::is_group_member($group_id);
    // details about the current group
    $social_right_content = '
';
    $social_right_content .= '
';
    //Group's title
    $social_right_content .= Display::tag(
        'h2',
        Security::remove_XSS($group_info['name'], STUDENT, true)
    );
    //Privacy
    if (!$is_group_member) {
        $social_right_content .= '
';
        $social_right_content .= '' . get_lang('Privacy') . ' : ';
        if ($group_info['visibility'] == GROUP_PERMISSION_OPEN) {
            $social_right_content .= get_lang('ThisIsAnOpenGroup');
        } elseif ($group_info['visibility'] == GROUP_PERMISSION_CLOSED) {
            $social_right_content .= get_lang('ThisIsACloseGroup');
        }
        $social_right_content .= '
';
    }
    if (!$is_group_member && $group_info['visibility'] == GROUP_PERMISSION_CLOSED) {
        $role = GroupPortalManager::get_user_group_role(
            api_get_user_id(),
            $group_id
        );
        if ($role == GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER) {
            $social_right_content .= Display::return_message(
                get_lang('YouAlreadySentAnInvitation')
            );
        }
    }
    // Group's tags
    if (!empty($tags)) {
        $social_right_content .= '
' . get_lang(
                'Tags'
            ) . ' : ' . $tags . '
';
    }
    $social_right_content .= '
';
    $social_right_content .= '
 ';
    //-- Show message groups
    $social_right_content .= '';
    if ($is_group_member || $group_info['visibility'] == GROUP_PERMISSION_OPEN) {
        if (!$is_group_member) {
            if (!in_array(
                $my_group_role,
                array(
                    GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER,
                    GROUP_USER_PERMISSION_PENDING_INVITATION
                )
            )
            ) {
                $social_right_content .= '
' . get_lang('JoinGroup') . '';
            } elseif ($my_group_role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
                $social_right_content .= '
' . get_lang('YouHaveBeenInvitedJoinNow') . '';
            }
            $social_right_content .= '
';
        }
        $content = MessageManager::display_messages_for_group($group_id);
        if ($is_group_member) {
            if (empty($content)) {
                $create_thread_link = '
' . get_lang('YouShouldCreateATopic') . '';
            } else {
                $create_thread_link = '
' . get_lang('NewTopic') . '';
            }
        }
        $members = GroupPortalManager::get_users_by_group($group_id);
        $member_content = '';
        //Members
        if (count($members) > 0) {
            if ($my_group_role == GROUP_USER_PERMISSION_ADMIN) {
                $member_content .= Display::url(
                    Display::return_icon(
                        'edit.gif',
                        get_lang('EditMembersList')
                    ) . ' ' . get_lang('EditMembersList'),
                    'group_members.php?id=' . $group_id
                );
            }
            foreach ($members as $member) {
                // if is a member
                if (in_array(
                    $member['relation_type'],
                    array(
                        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 = '';
                    }
                    $image_path = UserManager::get_user_picture_path_by_id(
                        $member['user_id'],
                        'web',
                        false,
                        true
                    );
                    $picture = UserManager::get_picture_user(
                        $member['user_id'],
                        $image_path['file'],
                        60,
                        USER_IMAGE_SIZE_MEDIUM
                    );
                    $member_content .= '
';
                    $member_name = Display::url(
                        api_get_person_name(
                            cut($member['firstname'], 15),
                            cut($member['lastname'], 15)
                        ) . ' ' . $icon,
                        'profile.php?u=' . $member['user_id']
                    );
                    $member_content .= Display::div(
                        '

 ' . $member_name
                    );
                    $member_content .= '
';
                }
            }
        }
        if (!empty($create_thread_link)) {
            $create_thread_link = Display::div(
                $create_thread_link,
                array('style' => 'padding-top:2px;height:40px')
            );
        }
        $headers = array(get_lang('Discussions'), get_lang('Members'));
        $social_right_content .= Display::tabs(
            $headers,
            array($create_thread_link . $content, $member_content),
            'tabs'
        );
    } else {
        // if I already sent an invitation message
        if (!in_array(
            $my_group_role,
            array(
                GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER,
                GROUP_USER_PERMISSION_PENDING_INVITATION
            )
        )
        ) {
            $social_right_content .= '
' . get_lang('JoinGroup') . '';
        } elseif ($my_group_role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
            $social_right_content .= '
' . get_lang('YouHaveBeenInvitedJoinNow') . '';
        }
    }
    $social_right_content .= '
 '; // end layout messages
} else {
    // My groups -----
    $results = GroupPortalManager::get_groups_by_user(api_get_user_id(), 0);
    $grid_my_groups = array();
    $my_group_list = array();
    if (is_array($results) && count($results) > 0) {
        foreach ($results as $result) {
            $id = $result['id'];
            $result['name'] = Security::remove_XSS(
                $result['name'],
                STUDENT,
                true
            );
            $result['description'] = Security::remove_XSS(
                $result['description'],
                STUDENT,
                true
            );
            $my_group_list[] = $id;
            $url_open = '';
            $url_close = '';
            $name = cut($result['name'], GROUP_TITLE_LENGTH, true);
            if ($result['relation_type'] == GROUP_USER_PERMISSION_ADMIN) {
                $name .= ' ' . Display::return_icon(
                        'social_group_admin.png',
                        get_lang('Admin'),
                        array('style' => 'vertical-align:middle')
                    );
            } elseif ($result['relation_type'] == GROUP_USER_PERMISSION_MODERATOR) {
                $name .= ' ' . Display::return_icon(
                        'social_group_moderator.png',
                        get_lang('Moderator'),
                        array('style' => 'vertical-align:middle')
                    );
            }
            $count_users_group = count(
                GroupPortalManager::get_users_by_group(
                    $id,
                    false,
                    array(
                        GROUP_USER_PERMISSION_ADMIN,
                        GROUP_USER_PERMISSION_READER,
                        GROUP_USER_PERMISSION_MODERATOR
                    ),
                    0,
                    1000
                )
            );
            if ($count_users_group == 1) {
                $count_users_group = $count_users_group . ' ' . get_lang(
                        'Member'
                    );
            } else {
                $count_users_group = $count_users_group . ' ' . get_lang(
                        'Members'
                    );
            }
            $picture = GroupPortalManager::get_picture_group(
                $result['id'],
                $result['picture_uri'],
                80
            );
            $result['picture_uri'] = '
';
            $item_0 = Display::div(
                $result['picture_uri'],
                array('class' => 'box_description_group_image')
            );
            $members = Display::span(
                $count_users_group,
                array('class' => 'box_description_group_member')
            );
            $item_1 = Display::div(
                Display::tag('h3', $url_open . $name . $url_close) . $members,
                array('class' => 'box_description_group_title')
            );
            $item_2 = '';
            $item_3 = '';
            if ($result['description'] != '') {
                $item_3 = '' . cut(
                        $result['description'],
                        100,
                        true
                    ) . '
';
            } else {
                $item_2 = '
';
                $item_3 = '';
            }
            $grid_item_2 = $item_0 . $item_1 . $item_2 . $item_3;
            $grid_my_groups[] = array($grid_item_2);
        }
    }
    // Newest groups
    $results = GroupPortalManager::get_groups_by_age(4, false);
    $grid_newest_groups = array();
    foreach ($results as $result) {
        $result['name'] = Security::remove_XSS($result['name'], STUDENT, true);
        $result['description'] = Security::remove_XSS(
            $result['description'],
            STUDENT,
            true
        );
        $id = $result['id'];
        $url_open = '';
        $url_close = '';
        $count_users_group = count(
            GroupPortalManager::get_users_by_group(
                $id,
                false,
                array(
                    GROUP_USER_PERMISSION_ADMIN,
                    GROUP_USER_PERMISSION_READER,
                    GROUP_USER_PERMISSION_MODERATOR
                ),
                0,
                1000
            )
        );
        if ($count_users_group == 1) {
            $count_users_group = $count_users_group . ' ' . get_lang('Member');
        } else {
            $count_users_group = $count_users_group . ' ' . get_lang('Members');
        }
        $name = cut($result['name'], GROUP_TITLE_LENGTH, true);
        $picture = GroupPortalManager::get_picture_group(
            $result['id'],
            $result['picture_uri'],
            80
        );
        $result['picture_uri'] = '
';
        $item_0 = Display::div(
            $result['picture_uri'],
            array('class' => 'box_description_group_image')
        );
        $members = Display::span(
            $count_users_group,
            array('class' => 'box_description_group_member')
        );
        $item_1 = Display::div(
            Display::tag('h3', $url_open . $name . $url_close) . $members,
            array('class' => 'box_description_group_title')
        );
        if ($result['description'] != '') {
            $item_3 = '' . cut(
                    $result['description'],
                    100,
                    true
                ) . '
';
        } else {
            $item_2 = '
';
            $item_3 = '';
        }
        //Avoiding my groups
        $join_url = '';
        if (!in_array($id, $my_group_list)) {
            $join_url = '' . get_lang('JoinGroup') . ' ';
        }
        $item_4 = '' . $join_url . '
';
        $grid_item_2 = $item_0 . $item_1 . $item_2 . $item_3 . $item_4;
        $grid_newest_groups[] = array($grid_item_2);
    }
    // Pop groups
    $results = GroupPortalManager::get_groups_by_popularity(4, false);
    $grid_pop_groups = array();
    if (is_array($results) && count($results) > 0) {
        foreach ($results as $result) {
            $result['name'] = Security::remove_XSS(
                $result['name'],
                STUDENT,
                true
            );
            $result['description'] = Security::remove_XSS(
                $result['description'],
                STUDENT,
                true
            );
            $id = $result['id'];
            $url_open = '';
            $url_close = '';
            $count_users_group = count(
                GroupPortalManager::get_users_by_group(
                    $id,
                    false,
                    array(
                        GROUP_USER_PERMISSION_ADMIN,
                        GROUP_USER_PERMISSION_READER,
                        GROUP_USER_PERMISSION_MODERATOR
                    ),
                    0,
                    1000
                )
            );
            if ($count_users_group == 1) {
                $count_users_group = $count_users_group . ' ' . get_lang(
                        'Member'
                    );
            } else {
                $count_users_group = $count_users_group . ' ' . get_lang(
                        'Members'
                    );
            }
            $name = cut($result['name'], GROUP_TITLE_LENGTH, true);
            $picture = GroupPortalManager::get_picture_group(
                $result['id'],
                $result['picture_uri'],
                80
            );
            $result['picture_uri'] = '
';
            $item_0 = Display::div(
                $result['picture_uri'],
                array('class' => 'box_description_group_image')
            );
            $members = Display::span(
                $count_users_group,
                array('class' => 'box_description_group_member')
            );
            $item_1 = Display::div(
                Display::tag('h3', $url_open . $name . $url_close) . $members,
                array('class' => 'box_description_group_title')
            );
            if ($result['description'] != '') {
                $item_3 = '' . cut(
                        $result['description'],
                        100,
                        true
                    ) . '
';
            } else {
                $item_2 = '
';
                $item_3 = '';
            }
            $join_url = '';
            if (!in_array($id, $my_group_list)) {
                $join_url = '' . get_lang('JoinGroup') . ' ';
            }
            $item_4 = '' . $join_url . '
';
            $grid_item_2 = $item_0 . $item_1 . $item_2 . $item_3 . $item_4;
            $grid_pop_groups[] = array($grid_item_2);
        }
    }
    // Display groups (newest, mygroups, pop)
    $query_vars = array();
    $newest_content = $popular_content = $my_group_content = null;
    if (isset($_GET['view']) && in_array($_GET['view'], $allowed_views)) {
        $view_group = $_GET['view'];
        switch ($view_group) {
            case 'mygroups':
                if (count($grid_my_groups) > 0) {
                    $my_group_content = Display::return_sortable_grid(
                        'mygroups',
                        array(),
                        $grid_my_groups,
                        array('hide_navigation' => true, 'per_page' => 2),
                        $query_vars,
                        false,
                        array(true, true, true, false)
                    );
                }
                if (api_get_setting(
                        'allow_students_to_create_groups_in_social'
                    ) == 'true'
                ) {
                    $create_group_item = '' . get_lang(
                            'CreateASocialGroup'
                        ) . '';
                    //$my_group_content = $create_group_item. $my_group_content;
                } else {
                    if (api_is_allowed_to_edit(null, true)) {
                        $create_group_item = '' . get_lang(
                                'CreateASocialGroup'
                            ) . '';
                    }
                }
                break;
            case 'newest':
                if (count($grid_newest_groups) > 0) {
                    $newest_content = Display::return_sortable_grid(
                        'newest',
                        array(),
                        $grid_newest_groups,
                        array('hide_navigation' => true, 'per_page' => 100),
                        $query_vars,
                        false,
                        array(true, true, true, false)
                    );
                }
                if (api_is_platform_admin() || api_get_setting(
                        'allow_students_to_create_groups_in_social'
                    ) == 'true'
                ) {
                    if (empty($grid_newest_groups)) {
                        //echo ''.get_lang('YouShouldCreateAGroup').'';
                    }
                }
                break;
            default :
                if (count($grid_pop_groups) > 0) {
                    $popular_content = Display::return_sortable_grid(
                        'popular',
                        array(),
                        $grid_pop_groups,
                        array('hide_navigation' => true, 'per_page' => 100),
                        $query_vars,
                        false,
                        array(true, true, true, true, true)
                    );
                }
                if (api_is_platform_admin() || api_get_setting(
                        'allow_students_to_create_groups_in_social'
                    ) == 'true'
                ) {
                    if (empty($grid_pop_groups)) {
                        //echo ''.get_lang('YouShouldCreateAGroup').'';
                    }
                }
                break;
        }
    } else {
        $my_group_content = null;
        if (count($grid_my_groups) > 0) {
            $my_group_content = Display::return_sortable_grid(
                'mygroups',
                array(),
                $grid_my_groups,
                array('hide_navigation' => true, 'per_page' => 2),
                $query_vars,
                false,
                array(true, true, true, false)
            );
        }
        if (api_get_setting(
                'allow_students_to_create_groups_in_social'
            ) == 'true'
        ) {
            $create_group_item = '' . get_lang(
                    'CreateASocialGroup'
                ) . '';
            //$my_group_content = $create_group_item. $my_group_content;
        } else {
            if (api_is_allowed_to_edit(null, true)) {
                $create_group_item = '' . get_lang(
                        'CreateASocialGroup'
                    ) . '';
            }
        }
        if (count($grid_newest_groups) > 0) {
            $newest_content = Display::return_sortable_grid(
                'mygroups',
                array(),
                $grid_newest_groups,
                array('hide_navigation' => true, 'per_page' => 100),
                $query_vars,
                false,
                array(true, true, true, false)
            );
        }
        if (count($grid_pop_groups) > 0) {
            $popular_content = Display::return_sortable_grid(
                'mygroups',
                array(),
                $grid_pop_groups,
                array('hide_navigation' => true, 'per_page' => 100),
                $query_vars,
                false,
                array(true, true, true, true, true)
            );
        }
    }
    if (!empty($create_group_item)) {
        $social_right_content .= Display::div(
            $create_group_item,
            array('class' => 'span9')
        );
    }
    $headers = array(
        get_lang('Newest'),
        get_lang('Popular'),
        get_lang('MyGroups')
    );
    $social_right_content .= '' . Display::tabs(
            $headers,
            array($newest_content, $popular_content, $my_group_content),
            'tab_browse'
        ) . '
';
}
$show_message = null;
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'show_message' && $_REQUEST['msg'] == 'topic_deleted') {
    $show_message = Display::return_message(get_lang('Deleted'), 'success');
}
$tpl->set_help('Groups');
$tpl->assign('social_menu_block', $social_menu_block);
$tpl->assign('social_right_content', $social_right_content);
$tpl->assign('message', $show_message);
$tpl->assign('content', $content);
$social_layout = $tpl->get_template('social/groups.tpl');
$tpl->display($social_layout);