mirror of
https://github.com/wbbaddons/Tims-Chat.git
synced 2024-12-22 21:40:08 +00:00
Moving user fetching into ChatRoom
Untested commit incoming
This commit is contained in:
parent
4e605993df
commit
c1ccfd2998
@ -29,6 +29,36 @@ class ChatRoom extends \wcf\data\DatabaseObject implements \wcf\system\request\I
|
|||||||
*/
|
*/
|
||||||
protected static $cache = null;
|
protected static $cache = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \wcf\data\chat\room\ChatRoom::getTitle();
|
||||||
|
*/
|
||||||
|
public function __toString() {
|
||||||
|
return $this->getTitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of users currently active in this room.
|
||||||
|
*
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
public function countUsers() {
|
||||||
|
$packageID = \wcf\system\package\PackageDependencyHandler::getPackageID('timwolla.wcf.chat');
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
count(*) as count
|
||||||
|
FROM
|
||||||
|
wcf".WCF_N."_user_storage
|
||||||
|
WHERE
|
||||||
|
field = 'roomID'
|
||||||
|
AND packageID = ".intval($packageID)."
|
||||||
|
AND fieldValue = ".intval($this->roomID);
|
||||||
|
$stmt = WCF::getDB()->prepareStatement($sql);
|
||||||
|
$stmt->execute();
|
||||||
|
$row = $stmt->fetchArray();
|
||||||
|
|
||||||
|
return $row['count'];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the room cache.
|
* Loads the room cache.
|
||||||
*/
|
*/
|
||||||
@ -37,7 +67,7 @@ public static function getCache() {
|
|||||||
CacheHandler::getInstance()->addResource(
|
CacheHandler::getInstance()->addResource(
|
||||||
'chatrooms',
|
'chatrooms',
|
||||||
WCF_DIR.'cache/cache.chatrooms.php',
|
WCF_DIR.'cache/cache.chatrooms.php',
|
||||||
'wcf\system\cache\builder\ChatRoomCacheBuilder'
|
'\wcf\system\cache\builder\ChatRoomCacheBuilder'
|
||||||
);
|
);
|
||||||
self::$cache = CacheHandler::getInstance()->get('chatrooms');
|
self::$cache = CacheHandler::getInstance()->get('chatrooms');
|
||||||
}
|
}
|
||||||
@ -46,10 +76,12 @@ public static function getCache() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \wcf\data\chat\room\ChatRoom::getTitle();
|
* Returns the ID of this chat-room.
|
||||||
|
*
|
||||||
|
* @see \wcf\system\request\IRouteController
|
||||||
*/
|
*/
|
||||||
public function __toString() {
|
public function getID() {
|
||||||
return $this->getTitle();
|
return $this->roomID;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -62,12 +94,39 @@ public function getTitle() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the ID of this chat-room.
|
* Returns the users that are currently active in this room.
|
||||||
*
|
*
|
||||||
* @see \wcf\system\request\RRouteHandler
|
* @return array<\wcf\data\user\User>
|
||||||
*/
|
*/
|
||||||
public function getID() {
|
public function getUsers() {
|
||||||
return $this->roomID;
|
$packageID = \wcf\system\package\PackageDependencyHandler::getPackageID('timwolla.wcf.chat');
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
userID
|
||||||
|
FROM
|
||||||
|
wcf".WCF_N."_user_storage
|
||||||
|
WHERE
|
||||||
|
field = 'roomID'
|
||||||
|
AND packageID = ".intval($packageID)."
|
||||||
|
AND fieldValue = ".intval($this->roomID);
|
||||||
|
$stmt = WCF::getDB()->prepareStatement($sql);
|
||||||
|
$stmt->execute();
|
||||||
|
$userIDs = array();
|
||||||
|
while ($row = $stmt->fetchArray()) $userIDs[] = $row['userID'];
|
||||||
|
|
||||||
|
if (!count($userIDs)) return;
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
wcf".WCF_N."_user
|
||||||
|
WHERE
|
||||||
|
userID IN (".rtrim(str_repeat('?,', count($userIDs)), ',').")
|
||||||
|
ORDER BY
|
||||||
|
username ASC";
|
||||||
|
$stmt = WCF::getDB()->prepareStatement($sql);
|
||||||
|
$stmt->execute($userIDs);
|
||||||
|
return $stmt->fetchObjects('\wcf\data\user\User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,7 +29,7 @@ public function readData() {
|
|||||||
|
|
||||||
$this->readRoom();
|
$this->readRoom();
|
||||||
$this->readMessages();
|
$this->readMessages();
|
||||||
$this->readUsers();
|
$this->users = $this->room->getUsers();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function readMessages() {
|
public function readMessages() {
|
||||||
@ -54,37 +54,6 @@ public function readRoom() {
|
|||||||
if (!$this->room->canEnter()) throw new \wcf\system\exception\PermissionDeniedException();
|
if (!$this->room->canEnter()) throw new \wcf\system\exception\PermissionDeniedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function readUsers() {
|
|
||||||
$packageID = \wcf\system\package\PackageDependencyHandler::getPackageID('timwolla.wcf.chat');
|
|
||||||
|
|
||||||
$sql = "SELECT
|
|
||||||
userID
|
|
||||||
FROM
|
|
||||||
wcf".WCF_N."_user_storage
|
|
||||||
WHERE
|
|
||||||
field = 'roomID'
|
|
||||||
AND packageID = ".intval($packageID)."
|
|
||||||
AND fieldValue = ".intval($this->roomID);
|
|
||||||
$stmt = WCF::getDB()->prepareStatement($sql);
|
|
||||||
$stmt->execute();
|
|
||||||
$userIDs = array();
|
|
||||||
while ($row = $stmt->fetchArray()) $userIDs[] = $row['userID'];
|
|
||||||
|
|
||||||
if (!count($userIDs)) return;
|
|
||||||
|
|
||||||
$sql = "SELECT
|
|
||||||
*
|
|
||||||
FROM
|
|
||||||
wcf".WCF_N."_user
|
|
||||||
WHERE
|
|
||||||
userID IN (".rtrim(str_repeat('?,', count($userIDs)), ',').")
|
|
||||||
ORDER BY
|
|
||||||
username ASC";
|
|
||||||
$stmt = WCF::getDB()->prepareStatement($sql);
|
|
||||||
$stmt->execute($userIDs);
|
|
||||||
$this->users = $stmt->fetchObjects('\wcf\data\user\User');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \wcf\page\IPage::show()
|
* @see \wcf\page\IPage::show()
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user