mirror of
https://github.com/WhatCD/Gazelle.git
synced 2024-12-15 03:46:25 +00:00
116 lines
3.1 KiB
PHP
116 lines
3.1 KiB
PHP
<?
|
|
|
|
if (isset($LoggedUser['PostsPerPage'])) {
|
|
$PerPage = $LoggedUser['PostsPerPage'];
|
|
} else {
|
|
$PerPage = POSTS_PER_PAGE;
|
|
}
|
|
|
|
//We have to iterate here because if one is empty it breaks the query
|
|
$TopicIDs = array();
|
|
foreach ($Forums as $Forum) {
|
|
if (!empty($Forum['LastPostTopicID'])) {
|
|
$TopicIDs[] = $Forum['LastPostTopicID'];
|
|
}
|
|
}
|
|
|
|
//Now if we have IDs' we run the query
|
|
if (!empty($TopicIDs)) {
|
|
$DB->query("
|
|
SELECT
|
|
l.TopicID,
|
|
l.PostID,
|
|
CEIL(
|
|
(
|
|
SELECT COUNT(p.ID)
|
|
FROM forums_posts AS p
|
|
WHERE p.TopicID = l.TopicID
|
|
AND p.ID <= l.PostID
|
|
) / $PerPage
|
|
) AS Page
|
|
FROM forums_last_read_topics AS l
|
|
WHERE l.TopicID IN(".implode(',', $TopicIDs).")
|
|
AND l.UserID = '$LoggedUser[ID]'");
|
|
$LastRead = $DB->to_array('TopicID', MYSQLI_ASSOC);
|
|
} else {
|
|
$LastRead = array();
|
|
}
|
|
|
|
$DB->query("
|
|
SELECT RestrictedForums
|
|
FROM users_info
|
|
WHERE UserID = ".$LoggedUser['ID']);
|
|
list($RestrictedForums) = $DB->next_record();
|
|
$RestrictedForums = explode(',', $RestrictedForums);
|
|
$PermittedForums = array_keys($LoggedUser['PermittedForums']);
|
|
|
|
$JsonCategories = array();
|
|
$JsonCategory = array();
|
|
$JsonForums = array();
|
|
foreach ($Forums as $Forum) {
|
|
list($ForumID, $CategoryID, $ForumName, $ForumDescription, $MinRead, $MinWrite, $MinCreate, $NumTopics, $NumPosts, $LastPostID, $LastAuthorID, $LastTopicID, $LastTime, $SpecificRules, $LastTopic, $Locked, $Sticky) = array_values($Forum);
|
|
if ($LoggedUser['CustomForums'][$ForumID] != 1
|
|
&& ($MinRead > $LoggedUser['Class']
|
|
|| array_search($ForumID, $RestrictedForums) !== false)
|
|
) {
|
|
continue;
|
|
}
|
|
$ForumDescription = display_str($ForumDescription);
|
|
|
|
if ($CategoryID != $LastCategoryID) {
|
|
if (!empty($JsonForums) && !empty($JsonCategory)) {
|
|
$JsonCategory['forums'] = $JsonForums;
|
|
$JsonCategories[] = $JsonCategory;
|
|
}
|
|
$LastCategoryID = $CategoryID;
|
|
$JsonCategory = array(
|
|
'categoryID' => (int)$CategoryID,
|
|
'categoryName' => $ForumCats[$CategoryID]
|
|
);
|
|
$JsonForums = array();
|
|
}
|
|
|
|
if ((!$Locked || $Sticky)
|
|
&& $LastPostID != 0
|
|
&& ((empty($LastRead[$LastTopicID]) || $LastRead[$LastTopicID]['PostID'] < $LastPostID)
|
|
&& strtotime($LastTime) > $LoggedUser['CatchupTime'])
|
|
) {
|
|
$Read = 'unread';
|
|
} else {
|
|
$Read = 'read';
|
|
}
|
|
$UserInfo = Users::user_info($LastAuthorID);
|
|
|
|
$JsonForums[] = array(
|
|
'forumId' => (int)$ForumID,
|
|
'forumName' => $ForumName,
|
|
'forumDescription' => $ForumDescription,
|
|
'numTopics' => (float)$NumTopics,
|
|
'numPosts' => (float)$NumPosts,
|
|
'lastPostId' => (float)$LastPostID,
|
|
'lastAuthorId' => (float)$LastAuthorID,
|
|
'lastPostAuthorName' => $UserInfo['Username'],
|
|
'lastTopicId' => (float)$LastTopicID,
|
|
'lastTime' => $LastTime,
|
|
'specificRules' => $SpecificRules,
|
|
'lastTopic' => display_str($LastTopic),
|
|
'read' => $Read == 1,
|
|
'locked' => $Locked == 1,
|
|
'sticky' => $Sticky == 1
|
|
);
|
|
}
|
|
// ...And an extra one to catch the last category.
|
|
if (!empty($JsonForums) && !empty($JsonCategory)) {
|
|
$JsonCategory['forums'] = $JsonForums;
|
|
$JsonCategories[] = $JsonCategory;
|
|
}
|
|
|
|
print json_encode(
|
|
array(
|
|
'status' => 'success',
|
|
'response' => array(
|
|
'categories' => $JsonCategories
|
|
)
|
|
)
|
|
);
|