private function getData(User $user, BattleFilterForm $filter)
 {
     $query = (new \yii\db\Query())->select(['map_key' => 'MAX({{map}}.[[key]])', 'rule_key' => 'MAX({{rule}}.[[key]])', 'result' => '(CASE WHEN {{battle}}.[[is_win]] = TRUE THEN \'win\' ELSE \'lose\' END)', 'count' => 'COUNT(*)'])->from('battle')->innerJoin('map', '{{battle}}.[[map_id]] = {{map}}.[[id]]')->innerJoin('rule', '{{battle}}.[[rule_id]] = {{rule}}.[[id]]')->leftJoin('lobby', '{{battle}}.[[lobby_id]] = {{lobby}}.[[id]]')->leftJoin('game_mode', '{{rule}}.[[mode_id]] = {{game_mode}}.[[id]]')->leftJoin('weapon', '{{battle}}.[[weapon_id]] = {{weapon}}.[[id]]')->leftJoin('weapon_type', '{{weapon}}.[[type_id]] = {{weapon_type}}.[[id]]')->leftJoin('subweapon', '{{weapon}}.[[subweapon_id]] = {{subweapon}}.[[id]]')->leftJoin('special', '{{weapon}}.[[special_id]] = {{special}}.[[id]]')->andWhere(['{{battle}}.[[user_id]]' => $user->id])->andWhere(['in', '{{battle}}.[[is_win]]', [true, false]])->groupBy(['{{battle}}.[[map_id]]', '{{battle}}.[[rule_id]]', '{{battle}}.[[is_win]]']);
     if ($filter && !$filter->hasErrors()) {
         $this->filter($query, $filter);
     }
     $maps = Map::find()->all();
     $rules = Rule::find()->all();
     $ret = [];
     foreach ($maps as $map) {
         $tmp = [];
         foreach ($rules as $rule) {
             $tmp[$rule->key] = ['win' => 0, 'lose' => 0];
         }
         $ret[$map->key] = $tmp;
     }
     foreach ($query->createCommand()->queryAll() as $row) {
         $row = (object) $row;
         $ret[$row->map_key][$row->rule_key][$row->result] = (int) $row->count;
     }
     $maps2 = [];
     foreach ($maps as $map) {
         $maps2[$map->key] = Yii::t('app-map', $map->name);
     }
     asort($maps2);
     $rules2 = [];
     foreach ($rules as $rule) {
         $rules2[$rule->key] = Yii::t('app-rule', $rule->name);
     }
     asort($rules2);
     return ['data' => $ret, 'mapNames' => $maps2, 'ruleNames' => $rules2];
 }
Exemplo n.º 2
0
 public function run()
 {
     $rules = [];
     $query = Rule::find()->innerJoinWith('mode')->andWhere(['{{game_mode}}.[[key]]' => 'gachi']);
     foreach ($query->all() as $rule) {
         $rules[$rule->id] = Yii::t('app-rule', $rule->name);
     }
     asort($rules);
     $maps = [];
     foreach (Map::find()->all() as $map) {
         $maps[$map->id] = Yii::t('app-map', $map->name);
     }
     asort($maps);
     // init data
     $data = [];
     foreach (array_keys($maps) as $mapId) {
         $data[$mapId] = [];
         foreach (array_keys($rules) as $ruleId) {
             $data[$mapId][$ruleId] = (object) ['battle_count' => 0, 'ko_count' => 0];
         }
     }
     // set data
     foreach ($this->query() as $row) {
         $ruleId = $row['rule_id'];
         $mapId = $row['map_id'];
         $data[$mapId][$ruleId]->battle_count = (int) $row['battle_count'];
         $data[$mapId][$ruleId]->ko_count = (int) $row['ko_count'];
     }
     return $this->controller->render('knockout.tpl', ['rules' => $rules, 'maps' => $maps, 'data' => $data]);
 }
Exemplo n.º 3
0
 public function run()
 {
     $response = Yii::$app->getResponse();
     $response->format = 'json';
     return array_map(function ($rule) {
         return $rule->toJsonArray();
     }, Rule::find()->with('mode')->all());
 }
 public function up()
 {
     $rule = [];
     // [ 'arowana' => 42, ... ]
     foreach (Rule::find()->all() as $_) {
         $rule[$_->key] = $_->id;
     }
     // 今後表記揺れが発生する可能性がある(ないけど)ので rule_id を PKEY にはしない
     $this->createTable('splapi_rule', ['id' => $this->primaryKey(), 'rule_id' => $this->integer()->notNull(), 'name' => $this->string(32)->notNull()->unique()]);
     $this->addForeignKey('fk_splapi_rule_1', 'splapi_rule', 'rule_id', 'rule', 'id');
     $this->batchInsert('splapi_rule', ['rule_id', 'name'], [[$rule['nawabari'], 'ナワバリバトル'], [$rule['area'], 'ガチエリア'], [$rule['yagura'], 'ガチヤグラ'], [$rule['hoko'], 'ガチホコ']]);
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Rule::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'weight' => $this->weight, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'description', $this->description]);
     return $dataProvider;
 }
