public function actionAdminsonservers()
 {
     // Проверка прав
     if (!Webadmins::checkAccess('amxadmins_edit')) {
         throw new CHttpException(403, "У Вас недостаточно прав");
     }
     $this->layout = '//layouts/main';
     // Сохранение параметров админа
     if (Yii::app()->request->isAjaxRequest && isset($_POST['sid']) && isset($_POST['aid'])) {
         $exit = "alert('Ошибка');";
         if (isset($_POST['active'])) {
             if (!empty($_POST['customflags']) && !preg_match('#^([a-z]+)$#', $_POST['customflags'])) {
                 Yii::app()->end("alert('Ошибка!В флаги нужно прописывать только буквы латинского алфавита');");
             }
             $adm = AdminsServers::model()->findByAttributes(array('admin_id' => $_POST['aid'], 'server_id' => $_POST['sid']));
             if ($adm === NULL) {
                 $adm = new AdminsServers();
                 $adm->admin_id = $_POST['aid'];
                 $adm->server_id = $_POST['sid'];
             }
             $adm->flags = isset($_POST['customflags']) ? str_split($_POST['customflags']) : array();
             $adm->use_static_bantime = $_POST['staticbantime'];
             if ($adm->save()) {
                 $exit = "alert('Сохранено');";
             }
         } else {
             $admin = Amxadmins::model()->findByPk($_POST['aid']);
             $res = AdminsServers::model()->deleteAllByAttributes(array('admin_id' => $_POST['aid'], 'server_id' => $_POST['sid']));
             if ($res) {
                 $hash = crc32($admin->steamid);
                 $exit = "alert('Удалено'); \$('.input{$hash}').hide();";
             }
         }
         Yii::app()->end($exit);
     } elseif (Yii::app()->request->isAjaxRequest && isset($_POST['sid']) && is_numeric($_POST['sid'])) {
         $sid = $_POST['sid'];
         $admins = Amxadmins::model()->sort()->findAll();
         $server = Serverinfo::model()->findByPk($sid);
         // Шапка таблицы с админами
         $js = "<table class=\"table table-bordered table-stripped\"><thead><tr class=\"info\"><th colspan=5>{$server->hostname}</th></tr></tr><tr><th>Ник</th><th>Steam/IP/Ник</th><th>Доп. флаги</th><th>Установленное время бана</th><th>Вкл</th><th>Сохранить</th></thead><tbody>";
         foreach ($admins as $admin) {
             $customflags = NULL;
             $staticbantime = NULL;
             $active = NULL;
             $link = NULL;
             $checked = FALSE;
             $display = 'display: none';
             $name1 = NULL;
             $name2 = NULL;
             $class = $admin->expired && $admin->expired <= time() ? ' class="error"' : '';
             $s = AdminsServers::model()->findByAttributes(array('admin_id' => $admin->id, 'server_id' => $sid));
             if ($s !== NULL) {
                 $checked = TRUE;
                 $display = NULL;
                 $name1 = $s->custom_flags;
                 $name2 = $s->use_static_bantime;
             }
             $customflags = CHtml::textField('customflags', $name1, array('class' => 'input' . $admin->id, 'style' => $display));
             $staticbantime = CHtml::dropDownList('staticbantime', $name2, array('no' => 'Нет', 'yes' => 'Да'), array('class' => 'input' . $admin->id, 'style' => $display));
             $link = CHtml::link('<i class="icon-ok-sign"></i>', '#', array('onclick' => '$.post("", $("#tr' . $admin->id . ' input, #tr' . $admin->id . ' select").serialize(), function(data){ eval(data); }); return false;', 'rel' => 'tooltip', 'title' => 'Сохранить'));
             $js .= "<tr id='tr" . $admin->id . "'{$class}>";
             $js .= CHtml::form('', 'post', array('id' => 'form' . $admin->id));
             $js .= "<td id=\"nickname\">" . CHtml::encode($admin->nickname) . '</td>';
             $js .= "<td id=\"\">{$admin->steamid}</td>";
             $js .= "<td id=\"customflags\">{$customflags}</td>";
             $js .= "<td id=\"staticbantime\">{$staticbantime}</td>";
             $js .= "<td style=\"text-align: center; vertical-alifn: middle\">" . CHtml::checkBox('active', $checked, array('id' => 'active' . $admin->id, 'onclick' => 'checkaccess("' . $admin->id . '");')) . "</td>";
             $js .= "<td style=\"text-align: center; vertical-alifn: middle\">{$link}</td>";
             $js .= CHtml::hiddenField('aid', $admin->id);
             $js .= CHtml::hiddenField('sid', $sid);
             $js .= CHtml::endForm();
             $js .= "</tr>";
         }
         $js .= '</tbody></table>';
         Yii::app()->end($js);
     }
     $this->render('adminsonservers', array('servers' => Serverinfo::model()->cache(600)->findAll()));
 }
Beispiel #2
0
 public function afterDelete()
 {
     AdminsServers::model()->deleteAllByAttributes(array('admin_id' => $this->id));
     Syslog::add(Logs::LOG_DELETED, 'Удален AmxModX админ <strong>' . $this->nickname . '</strong>');
     return parent::afterDelete();
 }