コード例 #1
0
    /**
     * Shows the right menu of the Social Network tool
     *
     * @param string $show highlight link possible values:
     * group_add,
     * home,
     * messages,
     * messages_inbox,
     * messages_compose ,
     * messages_outbox,
     * invitations,
     * shared_profile,
     * friends,
     * groups search
     * @param int $group_id group id
     * @param int $user_id user id
     * @param bool $show_full_profile show profile or not (show or hide the user image/information)
     * @param bool $show_delete_account_button
     *
     */
    public static function show_social_menu(
        $show = '',
        $group_id = 0,
        $user_id = 0,
        $show_full_profile = false,
        $show_delete_account_button = false
    ) {
        if (empty($user_id)) {
            $user_id = api_get_user_id();
        }
        $user_info = api_get_user_info($user_id, true);
        $current_user_id = api_get_user_id();
        $current_user_info = api_get_user_info($current_user_id, true);

        if ($current_user_id == $user_id) {
            $user_friend_relation = null;
        } else {
            $user_friend_relation = SocialManager::get_relation_between_contacts($current_user_id, $user_id);
        }

        $show_groups = array(
            'groups',
            'group_messages',
            'messages_list',
            'group_add',
            'mygroups',
            'group_edit',
            'member_list',
            'invite_friends',
            'waiting_list',
            'browse_groups'
        );

        // get count unread message and total invitations
        $count_unread_message = MessageManager::get_number_of_messages(true);
        $count_unread_message = !empty($count_unread_message) ? Display::badge($count_unread_message) : null;

        $number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id());
        $group_pending_invitations = GroupPortalManager::get_groups_by_user(
            api_get_user_id(),
            GROUP_USER_PERMISSION_PENDING_INVITATION,
            false
        );
        $group_pending_invitations = count($group_pending_invitations);
        $total_invitations = $number_of_new_messages_of_friend + $group_pending_invitations;
        $total_invitations = (!empty($total_invitations) ? Display::badge($total_invitations) : '');

        $html = '';
        $active = null;
        if (!in_array($show, array('shared_profile', 'groups', 'group_edit', 'member_list', 'waiting_list', 'invite_friends'))) {

            $html .= '<div class="well sidebar-nav"><ul class="nav nav-list">';
            $active = $show == 'home' ? 'active' : null;
            $html .= '<li class="home-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/home.php">'.get_lang('Home').'</a></li>';
            $active = $show == 'messages' ? 'active' : null;
            $html .= '<li class="messages-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'messages/inbox.php?f=social">'.get_lang('Messages').$count_unread_message.'</a></li>';

            //Invitations
            $active = $show == 'invitations' ? 'active' : null;
            $html .= '<li class="invitations-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/invitations.php">'.get_lang('Invitations').$total_invitations.'</a></li>';

            //Shared profile and groups
            $active = $show == 'shared_profile' ? 'active' : null;
            $html .= '<li class="shared-profile-icon'.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/profile.php">'.get_lang('ViewMySharedProfile').'</a></li>';
            $active = $show == 'friends' ? 'active' : null;
            $html .= '<li class="friends-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/friends.php">'.get_lang('Friends').'</a></li>';
            $active = $show == 'browse_groups' ? 'active' : null;
            $html .= '<li class="browse-groups-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/groups.php">'.get_lang('SocialGroups').'</a></li>';

            //Search users
            $active = $show == 'search' ? 'active' : null;
            $html .= '<li class="search-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/search.php">'.get_lang('Search').'</a></li>';

            //My files
            $active = $show == 'myfiles' ? 'active' : null;
            $html .= '<li class="myfiles-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/myfiles.php">'.get_lang('MyFiles').'</span></a></li>';
            $html .='</ul>
                  </div>';
        }

        if (in_array($show, $show_groups) && !empty($group_id)) {
            $html .= GroupPortalManager::show_group_column_information(
                $group_id,
                api_get_user_id(),
                $show
            );
        }

        if ($show == 'shared_profile') {
            $html .= '<div class="well sidebar-nav">
                    <ul class="nav nav-list">';

            // My own profile
            if ($show_full_profile && $user_id == intval(api_get_user_id())) {
                $html .= '<li class="home-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/home.php">'.get_lang('Home').'</a></li>
                          <li class="messages-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'messages/inbox.php?f=social">'.get_lang('Messages').$count_unread_message.'</a></li>';
                $active = $show == 'invitations' ? 'active' : null;
                $html .= '<li class="invitations-icon'.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/invitations.php">'.get_lang('Invitations').$total_invitations.'</a></li>';

                $html .= '<li class="shared-profile-icon active"><a href="'.api_get_path(WEB_CODE_PATH).'social/profile.php">'.get_lang('ViewMySharedProfile').'</a></li>
                          <li class="friends-icon"><a href="'.api_get_path(WEB_CODE_PATH).'social/friends.php">'.get_lang('Friends').'</a></li>
                          <li class="browse-groups-icon"><a href="'.api_get_path(WEB_CODE_PATH).'social/groups.php">'.get_lang('SocialGroups').'</a></li>';
                $active = $show == 'search' ? 'active' : null;
                $html .= '<li class="search-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/search.php">'.get_lang('Search').'</a></li>';
                $active = $show == 'myfiles' ? 'active' : null;
                $html .= '<li class="myfiles-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/myfiles.php">'.get_lang('MyFiles').'</a></li>';
            }

            // My friend profile.
            if ($user_id != api_get_user_id()) {
                $html .= '<li><a href="javascript:void(0);" onclick="javascript:send_message_to_user(\''.$user_id.'\');" title="'.get_lang('SendMessage').'">';
                $html .= Display::return_icon('compose_message.png', get_lang('SendMessage')).'&nbsp;&nbsp;'.get_lang('SendMessage').'</a></li>';
            }

            // Check if I already sent an invitation message
            $invitation_sent_list = SocialManager::get_list_invitation_sent_by_user_id(api_get_user_id());

            if (isset($invitation_sent_list[$user_id]) && is_array($invitation_sent_list[$user_id]) && count($invitation_sent_list[$user_id]) > 0) {
                $html .= '<li><a href="'.api_get_path(WEB_CODE_PATH).'social/invitations.php">'.Display::return_icon('invitation.png', get_lang('YouAlreadySentAnInvitation')).'&nbsp;&nbsp;'.get_lang('YouAlreadySentAnInvitation').'</a></li>';
            } else {
                if (!$show_full_profile) {
                    $html .= '<li><a  href="javascript:void(0);" onclick="javascript:send_invitation_to_user(\''.$user_id.'\');" title="'.get_lang('SendInvitation').'">'.Display :: return_icon('invitation.png', get_lang('SocialInvitationToFriends')).'&nbsp;'.get_lang('SendInvitation').'</a></li>';
                }
            }

            // Chat
            //@todo check if user is online and if it's a friend to show the chat link
            if (api_is_global_chat_enabled()) {
                $user_name = $user_info['complete_name'];

                if ($user_friend_relation == USER_RELATION_TYPE_FRIEND) {
                    if ($user_id != api_get_user_id()) {
                        //Only show chat if I'm available to talk
                        if ($current_user_info['user_is_online_in_chat'] == 1) {
                            $options = array('onclick' => "javascript:chatWith('".$user_id."', '".Security::remove_XSS($user_name)."', '".$user_info['user_is_online_in_chat']."')");
                            $chat_icon = $user_info['user_is_online_in_chat'] ? Display::return_icon('online.png', get_lang('Online')) : Display::return_icon('offline.png', get_lang('Offline'));
                            $html .= Display::tag('li',
                                Display::url(
                                    $chat_icon.'&nbsp;&nbsp;'.get_lang('Chat'),
                                    'javascript:void(0);',
                                    $options
                                )
                            );
                        }
                    }
                } else {
                    if ($user_id != api_get_user_id()) {
                        if ($current_user_info['user_is_online_in_chat'] == 1) {
                            $message = Security::remove_XSS(sprintf(get_lang("YouHaveToAddXAsAFriendFirst"), $user_name));
                            $options = array('onclick' => "javascript:chatNotYetWith('".$message."')");
                            $chat_icon = $user_info['user_is_online_in_chat'] ? Display::return_icon('online.png', get_lang('Online')) : Display::return_icon('offline.png', get_lang('Offline'));
                            $html .= Display::tag('li',
                                Display::url(
                                    $chat_icon.'&nbsp;&nbsp;'.get_lang('Chat'),
                                    'javascript:void(0);',
                                    $options
                                )
                            );
                        }
                    }
                }
            }
            $html .= '</ul></div>';

            if ($show_full_profile && $user_id == intval(api_get_user_id())) {
                $personal_course_list = UserManager::get_personal_session_course_list($user_id);
                $course_list_code = array();
                $i = 1;
                if (is_array($personal_course_list)) {
                    foreach ($personal_course_list as $my_course) {
                        if ($i <= 10) {
                            $course_list_code[] = array('code' => $my_course['code']);
                        } else {
                            break;
                        }
                        $i++;
                    }
                    //to avoid repeted courses
                    $course_list_code = array_unique_dimensional($course_list_code);
                }

                //-----Announcements
                $my_announcement_by_user_id = intval($user_id);
                $announcements = array();
                foreach ($course_list_code as $course) {
                    $course_info = api_get_course_info($course['code']);
                    if (!empty($course_info)) {
                        $content = AnnouncementManager::get_all_annoucement_by_user_course($course_info['code'], $my_announcement_by_user_id);

                        if (!empty($content)) {
                            $url = Display::url(Display::return_icon('announcement.png', get_lang('Announcements')).$course_info['name'].' ('.$content['count'].')', api_get_path(WEB_CODE_PATH).'announcements/announcements.php?cidReq='.$course['code']);
                            $announcements[] = Display::tag('li', $url);
                        }
                    }
                }
                if (!empty($announcements)) {
                    $html .= '<div class="social_menu_items">';
                    $html .= '<ul>';
                    foreach ($announcements as $announcement) {
                        $html .= $announcement;
                    }
                    $html .= '</ul>';
                    $html .= '</div>';
                }
            }
        }

        if ($show_delete_account_button) {
            $html .= '<div class="sidebar-nav"><ul><li>';
            $url = api_get_path(WEB_CODE_PATH).'auth/unsubscribe_account.php';
            $html .= Display::url(Display::return_icon('delete.png', get_lang('Unsubscribe'), array(), ICON_SIZE_TINY).get_lang('Unsubscribe'), $url);
            $html .= '</li></ul></div>';
        }
        $html .= '';
        return $html;
    }