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));
 }
Example #2
0
 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));
 }
Example #4
0
 /**
  * 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);
 }