public function actionCreateCommand($server_id, $name, $role, $chat, $response, $run) { $this->check($server_id); $sv = $this->model('Server', (int) $server_id); $this->create('Command', array('server_id' => $sv->id, 'name' => $name, 'level' => User::getRoleLevel($role), 'chat' => $chat, 'response' => $response, 'run' => $run)); }
public function getLevel($server) { $role = $this->getServerRole($server); if (!$role) { return 1; } return User::getRoleLevel($role); }
public function actionIndex($my = false) { $models = array(); $order = array('order' => 'lower(name) asc'); if (isset($_POST['ajax'])) { switch ($_POST['ajax']) { case 'get_status': $id = (int) @$_POST['server']; $sv = Server::model()->findByPk($id); $data = 0; $susp = 0; $maxpl = 0; $chat = Yii::app()->user->can($id, 'chat') ? 1 : 0; if ($sv) { $data = $sv->getOnlinePlayers(); $susp = $sv->suspended; $maxpl = $sv->players; } echo CJSON::encode(array('id' => $id, 'sp' => $susp, 'pl' => $data, 'max' => $maxpl, 'chat' => $chat)); break; } Yii::app()->end(); } if (Yii::app()->user->isSuperuser()) { $models = Server::model()->findAll($order); } else { $ids = array(); if (!$my) { //get default visible $sql = 'select `id` from `server` where `default_level`>=?'; $cmd = Yii::app()->bridgeDb->createCommand($sql); $cmd->bindValue(1, (int) User::getRoleLevel('guest')); $ids = $cmd->queryColumn(); //remove never visible $sql = 'select `server_id` from `server_config` where `visible`!=1'; $cmd = Yii::app()->db->createCommand($sql); $ids = array_diff($ids, $cmd->queryColumn()); //add always visible /*$sql = 'select `server_id` from `server_config` where `visible`='; $cmd = Yii::app()->db->createCommand($sql); $ids = array_merge($ids, $cmd->queryColumn());*/ } if (!Yii::app()->user->isGuest) { //add user visible $cmd = Yii::app()->db->createCommand($this->ownServerSql); $cmd->bindValue(1, (int) Yii::app()->user->id); $ids = array_merge($ids, $cmd->queryColumn()); } if ($my && count($ids) == 1) { $this->redirect(array('server/view', 'id' => $ids[0])); } if (count($ids)) { $models = Server::model()->findAllByAttributes(array('id' => array_values($ids)), $order); } } if ($spp = Setting::model()->findByPk('serversPerPage')) { $spp = max(1, (int) $spp->value); } $this->render('index', array('dataProvider' => new CArrayDataProvider($models, array('sort' => array('attributes' => array('name')), 'pagination' => array('pageSize' => $spp))), 'my' => $my)); }
/** * Returns the current users role for the specified server */ public function serverRole($server) { if (isset($this->_serverRole[$server])) { return $this->_serverRole[$server]; } if ($this->isSuperuser()) { return 'owner'; } $sv = Server::model()->findByPk((int) $server); $role = $sv ? User::getLevelRole($sv->default_level) : ''; if (!$this->isGuest) { if ($r = $this->model->getServerRole($server)) { $role = $r; } if (User::getRoleLevel($role) < User::getRoleLevel($this->globalRole)) { $role = $this->globalRole; } } return $this->_serverRole[$server] = $this->checkSvRole($sv, $role); }