corvax Posted January 4, 2015 Share Posted January 4, 2015 Доброго времени суток дорогие форумчане ^_^ ! Имеется проблема интеграции форума с AJAX Chat(Выбрал по причине скорости удобства и бесплатности, а главное он нормально работает по https в отличии от многострадального IP.Chat) Сама интеграция происходит через IPBWI, который сконфигурирован верно и работает исправно. Чат установлен в отдельную папку в корне форума(Standalone версия)Интеграцию делал по этому гайду По пунктам: Создал БД для чатаПрописал её в конфиг в lib/config.phpЗапустил install.php, все таблички создались успешно Законтачил чат с IPBWI/lib/custom.php// Include custom libraries and initialization code here require_once('../ipbwi/ipbwi.inc.php'); // Error Output echo $ipbwi->printSystemMessages(); И непосредственно интеграция логинов:/lib/class/CustomAJAXChat.phpclass CustomAJAXChat extends AJAXChat { // Initialize custom request variables: function initCustomRequestVars() { global $ipbwi; // Auto-login IPB users: if(!$this->getRequestVar('logout') && $ipbwi->member->isLoggedIn()) { $this->setRequestVar('login', true); } } // Returns true if the userID of the logged in user is identical to the userID of the authentication system // or the user is authenticated as guest in the chat and the authentication system /*function revalidateUserID() { global $ipbwi; $m_info = $ipbwi->member->info(); if($this->getUserRole() === AJAX_CHAT_GUEST && !$ipbwi->member->isLoggedIn() || ($this->getUserID() === $m_info["id"])) { return true; } return false; }*/ // Returns an associative array containing userName, userID and userRole // Returns null if login is invalid function getValidLoginUserData() { global $ipbwi; if ($ipbwi->member->isLoggedIn()) { $m_info = $ipbwi->member->info(); $userData = array(); $userData["userID"] = $m_info["id"]; $userData["userName"] = $this->trimUserName($m_info["members_display_name"]); if ($ipbwi->member->isAdmin()) { $userData["userRole"] = AJAX_CHAT_ADMIN; } elseif ($ipbwi->member->isSuperMod()) { $userData["userRole"] = AJAX_CHAT_USER; } else { $userData["userRole"] = AJAX_CHAT_USER; } return $userData; } else { // Guest users return $this->getGuestUser(); } } } // Store the channels the current user has access to // Make sure channel names don't contain any whitespace function &getChannels() { if($this->_channels === null) { $this->_channels = array(); $allChannels = $this->getAllChannels(); // Get the channels, the user has access to: if($this->getUserRole() != AJAX_CHAT_GUEST) { $validChannels = $allChannels; } // Add the valid channels to the channel list (the defaultChannelID is always valid): foreach($this->getAllChannels() as $key=>$value) { // Check if we have to limit the available channels: if($this->getConfig('limitChannelList') && !in_array($value, $this->getConfig('limitChannelList'))) { continue; } if(in_array($value, $validChannels) || $value == $this->getConfig('defaultChannelID')) { $this->_channels[$key] = $value; } } } return $this->_channels; } // Store all existing channels // Make sure channel names don't contain any whitespace function &getAllChannels() { if($this->_allChannels === null) { // Get all existing channels: $customChannels = $this->getCustomChannels(); $defaultChannelFound = false; foreach($customChannels as $key=>$value) { $forumName = $this->trimChannelName($value); $this->_allChannels[$forumName] = $key; if($key == $this->getConfig('defaultChannelID')) { $defaultChannelFound = true; } } if(!$defaultChannelFound) { // Add the default channel as first array element to the channel list: $this->_allChannels = array_merge( array( $this->trimChannelName($this->getConfig('defaultChannelName'))=>$this->getConfig('defaultChannelID') ), $this->_allChannels ); } } return $this->_allChannels; } function &getCustomUsers() { // List containing the registered chat users: $users = null; require(AJAX_CHAT_PATH.'lib/data/users.php'); return $users; } function &getCustomChannels() { // List containing the custom channels: $channels = null; require(AJAX_CHAT_PATH.'lib/data/channels.php'); return $channels; } ?> В итоге сам чат работает нормально(логины проходят, пользователи определяются и могут слать сообщения). НО: Список пользователей онлайн работает неверно, залогинившиеся пользователи в него не добавляются. Прошу помочь кто чем может :( Link to comment Share on other sites More sharing options...
siv1987 Posted January 5, 2015 Share Posted January 5, 2015 Если ipbwi использует апи форума то должны отображаться, зависит от того создается новая сессия или нет. Link to comment Share on other sites More sharing options...
corvax Posted January 5, 2015 Author Share Posted January 5, 2015 Если ipbwi использует апи форума то должны отображаться, зависит от того создается новая сессия или нет.Немного конкретизирую:В списке каждый новый зашедший пользователь заменяет другого, в итоге зашедших пользователей к примеру три, а строчка в списке всегда одна и она меняется. Link to comment Share on other sites More sharing options...
siv1987 Posted January 5, 2015 Share Posted January 5, 2015 Не совсем понял, что значит заменяется? Большое вступление про чат, но ни слово о том, какое отношение чат имеет к списку онлайн? Либо вы о другом списке онлайн говорите? Указывайте пожалуйста правильный адрес форума в board url, или на ipbskins'е появился чат о котором мы не знаем?..Интуиция подсказывает, что возможно вам нужен x-forwarded-for Link to comment Share on other sites More sharing options...
corvax Posted January 5, 2015 Author Share Posted January 5, 2015 Вот этот список, в самом чате(извиняюсь что ввел в заблуждение) Link to comment Share on other sites More sharing options...
siv1987 Posted January 5, 2015 Share Posted January 5, 2015 Увы, но тут нужно копать каким образом этот чат выводит список пользователей и имеет ли вообще эта проблема отношения к ипб. Попробуйте в бд отыскать где содержится информация о онлайн пользователях. Link to comment Share on other sites More sharing options...
corvax Posted January 5, 2015 Author Share Posted January 5, 2015 Увы, но тут нужно копать каким образом этот чат выводит список пользователей и имеет ли вообще эта проблема отношения к ипб. Попробуйте в бд отыскать где содержится информация о онлайн пользователях.Спасибо.Вот бы ещё знаний хватило это сделать :( Link to comment Share on other sites More sharing options...
siv1987 Posted January 6, 2015 Share Posted January 6, 2015 Во всем этом г нужно копаться, телепатия здесь не поможет. А устанавливать ради этого чат у меня нет ни времени ни желания, если дадите доступ к форуму могу посмотреть. Link to comment Share on other sites More sharing options...
Zero108 Posted January 6, 2015 Share Posted January 6, 2015 Неужели еще кто-то чатами пользуется?! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now