19 $iCurrentTime =
time();
21 $iNewTime = $iUpdateInterval * 2;
22 $iIdleTime = $iUpdateInterval * 3;
23 $iDeleteTime = $iUpdateInterval * 6;
27 getResult(
"UPDATE `" . MODULE_DB_PREFIX .
"Boards` SET `When`='" . $iCurrentTime .
"', `Status`='" . BOARD_STATUS_NORMAL .
"' WHERE `OwnerID`='" .
$sId .
"' AND (`Status`='" . BOARD_STATUS_NORMAL .
"' OR (`Status`='" . BOARD_STATUS_NEW .
"' AND `When`<='" . ($iCurrentTime - $iNewTime) .
"'))");
30 $rFiles =
getResult(
"SELECT `ID` FROM `" . MODULE_DB_PREFIX .
"Boards` WHERE `Status`='" . BOARD_STATUS_DELETE .
"' AND `When`<=(" . ($iCurrentTime - $iDeleteTime) .
")");
32 getResult(
"DELETE FROM `" . MODULE_DB_PREFIX .
"Boards`, `" . MODULE_DB_PREFIX .
"Users` USING `" . MODULE_DB_PREFIX .
"Boards` LEFT JOIN `" . MODULE_DB_PREFIX .
"Users` ON `" . MODULE_DB_PREFIX .
"Boards`.`ID`=`" . MODULE_DB_PREFIX .
"Users`.`Board` WHERE `" . MODULE_DB_PREFIX .
"Boards`.`Status`='" . BOARD_STATUS_DELETE .
"' AND `" . MODULE_DB_PREFIX .
"Boards`.`When`<=(" . ($iCurrentTime - $iDeleteTime) .
")");
34 getResult(
"UPDATE `" . MODULE_DB_PREFIX .
"Boards` SET `Status`='" . BOARD_STATUS_DELETE .
"' WHERE `When`<'" . ($iCurrentTime - $iIdleTime) .
"' AND `Status`<>'" . BOARD_STATUS_DELETE .
"'");
36 $rResult =
getResult(
"SELECT * FROM `" . MODULE_DB_PREFIX .
"Boards` WHERE `OwnerID`<>'" .
$sId .
"' AND `Status`<>'" . BOARD_STATUS_NORMAL .
"'");
37 while($aBoard = $rResult->fetch())
38 switch($aBoard[
'Status']) {
39 case BOARD_STATUS_DELETE:
42 case BOARD_STATUS_NEW:
43 $sBoards .=
parseXml(
$aXmlTemplates[
'board'], $aBoard[
'ID'], BOARD_STATUS_NORMAL, $aBoard[
'OwnerID'],
empty($aBoard[
'Password']) ? FALSE_VAL : TRUE_VAL, stripslashes($aBoard[
'Name']));
47 $rResult =
getResult(
"SELECT `boards`.`ID` FROM `" . MODULE_DB_PREFIX .
"Boards` AS `boards` INNER JOIN `" . MODULE_DB_PREFIX .
"Users` AS `users` ON `boards`.`ID`=`users`.`Board` WHERE `boards`.`OwnerID`<>'" .
$sId .
"'");
48 while($aBoard = $rResult->fetch()) {
50 if(!file_exists(
$sFile))
continue;
51 $iModifiedTime = filemtime(
$sFile);
52 if($iModifiedTime >= ($iCurrentTime - $iUpdateInterval))
58 $sSql =
"SELECT `r`.`ID` AS `BoardID`, GROUP_CONCAT(DISTINCT IF(`ru`.`Status`<>'" . BOARD_STATUS_DELETE .
"',`ru`.`User`,'') SEPARATOR ',') AS `In`, GROUP_CONCAT(DISTINCT IF(`ru`.`Status`='" . BOARD_STATUS_DELETE .
"',`ru`.`User`,'') SEPARATOR ',') AS `Out` FROM `" . MODULE_DB_PREFIX .
"Boards` AS `r` INNER JOIN `" . MODULE_DB_PREFIX .
"Users` AS `ru` WHERE `r`.`ID`=`ru`.`Board` AND `r`.`Status`='" . BOARD_STATUS_NORMAL .
"' AND `ru`.`When`>=" . ($iCurrentTime - $iUpdateInterval) .
" GROUP BY `r`.`ID`";
60 while($aBoard = $rResult->fetch())
66 $iCurrentTime -= $iRunTime;
67 $rResult =
getResult(
"SELECT `ID` FROM `" . MODULE_DB_PREFIX .
"Users`");
68 if($rResult->rowCount() == 0)
getResult(
"TRUNCATE TABLE `" . MODULE_DB_PREFIX .
"Users`");
69 $iBoardsCount =
getValue(
"SELECT COUNT(`ID`) FROM `" . MODULE_DB_PREFIX .
"Boards`");
71 $sSql =
"SELECT `r`.`ID` AS `BoardID`, `r`.*, GROUP_CONCAT(DISTINCT IF(`ru`.`Status`='" . BOARD_STATUS_NORMAL .
"' AND `ru`.`User`<>'" .
$sId .
"',`ru`.`User`,'') SEPARATOR ',') AS `In`, GROUP_CONCAT(DISTINCT IF(`ru`.`Status`='" . BOARD_STATUS_DELETE .
"' AND `ru`.`User`<>'" .
$sId .
"',`ru`.`User`,'') SEPARATOR ',') AS `Out` FROM `" . MODULE_DB_PREFIX .
"Boards` AS `r` LEFT JOIN `" . MODULE_DB_PREFIX .
"Users` AS `ru` ON `r`.`ID`=`ru`.`Board` GROUP BY `r`.`ID` ORDER BY `r`.`ID`";
73 while($aBoard = $rResult->fetch()) {
74 $sBoards .=
parseXml(
$aXmlTemplates[
'board'], $aBoard[
'BoardID'], BOARD_STATUS_NORMAL, $aBoard[
'OwnerID'],
empty($aBoard[
'Password']) ? FALSE_VAL : TRUE_VAL, $aBoard[
'In'], stripslashes($aBoard[
'Name']));
76 if($rResult->rowCount() === 0) {
77 getResult(
"TRUNCATE TABLE `" . MODULE_DB_PREFIX .
"Boards`");
78 getResult(
"TRUNCATE TABLE `" . MODULE_DB_PREFIX .
"Users`");
90 $iCurrentTime =
time();
93 $iBoardId =
getValue(
"SELECT `ID` FROM `" . MODULE_DB_PREFIX .
"Boards` WHERE `Name`='" .
$sTitle .
"' AND `OwnerID`='" . $sUserId .
"'");
95 getResult(
"INSERT INTO `" . MODULE_DB_PREFIX .
"Boards` (`ID`, `Name`, `Password`, `OwnerID`, `When`) VALUES ('" .
$iBoardId .
"', '" .
$sTitle .
"', '" .
$sPassword .
"', '" . $sUserId .
"', '" . $iCurrentTime .
"')");
102 getResult(
"UPDATE `" . MODULE_DB_PREFIX .
"Boards` SET `Name`='" .
$sTitle .
"', `Password`='" .
$sPassword .
"', `When`='" . $iCurrentTime .
"', `Status`='" . BOARD_STATUS_NEW .
"' WHERE `ID`='" .
$iBoardId .
"'");
106 getResult(
"UPDATE `" . MODULE_DB_PREFIX .
"Boards` SET `When`='" . $iCurrentTime .
"', `Status`='" . BOARD_STATUS_DELETE .
"' WHERE `ID` = '" .
$iBoardId .
"'");
110 $sId =
getValue(
"SELECT `ID` FROM `" . MODULE_DB_PREFIX .
"Users` WHERE `Board`='" .
$iBoardId .
"' AND `User`='" . $sUserId .
"' LIMIT 1");
111 if(
empty(
$sId))
getResult(
"INSERT INTO `" . MODULE_DB_PREFIX .
"Users`(`Board`, `User`, `When`) VALUES('" .
$iBoardId .
"', '" . $sUserId .
"', '" . $iCurrentTime .
"')");
112 else getResult(
"UPDATE `" . MODULE_DB_PREFIX .
"Users` SET `When`='" . $iCurrentTime .
"', `Status`='" . BOARD_STATUS_NORMAL .
"' WHERE `ID`='" .
$sId .
"'");
116 getResult(
"UPDATE `" . MODULE_DB_PREFIX .
"Users` SET `When`='" . $iCurrentTime .
"', `Status`='" . BOARD_STATUS_DELETE .
"' WHERE `Board`='" .
$iBoardId .
"' AND `User`='" . $sUserId .
"' LIMIT 1");
134 $iIdleTime = $iUpdateInterval * 3;
135 $iDeleteTime = $iUpdateInterval * 6;
137 $iCurrentTime =
time();
139 getResult(
"UPDATE `" . MODULE_DB_PREFIX .
"CurrentUsers` SET `Status`='" . USER_STATUS_OLD .
"', `When`='" . $iCurrentTime .
"' WHERE `ID`='" .
$sId .
"' AND (`Status`<>'" . USER_STATUS_NEW .
"' || (" . $iCurrentTime .
"-`When`)>" . $iUpdateInterval .
") LIMIT 1");
142 getResult(
"UPDATE `" . MODULE_DB_PREFIX .
"CurrentUsers` SET `When`=" . $iCurrentTime .
", `Status`='" . USER_STATUS_IDLE .
"' WHERE `Status`<>'" . USER_STATUS_IDLE .
"' AND `When`<=(" . ($iCurrentTime - $iIdleTime) .
")");
143 getResult(
"DELETE FROM `" . MODULE_DB_PREFIX .
"Users` WHERE `Status`='" . BOARD_STATUS_DELETE .
"' AND `When`<=(" . ($iCurrentTime - $iDeleteTime) .
")");
146 getResult(
"DELETE FROM `" . MODULE_DB_PREFIX .
"CurrentUsers`, `" . MODULE_DB_PREFIX .
"Users` USING `" . MODULE_DB_PREFIX .
"CurrentUsers` LEFT JOIN `" . MODULE_DB_PREFIX .
"Users` ON `" . MODULE_DB_PREFIX .
"CurrentUsers`.`ID`=`" . MODULE_DB_PREFIX .
"Users`.`User` WHERE `" . MODULE_DB_PREFIX .
"CurrentUsers`.`Status`='" . USER_STATUS_IDLE .
"' AND `" . MODULE_DB_PREFIX .
"CurrentUsers`.`When`<=" . ($iCurrentTime - $iDeleteTime));
151 $rRes =
getResult(
"SELECT * FROM `" . MODULE_DB_PREFIX .
"CurrentUsers` ORDER BY `When`");
152 while(
$aUser = $rRes->fetch()) {
153 switch(
$aUser[
'Status']) {
154 case USER_STATUS_NEW:
157 case USER_STATUS_IDLE:
166 $iCurrentTime -= $iRunTime;
167 $rRes =
getResult(
"SELECT * FROM `" . MODULE_DB_PREFIX .
"CurrentUsers` WHERE `Status`<>'" . USER_STATUS_IDLE .
"' ORDER BY `When`");
168 while(
$aUser = $rRes->fetch())