Новая версия CS-BANS ( фикс бага ) Версия 1.3.3
![](/Telegram_Groop.png)
Вышела новая версия системы банов CS-Bans с фиксом бага при просмотре банов
Нужно замений файл /protected/controllers/BansController.php
<?php
/**
* Контррллер банов
*/
/**
* @author Craft-Soft Team
* @package CS:Bans
* @version 1.0 beta
* @copyright (C)2013 Craft-Soft.ru. Все права защищены.
* @link http://craft-soft.ru/
* @license http://creativecommons.org/licenses/by-nc-sa/4.0/deed.ru «Attribution-NonCommercial-ShareAlike»
*/
class BansController extends Controller
{
public $layout='//layouts/column1';
public function filters()
{
return array(
'accessControl',
'postOnly + delete',
'ajaxOnly + bandetail, unban'
);
}
public function actions(){
return array(
'captcha'=>array(
'class'=>'CCaptchaAction',
),
);
}
public function actionUnban($id)
{
$model = $this->loadModel($id);
// Проверка прав
if (!Webadmins::checkAccess('bans_unban', $model->admin_nick)) {
throw new CHttpException(403, "У Вас недостаточно прав");
}
$model->ban_length = '-1';
$model->expired = 1;
if ($model->save(FALSE)) {
Yii::app()->end('Игрок разбанен');
}
Yii::app ()->end(CHtml::errorSummary($model));
}
/**
* Вывод инфы о бане
* @param integer $id ID бана
*/
public function actionView($id)
{
// Подгружаем комментарии и файлы
$files = new Files;
//$this->performAjaxValidation($files);
$files->unsetAttributes();
$comments = new Comments;
$comments->unsetAttributes();
// Подгружаем баны
$model=Bans::model()->with('admin')->findByPk($id);
if ($model === null) {
throw new CHttpException(404, 'The requested page does not exist.');
}
$geo = false;
// Проверка прав на просмотр IP
$ipaccess = Webadmins::checkAccess('ip_view');
if($ipaccess) {
$cacheKey = "PLAYER_IP_{$model->player_ip}_";
$geo = Yii::app()->cache->get($cacheKey);
if (!$geo) {
$geo = array(
'city' => 'Н/А',
'region' => 'Не определен',
'country' => 'Не определен',
'lat' => 0,
'lng' => 0,
);
// Контекст с таймаутом на 3 секунды, чтобы страница не зависала наглухо
$context = stream_context_create(array(
'http' =>
array(
'timeout' => 3,
)
));
$get = @file_get_contents("http://ip-api.com/json/$model->player_ip?lang=ru&fields=status,message,country,regionName,city,district,lat,lon,query",
false, $context);
if($get) {
$json = json_decode($get, true);
if (json_last_error() === JSON_ERROR_NONE) {
$geo = array(
'city' => $json['city'],
'region' => $json['regionName'],
'country' => $json['country'],
'lat' => $json['lat'],
'lng' => $json['lon'],
);
}
}
Yii::app()->cache->set($cacheKey, $geo, 86400);
}
}
// Добавление файла
if(isset($_POST['Files']) && !empty($_POST['Files']['name'])) {
// Задаем аттрибуты
$files->attributes = $_POST['Files'];
$files->bid = intval($id);
$files->save();
$this->refresh();
}
// Добавление комментария
if(isset($_POST['Comments'])) {
//exit(print_r($_POST['Comments']));
$comments->attributes = $_POST['Comments'];
$comments->bid = $id;
if ($comments->save()) {
$this->refresh();
}
}
// Выборка комментариев
$c = new CActiveDataProvider($comments, array(
'criteria' => array(
'condition' => 'bid = :bid',
'params' => array(
':bid' => $id
),
),
));
// Выборка файлов
$f = new CActiveDataProvider(Files::model(), array(
'criteria' => array(
'condition' => 'bid = :bid',
'params' => array(
':bid' => $id
),
),
));
// История банов
$history = new CActiveDataProvider('Bans', array(
'criteria' => array(
'condition' => '`bid` <> :hbid AND (`player_ip` = :hip OR `player_id` = :hid)',
'params' => array(
':hbid' => $id,
':hip' => $model->player_ip,
':hid' => $model->player_id
),
),
'pagination' => array(
'pageSize' => 5
)
));
// Вывод всего на вьюху
$this->render('view',array(
'geo' => $geo,
'ipaccess' => $ipaccess,
'model'=>$model,
'files' => $files,
'comments'=> $comments,
'f' => $f,
'c' => $c,
'history' => $history
));
}
/**
* Добавить бан
*/
public function actionCreate()
{
// Проверка прав
if (!Webadmins::checkAccess('bans_add')) {
throw new CHttpException(403, "У Вас недостаточно прав");
}
$model=new Bans;
// Аякс проверка формы
$this->performAjaxValidation($model);
if(isset($_POST['Bans'])) {
$model->attributes=$_POST['Bans'];
$model->admin_nick = 'Web';
$model->server_name = 'Забанен с сайта';
if ($model->save()) {
$this->redirect(array('view', 'id' => $model->bid));
}
}
$this->render('create',array(
'model'=>$model,
));
}
/**
* Редактировать бан
* @param integer $id ID бана
*/
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Проверка прав
if (!Webadmins::checkAccess('bans_edit', $model->admin_nick)) {
throw new CHttpException(403, "У Вас недостаточно прав");
}
// Аякс проверка формы
// $this->performAjaxValidation($model);
// Сохраняем форму
if(isset($_POST['Bans'])) {
$model->attributes=$_POST['Bans'];
if(isset($_POST['selfreasoncheckbox']) && isset($_POST['self_ban_reason'])) {
$model->ban_reason = $_POST['self_ban_reason'];
}
if ($model->save()) {
$this->redirect(array('view', 'id' => $model->bid));
}
}
$this->render('update',array(
'model'=>$model,
));
}
/**
* Удаление бана
* @param integer $id ID бана
*/
public function actionDelete($id)
{
$model = $this->loadModel($id);
// Проверка прав
if (!Webadmins::checkAccess('bans_delete', $model->admin_nick)) {
throw new CHttpException(403, "У Вас недостаточно прав");
}
$model->delete();
// Если не аякс запрос, то редиректим
if (!isset($_GET['ajax'])) {
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
}
/**
* Вывод всех банов
*/
public function actionIndex()
{
if(Yii::app()->request->isAjaxRequest && isset($_POST['server'])) {
if($_POST['server'] == 0) {
Yii::app()->end('$("#Bans_admin_nick").html("<option value=\"0\">Не выбрано</option>");');
}
$amxadmins = Amxadmins::model()->with('servers')->findAll('`address` = :addr', array(':addr' => $_POST['server']));
$js = "<option>Любой админ</option>";
foreach($amxadmins as $admin) {
$js .= "<option value=\"{$admin->steamid}\">{$admin->nickname}</option>";
}
Yii::app()->end("$('#Bans_admin_nick').html('{$js}')");
}
$model=new Bans('search');
$model->unsetAttributes();
if (isset($_GET['Bans'])) {
$model->attributes = $_GET['Bans'];
}
$select = "((ban_created+(ban_length*60)) > UNIX_TIMESTAMP() OR ban_length = 0) AND `expired` = 0";
$dataProvider=new CActiveDataProvider('Bans', array(
'criteria'=>array(
'condition' => Yii::app()->config->auto_prune
?
$select
:
null,
'order' => '`ban_created` DESC',
),
'pagination' => array(
'pageSize' => Yii::app()->config->bans_per_page,
),)
);
// Проверяем IP посетителя, есть ли он в активных банах
$check = Bans::model()->count(
"`player_ip` = :ip AND " . $select,
array(
':ip'=> Prefs::getRealIp(),
)
);
$this->render('index',array(
'dataProvider'=>$dataProvider,
'model'=>$model,
'check' => $check > 0 ? true : false,
));
}
/**
* Управление банами (Хз, буду ли использовать)
*/
public function actionAdmin()
{
if (Yii::app()->user->isGuest) {
throw new CHttpException(403, "У Вас недостаточно прав");
}
$model=new Bans('search');
$model->unsetAttributes();
if (isset($_GET['Bans'])) {
$model->attributes = $_GET['Bans'];
}
$this->render('admin',array(
'model'=>$model,
));
}
/**
* Вывод данных о бане в модальке
*/
public function actionBandetail()
{
if(is_numeric($_POST['bid']))
{
$model = Bans::model()->with('admin')->findByPk($_POST['bid']);
if($model === null)
{
Yii::app()->end('alert("Ошибка!")');
}
$js = "$('#bandetail-nick').html('" . CHtml::encode($model->player_nick) . "');";
$js .= "$('#bandetail-steam').html('" . $model->player_id . "');";
$js .= "$('#bandetail-steamcommynity').html('" . Prefs::steam_convert($model->player_id, true) . "');";
$js .= "$('#bandetail-ip').html('" . (Webadmins::checkAccess('ip_view') ? $model->player_ip : 'Cкрыт') . "');";
$js .= "$('#bandetail-type').html('" . Prefs::getBanType($model->ban_type) . "');";
$js .= "$('#bandetail-reason').html('" . $model->ban_reason . "');";
$js .= "$('#bandetail-datetime').html('" . date('d.m.y - H:i:s',$model->ban_created) . "');";
$js .= "$('#bandetail-expired').html('" . ($model->ban_length == '-1'
?
'Разбанен'
:
Prefs::date2word($model->ban_length) .
($model->expired == 1 ? ' (истек)' : '')) . "');";
$js .= "$('#bandetail-admin').html('" . $model->adminName . "');";
$js .= "$('#bandetail-server').html('" . CHtml::encode($model->server_name) . "');";
$js .= "$('#bandetail-kicks').html('" . $model->ban_kicks . "');";
$js .= "$('#loading').hide();";
$js .= "$('#viewban').attr({'href': '".Yii::app()->urlManager->createUrl('/bans/view', array('id' => $_POST['bid']))."'});";
$js .= "$('#BanDetail').modal('show');";
echo $js;
}
Yii::app()->end();
}
public function actionMotd($sid, $adm = 0, $lang = 'ru')
{
$this->layout = FALSE;
$sid = (int)substr( $sid, 1 );
$model = Bans::model()->findByPk($sid);
if ($model === null) {
Yii::app()->end('Error!');
}
$this->render('motd', array(
'model'=>$model,
'show_admin' => $adm == 1 ? TRUE : FALSE
));
}
/**
* Загрузка модели по ID
* @param integer ID бана
*/
public function loadModel($id)
{
$model=Bans::model()->findByPk($id);
if ($model === null) {
throw new CHttpException(404, 'The requested page does not exist.');
}
return $model;
}
/**
* Аякс проверка формы
*/
protected function performAjaxValidation($model)
{
if(isset($_POST['ajax']) && $_POST['ajax']==='bans-form') {
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
}
Администрация не несет ответсвенности за скачаные файлы
Размер: 12.58 Mb
Смотрите также:
![Скрипт лотереи Nvuti 8.0](/uploads/posts/2020-11/thumbs/1605211917_screenshot_28.png)
Скрипт лотереи Nvuti 8.0
По вашим просьбам, решил добавить скрипт и мануал по лечению болячек и настройке.
![uBans Система банов и продажи привилегий](/uploads/posts/2019-12/thumbs/1576419276_screenshot_14.png)
uBans Система банов и продажи привилегий
uBans Система банов и продажи привилегий
![Скрипт «Магазин цифровых товаров»](/uploads/posts/2019-07/1562418302_2.png)
Скрипт «Магазин цифровых товаров»
Скрипт магазина цифровых товаров Ребят, убил кучу времени на проверку и создание скринов. Так же все это красиво оформил. Жду от вас лукас )
![Скрипт «Форум+Онлайн покупка привилегий» для CS 1.6](/uploads/posts/2019-06/1560102088_bbwigxk7g9s.jpg)
Скрипт «Форум+Онлайн покупка привилегий» для CS 1.6
Слив приватного форума онлайн привилегий, который продается за 1000 рублей. Для вас же он бесплатный.
Минимальная длина комментария - 50 знаков. комментарии модерируются