mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-26 17:29:21 +02:00

* Remove unneeded escape * Fix guild back buttons (change logo & motd) * small adjustment in news.php * Fix create character when admin (any case is allowed now) * Fix forum table style (boards & thread view) * Small improvement to plugins.enabled check * [WIP] nikic/fast-route implementation I will describe it more in Pull Request * Optimisations & fixes. * Fix path - should not be absolute * Add PLUGINS to Twig path * Don't hide "Install Plugin" Box by default * Update package-lock.json * nothing important, just early exit & fixes Fix creature display * fix premium_ends_at for tfs 1.3+ * Move pages * Move pages tbc * $db->select: make $where parameter optional, allows to get all records * Add some error box to error * fix parse error * Rewriting the router v2 To be more flexible * small fixes * fix & add admin icons * Move mass_* pages to correct folder * fix logout hook 2 * Delete accountmanagement.php * This code wasn't used * Add missing var * Add redirect_from && redirect_to to router options + Also add * for all methods shortcut * Remove comments Not allowed in normal json * Allow admin pages included into plugins dir * block access to some files * Fix admin logout * Fix #178 * feature: mail confirmed reward Suggested by @EPuncker # Conflicts: # system/hooks.php * remove misleading comment * adjust required version according to composer.json * fix duplicated word * Adjustments & fixed to mass actions * Add password confirm, and change text type to password * Add list of Open Source Software MyAAC is using * Fix signature * Show First, Second instead of numbers * fix base dir detection * fix double ACTION define + undefined URI in template * new function> escapeHtml + fix css in admin menus * fix changelog add * fix news adding, rename const to NEWS_* * Add verify to pages, add messages, limits, fix add * fix "Please fill all input" * add required input to admin pages * shorten some expressions with ?? * shorten code + fix conversion (int) * Move account_types to config, account.web_flags to common.php * Update example.json * feature: router aliases * shorten some code + const convert * remove wrong char * fix signature on custom basedir * fix: mass teleport position validation (#214) * fix: mass teleport position validation * fix: max position * Fix execute in CLI * fix warning in reload cache in dev mode * Configurable admin panel folder * feature: plugin require more options with comma * $config_account_salt -> USE_ACCOUNT_SALT * fix forum show_thread * Update show_thread.php --------- Co-authored-by: Gabriel Pedro <gpedro@users.noreply.github.com>
156 lines
5.2 KiB
PHP
156 lines
5.2 KiB
PHP
<?php
|
|
/**
|
|
* Pages
|
|
*
|
|
* @package MyAAC
|
|
* @author Slawkens <slawkens@gmail.com>
|
|
* @copyright 2019 MyAAC
|
|
* @link https://my-aac.org
|
|
*/
|
|
defined('MYAAC') or die('Direct access not allowed!');
|
|
|
|
require_once LIBS . 'forum.php';
|
|
require_once LIBS . 'news.php';
|
|
|
|
$title = 'News Panel';
|
|
$use_datatable = true;
|
|
|
|
if (!hasFlag(FLAG_CONTENT_PAGES) && !superAdmin()) {
|
|
echo 'Access denied.';
|
|
return;
|
|
}
|
|
|
|
header('X-XSS-Protection:0');
|
|
|
|
// some constants, used mainly by database (cannot by modified without schema changes)
|
|
define('NEWS_TITLE_LIMIT', 100);
|
|
define('NEWS_BODY_LIMIT', 65535); // maximum news body length
|
|
define('ARTICLE_TEXT_LIMIT', 300);
|
|
define('ARTICLE_IMAGE_LIMIT', 100);
|
|
|
|
$name = $p_title = '';
|
|
if(!empty($action))
|
|
{
|
|
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
|
|
$p_title = isset($_REQUEST['title']) ? $_REQUEST['title'] : null;
|
|
$body = isset($_REQUEST['body']) ? stripslashes($_REQUEST['body']) : null;
|
|
$comments = isset($_REQUEST['comments']) ? $_REQUEST['comments'] : null;
|
|
$type = isset($_REQUEST['type']) ? (int)$_REQUEST['type'] : null;
|
|
$category = isset($_REQUEST['category']) ? (int)$_REQUEST['category'] : null;
|
|
$player_id = isset($_REQUEST['player_id']) ? (int)$_REQUEST['player_id'] : null;
|
|
$article_text = isset($_REQUEST['article_text']) ? $_REQUEST['article_text'] : null;
|
|
$article_image = isset($_REQUEST['article_image']) ? $_REQUEST['article_image'] : null;
|
|
$forum_section = isset($_REQUEST['forum_section']) ? $_REQUEST['forum_section'] : null;
|
|
$errors = array();
|
|
|
|
if($action == 'new') {
|
|
if(isset($forum_section) && $forum_section != '-1') {
|
|
$forum_add = Forum::add_thread($p_title, $body, $forum_section, $player_id, $account_logged->getId(), $errors);
|
|
}
|
|
|
|
if(isset($p_title) && News::add($p_title, $body, $type, $category, $player_id, isset($forum_add) && $forum_add != 0 ? $forum_add : 0, $article_text, $article_image, $errors)) {
|
|
$p_title = $body = $comments = $article_text = $article_image = '';
|
|
$type = $category = $player_id = 0;
|
|
|
|
success("Added successful.");
|
|
}
|
|
}
|
|
else if($action == 'delete') {
|
|
News::delete($id, $errors);
|
|
success("Deleted successful.");
|
|
}
|
|
else if($action == 'edit')
|
|
{
|
|
if(isset($id) && !isset($p_title)) {
|
|
$news = News::get($id);
|
|
$p_title = $news['title'];
|
|
$body = $news['body'];
|
|
$comments = $news['comments'];
|
|
$type = $news['type'];
|
|
$category = $news['category'];
|
|
$player_id = $news['player_id'];
|
|
$article_text = $news['article_text'];
|
|
$article_image = $news['article_image'];
|
|
}
|
|
else {
|
|
if(News::update($id, $p_title, $body, $type, $category, $player_id, $forum_section, $article_text, $article_image, $errors)) {
|
|
// update forum thread if exists
|
|
if(isset($forum_section) && Validator::number($forum_section)) {
|
|
$db->query("UPDATE `" . TABLE_PREFIX . "forum` SET `author_guid` = ".(int) $player_id.", `post_text` = ".$db->quote($body).", `post_topic` = ".$db->quote($p_title).", `edit_date` = " . time() . " WHERE `id` = " . $db->quote($forum_section));
|
|
}
|
|
|
|
$action = $p_title = $body = $comments = $article_text = $article_image = '';
|
|
$type = $category = $player_id = 0;
|
|
|
|
success("Updated successful.");
|
|
}
|
|
}
|
|
}
|
|
else if($action == 'hide') {
|
|
News::toggleHidden($id, $errors, $status);
|
|
success(($status == 1 ? 'Show' : 'Hide') . " successful.");
|
|
}
|
|
|
|
if(!empty($errors))
|
|
error(implode(", ", $errors));
|
|
}
|
|
|
|
$categories = array();
|
|
foreach($db->query('SELECT `id`, `name`, `icon_id` FROM `' . TABLE_PREFIX . 'news_categories` WHERE `hidden` != 1') as $cat)
|
|
{
|
|
$categories[$cat['id']] = array(
|
|
'name' => $cat['name'],
|
|
'icon_id' => $cat['icon_id']
|
|
);
|
|
}
|
|
|
|
if($action == 'edit' || $action == 'new') {
|
|
if($action == 'edit') {
|
|
$player = new OTS_Player();
|
|
$player->load($player_id);
|
|
}
|
|
|
|
$account_players = $account_logged->getPlayersList();
|
|
$account_players->orderBy('group_id', POT::ORDER_DESC);
|
|
$twig->display('admin.news.form.html.twig', array(
|
|
'action' => $action,
|
|
'news_link' => getLink(PAGE),
|
|
'news_link_form' => '?p=news&action=' . ($action == 'edit' ? 'edit' : 'new'),
|
|
'news_id' => $id ?? null,
|
|
'title' => $p_title ?? '',
|
|
'body' => isset($body) ? escapeHtml($body) : '',
|
|
'type' => $type ?? null,
|
|
'player' => isset($player) && $player->isLoaded() ? $player : null,
|
|
'player_id' => $player_id ?? null,
|
|
'account_players' => $account_players,
|
|
'category' => $category ?? 0,
|
|
'categories' => $categories,
|
|
'forum_boards' => getForumBoards(),
|
|
'forum_section' => $forum_section ?? null,
|
|
'comments' => $comments ?? null,
|
|
'article_text' => $article_text ?? null,
|
|
'article_image' => $article_image ?? null
|
|
));
|
|
}
|
|
|
|
$query = $db->query('SELECT * FROM ' . $db->tableName(TABLE_PREFIX . 'news'));
|
|
$newses = array();
|
|
foreach ($query as $_news) {
|
|
$_player = new OTS_Player();
|
|
$_player->load($_news['player_id']);
|
|
|
|
$newses[$_news['type']][] = array(
|
|
'id' => $_news['id'],
|
|
'hidden' => $_news['hidden'],
|
|
'archive_link' => getLink('news') . '/archive/' . $_news['id'],
|
|
'title' => $_news['title'],
|
|
'date' => $_news['date'],
|
|
'player_name' => isset($_player) && $_player->isLoaded() ? $_player->getName() : '',
|
|
'player_link' => isset($_player) && $_player->isLoaded() ? getPlayerLink($_player->getName(), false) : '',
|
|
);
|
|
}
|
|
|
|
$twig->display('admin.news.html.twig', array(
|
|
'newses' => $newses
|
|
));
|