* @author Slawkens * @copyright 2017 MyAAC * @version 0.0.6 * @link http://my-aac.org */ defined('MYAAC') or die('Direct access not allowed!'); if(isset($_GET['archive'])) { $title = 'News Archive'; $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'] ); } // display big news by id if(isset($_GET['id'])) { $field_name = 'date'; if($_REQUEST['id'] < 100000) $field_name = 'id'; $news = $db->query('SELECT * FROM '.$db->tableName(TABLE_PREFIX . 'news').' WHERE type = 1 AND hidden != 1 and `' . $field_name . '` = ' . (int)$_REQUEST['id'] . ''); if($news->rowCount() == 1) { if(@file_exists($template_path . '/news.php')) require($template_path . '/news.php'); else require(SYSTEM . 'templates/news.php'); $news = $news->fetch(); $author = ''; $query = $db->query('SELECT name FROM players WHERE id = ' . $db->quote($news['player_id'] . ' LIMIT 1')); if($query->rowCount() > 0) { $query = $query->fetch(); $author = $query['name']; } echo news_parse($news['title'], $news['body'], $news['date'], $categories[$news['category']]['icon_id'], $config['news_author'] ? $author : '', $news['comments'] != 0 ? getForumThreadLink($news['comments']) : NULL); } else echo 'This news doesn\'t exist or is hidden.
'; //echo '
Back to Archive'; ?>
query('SELECT * FROM '.$db->tableName(TABLE_PREFIX . 'news').' WHERE type = 1 AND hidden != 1 ORDER BY date DESC'); foreach($news_DB as $news) { $link = internalLayoutLink('news'); if($config['friendly_urls']) $link .= '/archive/' . $news['id']; else $link .= 'archive&id=' . $news['id']; echo ''; $i++; } echo '
News archives
'.date("j.n.Y", $news['date']).''.stripslashes($news['title']).'
'; return; } $title = 'Latest News'; $news_cached = false; // some constants, used mainly by database (cannot by modified without schema changes) define('NEWS', 1); define('TICKET', 2); define('ARTICLE', 3); define('BODY_LIMIT', 10000); // maximum news body length $canEdit = hasFlag(FLAG_CONTENT_NEWS) || superAdmin(); if($canEdit) { 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; $forum_section = isset($_REQUEST['forum_section']) ? $_REQUEST['forum_section'] : NULL; $errors = array(); if($action == 'add') { if(isset($forum_section) && $forum_section != '-1') { $forum_add = Forum::add($p_title, $body, $forum_section, $player_id, $account_logged->getId(), $errors); } if(News::add($p_title, $body, $type, $category, $player_id, isset($forum_add) && $forum_add != 0 ? $forum_add : 0, $errors)) { $p_title = $body = $comments = ''; $type = $category = $player_id = 0; } } else if($action == 'delete') { News::delete($id, $errors); } 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']; } else { News::update($id, $p_title, $body, $type, $category, $player_id, $comments); $action = $p_title = $body = $comments = ''; $type = $category = $player_id = 0; } } else if($action == 'hide') { News::toggleHidden($id, $errors); } if(!empty($errors)) output_errors($errors); if($cache->enabled()) { $cache->set('news_' . $template_name . '_' . NEWS, '', 120); $cache->set('news_' . $template_name . '_' . TICKET, '', 120); } } } else if($cache->enabled()) $news_cached = News::getCached(NEWS); if(!$news_cached) { $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'] ); } $tickers = $db->query( 'SELECT * FROM ' . $db->tableName(TABLE_PREFIX . 'news') . ' WHERE ' . $db->fieldName('type') . ' = ' . TICKET . ($canEdit ? '' : ' AND ' . $db->fieldName('hidden') . ' != 1') . ' ORDER BY ' . $db->fieldName('date') . ' DESC' . ' LIMIT ' . $config['news_ticker_limit']); if($tickers->rowCount() > 0) { $rows = 0; $tickers_to_add = ''; foreach($tickers as $news) { $admin_options = ''; if($canEdit) { $admin_options = ' Edit Delete ' . ($news['hidden'] != 1 ? 'Hide' : 'Show') . ' '; } $tickers_to_add .= '
'.date("j M Y", $news['date']).' -
'; //if admin show button to delete (hide) ticker $tickers_to_add .= short_text($news['body'], 60).'
'; //if admin show button to delete (hide) ticker $tickers_to_add .= $news['body'] . $admin_options . '
'; $rows++; } } } else $tickers_to_add = News::getCached(TICKET); if(isset($tickers_to_add[0])) { //show table with tickers $news_content = '
Contentbox headline
'; //add tickers list $news_content .= $tickers_to_add; //koniec $news_content .= '
'; if($cache->enabled() && !$news_cached && !$canEdit) $cache->set('news_' . $template_name . '_' . TICKET, $tickers_to_add, 120); } if(!$news_cached) { ob_start(); // newses if(@file_exists($template_path . '/news.php')) require($template_path . '/news.php'); else require(SYSTEM . 'templates/news.php'); if($canEdit) { ?> Add news
createObject('Player'); $player->load($player_id); if($player->isLoaded()) { ?>
news
Title:
Type:
Author:
:
Category: $cat): ?> />
Create forum thread in section:
query( 'SELECT * FROM '.$db->tableName(TABLE_PREFIX . 'news'). ' WHERE type = ' . NEWS . ($canEdit ? '' : ' AND hidden != 1') . ' ORDER BY date' . ' DESC LIMIT ' . $config['news_limit']); if($newses->rowCount() > 0) { foreach($newses as $news) { $author = ''; $query = $db->query('SELECT name FROM players WHERE id = ' . $db->quote($news['player_id'] . ' LIMIT 1')); if($query->rowCount() > 0) { $query = $query->fetch(); $author = $query['name']; } $admin_options = ''; if($canEdit) { $admin_options = '

Edit Delete ' . ($news['hidden'] != 1 ? 'Hide' : 'Show') . ' '; } echo news_parse($news['title'], $news['body'] . $admin_options, $news['date'], $categories[$news['category']]['icon_id'], $config['news_author'] ? $author : '', $news['comments'] != 0 ? getForumThreadLink($news['comments']) : NULL); } } $tmp_content = ob_get_contents(); ob_end_clean(); if($cache->enabled() && !$canEdit) $cache->set('news_' . $template_name . '_' . NEWS, $tmp_content, 120); echo $tmp_content; } else echo $news_cached; class News { static public function add($title, $body, $type, $category, $player_id, $comments, &$errors) { global $db; if(strlen($body) <= BODY_LIMIT) { if(isset($title[0]) && isset($body[0])) { $db->insert(TABLE_PREFIX . 'news', array('title' => $title, 'body' => $body, 'type' => $type, 'date' => time(), 'category' => $category, 'player_id' => isset($player_id) ? $player_id : 0, 'comments' => $comments)); } else $errors[] = 'Please fill all inputs.'; } else $errors[] = 'News content cannot be longer than ' . BODY_LIMIT . ' characters.'; return !count($errors); } static public function get($id) { global $db; return $db->select(TABLE_PREFIX . 'news', array('id' => $id)); } static public function update($id, $title, $body, $type, $category, $player_id, $comments) { global $db; $db->update(TABLE_PREFIX . 'news', array('title' => $title, 'body' => $body, 'type' => $type, 'category' => $category, 'last_modified_by' => isset($player_id) ? $player_id : 0, 'last_modified_date' => time(), 'comments' => $comments), array('id' => $id)); } static public function delete($id, &$errors) { global $db; if(isset($id)) { if($db->select(TABLE_PREFIX . 'news', array('id' => $id)) !== false) $db->delete(TABLE_PREFIX . 'news', array('id' => $id)); else $errors[] = 'News with id ' . $id . ' does not exists.'; } else $errors[] = 'News id not set.'; return !count($errors); } static public function toggleHidden($id, &$errors) { global $db; if(isset($id)) { $query = $db->select(TABLE_PREFIX . 'news', array('id' => $id)); if($query !== false) $db->update(TABLE_PREFIX . 'news', array('hidden' => ($query['hidden'] == 1 ? 0 : 1)), array('id' => $id)); else $errors[] = 'News with id ' . $id . ' does not exists.'; } else $errors[] = 'News id not set.'; return !count($errors); } static public function getCached($type) { global $cache, $config, $template_name; if($cache->enabled()) { $tmp = ''; if($cache->fetch('news_' . $template_name . '_' . $type, $tmp) && isset($tmp[0])) { return $tmp; } } return false; } } class Forum { static public function add($title, $body, $section_id, $player_id, $account_id, &$errors) { global $db; $thread_id = 0; if($db->insert(TABLE_PREFIX . 'forum', array('id' => 'null', 'first_post' => 0, 'last_post' => time(), 'section' => $section_id, 'replies' => 0, 'views' => 0, 'author_aid' => isset($account_id) ? $account_id : 0, 'author_guid' => isset($player_id) ? $player_id : 0, 'post_text' => $body, 'post_topic' => $title, 'post_smile' => 0, 'post_date' => time(), 'last_edit_aid' => 0, 'edit_date' => 0, 'post_ip' => $_SERVER['REMOTE_ADDR']))) { $thread_id = $db->lastInsertId(); $db->query("UPDATE `" . TABLE_PREFIX . "forum` SET `first_post`=".(int) $thread_id." WHERE `id` = ".(int) $thread_id); } return $thread_id; } } ?>