function msg_ali_send($message, $subject, $ally_rank_id = 0, $ally_id = 0)
{
    global $time_now, $user;
    $ally_id = $ally_id ? $ally_id : $user['ally_id'];
    $query = doquery("SELECT id, username FROM {{users}} WHERE ally_id = '{$ally_id}'" . ($ally_rank_id >= 0 ? " AND ally_rank_id = {$ally_rank_id}" : ''));
    $list = '';
    while ($u = mysql_fetch_assoc($query)) {
        $sendList[] = $u['id'];
        $list .= "<br>{$u['username']} ";
    }
    msg_send_simple_message($sendList, $user['id'], $time_now, MSG_TYPE_ALLIANCE, $user['username'], $subject, sys_bbcodeParse($message, true));
    return $list;
}
Beispiel #2
0
/*
 * common.php
 *
 * Common init file
 *
 * @version 1.1 Security checks by Gorlum for http://supernova.ws
 */
require_once 'includes/init.php';
$user = sn_autologin(!$allow_anonymous);
$sys_user_logged_in = $user && is_array($user) && isset($user['id']) && $user['id'];
$language = $language ? $language : $user['lang'];
lng_include('system');
lng_include('tech');
if ($config->game_disable) {
    $disable_reason = sys_bbcodeParse($config->game_disable_reason);
    if ($user['authlevel'] < 1 || !(defined('IN_ADMIN') && IN_ADMIN)) {
        message($disable_reason, $config->game_name);
        ob_end_flush();
        die;
    } else {
        print "<div align=center style='font-size: 24; font-weight: bold; color:red;'>{$disable_reason}</div><br>";
    }
}
if (!($allow_anonymous || $sys_user_logged_in) || defined('IN_ADMIN') && IN_ADMIN && $user['authlevel'] < 1) {
    setcookie($config->COOKIE_NAME, '', time() - 3600 * 25);
    header('Location: ' . (IN_ADMIN == true ? '../' : '') . 'login.php');
    ob_end_flush();
    die;
}
if ($user['authlevel'] >= 2 && file_exists(SN_ROOT_PHYSICAL . 'badqrys.txt') && @filesize(SN_ROOT_PHYSICAL . 'badqrys.txt') > 0) {
Beispiel #3
0
        doquery("UPDATE {{users}} SET `news_lastread` = `news_lastread` + 1;");
        if (sys_get_param_int('news_mass_mail')) {
            $text = $_POST['text'];
            if ($detail_url) {
                // TODO: Move merging detail url to template
                $text = "{$text} <a href=\"{$detail_url}\">{$lang['news_more']}</a>";
            }
            msg_send_simple_message('*', 0, 0, MSG_TYPE_ADMIN, $lang['sys_administration'], $lang['news_title'], $text);
        }
        $mode = '';
    }
    switch ($mode) {
        case 'del':
            doquery("DELETE FROM {{announce}} WHERE `idAnnounce`={$announce_id} LIMIT 1;");
            $mode = '';
            break;
        case 'edit':
            $template->assign_var('ID', $announce_id);
        case 'copy':
            $announce = doquery("SELECT * FROM {{announce}} WHERE `idAnnounce`={$announce_id} LIMIT 1;", '', true);
            break;
    }
} else {
    $annQuery = 'WHERE UNIX_TIMESTAMP(`tsTimeStamp`)<=' . intval($time_now);
}
$allAnnounces = doquery("SELECT *, UNIX_TIMESTAMP(`tsTimeStamp`) AS unix_time FROM {{announce}} {$annQuery} ORDER BY `tsTimeStamp` DESC");
$template->assign_vars(array('AUTHLEVEL' => $user['authlevel'], 'total' => mysql_num_rows($allAnnounces), 'MODE' => $mode, 'tsTimeStamp' => $announce['tsTimeStamp'], 'strAnnounce' => $announce['strAnnounce'], 'DETAIL_URL' => $announce['detail_url'], 'time_now' => $time_now));
while ($announce = mysql_fetch_assoc($allAnnounces)) {
    $template->assign_block_vars('announces', array('ID' => $announce['idAnnounce'], 'TIME' => $announce['tsTimeStamp'], 'ANNOUNCE' => sys_bbcodeParse($announce['strAnnounce']), 'DETAIL_URL' => $announce['detail_url'], 'NEW' => $announce['unix_time'] + $config->game_news_actual > $time_now, 'FUTURE' => $announce['unix_time'] > $time_now));
}
display($template, $lang['news_title']);
Beispiel #4
0
    if ($last_confirm['id'] && $time_now - $last_confirm['unix_time'] <= 3 * 24 * 60 * 60) {
        doquery("DELETE FROM {{confirmations}} WHERE `id` = '{$last_confirm['id']}' LIMIT 1;");
        $user_data = doquery("SELECT * FROM {{users}} WHERE `id` = '{$last_confirm['id_user']}' LIMIT 1;", '', true);
        if (!$user_data['id']) {
            message($lang['log_lost_err_code'], $lang['sys_error']);
        }
        if ($user_data['authlevel']) {
            message($lang['log_lost_err_admin'], $lang['sys_error']);
        }
        $new_password = sys_random_string();
        $md5 = md5($new_password);
        $result = doquery("UPDATE {{users}} SET `password` = '{$md5}' WHERE `id` = '{$last_confirm['id_user']}' LIMIT 1;");
        if ($result) {
            $message = sprintf($lang['log_lost_email_pass'], $new_password);
            @($result = mymail($last_confirm['email'], $lang['log_lost_email_title'], htmlspecialchars($message)));
            $message = sys_bbcodeParse($message) . '<br><br>';
            if ($result) {
                $message = $message . $lang['log_lost_sent_pass'];
            } else {
                $message = $message . $lang['log_lost_err_sending'];
            }
            message($message, $lang['log_lost_header']);
        } else {
            message($lang['log_lost_err_change'], $lang['sys_error']);
        }
    } else {
        message($lang['log_lost_err_code'], $lang['sys_error']);
    }
} elseif ($email) {
    $user_id = doquery("SELECT `id` FROM {{users}} WHERE `email_2` = '{$email}' LIMIT 1;", '', true);
    if (!$user_id['id']) {
Beispiel #5
0
    // Checking for user name & request text - in case if it was request to adding new request
    if (isset($new_friend_row['id']) && ($new_request_text = sys_get_param_str('request_text'))) {
        $check_relation = doquery("SELECT `BUDDY_ID` FROM {{buddy}} WHERE\n      (`BUDDY_SENDER_ID` = {$user['id']} AND `BUDDY_OWNER_ID` = {$new_friend_row['id']})\n      OR\n      (`BUDDY_SENDER_ID` = {$new_friend_row['id']} AND `BUDDY_OWNER_ID` = {$user['id']})\n      LIMIT 1 FOR UPDATE;", true);
        if (isset($check_relation['BUDDY_ID'])) {
            throw new exception('buddy_err_adding_exists', ERR_WARNING);
        }
        msg_send_simple_message($new_friend_row['id'], $user['id'], SN_TIME_NOW, MSG_TYPE_PLAYER, $user['username'], $lang['buddy_msg_adding_title'], sprintf($lang['buddy_msg_adding_text'], $user['username']));
        doquery($q = "INSERT INTO {{buddy}} SET `BUDDY_SENDER_ID` = {$user['id']}, `BUDDY_OWNER_ID` = {$new_friend_row['id']}, `BUDDY_REQUEST` = '{$new_request_text}';");
        sn_db_transaction_commit();
        throw new exception('buddy_err_adding_none', ERR_NONE);
    }
} catch (exception $e) {
    $result[] = array('STATUS' => in_array($e->getCode(), array(ERR_NONE, ERR_WARNING, ERR_ERROR)) ? $e->getCode() : ERR_ERROR, 'MESSAGE' => $lang[$e->getMessage()]);
}
// TODO - Это просто заглушка. Дойдут руки - разобраться, в чём проблема
sn_db_transaction_rollback();
$query = db_buddy_list_by_user($user['id']);
while ($row = db_fetch($query)) {
    $row['BUDDY_REQUEST'] = sys_bbcodeParse($row['BUDDY_REQUEST']);
    $row['BUDDY_ACTIVE'] = $row['BUDDY_STATUS'] == BUDDY_REQUEST_ACTIVE;
    $row['BUDDY_DENIED'] = $row['BUDDY_STATUS'] == BUDDY_REQUEST_DENIED;
    $row['BUDDY_INCOMING'] = $row['BUDDY_OWNER_ID'] == $user['id'];
    $row['BUDDY_ONLINE'] = floor((SN_TIME_NOW - $row['onlinetime']) / 60);
    $template_result['.']['buddy'][] = $row;
}
$template_result += array('PAGE_HEADER' => $lang['buddy_buddies'], 'PAGE_HINT' => $lang['buddy_hint'], 'USER_ID' => $user['id'], 'REQUEST_USER_ID' => isset($new_friend_row['id']) ? $new_friend_row['id'] : 0, 'REQUEST_USER_NAME' => isset($new_friend_row['username']) ? $new_friend_row['username'] : '');
$template_result['.']['result'] = is_array($template_result['.']['result']) ? $template_result['.']['result'] : array();
$template_result['.']['result'] += $result;
$template = gettemplate('buddy', true);
$template->assign_recursive($template_result);
display($template);
Beispiel #6
0
                $tmp = "lime>{$lang['sys_online']}";
            } elseif ($last_active < 60 * 15) {
                $tmp = "yellow>{$lang['sys_lessThen15min']}";
            } else {
                $tmp = "red>{$lang['sys_offline']}";
            }
        } else {
            $tmp = "orange>-";
        }
    }
    return "<font color={$tmp}</font>";
}
lng_include('buddy');
$userID = intval(isset($_GET['u']) ? $_GET['u'] : $_POST['u']);
$buddyID = intval(isset($_GET['buddyID']) ? $_GET['buddyID'] : $_POST['buddyID']);
$text = mysql_real_escape_string(sys_bbcodeParse(strip_tags($_POST['text'])));
$mode = mysql_real_escape_string(isset($_GET['mode']) ? $_GET['mode'] : $_POST['mode']);
if ($userID) {
    if ($userID == $user['id']) {
        message($lang['bud_sys_cantFriendYourself'], $lang['bud_req_title'], 'buddy.php');
    }
    $qryRes = doquery("SELECT sender FROM {{buddy}} WHERE `sender` = '{$user['id']}' AND `owner` = '{$userID}';", 'buddy', true);
    if ($qryRes) {
        message($lang['bud_sys_cantFriendAgain'], $lang['bud_req_title'], 'buddy.php');
    }
    if ($text) {
        doquery("INSERT INTO `{{buddy}}` SET `sender` = '{$user['id']}', `owner` = '{$userID}', `active` = '0', `text` = '{$text}';");
        message($lang['Request_sent'], $lang['Buddy_request'], 'buddy.php');
    } else {
        $friend = doquery("SELECT `id`, `username` FROM `{{users}}` WHERE `id` = '{$userID}' LIMIT 1;", "", true);
        $friend = array_merge($friend, $lang);
Beispiel #7
0
function qst_templatize($quest, $for_display = true)
{
    global $lang;
    $tmp = array();
    foreach ($quest['quest_rewards_list'] as $quest_reward_id => $quest_reward_amount) {
        $tmp[] = array('ID' => $quest_reward_id, 'NAME' => $for_display ? str_replace(' ', '&nbsp;', $lang['tech'][$quest_reward_id]) : $lang['tech'][$quest_reward_id], 'AMOUNT' => $quest_reward_amount);
    }
    return array('QUEST_ID' => $quest['quest_id'], 'QUEST_NAME' => $quest['quest_name'], 'QUEST_TYPE' => $quest['quest_type'], 'QUEST_DESCRIPTION' => $for_display ? sys_bbcodeParse($quest['quest_description']) : $quest['quest_description'], 'QUEST_CONDITIONS' => $quest['quest_condition'], 'QUEST_UNIT_ID' => $quest['quest_unit_id'], 'QUEST_UNIT_NAME' => $lang['tech'][$quest['quest_unit_id']], 'QUEST_UNIT_AMOUNT' => $quest['quest_unit_amount'], 'QUEST_STATUS' => intval($quest['quest_status_status']), 'QUEST_STATUS_NAME' => $lang['qst_status_list'][intval($quest['quest_status_status'])], 'quest_rewards_list' => $tmp);
}
Beispiel #8
0
 protected function password_reset_confirm()
 {
     global $lang, $config;
     if (!$this->is_password_reset_confirm) {
         return $this->account_login_status;
     }
     if ($this->account_login_status != LOGIN_UNDEFINED) {
         return $this->account_login_status;
     }
     // Проверяем поддержку сброса пароля
     if (!$this->is_feature_supported(AUTH_FEATURE_PASSWORD_RESET)) {
         return $this->account_login_status;
     }
     try {
         $code_unsafe = sys_get_param_str_unsafe('password_reset_code');
         if (empty($code_unsafe)) {
             throw new Exception(PASSWORD_RESTORE_ERROR_CODE_EMPTY, ERR_ERROR);
         }
         sn_db_transaction_start();
         $confirmation = $this->confirmation->db_confirmation_get_by_type_and_code(CONFIRM_PASSWORD_RESET, $code_unsafe);
         // OK 4.5
         if (empty($confirmation)) {
             throw new Exception(PASSWORD_RESTORE_ERROR_CODE_WRONG, ERR_ERROR);
         }
         if (SN_TIME_NOW - strtotime($confirmation['create_time']) > AUTH_PASSWORD_RESET_CONFIRMATION_EXPIRE) {
             throw new Exception(PASSWORD_RESTORE_ERROR_CODE_TOO_OLD, ERR_ERROR);
         }
         unset($this->account);
         $this->account = new Account($this->db);
         if (!$this->account->db_get_by_email($confirmation['email'])) {
             throw new Exception(PASSWORD_RESTORE_ERROR_CODE_OK_BUT_NO_ACCOUNT_FOR_EMAIL, ERR_ERROR);
         }
         $new_password_unsafe = $this->make_random_password();
         $salt_unsafe = $this->password_salt_generate();
         if (!$this->account->db_set_password($new_password_unsafe, $salt_unsafe)) {
             // Ошибка смены пароля
             throw new Exception(AUTH_ERROR_INTERNAL_PASSWORD_CHANGE_ON_RESTORE, ERR_ERROR);
         }
         $this->account_login_status = LOGIN_UNDEFINED;
         $this->remember_me = 1;
         $this->cookie_set();
         $this->login_cookie();
         if ($this->account_login_status == LOGIN_SUCCESS) {
             // TODO - НЕ ОБЯЗАТЕЛЬНО ОТПРАВЛЯТЬ ЧЕРЕЗ ЕМЕЙЛ! ЕСЛИ ЭТО ФЕЙСБУЧЕК ИЛИ ВКШЕЧКА - МОЖНО ЧЕРЕЗ ЛС ПИСАТЬ!!
             $message_header = sprintf($lang['log_lost_email_title'], $config->game_name);
             $message = sprintf($lang['log_lost_email_pass'], $config->game_name, $this->account->account_name, $new_password_unsafe);
             @($operation_result = mymail($confirmation['email'], $message_header, htmlspecialchars($message)));
             // $users_translated = classSupernova::$auth->db_translate_get_users_from_account_list($this->provider_id, $this->account->account_id); // OK 4.5
             $users_translated = PlayerToAccountTranslate::db_translate_get_users_from_account_list($this->provider_id, $this->account->account_id);
             // OK 4.5
             if (!empty($users_translated)) {
                 // Отправляем в лички письмо о сбросе пароля
                 // ПО ОПРЕДЕЛЕНИЮ в $users_translated только
                 //    - аккаунты, поддерживающие сброс пароля
                 //    - список аккаунтов, имеющих тот же емейл, что указан в Подтверждении
                 //    - игроки, привязанные только к этим аккаунтам
                 // Значит им всем сразу скопом можно отправлять сообщения
                 $message = sprintf($lang['sys_password_reset_message_body'], $new_password_unsafe);
                 $message = sys_bbcodeParse($message) . '<br><br>';
                 // msg_send_simple_message($found_provider->data[F_USER_ID], 0, SN_TIME_NOW, MSG_TYPE_ADMIN, $lang['sys_administration'], $lang['sys_login_register_message_title'], $message);
                 foreach ($users_translated as $user_id => $providers_list) {
                     msg_send_simple_message($user_id, 0, SN_TIME_NOW, MSG_TYPE_ADMIN, $lang['sys_administration'], $lang['sys_login_register_message_title'], $message);
                 }
             } else {
                 // Фигня - может быть и пустой, если у нас есть только аккаунт, но нет пользователей
                 // throw new Exception(AUTH_PASSWORD_RESET_INSIDE_ERROR_NO_ACCOUNT_FOR_CONFIRMATION, ERR_ERROR);
             }
         }
         $this->confirmation->db_confirmation_delete_by_type_and_email(CONFIRM_PASSWORD_RESET, $confirmation['email']);
         // OK 4.5
         sn_db_transaction_commit();
         sys_redirect('overview.php');
     } catch (Exception $e) {
         sn_db_transaction_rollback();
         $this->account_login_status = $e->getMessage();
     }
     return $this->account_login_status;
 }
Beispiel #9
0
function note_assign(&$template, $note_row)
{
    global $note_priority_classes, $lang;
    $template->assign_block_vars('note', array('ID' => $note_row['id'], 'TIME' => $note_row['time'], 'TIME_TEXT' => date(FMT_DATE_TIME, $note_row['time']), 'PRIORITY' => $note_row['priority'], 'PRIORITY_CLASS' => $note_priority_classes[$note_row['priority']], 'PRIORITY_TEXT' => $lang['sys_notes_priorities'][$note_row['priority']], 'TITLE' => htmlentities($note_row['title'], ENT_COMPAT, 'UTF-8'), 'GALAXY' => intval($note_row['galaxy']), 'SYSTEM' => intval($note_row['system']), 'PLANET' => intval($note_row['planet']), 'PLANET_TYPE' => intval($note_row['planet_type']), 'PLANET_TYPE_TEXT' => $lang['sys_planet_type'][$note_row['planet_type']], 'PLANET_TYPE_TEXT_SHORT' => $lang['sys_planet_type_sh'][$note_row['planet_type']], 'TEXT' => sys_bbcodeParse(htmlentities($note_row['text'], ENT_COMPAT, 'UTF-8')), 'TEXT_EDIT' => htmlentities($note_row['text'], ENT_COMPAT, 'UTF-8'), 'STICKY' => intval($note_row['sticky'])));
}
Beispiel #10
0
function sec_restore_password_confirm($confirm_safe, &$result)
{
    global $lang, $config;
    try {
        $last_confirm = doquery("SELECT *, UNIX_TIMESTAMP(`create_time`) as `unix_time` FROM {{confirmations}} WHERE `code` = '{$confirm_safe}' AND `type` = " . CONFIRM_PASSWORD_RESET . " LIMIT 1;", true);
        if (!isset($last_confirm['id'])) {
            throw new exception(PASSWORD_RESTORE_ERROR_CODE_WRONG);
        }
        if (SN_TIME_NOW - $last_confirm['unix_time'] > PERIOD_DAY) {
            throw new exception(PASSWORD_RESTORE_ERROR_CODE_TOO_OLD);
        }
        $new_password = sys_random_string(8, SN_SYS_SEC_CHARS_CONFIRMATION);
        // $salt_unsafe = sec_password_salt_generate();
        // $md5 = sec_password_encode($new_password, $salt_unsafe);
        // $salt_safe = db_escape($salt_unsafe);
        //if(!db_user_set_by_id($last_confirm['id_user'], "`password` = '{$md5}', `salt` = '{$salt_safe}'")) {
        if (!sec_password_change($last_confirm['id_user'], $new_password, false, 1)) {
            // OK
            throw new exception(PASSWORD_RESTORE_ERROR_CHANGE);
        }
        $message = sprintf($lang['log_lost_email_pass'], $config->game_name, $new_password);
        @($operation_result = mymail($last_confirm['email'], sprintf($lang['log_lost_email_title'], $config->game_name), htmlspecialchars($message)));
        $message = sys_bbcodeParse($message) . '<br><br>';
        $result[F_PASSWORD_NEW] = $new_password;
        $result[F_LOGIN_STATUS] = $operation_result ? PASSWORD_RESTORE_SUCCESS_PASSWORD_SENT : PASSWORD_RESTORE_SUCCESS_PASSWORD_SEND_ERROR;
        $result[F_LOGIN_MESSAGE] = $message . ($operation_result ? $lang['log_lost_sent_pass'] : $lang['log_lost_err_sending']);
        doquery("DELETE FROM {{confirmations}} WHERE `id` = '{$last_confirm['id']}' AND `type` = " . CONFIRM_PASSWORD_RESET . " LIMIT 1;");
        // sys_redirect('login.php');
    } catch (exception $e) {
        $result[F_LOGIN_STATUS] = $e->getMessage();
    }
}
Beispiel #11
0
}
sec_login($result);
$user = $result[F_LOGIN_USER];
unset($result[F_LOGIN_USER]);
$template_result += $result;
unset($result);
// В этой точке пользователь либо авторизирован - и есть его запись - либо пользователя гарантированно нет в базе
// Если сообщение пустое - заполняем его по коду
$template_result[F_LOGIN_MESSAGE] = isset($template_result[F_LOGIN_MESSAGE]) && $template_result[F_LOGIN_MESSAGE] ? $template_result[F_LOGIN_MESSAGE] : $lang['sys_login_messages'][$template_result[F_LOGIN_STATUS]];
// Это уже переключаемся на пользовательский язык с откатом до языка в параметрах запроса
$lang->lng_switch(sys_get_param_str('lang'));
global $dpath;
$dpath = $user["dpath"] ? $user["dpath"] : DEFAULT_SKINPATH;
$config->db_loadItem('game_disable') == GAME_DISABLE_INSTALL ? define('INSTALL_MODE', GAME_DISABLE_INSTALL) : false;
if ($template_result[F_GAME_DISABLE] = $config->game_disable) {
    $template_result[F_GAME_DISABLE_REASON] = sys_bbcodeParse($config->game_disable == GAME_DISABLE_REASON ? $config->game_disable_reason : $lang['sys_game_disable_reason'][$config->game_disable]);
    if (defined('IN_API')) {
        return;
    }
    if (($user['authlevel'] < 1 || !(defined('IN_ADMIN') && IN_ADMIN)) && !(defined('INSTALL_MODE') && defined('LOGIN_LOGOUT'))) {
        message($template_result[F_GAME_DISABLE_REASON], $config->game_name);
        ob_end_flush();
        die;
    }
}
// TODO ban
if ($template_result[F_BANNED_STATUS] && !$skip_ban_check) {
    if (defined('IN_API')) {
        return;
    }
    $bantime = date(FMT_DATE_TIME, $template_result[F_BANNED_STATUS]);
Beispiel #12
0
function qst_templatize($quest, $for_display = true)
{
    global $lang;
    return array('QUEST_ID' => $quest['quest_id'], 'QUEST_NAME' => $quest['quest_name'], 'QUEST_TYPE' => $quest['quest_type'], 'QUEST_DESCRIPTION' => $for_display ? sys_bbcodeParse($quest['quest_description']) : $quest['quest_description'], 'QUEST_CONDITIONS' => $quest['quest_condition'], 'QUEST_REWARDS_ID' => $quest['quest_rewards_id'], 'QUEST_REWARDS_NAME' => $lang['tech'][$quest['quest_rewards_id']], 'QUEST_REWARDS_AMOUNT' => $quest['quest_rewards_amount'], 'QUEST_UNIT_ID' => $quest['quest_unit_id'], 'QUEST_UNIT_NAME' => $lang['tech'][$quest['quest_unit_id']], 'QUEST_UNIT_AMOUNT' => $quest['quest_unit_amount'], 'QUEST_STATUS' => $quest['quest_status_status'], 'QUEST_STATUS_NAME' => $lang['qst_status_list'][$quest['quest_status_status']]);
}
Beispiel #13
0
$day = date('d');
$month = $lang['months'][date('m')];
$year = date('Y');
$hour = date('H');
$min = date('i');
$sec = date('s');
//Подсчет кол-ва онлайн и кто онлайн
$time = $time_now - 15 * 60;
$OnlineUsersNames2 = doquery("SELECT `username` FROM {{users}} WHERE `onlinetime`>'{$time}'");
/*
//Последние сообщения чата.
$mess = doquery("SELECT `user`,`message` FROM {{chat}} WHERE `ally_id` = '0' ORDER BY `messageid` DESC LIMIT 5");
$msg = '<table>';
while ($result = mysql_fetch_assoc($mess)) {
  //$str = substr($result['message'], 0, 85);
  $str = $result['message'];
  $usr = $result['user'];
  $msg .= "<tr><td align=\"left\">".$usr.":</td><td>".$str."</td></tr>";
}
$msg .= '</table>';
*/
// -----------------------------------------------------------------------------------------------
// News Frame ...
if ($config->game_news_overview) {
    $lastAnnounces = doquery("SELECT *, UNIX_TIMESTAMP(`tsTimeStamp`) AS unix_time FROM {{announce}} WHERE UNIX_TIMESTAMP(`tsTimeStamp`)<={$time_now} ORDER BY `tsTimeStamp` DESC LIMIT {$config->game_news_overview}");
    while ($lastAnnounce = mysql_fetch_assoc($lastAnnounces)) {
        $template->assign_block_vars('news', array('TIME' => $lastAnnounce['tsTimeStamp'], 'ANNOUNCE' => sys_bbcodeParse($lastAnnounce['strAnnounce']), 'DETAIL_URL' => $lastAnnounce['detail_url'], 'IS_NEW' => $lastAnnounce['unix_time'] + $config->game_news_actual > $time_now));
    }
}
$template->assign_vars(array('TIME_NOW' => $time_now, 'TIME_TEXT' => "{$day_of_week}, {$day} {$month} {$year} {$lang['ov_of_year']},", 'USERS_ONLINE' => mysql_num_rows($OnlineUsersNames2), 'USERS_TOTAL' => $config->users_amount, 'USER_ID' => $user['id'], 'USER_AUTHLEVEL' => $user['authlevel'], 'user_username' => $user['username'], 'NEW_MESSAGES' => $user['new_message'], 'REGISTRATION_DATE' => date(FMT_DATE_TIME, $user['register_time']), 'builder_xp' => pretty_number($user['xpminier']), 'builder_lvl' => pretty_number($user['lvl_minier']), 'builder_lvl_up' => pretty_number(rpg_get_miner_xp($user['lvl_minier'])), 'raid_xp' => pretty_number($user['xpraid']), 'raid_lvl' => pretty_number($user['lvl_raid']), 'raid_lvl_up' => pretty_number(rpg_get_raider_xp($user['lvl_raid'])), 'raids' => pretty_number($user['raids']), 'raidswin' => pretty_number($user['raidswin']), 'raidsloose' => pretty_number($user['raidsloose']), 'user_points' => pretty_number($StatRecord['build_points']), 'user_fleet' => pretty_number($StatRecord['fleet_points']), 'player_points_tech' => pretty_number($StatRecord['tech_points']), 'user_defs_points' => pretty_number($StatRecord['defs_points']), 'total_points' => pretty_number($StatRecord['total_points']), 'user_rank' => $StatRecord['total_rank'], 'RANK_DIFF' => $StatRecord['total_old_rank'] - $StatRecord['total_rank'], 'GAME_NEWS_OVERVIEW' => $config->game_news_overview));
display(parsetemplate($template, $parse), "{$lang['imp_imperator']} {$user['username']}");