Exemplo n.º 6
0
 private function makeRules()
 {
     $ret = ['' => Yii::t('app', 'Unknown')];
     $gameModes = GameMode::find()->orderBy('[[id]] ASC')->all();
     foreach ($gameModes as $gameMode) {
         $gameModeText = Yii::t('app-rule', $gameMode->name);
         // "ナワバリバトル"
         $rules = Rule::find()->andWhere(['mode_id' => $gameMode->id])->orderBy('[[id]] ASC')->all();
         $mode = [];
         foreach ($rules as $rule) {
             $mode[$rule->id] = Yii::t('app-rule', $rule->name);
         }
         asort($mode);
         $ret[$gameModeText] = $mode;
     }
     return $ret;
 }
Exemplo n.º 7
0
 private function makeRulesList()
 {
     $ret = ['' => Yii::t('app-rule', 'Any Mode')];
     $gameModes = GameMode::find()->orderBy('[[id]] ASC')->all();
     foreach ($gameModes as $gameMode) {
         $gameModeText = Yii::t('app-rule', $gameMode->name);
         // "ナワバリバトル"
         $rules = Rule::find()->andWhere(['mode_id' => $gameMode->id])->orderBy('[[id]] ASC')->all();
         $mode = [];
         if (count($rules) > 1) {
             $mode['@' . $gameMode->key] = Yii::t('app-rule', 'All of {0}', $gameModeText);
         }
         foreach ($rules as $rule) {
             $mode[$rule->key] = Yii::t('app-rule', $rule->name);
         }
         $ret[$gameModeText] = $mode;
     }
     return $ret;
 }
Exemplo n.º 8
0
 /**
  * Lists all Feature models.
  * @return mixed
  */
 public function actionIndex()
 {
     // $app = (new \yii\db\Query())->select(["aid"])->from('app')->groupBy("aid")->all();
     $app = Rule::find()->select(["aid"])->groupBy("aid")->with("app")->asArray()->all();
     $role = Rule::find()->select(["role_id"])->groupBy("role_id")->with("role")->asArray()->all();
     $model = Rule::find()->select(["model_id"])->groupBy("model_id")->with("model")->asArray()->all();
     $feature = Rule::find()->select(["feature_id"])->groupBy("feature_id")->with("feature")->asArray()->all();
     $scope = Rule::find()->select(["scope_id"])->groupBy("scope_id")->with("scope")->asArray()->all();
     $str = "";
     foreach ($app as $va) {
         $str .= "acl app_" . $va['aid'] . "\thdr(X-App)\t" . $va['app']['code'] . "\n";
     }
     foreach ($role as $vr) {
         $str .= "acl role_" . $vr['role_id'] . "\thdr(X-Role)\t" . $vr['role']['name'] . "\n";
     }
     foreach ($model as $vm) {
         $str .= "acl model_" . $vm['model_id'] . "\thdr(X-Model)\t" . $vm['model']['name'] . "\n";
     }
     foreach ($feature as $vf) {
         $str .= "acl feature_" . $vf['feature_id'] . "\thdr(X-Feature)\t" . $vf['feature']['name'] . "\n";
     }
     foreach ($scope as $vs) {
         $str .= "acl scope_" . $vs['scope_id'] . "\thdr(X-Scope)\t" . $vs['scope']['name'] . "\n";
     }
     $rule = Rule::find()->select(['aid', 'role_id', 'model_id', 'feature_id', 'scope_id'])->asArray()->all();
     // print_r($rule);
     foreach ($rule as $vu) {
         $str .= "use_backend dynamic\t\tif app_" . $vu['aid'] . " role_" . $vu['role_id'] . " model_" . $vu['model_id'] . " feature_" . $vu['feature_id'] . " scope_" . $vu['scope_id'] . "\n";
     }
     $file = fopen("./haproxy.cfg", "w");
     if (!$file) {
         throw new NotFoundHttpException("No such the directory or file!");
     }
     if (fwrite($file, $str) === FALSE) {
         throw new NotFoundHttpException("File is written to failure!");
     }
     fclose($file);
     echo "OK,The haproxy.cfg created successful!";
 }
