'failure' ) ); die(); } include(SERVER_ROOT.'/classes/class_text.php'); // Text formatting class $Text = new TEXT; if (isset($LoggedUser['PostsPerPage'])) { $PerPage = $LoggedUser['PostsPerPage']; } else { $PerPage = POSTS_PER_PAGE; } list($Page,$Limit) = Format::page_limit($PerPage); if($LoggedUser['CustomForums']) { unset($LoggedUser['CustomForums']['']); $RestrictedForums = implode("','", array_keys($LoggedUser['CustomForums'], 0)); $PermittedForums = implode("','", array_keys($LoggedUser['CustomForums'], 1)); } $ShowUnread = (!isset($_GET['showunread']) && !isset($HeavyInfo['SubscriptionsUnread']) || isset($HeavyInfo['SubscriptionsUnread']) && !!$HeavyInfo['SubscriptionsUnread'] || isset($_GET['showunread']) && !!$_GET['showunread']); $ShowCollapsed = (!isset($_GET['collapse']) && !isset($HeavyInfo['SubscriptionsCollapse']) || isset($HeavyInfo['SubscriptionsCollapse']) && !!$HeavyInfo['SubscriptionsCollapse'] || isset($_GET['collapse']) && !!$_GET['collapse']); $sql = 'SELECT SQL_CALC_FOUND_ROWS MAX(p.ID) AS ID FROM forums_posts AS p LEFT JOIN forums_topics AS t ON t.ID = p.TopicID JOIN users_subscriptions AS s ON s.TopicID = t.ID LEFT JOIN forums AS f ON f.ID = t.ForumID LEFT JOIN forums_last_read_topics AS l ON p.TopicID = l.TopicID AND l.UserID = s.UserID WHERE s.UserID = '.$LoggedUser['ID'].' AND p.ID <= IFNULL(l.PostID,t.LastPostID) AND ((f.MinClassRead <= '.$LoggedUser['Class']; if(!empty($RestrictedForums)) { $sql.=' AND f.ID NOT IN (\''.$RestrictedForums.'\')'; } $sql .= ')'; if(!empty($PermittedForums)) { $sql.=' OR f.ID IN (\''.$PermittedForums.'\')'; } $sql .= ')'; if($ShowUnread) { $sql .= ' AND IF(l.PostID IS NULL OR (t.IsLocked = \'1\' && t.IsSticky = \'0\'), t.LastPostID, l.PostID) < t.LastPostID'; } $sql .= ' GROUP BY t.ID ORDER BY t.LastPostID DESC LIMIT '.$Limit; $PostIDs = $DB->query($sql); $DB->query('SELECT FOUND_ROWS()'); list($NumResults) = $DB->next_record(); if($NumResults > $PerPage*($Page-1)) { $DB->set_query_id($PostIDs); $PostIDs = $DB->collect('ID'); $sql = 'SELECT f.ID AS ForumID, f.Name AS ForumName, p.TopicID, t.Title, p.Body, t.LastPostID, t.IsLocked, t.IsSticky, p.ID, um.ID, um.Username, ui.Avatar, p.EditedUserID, p.EditedTime, ed.Username AS EditedUsername FROM forums_posts AS p LEFT JOIN forums_topics AS t ON t.ID = p.TopicID LEFT JOIN forums AS f ON f.ID = t.ForumID LEFT JOIN users_main AS um ON um.ID = p.AuthorID LEFT JOIN users_info AS ui ON ui.UserID = um.ID LEFT JOIN users_main AS ed ON ed.ID = um.ID WHERE p.ID IN ('.implode(',',$PostIDs).') ORDER BY f.Name ASC, t.LastPostID DESC'; $DB->query($sql); } $JsonPosts = array(); while(list($ForumID, $ForumName, $TopicID, $ThreadTitle, $Body, $LastPostID, $Locked, $Sticky, $PostID, $AuthorID, $AuthorName, $AuthorAvatar, $EditedUserID, $EditedTime, $EditedUsername) = $DB->next_record()){ $JsonPost = array( 'forumId' => (int) $ForumID, 'forumName' => $ForumName, 'threadId' => (int) $TopicID, 'threadTitle' => $ThreadTitle, 'postId' => (int) $PostID, 'lastPostId' => (int) $LastPostID, 'locked' => $Locked == 1, 'new' => ($PostID<$LastPostID && !$Locked) ); $JsonPosts[] = $JsonPost; } print json_encode( array( 'status' => 'success', 'response' => array( 'threads' => $JsonPosts ) ) ); ?>