function getOnlineUsersInfo($sUserId, $bInit) { global $aXmlTemplates; $aSaved = getSavedUsers(); $aActive = getActiveUsers($sUserId); $aFriends = getFriends($sUserId); saveUsers($aActive); $sContents = ""; if ($bInit) { $aFullUsers = array_unique(array_merge($aActive['online'], $aFriends)); } else { $aFullUsers = array_diff($aActive['online'], $aSaved['online'], $aFriends); $aNewOfflineUsers = array_intersect($aSaved['online'], $aActive['offline']); $aNewOnlineUsers = array_intersect($aSaved['offline'], $aActive['online'], $aFriends); for ($i = 0; $i < count($aNewOfflineUsers); $i++) { $sContents .= parseXml($aXmlTemplates['user'], $aNewOfflineUsers[$i], FALSE_VAL); } for ($i = 0; $i < count($aNewOnlineUsers); $i++) { $sContents .= parseXml($aXmlTemplates['user'], $aNewOnlineUsers[$i], TRUE_VAL); } } $rResult = getUsersMedia($aFullUsers); if ($rResult != null) { for ($i = 0; $i < mysql_num_rows($rResult); $i++) { $aUser = mysql_fetch_assoc($rResult); $aUserInfo = getUserInfo($aUser['ID']); $sOnline = in_array($aUser['ID'], $aActive['online']) ? TRUE_VAL : FALSE_VAL; $sFriend = in_array($aUser['ID'], $aFriends) ? TRUE_VAL : FALSE_VAL; $sMusic = $aUser['CountMusic'] > 0 ? TRUE_VAL : FALSE_VAL; $sVideo = $aUser['CountVideo'] > 0 ? TRUE_VAL : FALSE_VAL; $sContents .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUserInfo['nick'], $aUserInfo['sex'], $aUserInfo['age'], $aUserInfo['photo'], $aUserInfo['profile'], $sOnline, $sFriend, $sMusic, $sVideo); } } return makeGroup($sContents, "users"); }
} break; case 'logout': logout($sId); $sContents = parseXml($aXmlTemplates['result'], "", SUCCESS_VAL); break; case "getUsers": $bInit = true; case "updateUsers": if (!isset($bInit)) { $bInit = false; } updateOnline($sId); $aSavedUsers = getSavedUsers(); $sContents = getOnlineUsersInfo($sId, $bInit); $aUsers = getSavedUsers(); $sContents .= getMails($sId, $sMails, array_unique(array_intersect($aSavedUsers['online'], $aUsers['online']))); $sContents .= getIms($sId); break; /** * Updates user's information in RayPresenceUsers table. * For Users, who didn't login into Ray Presence, but logged in into site. * * @param id - user's ID. * @param status - user's status. */ /** * Updates user's information in RayPresenceUsers table. * For Users, who didn't login into Ray Presence, but logged in into site. * * @param id - user's ID.