<?php

require dirname(dirname(__FILE__)) . '/includes/bootstrap.php';
$categoryID = isset($_GET['id']) ? $_GET['id'] : 0;
if (isset($_REQUEST['action'])) {
    if ($_REQUEST['action'] == 'follow' || $_REQUEST['action'] == 'unfollow') {
        if (!($userID = buckys_is_logged_in()) && buckys_check_form_token('request')) {
            buckys_redirect(isset($_REQUEST['return']) ? base64_decode($_REQUEST['return']) : '/forum', MSG_INVALID_REQUEST, MSG_TYPE_ERROR);
        }
        $category = BuckysForumCategory::getCategory($categoryID);
        if (!$category || $_REQUEST['action'] == 'follow' && BuckysForumFollower::isFollow($category['categoryID'], $userID) || $_REQUEST['action'] == 'unfollow' && !BuckysForumFollower::isFollow($category['categoryID'], $userID) || $category['creatorID'] == $userID) {
            buckys_redirect(isset($_REQUEST['return']) ? base64_decode($_REQUEST['return']) : '/forum', MSG_INVALID_REQUEST, MSG_TYPE_ERROR);
        }
        if ($_REQUEST['action'] == 'follow') {
            BuckysForumFollower::followForum($userID, $categoryID);
            buckys_add_message(MSG_FOLLOW_FORUM_SUCCESS);
        } else {
            BuckysForumFollower::unfollowForum($userID, $categoryID);
            buckys_add_message(MSG_UNFOLLOW_FORUM_SUCCESS);
        }
        buckys_redirect(isset($_REQUEST['return']) ? base64_decode($_REQUEST['return']) : '/forum');
    }
}
$category = BuckysForumCategory::getCategory($categoryID);
if (!$category) {
    buckys_redirect('/forum');
}
//Getting Topics by category id
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'recent';
switch ($orderby) {
 /**
  * @param $categoryID
  * @param $applicants
  */
 public static function approveApplicants($categoryID, $applicants)
 {
     global $db;
     foreach ($applicants as $aid) {
         $query = $db->prepare("UPDATE " . TABLE_FORUM_MODERATORS . " SET `status`='Approved' WHERE categoryID=%d AND userID=%d", $categoryID, $aid);
         $db->query($query);
         //Make the user follow the forum
         if (!BuckysForumFollower::isFollow($categoryID, $aid)) {
             BuckysForumFollower::followForum($aid, $categoryID);
         }
     }
 }
 /**
  * @param $id
  * @param $name
  * @param $description
  * @return bool|int|null|string
  */
 public static function saveCategory($id, $name, $description)
 {
     global $db;
     $userID = buckys_is_logged_in();
     if (!$id) {
         //New Category
         //Getting Sort Order
         $query = "SELECT max(sortOrder) FROM " . TABLE_FORUM_CATEGORIES . " WHERE parentID=" . USER_FORUM_CATEGORY;
         $sortOrder = $db->getVar($query);
         $sortOrder = !$sortOrder ? 1 : $sortOrder + 1;
         $query = $db->prepare("INSERT INTO " . TABLE_FORUM_CATEGORIES . "(`categoryName`, `description`,`sortOrder`, `creatorID`, `parentID`, `createdDate`)VALUES(%s, %s, %d, %d, %d, %s)", $name, $description, $sortOrder, $userID, USER_FORUM_CATEGORY, date("Y-m-d H:i:s"));
         $id = $db->insert($query);
         if (!$id) {
             buckys_add_message($db->last_error, MSG_TYPE_ERROR);
             return false;
         }
         //Make the user to follow this forum
         BuckysForumFollower::followForum($userID, $id);
     } else {
         $query = $db->prepare("UPDATE " . TABLE_FORUM_CATEGORIES . " SET `categoryName`=%s, `description`=%s  WHERE `categoryID`=%d", $name, $description, $id);
         $db->query($query);
     }
     return $id;
 }