isLoggedIn()){
if(!$user->canViewACP()){
// No
Redirect::to(URL::build('/'));
die();
}
if(!$user->isAdmLoggedIn()){
// Needs to authenticate
Redirect::to(URL::build('/panel/auth'));
die();
} else {
if(!$user->hasPermission('admincp.forums')){
require_once(ROOT_PATH . '/404.php');
die();
}
}
} else {
// Not logged in
Redirect::to(URL::build('/login'));
die();
}
define('PAGE', 'panel');
define('PARENT_PAGE', 'forum');
define('PANEL_PAGE', 'forums');
$page_title = $forum_language->get('forum', 'forums');
require_once(ROOT_PATH . '/core/templates/backend_init.php');
if(!isset($_GET['action']) && !isset($_GET['forum'])){
if(Input::exists()){
if(Token::check(Input::get('token'))){
try {
// Get reactions value
if(isset($_POST['enabled']) && $_POST['enabled'] == 'on') $enabled = 1;
else $enabled = 0;
$forum_reactions_id = $queries->getWhere('settings', array('name', '=', 'forum_reactions'));
$forum_reactions_id = $forum_reactions_id[0]->id;
$queries->update('settings', $forum_reactions_id, array(
'value' => $enabled
));
Session::flash('admin_forums', $forum_language->get('forum', 'settings_updated_successfully'));
Redirect::to(URL::build('/panel/forums'));
die();
} catch(Exception $e){
$errors = array($e->getMessage());
}
} else {
// Invalid token
Session::flash('admin_forums', $language->get('general', 'invalid_token'));
Redirect::to(URL::build('/panel/forums'));
die();
}
}
$forums = $queries->orderAll('forums', 'forum_order', 'ASC');
$template_array = array();
if(count($forums)){
$i = 1;
$count = count($forums);
foreach($forums as $item){
if($item->parent > 0){
$parent_forum_query = $queries->getWhere('forums', array('id', '=', $item->parent));
if(count($parent_forum_query)){
$parent_forum_count = 1;
$parent_forum = str_replace('{x}', Output::getClean(Output::getDecoded($parent_forum_query[0]->forum_title)), $forum_language->get('forum', 'parent_forum_x'));
$id = $parent_forum_query[0]->parent;
while($parent_forum_count < 100 && $id > 0){
$parent_forum_query = $queries->getWhere('forums', array('id', '=', $parent_forum_query[0]->parent));
$id = $parent_forum_query[0]->parent;
$parent_forum_count++;
}
} else {
$parent_forum = null;
$parent_forum_count = 0;
}
} else
$parent_forum_count = 0;
$template_array[] = array(
'edit_link' => URL::build('/panel/forums/', 'forum=' . Output::getClean($item->id)),
'delete_link' => URL::build('/panel/forums/', 'action=delete&fid=' . Output::getClean($item->id)),
'up_link' => ($i > 1 ? URL::build('/panel/forums/', 'action=order&dir=up&fid=' . Output::getClean($item->id)) : null),
'down_link' => ($i < $count ? URL::build('/panel/forums/', 'action=order&dir=down&fid=' . Output::getClean($item->id)) : null),
'title' => Output::getClean(Output::getDecoded($item->forum_title)),
'description' => Output::getPurified(Output::getDecoded($item->forum_description)),
'id' => Output::getClean($item->id),
'parent_forum' => (($item->parent > 0) ? $parent_forum : null),
'parent_forum_count' => $parent_forum_count
);
$i++;
}
}
$forum_reactions = $queries->getWhere('settings', array('name', '=', 'forum_reactions'));
$forum_reactions = $forum_reactions[0]->value;
$smarty->assign(array(
'NEW_FORUM' => $forum_language->get('forum', 'new_forum'),
'NEW_FORUM_LINK' => URL::build('/panel/forums/', 'action=new'),
'FORUMS_ARRAY' => $template_array,
'USE_REACTIONS' => $forum_language->get('forum', 'use_reactions'),
'USE_REACTIONS_VALUE' => ($forum_reactions == 1),
'NO_FORUMS' => $forum_language->get('forum', 'no_forums'),
'REORDER_DRAG_URL' => URL::build('/panel/forums')
));
$template_file = 'forum/forums.tpl';
} else if(isset($_GET['action'])){
switch($_GET['action']){
case 'new':
if(!isset($_GET['step'])){
// Step 1
if(Input::exists()){
$errors = array();
if(Token::check(Input::get('token'))){
// Validate input
$validate = new Validate();
$validation = $validate->check($_POST, array(
'forumname' => array(
'required' => true,
'min' => 2,
'max' => 150
),
'forumdesc' => array(
'max' => 255
),
'forum_icon' => array(
'max' => 256
)
));
if($validation->passed()){
// Create the forum
try {
$description = Input::get('forumdesc');
$last_forum_order = $queries->orderAll('forums', 'forum_order', 'DESC');
if(count($last_forum_order)) $last_forum_order = $last_forum_order[0]->forum_order;
else $last_forum_order = 0;
$queries->create('forums', array(
'forum_title' => Output::getClean(Input::get('forumname')),
'forum_description' => Output::getClean($description),
'forum_order' => $last_forum_order + 1,
'forum_type' => Output::getClean(Input::get('forum_type')),
'icon' => Output::getClean(Input::get('forum_icon'))
));
$forum_id = $queries->getLastId();
Redirect::to(URL::build('/panel/forums/', 'action=new&step=2&forum=' . $forum_id));
die();
} catch(Exception $e){
$errors[] = $e->getMessage();
}
} else {
foreach($validation->errors() as $item) {
if(strpos($item, 'is required') !== false){
switch($item){
case (strpos($item, 'forumname') !== false):
$errors[] = $forum_language->get('forum', 'input_forum_title');
break;
}
} else if(strpos($item, 'minimum') !== false){
switch($item){
case (strpos($item, 'forumname') !== false):
$errors[] = $forum_language->get('forum', 'forum_name_minimum');
break;
}
} else if(strpos($item, 'maximum') !== false){
switch($item){
case (strpos($item, 'forumname') !== false):
$errors[] = $forum_language->get('forum', 'forum_name_maximum');
break;
case (strpos($item, 'forumdesc') !== false):
$errors[] = $forum_language->get('forum', 'forum_description_maximum');
break;
case (strpos($item, 'forum_icon') !== false):
$errors[] = $forum_language->get('forum', 'forum_icon_maximum');
break;
}
}
}
}
} else {
// Invalid token
$errors[] = $language->get('general', 'invalid_token');
}
}
$smarty->assign(array(
'FORUM_TYPE' => $forum_language->get('forum', 'forum_type'),
'FORUM_TYPE_FORUM' => $forum_language->get('forum', 'forum_type_forum'),
'FORUM_TYPE_CATEGORY' => $forum_language->get('forum', 'forum_type_category'),
'FORUM_NAME' => $forum_language->get('forum', 'forum_name'),
'FORUM_NAME_VALUE' => Output::getClean(Input::get('forumname')),
'FORUM_DESCRIPTION' => $forum_language->get('forum', 'forum_description'),
'FORUM_DESCRIPTION_VALUE' => Output::getClean(Input::get('forumdesc')),
'FORUM_ICON' => $forum_language->get('forum', 'forum_icon'),
'FORUM_ICON_VALUE' => Output::getClean(Input::get('forum_icon'))
));
$template_file = 'forum/forums_new_step_1.tpl';
} else {
// Parent category, for type forum only
if(!isset($_GET['forum']) || !is_numeric($_GET['forum'])){
Redirect::to(URL::build('/panel/forums'));
die();
}
// Get forum from database
$forum = $queries->getWhere('forums', array('id', '=', $_GET['forum']));
if(!count($forum)){
Redirect::to(URL::build('/panel/forums'));
die();
} else $forum = $forum[0];
// Forums only
if($forum->forum_type == 'category'){
Redirect::to(URL::build('/panel/forums/', 'forum=' . $forum->id));
die();
}
// Deal with input
if(Input::exists()){
$errors = array();
if(Token::check(Input::get('token'))){
try {
if(isset($_POST['redirect']) && $_POST['redirect'] == 1) {
$redirect = 1;
if(isset($_POST['redirect_url']) && strlen($_POST['redirect_url']) > 0 && strlen($_POST['redirect_url']) <= 512){
$redirect_url = Output::getClean($_POST['redirect_url']);
} else {
$redirect_error = true;
}
} else {
$redirect = 0;
$redirect_url = null;
}
if(!isset($redirect_error)) {
if(isset($_POST['parent']))
$parent = $_POST['parent'];
else
$parent = 0;
$queries->update('forums', $forum->id, array(
'parent' => $parent,
'news' => Input::get('news_forum'),
'redirect_forum' => $redirect,
'redirect_url' => $redirect_url
));
$webhook_settings = $queries->getWhere('settings', array('name', '=', 'forum_new_topic_hooks'));
if(!count($webhook_settings)){
$val = array();
if($_POST['webhook'] == 1)
$val[] = $forum->id;
$queries->create('settings', array(
'name' => 'forum_new_topic_hooks',
'value' => json_encode($val)
));
} else if(Input::get('webhook') == 1) {
$enabled_hooks = $webhook_settings[0]->value;
$enabled_hooks = json_decode($enabled_hooks);
$enabled_hooks[] = $forum->id;
$queries->update('settings', $webhook_settings[0]->id, array(
'value' => json_encode($enabled_hooks)
));
}
Redirect::to(URL::build('/panel/forums/', 'forum=' . $forum->id));
die();
} else {
$errors[] = $forum_language->get('forum', 'invalid_redirect_url');
}
} catch(Exception $e){
$errors[] = $e->getMessage();
}
} else {
$errors[] = $language->get('general', 'invalid_token');
}
}
// Get a list of forums
$forums = $queries->getWhere('forums', array('id', '<>', $forum->id));
$template_array = array();
if(count($forums)){
foreach($forums as $item){
$template_array[] = array(
'id' => Output::getClean($item->id),
'name' => Output::getClean(Output::getDecoded($item->forum_title))
);
}
}
$smarty->assign(array(
'SELECT_PARENT_FORUM' => $forum_language->get('forum', 'select_a_parent_forum'),
'PARENT_FORUMS' => $template_array,
'DISPLAY_TOPICS_AS_NEWS' => $forum_language->get('forum', 'display_topics_as_news'),
'REDIRECT_FORUM' => $forum_language->get('forum', 'redirect_forum'),
'REDIRECT_URL' => $forum_language->get('forum', 'redirect_url'),
'REDIRECT_URL_VALUE' => Output::getClean(Input::get('redirect_url')),
'INCLUDE_IN_HOOK' => $forum_language->get('forum', 'include_in_hook')
));
$template_file = 'forum/forums_new_step_2.tpl';
}
$smarty->assign(array(
'CREATING_FORUM' => $forum_language->get('forum', 'creating_forum'),
'CANCEL' => $language->get('general', 'cancel'),
'CANCEL_LINK' => URL::build('/panel/forums'),
'ARE_YOU_SURE' => $language->get('general', 'are_you_sure'),
'YES' => $language->get('general', 'yes'),
'NO' => $language->get('general', 'no'),
'CONFIRM_CANCEL' => $language->get('general', 'confirm_cancel')
));
break;
case 'order':
if(!isset($_GET['dir'])){
echo $forum_language->get('forum', 'invalid_action') . ' - ' . $language->get('general', 'back') . '';
die();
}
if($_GET['dir'] == 'up' || $_GET['dir'] == 'down'){
if(!isset($_GET['fid']) || !is_numeric($_GET['fid'])){
echo $forum_language->get('forum', 'invalid_action') . ' - ' . $language->get('general', 'back') . '';
die();
}
$dir = $_GET['dir'];
$forum_id = $queries->getWhere('forums', array('id', '=', $_GET['fid']));
$forum_id = $forum_id[0]->id;
$forum_order = $queries->getWhere('forums', array('id', '=', $_GET['fid']));
$forum_order = $forum_order[0]->forum_order;
$previous_forums = $queries->orderAll('forums', 'forum_order', 'ASC');
if($dir == 'up'){
$n = 0;
foreach($previous_forums as $previous_forum){
if($previous_forum->id == $_GET['fid']){
$previous_fid = $previous_forums[$n - 1]->id;
$previous_f_order = $previous_forums[$n - 1]->forum_order;
break;
}
$n++;
}
try {
if(isset($previous_fid) && isset($previous_f_order)){
$queries->update('forums', $forum_id, array(
'forum_order' => $previous_f_order
));
$queries->update('forums', $previous_fid, array(
'forum_order' => $previous_f_order + 1
));
}
} catch(Exception $e){
$errors = array($e->getMessage());
}
Redirect::to(URL::build('/panel/forums'));
die();
} else if($dir == 'down'){
$n = 0;
foreach($previous_forums as $previous_forum){
if($previous_forum->id == $_GET['fid']){
$previous_fid = $previous_forums[$n + 1]->id;
$previous_f_order = $previous_forums[$n + 1]->forum_order;
break;
}
$n++;
}
try {
if(isset($previous_fid) && isset($previous_f_order)){
$queries->update('forums', $forum_id, array(
'forum_order' => $previous_f_order
));
$queries->update('forums', $previous_fid, array(
'forum_order' => $previous_f_order - 1
));
}
} catch(Exception $e){
$errors = array($e->getMessage());
}
Redirect::to(URL::build('/panel/forums'));
die();
}
} else if($_GET['dir'] == 'drag'){
// Get forums
if(isset($_GET['forums'])){
$forums = json_decode($_GET['forums'])->forums;
$i = 0;
foreach($forums as $item){
$queries->update('forums', $item, array(
'forum_order' => $i
));
$i++;
}
}
die('Complete');
} else {
echo $forum_language->get('forum', 'invalid_action') . ' - ' . $language->get('general', 'back') . '';
die();
}
break;
case 'delete':
if(!isset($_GET['fid']) || !is_numeric($_GET['fid'])){
Redirect::to(URL::build('/panel/forums'));
die();
}
// Ensure forum exists
$forum = $queries->getWhere('forums', array('id', '=', $_GET['fid']));
if(!count($forum)){
Redirect::to(URL::build('/panel/forums'));
die();
}
$forum = $forum[0];
if(Input::exists()){
if(Token::check(Input::get('token'))){
if(Input::get('confirm') === 'true'){
$forum_perms = $queries->getWhere('forums_permissions', array('forum_id', '=', $_GET['fid'])); // Get permissions to be deleted
if(Input::get('move_forum') === 'none'){
$posts = $queries->getWhere('posts', array('forum_id', '=', $_GET['fid']));
$topics = $queries->getWhere('topics', array('forum_id' , '=', $_GET['fid']));
try {
foreach($posts as $post){
$queries->delete('posts', array('id', '=' , $post->id));
}
foreach($topics as $topic){
$queries->delete('topics', array('id', '=' , $topic->id));
}
$queries->delete('forums', array('id', '=' , $_GET["fid"]));
// Forum perm deletion
foreach($forum_perms as $perm){
$queries->delete('forums_permissions', array('id', '=', $perm->id));
}
Session::flash('admin_forums', $forum_language->get('forum', 'forum_deleted_successfully'));
Redirect::to(URL::build('/panel/forums'));
die();
} catch(Exception $e) {
die($e->getMessage());
}
} else {
$new_forum = Input::get('move_forum');
$posts = $queries->getWhere('posts', array('forum_id', '=', $_GET['fid']));
$topics = $queries->getWhere('topics', array('forum_id' , '=', $_GET['fid']));
try {
foreach($posts as $post){
$queries->update('posts', $post->id, array(
'forum_id' => $new_forum
));
}
foreach($topics as $topic){
$queries->update('topics', $topic->id, array(
'forum_id' => $new_forum
));
}
$queries->delete('forums', array('id', '=' , $_GET["fid"]));
// Forum perm deletion
foreach($forum_perms as $perm){
$queries->delete('forums_permissions', array('id', '=', $perm->id));
}
Session::flash('admin_forums', $forum_language->get('forum', 'forum_deleted_successfully'));
Redirect::to(URL::build('/panel/forums'));
die();
} catch(Exception $e) {
die($e->getMessage());
}
}
}
} else {
$errors = array($language->get('general', 'invalid_token'));
}
}
$other_forums = $queries->orderWhere('forums', 'parent > 0', 'forum_order', 'ASC');
$template_array = array();
foreach($other_forums as $item){
if($item->id == $forum->id)
continue;
$template_array[] = array(
'id' => Output::getClean($item->id),
'name' => Output::getClean(Output::getDecoded($item->forum_title))
);
}
$smarty->assign(array(
'DELETE_FORUM' => $forum_language->get('forum', 'delete_forum'),
'MOVE_TOPICS_AND_POSTS_TO' => $forum_language->get('forum', 'move_topics_and_posts_to'),
'DELETE_TOPICS_AND_POSTS' => $forum_language->get('forum', 'delete_topics_and_posts'),
'OTHER_FORUMS' => $template_array
));
$template_file = 'forum/forums_delete.tpl';
break;
default:
Redirect::to(URL::build('/panel/forums'));
die();
break;
}
} else if(isset($_GET['forum'])){
// Editing forum
if(!is_numeric($_GET['forum'])){
die();
} else {
$forum = $queries->getWhere('forums', array('id', '=', $_GET['forum']));
}
if(!count($forum)){
Redirect::to(URL::build('/panel/forums'));
die();
}
$available_forums = $queries->orderWhere('forums', 'id > 0', 'forum_order', 'ASC'); // Get a list of all forums which can be chosen as a parent
$groups = $queries->getWhere('groups', array('id', '<>', '0')); // Get a list of all groups
if(Input::exists()){
$errors = array();
if(Token::check(Input::get('token'))){
if(Input::get('action') == 'update'){
$validate = new Validate();
$validation = $validate->check($_POST, array(
'title' => array(
'required' => true,
'min' => 2,
'max' => 150
),
'description' => array(
'max' => 255
),
'icon' => array(
'max' => 256
)
));
if($validation->passed()){
try {
if(isset($_POST['redirect']) && $_POST['redirect'] == 1) {
$redirect = 1;
if(isset($_POST['redirect_url']) && strlen($_POST['redirect_url']) > 0 && strlen($_POST['redirect_url']) <= 512){
$redirect_url = Output::getClean($_POST['redirect_url']);
} else {
$redirect = 0;
$redirect_url = null;
$redirect_error = true;
}
} else {
$redirect = 0;
$redirect_url = null;
}
if(isset($_POST['parent_forum']))
$parent = $_POST['parent_forum'];
else
$parent = 0;
// Update the forum
$to_update = array(
'forum_title' => Output::getClean(Input::get('title')),
'forum_description' => Output::getClean(Input::get('description')),
'news' => Input::get('display'),
'parent' => $parent,
'redirect_forum' => $redirect,
'icon' => Output::getClean(Input::get('icon')),
'forum_type' => Output::getClean(Input::get('forum_type')),
'topic_placeholder' => Input::get('topic_placeholder')
);
if(!isset($redirect_error))
$to_update['redirect_url'] = $redirect_url;
$queries->update('forums', $_GET['forum'], $to_update);
$webhook_settings = $queries->getWhere('settings', array('name', '=', 'forum_new_topic_hooks'));
if(!count($webhook_settings)){
$val = array();
if($_POST['webhook'] == 1)
$val[] = $_GET['forum'];
$queries->create('settings', array(
'name' => 'forum_new_topic_hooks',
'value' => json_encode($val)
));
} else {
$enabled_hooks = $webhook_settings[0]->value;
$enabled_hooks = json_decode($enabled_hooks);
$new_hooks = array();
if($_POST['webhook'] == 1)
$new_hooks[] = $_GET['forum'];
foreach($enabled_hooks as $hook)
if($hook != $_GET['forum'])
$new_hooks[] = $hook;
$queries->update('settings', $webhook_settings[0]->id, array(
'value' => json_encode($new_hooks)
));
}
} catch(Exception $e) {
$errors[] = $e->getMessage();
}
// Guest forum permissions
$view = Input::get('perm-view-0');
$create = 0;
$post = 0;
$view_others = Input::get('perm-view-0');
$moderate = 0;
if(!($view)) $view = 0;
$forum_perm_exists = 0;
$forum_perm_query = $queries->getWhere('forums_permissions', array('forum_id', '=', $_GET['forum']));
if(count($forum_perm_query)){
foreach($forum_perm_query as $query){
if($query->group_id == 0){
$forum_perm_exists = 1;
$update_id = $query->id;
break;
}
}
}
try {
if($forum_perm_exists != 0){ // Permission already exists, update
// Update the forum
$queries->update('forums_permissions', $update_id, array(
'view' => $view,
'create_topic' => $create,
'create_post' => $post,
'view_other_topics' => $view_others,
'moderate' => $moderate
));
} else { // Permission doesn't exist, create
$queries->create('forums_permissions', array(
'group_id' => 0,
'forum_id' => $_GET['forum'],
'view' => $view,
'create_topic' => $create,
'create_post' => $post,
'view_other_topics' => $view_others,
'moderate' => $moderate
));
}
} catch(Exception $e) {
$errors[] = $e->getMessage();
}
// Group forum permissions
foreach($groups as $group){
$view = Input::get('perm-view-' . $group->id);
$create = Input::get('perm-topic-' . $group->id);
$post = Input::get('perm-post-' . $group->id);
$view_others = Input::get('perm-view_others-' . $group->id);
$moderate = Input::get('perm-moderate-' . $group->id);
if(!($view)) $view = 0;
if(!($create)) $create = 0;
if(!($post)) $post = 0;
if(!($view_others)) $view_others = 0;
if(!($moderate)) $moderate = 0;
$forum_perm_exists = 0;
if(count($forum_perm_query)){
foreach($forum_perm_query as $query){
if($query->group_id == $group->id){
$forum_perm_exists = 1;
$update_id = $query->id;
break;
}
}
}
try {
if($forum_perm_exists != 0){ // Permission already exists, update
// Update the forum
$queries->update('forums_permissions', $update_id, array(
'view' => $view,
'create_topic' => $create,
'create_post' => $post,
'view_other_topics' => $view_others,
'moderate' => $moderate
));
} else { // Permission doesn't exist, create
$queries->create('forums_permissions', array(
'group_id' => $group->id,
'forum_id' => $_GET['forum'],
'view' => $view,
'create_topic' => $create,
'create_post' => $post,
'view_other_topics' => $view_others,
'moderate' => $moderate
));
}
} catch(Exception $e) {
$errors[] = $e->getMessage();
}
}
Session::flash('admin_forums', $forum_language->get('forum', 'forum_updated_successfully'));
Redirect::to(URL::build('/panel/forums/', 'forum=' . Output::getClean($_GET['forum'])));
die();
} else {
foreach($validation->errors() as $error) {
if(strpos($error, 'is required') !== false){
switch($error){
case (strpos($error, 'title') !== false):
$errors[] = $forum_language->get('forum', 'input_forum_title');
break;
}
} else if(strpos($error, 'minimum') !== false){
switch($error){
case (strpos($error, 'title') !== false):
$errors[] = $forum_language->get('forum', 'forum_name_minimum');
break;
}
} else if(strpos($error, 'maximum') !== false){
switch($error){
case (strpos($error, 'title') !== false):
$errors[] = $forum_language->get('forum', 'forum_name_maximum');
break;
case (strpos($error, 'description') !== false):
$errors[] = $forum_language->get('forum', 'forum_description_maximum');
break;
case (strpos($error, 'icon') !== false):
$errors[] = $forum_language->get('forum', 'forum_icon_maximum');
break;
}
}
}
}
}
} else {
$errors[] = $language->get('general', 'invalid_token');
}
}
$is_webhook_enabled = $queries->getWhere('settings', array('name', '=', 'forum_new_topic_hooks'));
if(!count($is_webhook_enabled)){
$queries->create('settings', array('name' => 'forum_new_topic_hooks', 'value' => json_encode(array())));
$is_webhook_enabled = false;
} else {
$webhook_forums = json_decode($is_webhook_enabled[0]->value, true);
if(count($webhook_forums) && in_array($_GET['forum'], $webhook_forums))
$is_webhook_enabled = true;
else
$is_webhook_enabled = false;
}
$template_forums_array = array();
if(count($available_forums)){
foreach($available_forums as $item){
if($item->id == $forum[0]->id) continue;
$template_forums_array[] = array(
'id' => $item->id,
'title' => Output::getClean($item->forum_title)
);
}
}
// Get all forum permissions
$guest_query = DB::getInstance()->query('SELECT 0 AS id, `view` FROM nl2_forums_permissions WHERE group_id = 0 AND forum_id = ?', array($forum[0]->id))->results();
$group_query = DB::getInstance()->query('SELECT id, name, `view`, create_topic, create_post, view_other_topics, moderate FROM nl2_groups A LEFT JOIN (SELECT group_id, `view`, create_topic, create_post, view_other_topics, moderate FROM nl2_forums_permissions WHERE forum_id = ?) B ON A.id = B.group_id ORDER BY `order` ASC', array($forum[0]->id))->results();
$smarty->assign(array(
'CANCEL' => $language->get('general', 'cancel'),
'CANCEL_LINK' => URL::build('/panel/forums'),
'ARE_YOU_SURE' => $language->get('general', 'are_you_sure'),
'YES' => $language->get('general', 'yes'),
'NO' => $language->get('general', 'no'),
'CONFIRM_CANCEL' => $language->get('general', 'confirm_cancel'),
'FORUM_TYPE' => $forum_language->get('forum', 'forum_type'),
'FORUM_TYPE_FORUM' => $forum_language->get('forum', 'forum_type_forum'),
'FORUM_TYPE_CATEGORY' => $forum_language->get('forum', 'forum_type_category'),
'FORUM_TYPE_VALUE' => ($forum[0]->forum_type == 'category') ? 'category' : 'forum',
'FORUM_TITLE' => $forum_language->get('forum', 'forum_name'),
'FORUM_TITLE_VALUE' => Output::getClean(Output::getDecoded($forum[0]->forum_title)),
'FORUM_DESCRIPTION' => $forum_language->get('forum', 'forum_description'),
'FORUM_DESCRIPTION_VALUE' => Output::getClean(Output::getDecoded($forum[0]->forum_description)),
'FORUM_ICON' => $forum_language->get('forum', 'forum_icon'),
'FORUM_ICON_VALUE' => Output::getClean(Output::getDecoded($forum[0]->icon)),
'PARENT_FORUM' => $forum_language->get('forum', 'parent_forum'),
'PARENT_FORUM_VALUE' => $forum[0]->parent,
'NO_PARENT' => $forum_language->get('forum', 'has_no_parent'),
'PARENT_FORUM_LIST' => $template_forums_array,
'DISPLAY_TOPICS_AS_NEWS' => $forum_language->get('forum', 'display_topics_as_news'),
'DISPLAY_TOPICS_AS_NEWS_VALUE' => ($forum[0]->news == 1),
'REDIRECT_FORUM' => $forum_language->get('forum', 'redirect_forum'),
'REDIRECT_FORUM_VALUE' => ($forum[0]->redirect_forum == 1),
'REDIRECT_URL' => $forum_language->get('forum', 'redirect_url'),
'REDIRECT_URL_VALUE' => Output::getClean(Output::getDecoded($forum[0]->redirect_url)),
'INCLUDE_IN_HOOK' => $forum_language->get('forum', 'include_in_hook'),
'INCLUDE_IN_HOOK_VALUE' => $is_webhook_enabled,
'FORUM_PERMISSIONS' => $forum_language->get('forum', 'forum_permissions'),
'GUESTS' => $language->get('user', 'guests'),
'GUEST_PERMISSIONS' => (count($guest_query) ? $guest_query[0] : array()),
'GROUP_PERMISSIONS' => $group_query,
'GROUP' => $forum_language->get('forum', 'group'),
'CAN_VIEW_FORUM' => $forum_language->get('forum', 'can_view_forum'),
'CAN_CREATE_TOPIC' => $forum_language->get('forum', 'can_create_topic'),
'CAN_POST_REPLY' => $forum_language->get('forum', 'can_post_reply'),
'CAN_VIEW_OTHER_TOPICS' => $forum_language->get('forum', 'can_view_other_topics'),
'CAN_MODERATE_FORUM' => $forum_language->get('forum', 'can_moderate_forum'),
'TOPIC_PLACEHOLDER' => $forum_language->get('forum', 'topic_placeholder'),
'TOPIC_PLACEHOLDER_VALUE' => Output::getPurified($forum[0]->topic_placeholder)
));
$template_file = 'forum/forums_edit.tpl';
}
// Load modules + template
Module::loadPage($user, $pages, $cache, $smarty, array($navigation, $cc_nav, $mod_nav), $widgets);
if(Session::exists('admin_forums'))
$success = Session::flash('admin_forums');
if(isset($success))
$smarty->assign(array(
'SUCCESS' => $success,
'SUCCESS_TITLE' => $language->get('general', 'success')
));
if(isset($errors) && count($errors))
$smarty->assign(array(
'ERRORS' => $errors,
'ERRORS_TITLE' => $language->get('general', 'error')
));
$smarty->assign(array(
'PARENT_PAGE' => PARENT_PAGE,
'DASHBOARD' => $language->get('admin', 'dashboard'),
'FORUM' => $forum_language->get('forum', 'forum'),
'FORUMS' => $forum_language->get('forum', 'forums'),
'PAGE' => PANEL_PAGE,
'TOKEN' => Token::get(),
'SUBMIT' => $language->get('general', 'submit')
));
$page_load = microtime(true) - $start;
define('PAGE_LOAD_TIME', str_replace('{x}', round($page_load, 3), $language->get('general', 'page_loaded_in')));
$template->onPageLoad();
require(ROOT_PATH . '/core/templates/panel_navbar.php');
// Display template
$template->displayTemplate($template_file, $smarty);