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]; }
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]); }
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; }
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; }
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; }
/** * 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!"; }
public static function getAllIdName() { return ArrayHelper::map(Rule::find()->asArray()->all(), 'id', 'name'); }
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; }
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; }
public function deleteRule($id) { $user = Auth::user(); $rule = Rule::find($id); $response = $rule->delete(); return response()->json($response)->header('Access-Control-Allow-Origin', '*'); }