예제 #1
0
function JLMS_showChat($course_id, $option)
{
    global $JLMS_DB, $my, $Itemid, $JLMS_CONFIG;
    $JLMS_ACL =& JLMSFactory::getACL();
    if ($JLMS_ACL->CheckPermissions('chat', 'view')) {
        global $JLMS_CONFIG;
        $pathway = array();
        $pathway[] = array('name' => _JLMS_PATHWAY_HOME, 'link' => sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}"), 'is_home' => true);
        $pathway[] = array('name' => $JLMS_CONFIG->get('course_name'), 'link' => sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=details_course&id={$course_id}"), 'is_course' => true);
        $pathway[] = array('name' => _JLMS_TOOLBAR_CHAT, 'link' => sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=chat&id={$course_id}"));
        JLMSAppendPathWay($pathway);
        JLMS_ShowHeading();
        $group_id = intval(mosGetParam($_REQUEST, 'group_id', 0));
        if ($JLMS_ACL->CheckPermissions('chat', 'manage')) {
            if ($JLMS_CONFIG->get('use_global_groups', 1)) {
                $query = "SELECT group_chat FROM #__lms_usergroups WHERE course_id = 0 AND id = {$group_id}";
                $JLMS_DB->SetQuery($query);
                $gr_c = $JLMS_DB->LoadResult();
                if (!$gr_c) {
                    $group_id = 0;
                }
            } else {
                $query = "SELECT group_chat FROM #__lms_usergroups WHERE course_id = {$course_id} AND id = {$group_id}";
                $JLMS_DB->SetQuery($query);
                $gr_c = $JLMS_DB->LoadResult();
                if (!$gr_c) {
                    $group_id = 0;
                }
            }
        } else {
            if ($JLMS_CONFIG->get('use_global_groups', 1)) {
                if ($group_id) {
                    $query = "SELECT group_chat FROM #__lms_users_in_global_groups AS uigg, #__lms_usergroups AS ug WHERE uigg.user_id = {$my->id} AND uigg.group_id = {$group_id} AND ug.id = uigg.group_id";
                    $JLMS_DB->setQuery($query);
                    if (!$JLMS_DB->loadResult()) {
                        $group_id = 0;
                    }
                }
            } else {
                if ($group_id) {
                    $query = "SELECT a.group_id FROM #__lms_users_in_groups as a, #__lms_usergroups as b WHERE a.course_id = {$course_id} AND a.user_id = '" . $my->id . "' AND a.group_id = b.id AND b.course_id = {$course_id} AND b.group_chat = 1";
                    $JLMS_DB->SetQuery($query);
                    $group_id = $JLMS_DB->LoadResult();
                    if (!$group_id) {
                        $group_id = 0;
                    }
                }
            }
        }
        $query = "SHOW COLUMNS FROM `#__lms_chat_history` WHERE Field = 'user_message'";
        $JLMS_DB->SetQuery($query);
        $chat_table = $JLMS_DB->LoadObject();
        if (is_object($chat_table) && isset($chat_table->Type)) {
            if ($chat_table->Type != 'text') {
                $query = "ALTER TABLE `#__lms_chat_history` CHANGE `user_message` `user_message` TEXT";
                $JLMS_DB->SetQuery($query);
                $JLMS_DB->query();
            }
        }
        //query (Drop users)
        $query = "DELETE FROM #__lms_chat_users WHERE user_id = '" . $my->id . "'";
        $JLMS_DB->SetQuery($query);
        $JLMS_DB->query();
        $tim_minus_15 = time() - date('Z') - 15 * 60;
        $query = "DELETE FROM #__lms_chat_users WHERE time_post < '" . date('Y-m-d H:i:s', $tim_minus_15) . "'";
        $JLMS_DB->SetQuery($query);
        $JLMS_DB->query();
        //query (Entering chat)
        $query = "INSERT INTO #__lms_chat_users (course_id, group_id, user_id, time_enter, time_post, chat_option)" . "\n VALUES ('" . $course_id . "', '" . $group_id . "', '" . $my->id . "', '" . gmdate('Y-m-d H:i:s') . "', '" . gmdate('Y-m-d H:i:s') . "', '0')";
        $JLMS_DB->SetQuery($query);
        $JLMS_DB->query();
        //tracking
        global $Track_Object;
        $Track_Object->UserEnterChat($my->id, $course_id);
        $query = "SELECT a.username FROM #__users as a, #__lms_chat_users as b" . "\n WHERE a.id = b.user_id AND b.course_id = '" . $course_id . "' AND b.group_id = '" . $group_id . "'" . "\n ORDER BY a.username";
        $JLMS_DB->SetQuery($query);
        $chat_users = $JLMS_DB->LoadObjectList();
        $course_chats = array();
        $course_chats[] = mosHTML::makeOption(0, _JLMS_CHAT_COURSE_CHAT);
        if ($JLMS_ACL->CheckPermissions('chat', 'manage')) {
            if ($JLMS_CONFIG->get('use_global_groups', 1)) {
                $query = "SELECT ug.id AS value, ug.ug_name AS text" . "\n FROM #__lms_usergroups AS ug, #__lms_users_in_groups AS uig, #__lms_users_in_global_groups AS uigg" . "\n WHERE ug.group_chat = 1 AND uig.course_id = {$course_id} AND uigg.user_id = uig.user_id AND ug.id = uigg.group_id";
                $JLMS_DB->setQuery($query);
                $group_chats = $JLMS_DB->loadObjectList();
                for ($i = 0; $i < count($group_chats); $i++) {
                    $group_chats[$i]->text = $group_chats[$i]->text . " (" . _JLMS_CHAT_GROUP_CHAT . ")";
                }
                $course_chats = array_merge($course_chats, $group_chats);
            } else {
                $query = "SELECT id as value, ug_name as text FROM #__lms_usergroups WHERE course_id = {$course_id} AND group_chat = 1";
                $JLMS_DB->SetQuery($query);
                $group_chats = $JLMS_DB->loadObjectList();
                for ($i = 0; $i < count($group_chats); $i++) {
                    $group_chats[$i]->text = $group_chats[$i]->text . " (" . _JLMS_CHAT_GROUP_CHAT . ")";
                }
                $course_chats = array_merge($course_chats, $group_chats);
            }
        } else {
            if ($JLMS_CONFIG->get('use_global_groups', 1)) {
                $query = "SELECT ug.id AS value, ug.ug_name AS text" . "\n FROM #__lms_usergroups AS ug, #__lms_users_in_groups AS uig, #__lms_users_in_global_groups AS uigg" . "\n WHERE uig.course_id = {$course_id} AND uigg.user_id = uig.user_id AND ug.id = uigg.group_id AND ug.group_chat = 1 AND uig.user_id = {$my->id}";
                $JLMS_DB->setQuery($query);
                $group_chats = $JLMS_DB->loadObjectList();
                for ($i = 0; $i < count($group_chats); $i++) {
                    $group_chats[$i]->text = $group_chats[$i]->text . " (" . _JLMS_CHAT_GROUP_CHAT . ")";
                }
                $course_chats = array_merge($course_chats, $group_chats);
            } else {
                $query = "SELECT b.id as value, b.ug_name as text FROM #__lms_users_in_groups as a, #__lms_usergroups as b WHERE a.course_id = {$course_id} AND a.user_id = '" . $my->id . "' AND a.group_id = b.id AND b.course_id = {$course_id} AND b.group_chat = 1";
                $JLMS_DB->SetQuery($query);
                $group_chats = $JLMS_DB->loadObjectList();
                for ($i = 0; $i < count($group_chats); $i++) {
                    $group_chats[$i]->text = _JLMS_CHAT_GROUP_CHAT . " (" . $group_chats[$i]->text . ")";
                }
                $course_chats = array_merge($course_chats, $group_chats);
            }
        }
        /*if (JLMS_GetUserType_simple($my->id) == 1) {
        		$query = "SELECT distinct b.* FROM #__lms_courses as b, #__lms_user_courses as a"
        		. "\n WHERE a.course_id = b.id AND a.user_id = '".$my->id."'";
        		} elseif (JLMS_GetUserType_simple($my->id) == 2) {
        		$query = "SELECT distinct a.* FROM #__lms_courses as a, #__lms_usergroups as b, #__lms_users_in_groups as c"
        		. "\n WHERE a.id = b.course_id AND b.id = c.group_id AND c.user_id = '".$my->id."'";
        		}
        		$JLMS_DB->SetQuery( $query );
        		$rows = $JLMS_DB->LoadObjectList();*/
        $lists = array();
        $javascript = 'onchange="document.chatForm.submit();"';
        $lists['course_chats'] = mosHTML::selectList($course_chats, 'group_id', 'class="inputbox" size="1" ' . $javascript, 'value', 'text', $group_id);
        JLMS_chat_html::showChat($course_id, $group_id, $option, $lists, $chat_users);
    } else {
        JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}"));
    }
}