maksgolubovskiy
Участник
- Сообщения
- 118
- Реакции
- 13
- Баллы
- 18
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature currently requires accessing the site using the built-in Safari browser.
<?php
include_once "../inc/start.php";
include_once "../inc/protect.php";
if(empty($_POST['phpaction'])) {
log_error("Прямой вызов actions.php");
exit('Ошибка: [Прямой вызов инклуда]');
}
if($conf->token == 1 && ($_SESSION['token'] != clean($_POST['token'], null))) {
log_error("Неверный токен");
exit('Ошибка: [Неверный токен]');
}
/* Авторизация админа
=========================================*/
if(isset($_POST['admin_login'])) {
if(!validate_captcha($conf->captcha, $_POST["captcha"])) {
exit('<p class="text-danger">Неверно введена капча!</p>');
}
$password = check($_POST['password'], null);
if(empty($password)) {
exit('<p class="text-danger">Вы ввели не всю информацию!</p>');
}
$U = new Users($pdo);
$ip = get_ip();
$invalid_auths = $U->check_to_invalid_auth($ip);
if($invalid_auths > 2) {
log_error("Блокировка за неправильный ввод паролей (Админ Центр)");
exit('<p class="text-danger">Вы заблокированы на 15 минут. Попробуйте позже.</p>');
}
$password = $U->convert_password($password, $conf->salt);
if($password != $conf->password) {
$invalid_auths = $U->up_invalid_auths($ip);
log_error("Попытка: ".$invalid_auths."/3. Введеные данные неверны");
exit('<p class="text-danger">Попытка: '.$invalid_auths.'/3. Введеные данные неверны.</p>');
} else {
if($invalid_auths) {
$U->dell_invalid_auths($ip);
}
if($conf->ip_protect == 1) {
$SC->admin_ip = $ip;
}
$_SESSION['admin'] = "yes";
$_SESSION['admin_cache'] = $SC->get_admin_cache($password);
write_log("Успешная авторизация в Админ Центре");
exit("<script>reset_page();</script>");
}
}
/* Авторизация пользователя
=========================================*/
if(isset($_POST['user_login'])) {
$login = check($_POST['login'], null);
$password = check($_POST['password'], null);
if(empty($login) or empty($password)) {
exit('<p class="text-danger">Вы ввели не всю информацию!</p>');
}
$U = new Users($pdo);
$ip = get_ip();
$invalid_auths = $U->check_to_invalid_auth($ip);
if($invalid_auths > 2) {
log_error("Блокировка за неправильный ввод паролей (Сайт)");
exit('<p class="text-danger">Вы заблокированы на 15 минут. Попробуйте позже.</p>');
}
$password = $U->convert_password($password, $conf->salt);
$STH = $pdo->prepare("SELECT `id`, `rights`, `active`, `password`, `login`, `protect`, `protect`, `multi_account` FROM `users` WHERE `password`=:password AND `login`=:login LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$STH->execute(array(':password' => $password, ':login' => $login));
$user = $STH->fetch();
if(empty($user->id)) {
$invalid_auths = $U->up_invalid_auths($ip);
log_error("Попытка: ".$invalid_auths."/3. Введеные данные неверны");
exit('<p class="text-danger">Попытка: '.$invalid_auths.'/3. Введеные данные неверны.</p>');
} else {
if($invalid_auths) {
$U->dell_invalid_auths($ip);
}
if($user->active != 1) {
exit('<p class="text-danger">Пожалуйста, активируйте аккаунт, инструкция выслана на Ваш E-mail!</p>');
}
$U->auth_user($SC, $user->protect, $user->password, $user->login, $user->id, $user->rights, $user->multi_account);
if(is_worthy("z")) {
log_error("Попытка авторизации забаненного аккаунта");
$SC->unset_user_session();
exit('<p class="text-danger">Вы заблокированы на 15 минут. Попробуйте позже.</p>');
}
if(is_worthy("x")) {
log_error("Попытка авторизации забаненного аккаунта (ip+cookies)");
$SC->unset_user_session();
$STH = $pdo->prepare("INSERT INTO `users__blocked` (`ip`) VALUES (:ip)");
$STH->execute(array('ip' => $ip));
$SC->set_cookie("point", "1");
exit('<p class="text-danger">Вы заблокированы.</p>');
}
$SC->set_user_cookie();
write_log("Успешная авторизация на сайте");
exit("<script>reset_page();</script>");
}
}
/* Регистрация нового пользователя
=========================================*/
if(isset($_POST['registration'])) {
if(isset($config_additional['off_standart_registration'])) {
exit();
}
if(!validate_captcha($conf->captcha, $_POST["captcha"])) {
exit('<p class="text-danger">Неверно введена капча!</p>');
}
$login = check($_POST['login'], null);
$password = check($_POST['password'], null);
$password2 = check($_POST['password2'], null);
$email = check($_POST['email'], null);
if(empty($login) or empty($password) or empty($password2) or empty($email)) {
exit('<p class="text-danger">Вы ввели не всю информацию. Заполните все поля!</p>');
}
$U = new Users($pdo);
if(!$U->check_to_flood($conf->captcha)) {
exit('<p class="text-danger">Вы слишком часто регистрируете аккаунты!</p>');
}
if(!$U->check_login_lenght($login)) {
exit('<p class="text-danger">Логин должен состоять не менее чем из 3 символов и не более чем из 30.</p>');
}
if(!$U->check_login_composition($login)) {
exit('<p class="text-danger">В логине разрешается использовать только буквы и цифры.</p>');
}
if(!$U->check_login_busyness($login)) {
exit('<p class="text-danger">Введеный Вами логин уже зарегистрирован!</p>');
}
if(!$U->check_password_lenght($password)) {
exit('<p class="text-danger">Пароль должен состоять не менее чем из 6 символов и не более чем из 15.</p>');
}
if($password != $password2) {
exit('<p class="text-danger">Введеные пароли не совпадают</p>');
}
$password = $U->convert_password($password, $conf->salt);
if(!$U->check_email($email)) {
exit('<p class="text-danger">Неверно введен E-mail!</p>');
}
if(!$U->check_email_busyness($email)) {
exit('<p class="text-danger">Введеный Вами E-mail уже зарегистрирован!</p>');
}
if($U->entry_user($login, $password, $email, $conf->conf_us)) {
$answer = $U->after_registration_actions($SC, $conf->salt, $conf->name, $login, $full_site_host);
if($answer['message'] != 'error') {
echo '<p class="text-success">'.$answer['message'].'</p>';
sendmail($email, $answer['letter']['subject'], $answer['letter']['message'], $pdo);
}
exit();
} else {
exit('<p class="text-danger">Ошибка! Вы не зарегистрированы</p>');
}
}
/* Восстановление пароля
=========================================*/
if(isset($_POST['send_new_pass'])) {
if(!validate_captcha($conf->captcha, $_POST["captcha"])) {
exit('<p class="text-danger">Неверно введена капча!</p>');
}
$email = check($_POST['email'], null);
if(empty($email)) {
exit('<p class="text-danger">Укажите E-mail!</p>');
}
$U = new Users($pdo);
if(!$U->check_email($email)) {
exit('<p class="text-danger">Неверно введен е-mail!</p>');
}
if($U->check_email_busyness($email)) {
exit('<p class="text-danger">Введеный Вами E-mail не зарегистрирован!</p>');
}
$STH = $pdo->query("SELECT `id`, `email`, `login`, `password` FROM `users` WHERE email='$email' LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$row = $STH->fetch();
$STH = $pdo->query("SELECT `url` FROM `pages` WHERE `name`='recovery' LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$page_url = $STH->fetch();
$link = $full_site_host.$page_url->url.'?a='.$row->id.'&data='.md5($row->id.$conf->salt.$row->password.$row->email.date("Y-m-d"));
include_once "../inc/notifications.php";
$letter = recovery_check_letter($conf->name, $row->login, $link);
sendmail($row->email, $letter['subject'], $letter['message'], $pdo);
write_log("Высслано письмо для восстановления пароля: ID".$row->id);
exit('<p class="text-success">Мы выслали на Вашу почту('.$row->email.') ссылку для восстановления пароля, она будет действительна в течение текущих суток.</p>');
}
/* Сервера
=========================================*/
if(isset($_POST['get_servers'])) {
$type = check($_POST['type'], "int");
update_monitoring($pdo);
$i = 0;
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
if($type == 1) {
$STH = $pdo->query("SELECT `monitoring`.*, `servers`.`rcon` FROM `monitoring` LEFT JOIN `servers` ON `monitoring`.`sid`=`servers`.`id` ORDER BY `monitoring`.`id`");
$STH->setFetchMode(PDO::FETCH_OBJ);
} else {
$STH = $pdo->query("SELECT * FROM `monitoring` ORDER BY `id`");
$STH->setFetchMode(PDO::FETCH_OBJ);
}
while($row = $STH->fetch()) {
if($row->players_now > $row->players_max) {
$row->players_now = $row->players_max;
}
if($row->players_max != 0) {
$percentage = $row->players_now / $row->players_max * 100;
} else {
$percentage = 0;
}
if($percentage <= 25) {
$color = 'info';
} elseif($percentage <= 50) {
$color = 'success';
} elseif($percentage <= 75) {
$color = 'warning';
} elseif($percentage <= 100) {
$color = 'danger';
}
if(($row->map != '0') and file_exists('../files/maps_imgs/'.$row->map.'.jpg')) {
$map = '/files/maps_imgs/'.$row->map.'.jpg';
} else {
$map = '/files/maps_imgs/none.jpg';
}
if($row->map == '0') {
$row->map = "Не определено";
}
if($row->name == '0') {
$row->name = "Не определено";
}
if($row->type > 1) {
$disp1 = 'disp-b';
$disp2 = 'disp-n';
} else {
$disp1 = 'disp-n';
$disp2 = 'disp-b';
}
$i++;
if($type == 1) {
$tpl->load_template('elements/server.tpl');
$tpl->set("{rcon}", $row->rcon);
} else {
$tpl->load_template('elements/server_not_auth.tpl');
}
$tpl->set("{name}", $row->name);
$tpl->set("{map_img}", $map);
$tpl->set("{map_name}", $row->map);
$tpl->set("{percentage}", $percentage);
$tpl->set("{color}", $color);
$tpl->set("{max}", $row->players_max);
$tpl->set("{now}", $row->players_now);
$tpl->set("{address}", $row->address);
$tpl->set("{ip}", $row->ip);
$tpl->set("{port}", $row->port);
$tpl->set("{id}", $row->sid);
$tpl->set("{disp1}", $disp1);
$tpl->set("{disp2}", $disp2);
$tpl->set("{site_host}", $site_host);
$tpl->set("{template}", $conf->template);
$tpl->set("{game}", $row->game);
$tpl->set("{i}", $i);
$tpl->compile('content');
$tpl->clear();
}
$tpl->show($tpl->result['content']);
$tpl->global_clear();
if($type == 1) {
if($i == 0) {
exit('<span class="empty-element">Серверов нет</span>');
}
} else {
if($i == 0) {
exit('<tr><td colspan="10">Серверов нет</td></tr>');
}
}
exit();
}
if(isset($_POST['get_md5'])) {
exit(json_encode(array('answer' => md5($_POST['val']))));
}
if(isset($_POST['get_players'])) {
$id = checkJs($_POST['id'], "int");
if(empty($id)) {
exit ();
}
$STH = $pdo->query("SELECT `id`, `ip`, `port`, `rcon` FROM `servers` WHERE `id`='$id' LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$row = $STH->fetch();
$STH = $pdo->query("SELECT `mon_api`, `mon_key` FROM `config__secondary` LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$conf2 = $STH->fetch();
if($conf2->mon_api == 1) {
$players = @file_get_contents(
getMonitoringUrl() . 'players-info.php?key=' . $conf2->mon_key
. '&ip=' . $row->ip
. '&port=' . $row->port
. '&version=2'
);
if(isset($players) and ($players != '403')) {
$players = unserialize($players);
} else {
$players = 0;
}
} else {
try {
$SQ = new SourceQuery;
$SQ->Connect($row->ip, $row->port);
$players = $SQ->GetPlayers();
$SQ->Disconnect();
} catch(Exception $e) {
$players = 0;
}
}
$i= 0;
if ($players){
$GD = new GetData($pdo);
foreach($players as $player) {
$i++;
$name = htmlspecialchars($player['Name'], ENT_QUOTES);
$player_name = $name;
if($player_profile = $GD->get_gamer_profile($player['Name'], '', 1)) {
$player_name = $player_profile;
}
if ($row->rcon == 1 && isset($_SESSION['id']) && is_worthy_specifically("s", $row->id)) {
$player_id = $row->id;
$operations = "
<td>
<button type='button' class='btn btn-default btn-sm' onclick='abort_player(1, \"$name\", $player_id);'>Кик</button>
<button type='button' class='btn btn-default btn-sm' onclick='abort_player(2, \"$name\", $player_id);'>Бан</button>
</td>";
} else {
$operations = '';
}
echo "
<tr>
<td>".$i."</td>
<td>".$player_name."</td>
<td>".intval($player['Frags'])."</td>
<td>".expand_seconds2($player['Time'])."</td>
".$operations."
</tr>";
}
} else {
exit('<tr><td colspan="10">Игроков нет</td></tr>');
}
exit();
}
/* Услуги пользователя
=========================================*/
if(isset($_POST['get_admin_info'])) {
$id = check($_POST['id'], "int");
if(empty($id)) {
exit ();
}
$i = 0;
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$STH = $pdo->prepare("SELECT `admins__services`.`id`, `services`.`name`, `admins__services`.`service`, `admins__services`.`bought_date`, `admins__services`.`ending_date`
FROM `admins__services` LEFT JOIN `services` ON `admins__services`.`service` = `services`.`id` WHERE `admins__services`.`admin_id` = :admin_id");
$STH->setFetchMode(PDO::FETCH_OBJ);
$STH->execute(array(':admin_id' => $id));
while($row = $STH->fetch()) {
$i++;
if(!empty($row->service)) {
$name = $row->name;
} else {
$name = 'Неизвестно';
}
if($row->ending_date == '0000-00-00 00:00:00') {
$left = "Вечность";
$color = "success";
$ending_date = 'Никогда';
} else {
$left = strtotime($row->ending_date) - time();
if($left > 60 * 60 * 24 * 5) {
$color = "success";
} elseif($left > 60 * 60 * 24) {
$color = "warning";
} else {
$color = "danger";
}
$left = expand_seconds2($left, 2);
$ending_date = expand_date($row->ending_date, 1);
}
if($row->bought_date != '0000-00-00 00:00:00') {
$bought_date = expand_date($row->bought_date, 1);
} else {
$bought_date = 'Неизвестно';
}
$tpl->load_template('elements/admin_info.tpl');
$tpl->set("{i}", $i);
$tpl->set("{name}", $name);
$tpl->set("{bought_date}", $bought_date);
$tpl->set("{ending_date}", $ending_date);
$tpl->set("{left}", $left);
$tpl->set("{color}", $color);
$tpl->compile('content');
$tpl->clear();
}
$tpl->show($tpl->result['content']);
$tpl->global_clear();
exit();
}
/* Новости
=========================================*/
if(isset($_POST['load_new_comments'])) {
$id = checkJs($_POST['id'], "int");
$i = 0;
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$tpl->result['content'] = '';
$STH = $pdo->query("SELECT news__comments.*, users.login, users.avatar, users.rights FROM news__comments LEFT JOIN users ON news__comments.user_id = users.id WHERE new_id = '$id' ORDER BY id DESC");
$STH->setFetchMode(PDO::FETCH_OBJ);
while($row = $STH->fetch()) {
$date = expand_date($row->date, 8);
if(is_worthy("q")) {
$dell = '<span onclick="dell_new_comment('.$row->id.');" tooltip="yes" data-placement="left" title="Удалить" class="m-icon icon-trash dell_message"></span>';
} else {
$dell = '';
}
$i++;
$gp = $users_groups[$row->rights];
$tpl->load_template('elements/comment.tpl');
$tpl->set("{id}", $row->id);
$tpl->set("{user_id}", $row->user_id);
$tpl->set("{login}", $row->login);
$tpl->set("{avatar}", $row->avatar);
$tpl->set("{text}", $row->text);
$tpl->set("{dell}", $dell);
$tpl->set("{date_full}", $date['full']);
$tpl->set("{date_short}", $date['short']);
$tpl->set("{gp_color}", $gp['color']);
$tpl->set("{gp_name}", $gp['name']);
$tpl->compile('content');
$tpl->clear();
}
if($i == 0) {
echo '<span class="empty-element">Комментариев нет</span>';
} else {
$tpl->show($tpl->result['content']);
$tpl->global_clear();
}
exit();
}
/* Стена
=========================================*/
if(isset($_POST['load_users_comments'])) {
$id = checkJs($_POST['id'], "int");
$load_val = checkJs($_POST['load_val'], "int");
if(empty($load_val)) {
$load_val = 1;
}
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$start = ($load_val - 1) * 20;
$end = 20;
$i = $start;
$i2 = 0;
$tpl->result['content'] = '';
$STH = $pdo->query("SELECT users__comments.*, users.login, users.avatar, users.rights FROM users__comments LEFT JOIN users ON users__comments.author = users.id WHERE user_id = '$id' ORDER BY id DESC LIMIT ".$start.", ".$end);
$STH->setFetchMode(PDO::FETCH_OBJ);
while($row = $STH->fetch()) {
$date = expand_date($row->date, 8);
if((isset($_SESSION['id']) and $_SESSION['id'] == $id) or (is_worthy("y"))) {
$dell = '<span onclick="dell_user_comment('.$row->id.');" tooltip="yes" data-placement="left" title="Удалить" class="m-icon icon-trash dell_message"></span>';
} else {
$dell = '';
}
$i++;
$i2++;
$gp = $users_groups[$row->rights];
$tpl->load_template('elements/comment.tpl');
$tpl->set("{gp_color}", $gp['color']);
$tpl->set("{gp_name}", $gp['name']);
$tpl->set("{id}", $row->id);
$tpl->set("{user_id}", $row->author);
$tpl->set("{login}", $row->login);
$tpl->set("{avatar}", $row->avatar);
$tpl->set("{text}", $row->text);
$tpl->set("{dell}", $dell);
$tpl->set("{date_full}", $date['full']);
$tpl->set("{date_short}", $date['short']);
$tpl->compile('content');
$tpl->clear();
}
$tpl->show($tpl->result['content']);
$tpl->global_clear();
if(($load_val > 0) and ($i2 > 19)) {
$load_val++;
exit ('<div id="loader'.$load_val.'"><span class="empty-element" onclick="load_users_comments(\''.$id.'\',\''.$load_val.'\');">Подгрузить записи</span></div>');
}
if($start == 0 and $i2 == 0) {
exit ('<div id="loader'.$load_val.'"><span class="empty-element">Сообщений не найдено</span></div>');
}
if(($load_val > 0) and ($i2 < 20)) {
exit ();
}
exit();
}
/* Пользователи
=========================================*/
if(isset($_POST['search_login'])) {
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$GD = new GetData($pdo, $tpl);
if(empty($_POST['login'])) {
$tpl->show($GD->users($_POST['start'], $_POST['group']));
} else {
$tpl->show($GD->search_login($_POST['login'], $_POST['group']));
}
$tpl->global_clear();
exit();
}
/* Баны
=========================================*/
if(isset($_POST['load_ban_comments'])) {
$id = checkJs($_POST['id'], "int");
$i = 0;
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl';
$tpl->result['content'] = '';
$STH = $pdo->query("SELECT `bans__comments`.*, `bans`.`server`, `users`.`login`, `users`.`avatar`, `users`.`rights` FROM `bans__comments`
LEFT JOIN `users` ON `bans__comments`.`user_id` = `users`.`id`
LEFT JOIN `bans` ON `bans__comments`.`ban_id` = `bans`.`id`
WHERE `bans__comments`.`ban_id` = '$id' ORDER BY `bans__comments`.`id` DESC");
$STH->setFetchMode(PDO::FETCH_OBJ);
while($row = $STH->fetch()) {
$tpl->load_template('/elements/comment.tpl');
$gp = $users_groups[$row->rights];
$date = expand_date($row->date, 8);
if(is_worthy_specifically("u", $row->server)) {
$dell = '<span onclick="dell_ban_comment('.$row->id.');" tooltip="yes" data-placement="left" title="Удалить" class="m-icon icon-trash dell_message"></span>';
} else {
$dell = '';
}
$i++;
$tpl->set("{id}", $row->id);
$tpl->set("{user_id}", $row->user_id);
$tpl->set("{login}", $row->login);
$tpl->set("{avatar}", $row->avatar);
$tpl->set("{text}", $row->text);
$tpl->set("{dell}", $dell);
$tpl->set("{date_full}", $date['full']);
$tpl->set("{date_short}", $date['short']);
$tpl->set("{gp_color}", $gp['color']);
$tpl->set("{gp_name}", $gp['name']);
$tpl->compile('content');
$tpl->clear();
}
if($i == 0) {
echo '<span class="empty-element">Комментариев нет</span>';
} else {
$tpl->show($tpl->result['content']);
$tpl->global_clear();
}
exit();
}
if(isset($_POST['search_ban'])) {
$bid = $_POST['ban'];
$server = checkJs($_POST['server'], null);
if(empty($bid) or empty($server)) {
exit();
}
$STH = $pdo->query("SELECT id,ip,port,name,db_host,db_user,db_pass,db_db,db_prefix,type,db_code FROM servers WHERE type!=0 and type!=1 and id='$server'");
$STH->setFetchMode(PDO::FETCH_OBJ);
$row = $STH->fetch();
$STH = $pdo->query("SELECT `price1`, `price2`, `price3` FROM `config__prices`");
$STH->setFetchMode(PDO::FETCH_OBJ);
$bans_conf = $STH->fetch();
$db_host = $row->db_host;
$db_user = $row->db_user;
$db_pass = $row->db_pass;
$db_db = $row->db_db;
$db_prefix = $row->db_prefix;
$address = $row->ip.':'.$row->port;
$ip = $row->ip;
$port = $row->port;
$type = $row->type;
$server_name = $row->name;
if(!$pdo2 = db_connect($db_host, $db_db, $db_user, $db_pass)) {
exit('<p>'.$massages['Unable_connect_to_db'].'</p>');
}
set_names($pdo2, $row->db_code);
if($type == '2' || $type == '3' || $type == '5') {
$table = set_prefix($db_prefix, 'bans');
$STH = $pdo2->prepare("SELECT * FROM $table WHERE server_ip = '$address' and bid=:bid LIMIT 1");
$STH->execute(array(':bid' => $bid));
} else {
$table = set_prefix($db_prefix, 'servers');
$STH = $pdo2->query("SELECT sid FROM $table WHERE ip='$ip' and port='$port' LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$row = $STH->fetch();
$sid = $row->sid;
$table1 = set_prefix($db_prefix, 'bans');
$table2 = set_prefix($db_prefix, 'admins');
$STH = $pdo2->prepare("SELECT $table1.bid,$table1.ip AS player_ip,$table1.RemoveType AS expired,$table1.authid AS player_id,$table1.name AS player_nick,$table1.created AS ban_created,$table1.length AS ban_length,$table1.reason AS ban_reason,$table1.adminip AS admin_ip,$table2.user AS admin_nick,$table2.nick AS admin_nick2,$table2.authid AS admin_id FROM $table1 LEFT JOIN $table2 ON $table1.aid = $table2.aid WHERE ($table1.sid = '$sid' OR $table1.sid = '0') and $table1.bid=:bid LIMIT 1");
$STH->execute(array(':bid' => $bid));
}
$result = $STH->fetchAll();
$disp = "";
$price = 0;
if(!isset($result['0']['admin_nick2'])) {
$result['0']['admin_nick2'] = null;
}
$admin_nick = get_ban_admin_nick($result['0']['admin_nick'], $result['0']['admin_nick2'], $server_name, $type);
$player_nick = check($result['0']['player_nick'], null);
$ban_reason = check($result['0']['ban_reason'], null);
if($type == '2' || $type == '3' || $type == '5') {
$ban_length = $result['0']['ban_length'] * 60;
} else {
$ban_length = $result['0']['ban_length'];
}
$ban_length2 = expand_seconds2($ban_length);
$ban_created = $result['0']['ban_created'];
if($result['0']['expired'] == 1 or $result['0']['expired'] == "E" or $result['0']['expired'] == "U") {
$color = "success";
$time = expand_date(date("Y-m-d H:i:s", ($ban_created + $ban_length)), 1);
} else {
if($ban_length == 0) {
$time = "Никогда";
$color = "danger";
$price = $bans_conf->price3;
} else {
$now = time();
$time = expand_date(date("Y-m-d H:i:s", ($ban_created + $ban_length)), 1);
if(($ban_created + $ban_length) < $now) {
$color = "success";
} else {
$color = "";
$date = diff_date(date("Y-m-d H:i:s", ($ban_created + $ban_length)), date("Y-m-d H:i:s"));
if($date['2'] < '7' and $date['1'] == '0' and $date['0'] == '0') {
$price = $bans_conf->price1;
} else {
$price = $bans_conf->price2;
}
}
}
}
if(empty($result['0']['bid'])) {
exit('<p>Бан не найден</p>');
} else {
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$tpl->load_template('elements/search_ban.tpl');
$tpl->set("{bid}", $result['0']['bid']);
$tpl->set("{player_ip}", $result['0']['player_ip']);
$tpl->set("{player_id}", $result['0']['player_id']);
$tpl->set("{player_nick}", $player_nick);
$tpl->set("{admin_ip}", $result['0']['admin_ip']);
$tpl->set("{admin_id}", $result['0']['admin_id']);
$tpl->set("{admin_nick}", $admin_nick);
$tpl->set("{ban_reason}", $result['0']['ban_reason']);
$tpl->set("{color}", $color);
$tpl->set("{time}", $time);
$tpl->set("{ban_length}", $ban_length2);
$tpl->set("{address}", $address);
$tpl->set("{server_name}", $server_name);
$tpl->compile('content');
$tpl->clear();
$tpl->show($tpl->result['content']);
$tpl->global_clear();
}
exit();
}
if(isset($_POST['load_stats'])) {
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$GD = new GetData($pdo, $tpl);
if(empty($_POST['name'])) {
$tpl->show($GD->stats($_POST['start'], $_POST['server']));
} else {
$tpl->show($GD->stats($_POST['start'], $_POST['server'], 0, $_POST['name']));
}
$tpl->global_clear();
exit();
}
if(isset($_POST['load_wstats'])) {
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$GD = new GetData($pdo, $tpl);
$tpl->show($GD->weapon_stats($_POST['server'], $_POST['authid']));
$tpl->global_clear();
exit();
}
if(isset($_POST['load_mstats'])) {
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$GD = new GetData($pdo, $tpl);
$tpl->show($GD->map_stats($_POST['server'], $_POST['authid']));
$tpl->global_clear();
exit();
}
if(isset($_POST['load_banlist'])) {
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$GD = new GetData($pdo, $tpl);
if(empty($_POST['name'])) {
$tpl->show($GD->banlist($_POST['start'], $_POST['server']));
} else {
$tpl->show($GD->banlist($_POST['start'], $_POST['server'], 0, $_POST['name']));
}
$tpl->global_clear();
exit();
}
if(isset($_POST['load_muts'])) {
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$GD = new GetData($pdo, $tpl);
if(empty($_POST['name'])) {
$tpl->show($GD->mutlist($_POST['start'], $_POST['server']));
} else {
$tpl->show($GD->mutlist($_POST['start'], $_POST['server'], 0, $_POST['name']));
}
$tpl->global_clear();
exit();
}
if(isset($_POST['get_services'])) {
$id = checkJs($_POST['id'], "int");
if(empty($id)) {
exit ();
}
$i = 0;
$data = '';
$service = 0;
$STH = $pdo->query("SELECT id,name,rights,sale FROM services WHERE server = '$id' ORDER BY trim");
$STH->setFetchMode(PDO::FETCH_OBJ);
while($row = $STH->fetch()) {
if($row->sale != 2) {
if($i == 0) {
$service = $row->id;
$i++;
}
$data .= '<option value="'.$row->id.'">'.$row->name.'</option>';
}
}
exit(json_encode(array('status' => '1', 'data' => $data, 'service' => $service)));
}
if(isset($_POST['get_tarifs'])) {
$id = checkJs($_POST['id'], "int");
if(empty($id)) {
exit ();
}
$STH = $pdo->query("SELECT `services`.`text`, `services`.`discount` AS `service_dicount`,`servers`.`discount` FROM `services` LEFT JOIN `servers` ON `services`.`server`=`servers`.`id` WHERE `services`.`id` = '$id' LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$row = $STH->fetch();
$text = $row->text;
$service_discount = $row->service_dicount;
$server_discount = $row->discount;
$STH = $pdo->query("SELECT discount FROM config__prices LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$disc = $STH->fetch();
$discount = $disc->discount;
$data = '';
$STH = $pdo->query("SELECT id,pirce,time,discount FROM services__tarifs WHERE service = '$id' ORDER BY pirce");
$STH->setFetchMode(PDO::FETCH_OBJ);
while($row = $STH->fetch()) {
if($row->time == 0) {
$time = 'Навсегда';
} else {
$time = $row->time.' дня(ей)';
}
if(isset($user->proc)) {
$user_proc = $user->proc;
} else {
$user_proc = 0;
}
$proc = calculate_discount($server_discount, $discount, $user_proc, $service_discount, $row->discount);
$pirce = calculate_pirce($row->pirce, $proc);
if($pirce != $row->pirce) {
$data .= '<option value="'.$row->id.'">'.$time.' - '.$pirce.' '.$messages['RUB'].' (с учетом скидки в '.$proc.'%)</option>';
} else {
$data .= '<option value="'.$row->id.'">'.$time.' - '.$pirce.' '.$messages['RUB'].'</option>';
}
}
exit(json_encode(array('status' => '1', 'data' => $data, 'text' => $text)));
}
if(isset($_POST['get_server_store'])) {
$id = checkJs($_POST['id'], "int");
$type = checkJs($_POST['type'], "int");
if(empty($id)) {
exit ();
}
if(empty($type)) {
$type = 0;
}
$STH = $pdo->query("SELECT `monitoring`.*, `servers`.`rcon`,`servers`.`binds`,`servers`.`type` FROM `monitoring` LEFT JOIN `servers` ON `monitoring`.`sid`=`servers`.`id` WHERE `monitoring`.`sid`='$id'");
$STH->setFetchMode(PDO::FETCH_OBJ);
$row = $STH->fetch();
if(empty($row->id)) {
$STH = $pdo->prepare("SELECT `id`,`ip`,`port`,`name`,`address`,`rcon`,`game`,`binds`,`type` FROM `servers` WHERE `id`=:id LIMIT 1");
$STH->setFetchMode(PDO::FETCH_OBJ);
$STH->execute(array(':id' => $id));
$row = $STH->fetch();
$row->map = 0;
$row->name = '0';
$row->players_max = 0;
$row->players_now = 0;
$row->sid = $row->id;
}
if($row->type == 0 || $row->type == 1) {
$disp = 'disp-n';
} else {
$disp = '';
}
if(($row->map != '0') and file_exists('../files/maps_imgs/'.$row->map.'.jpg')) {
$map = '/files/maps_imgs/'.$row->map.'.jpg';
} else {
$map = '/files/maps_imgs/none.jpg';
}
if($row->map == '0') {
$row->map = "Не определено";
}
if($row->name == '0') {
$row->name = "Не определено";
}
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$tpl->load_template('elements/server_min.tpl');
$tpl->set("{name}", $row->name);
$tpl->set("{map_img}", $map);
$tpl->set("{map_name}", $row->map);
$tpl->set("{template}", $conf->template);
$tpl->set("{max}", $row->players_max);
$tpl->set("{now}", $row->players_now);
$tpl->set("{ip}", $row->ip);
$tpl->set("{port}", $row->port);
$tpl->set("{id}", $row->sid);
$tpl->set("{disp}", $disp);
$tpl->set("{site_host}", $site_host);
$tpl->set("{address}", $row->address);
$tpl->set("{rcon}", $row->rcon);
$tpl->compile('content');
$tpl->clear();
if($type == 1) {
$binds = explode(';', $row->binds);
$binds_data = '';
if($binds[0]) {
$binds_data .= "$('#store_type option[value=\"1\"]').removeAttr('disabled');";
$binds_data .= "$('#store_type option[value=\"1\"]').attr('class', 'disp-b');";
} else {
$binds_data .= "$('#store_type option[value=\"1\"]').attr('disabled', '');";
$binds_data .= "$('#store_type option[value=\"1\"]').attr('class', 'disp-n');";
}
if($binds[1]) {
$binds_data .= "$('#store_type option[value=\"2\"]').removeAttr('disabled');";
$binds_data .= "$('#store_type option[value=\"2\"]').attr('class', 'disp-b');";
} else {
$binds_data .= "$('#store_type option[value=\"2\"]').attr('disabled', '');";
$binds_data .= "$('#store_type option[value=\"2\"]').attr('class', 'disp-n');";
}
if($binds[2]) {
$binds_data .= "$('#store_type option[value=\"3\"]').removeAttr('disabled');";
$binds_data .= "$('#store_type option[value=\"3\"]').attr('class', 'disp-b');";
} else {
$binds_data .= "$('#store_type option[value=\"3\"]').attr('disabled', '');";
$binds_data .= "$('#store_type option[value=\"3\"]').attr('class', 'disp-n');";
}
$tpl->result['content'] .= "<script>change_store_bind_type(0);".$binds_data."</script>";
}
$tpl->show($tpl->result['content']);
$tpl->global_clear();
}
if(isset($_POST['get_user_achievs'])){
//$user_id = clean($_POST['id'], "int");
$user_auth = checkJs($_POST['user_auth'],null);
$tpl = new Template;
$tpl->dir = '../templates/'.$conf->template.'/tpl/';
$j=0;
if(!empty($user_auth))
{
$STH = $pdo->prepare("SELECT *, `achievs`.`rus_name`, `achievs`.`value`, `achievs`.`ach_img`, `achievs`.`description` FROM `achievs_stats`
LEFT JOIN achievs ON `achievs`.`unic_id` = `achievs_stats`.`ach_id`
WHERE `achievs_stats`.`user_auth`=:user_auth ORDER BY `achievs_stats`.`ach_id`"); $STH->setFetchMode(PDO::FETCH_OBJ);
$STH->execute(array( ':user_auth' => $user_auth ));
while($row = $STH->fetch()) {
$j++;
$tmpDate = $row->collect_date;
if($tmpDate == '0000-00-00 00:00:00')
{
$tmpDate = ''.$row->curr_value.' из '.$row->value.'';
$status = 'info';
}
else if($row->ach_collect == 1)
$status = 'success';
$tpl->load_template('elements/achievs.tpl');
$tpl->set("{ach_id}", $row->ach_id);
$tpl->set("{rus_name}", $row->rus_name);
$tpl->set("{value}", $row->value);
$tpl->set("{ach_img}", $row->ach_img);
$tpl->set("{description}", $row->description);
$tpl->set("{curr_value}", $row->curr_value);
$tpl->set("{ach_collect}", $row->ach_collect);
$tpl->set("{collect_date}", $tmpDate);
$tpl->set("{status}", $status);
$tpl->compile( 'achievs' );
$tpl->clear();
}
}
if($j == 0){
$tpl->result['achievs'] = '<tr><td colspan="10">Нет достижений</td></tr>';
}
$tpl->show($tpl->result['achievs']);
$tpl->global_clear();
exit();
}
[ 22] GameCMS BonusSystem 1.1 DUKKHAZ0R gamecms_bonus.a running
[ 23] GameCMS AchievsCore 1.3 zhorzh78 gamecms_achievs running
[ 24] GameCMS BombAchievs 1.2 zhorzh78 bomb_achievs.am stopped
[ 25] GameCMS PlayerAchievs 1.3 zhorzh78 player_achievs. stopped
[ 26] GameCMS SpecialAchievs 1.3 zhorzh78 special_achievs stopped
ПравильноПодскажите правильно ли я добавил код в данный файл
Логи в тему помощи по плагинамИ в добавок не хотят запускаться 3 плагина