Exemplo n.º 9
0
 public static function getAllIdName()
 {
     return ArrayHelper::map(Rule::find()->asArray()->all(), 'id', 'name');
 }
Exemplo n.º 10
0
 private function notHas($uid, $app)
 {
     $app = App::find()->where(['code' => $app])->asArray()->one();
     $role = RoleUser::find()->where(['uid' => $uid])->asArray()->all();
     $roleid = array();
     foreach ($role as $vr) {
         $roleid[] = $vr['rid'];
     }
     $roleid = implode(',', $roleid);
     $rule = Rule::find()->select(['aid', 'role_id', 'model_id', 'feature_id', 'scope_id'])->where("role_id not in({$roleid})")->andWhere(['aid' => $app['id']])->asArray()->all();
     $result = array();
     $unique = array();
     foreach ($rule as $k => $vu) {
         $apps = App::find()->select(['name'])->where(['id' => $vu['aid']])->asArray()->one();
         $result[$k]['app'] = $apps['name'];
         $roles = Role::find()->select(['name'])->where(['id' => $vu['role_id']])->asArray()->one();
         $result[$k]['role'] = $roles['name'];
         $model = Model::find()->select(['name'])->where(['id' => $vu['model_id']])->asArray()->one();
         $result[$k]['model'] = $model['name'];
         $feature = Feature::find()->select(['name'])->where(['id' => $vu['feature_id']])->asArray()->one();
         $result[$k]['feature'] = $feature['name'];
         $scopes = Rule::find()->select(['scope_id'])->where(['aid' => $vu['aid'], 'role_id' => $vu['role_id'], 'model_id' => $vu['model_id'], 'feature_id' => $vu['feature_id']])->asArray()->all();
         foreach ($scopes as $ks => $vs) {
             $scope = Scope::find()->select(['name', 'attribute'])->where(['id' => $vs['scope_id']])->asArray()->one();
             $result[$k]['scope'][$ks]['name'] = $scope['name'];
             $result[$k]['scope'][$ks]['attribute'] = $scope['attribute'];
         }
         $unique[$k] = $vu['aid'] . $vu['role_id'] . $model['name'] . $feature['name'];
     }
     // delete the repeat elements
     $unique = array_unique($unique);
     $res = array();
     foreach ($unique as $kq => $vq) {
         $res[] = $result[$kq];
     }
     return $res;
 }
Exemplo n.º 11
0
 private function notHas($uid, $app, $feature)
 {
     $app = App::find()->select(['id', 'name'])->where(['code' => $app])->asArray()->one();
     $role = RoleUser::find()->select(['rid', 'rname'])->where(['uid' => $uid])->asArray()->all();
     $roleid = array();
     foreach ($role as $vr) {
         $roleid[] = $vr['rid'];
     }
     $roleid = implode(',', $roleid);
     $scopes = Rule::find()->select(['model_id', 'scope_id'])->where(['aid' => $app['id']])->andWhere(['feature_code' => $feature])->andWhere("role_id not in({$roleid})")->asArray()->all();
     $feature = Feature::find()->select(['name'])->where(['code' => $feature])->asArray()->one();
     // delete repeat data
     $unique = array();
     foreach ($scopes as $k => $vs) {
         $unique[$k] = $vs['model_id'] . ',' . $vs['scope_id'];
     }
     $scope = array_unique($unique);
     $result = array();
     foreach ($scope as $k => $v) {
         $result[] = $scopes[$k];
     }
     $final = array();
     foreach ($result as $k => $vu) {
         $model = Model::find()->select(['name'])->where(['id' => $vu['model_id']])->asArray()->one();
         $scope = Scope::find()->select(['name', 'attribute'])->where(['id' => $vu['scope_id']])->asArray()->one();
         $final[$k]['model'] = $model['name'];
         $final[$k]['feature'] = $feature['name'];
         $final[$k]['scope'] = $scope['name'];
         $final[$k]['scope_attribute'] = $scope['attribute'];
     }
     return $final;
 }
Exemplo n.º 12
0
 public function deleteRule($id)
 {
     $user = Auth::user();
     $rule = Rule::find($id);
     $response = $rule->delete();
     return response()->json($response)->header('Access-Control-Allow-Origin', '*');
 }