rule('required', 'gen') ->rule('integer', 'gen'); $btn = Util::getReq('btn'); $gen = Util::getReq('gen', 'int', 0); $reqQueryType = Util::getReq('query_type', 'string', null); // $queryTypeText, $reqArgType(0=>None, 1=>AdditionalColumn, 2=>rankVal, 3=>aux), $comp $queryMap = [ 'turntime' => ['최근턴', 0, function($lhs, $rhs){ return -($lhs['turntime']<=>$rhs['turntime']); }], 'recent_war' => ['최근전투', 1, function($lhs, $rhs){ return -($lhs['recent_war']<=>$rhs['recent_war']); }], 'name' => ['장수명', 0, function($lhs, $rhs){ if($lhs['npc'] !== $rhs['npc']){ return $lhs['npc']<=>$rhs['npc']; } return $lhs['name']<=>$rhs['name']; }], 'warnum' => ['전투수', 2, function($lhs, $rhs){ return -($lhs['warnum']<=>$rhs['warnum']); }] ]; if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){ $reqQueryType = Util::array_first_key($queryMap); } //로그인 검사 $session = Session::requireGameLogin()->setReadOnly(); $userID = Session::getUserID(); $db = DB::db(); $gameStor = KVStorage::getStorage($db, 'game_env'); increaseRefresh("감찰부", 2); //전투 추진을 위해 갱신 TurnExecutionHelper::executeAllCommand(); $gameStor->resetCache(); $testGeneralNationID = $db->queryFirstField('SELECT nation FROM general WHERE no = %i', $gen); $me = $db->queryFirstRow('SELECT no,nation,officer_level,con,turntime,belong,permission,penalty from general where owner=%i', $userID); $nationID = $me['nation']; $con = checkLimit($me['con']); if ($con >= 2) { printLimitMsg($me['turntime']); exit(); } $permission = checkSecretPermission($me); if($permission < 0){ echo '국가에 소속되어있지 않습니다.'; die(); } else if ($permission < 1) { echo "권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다."; die(); } //잘못된 접근 if ($testGeneralNationID != $nationID) { $gen = 0; } if ($btn == '정렬하기') { $gen = 0; } [$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType]; if($reqArgType===0){ $generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level FROM general WHERE nation = %i', $nationID); } else if($reqArgType===1){ $generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level, %b FROM general WHERE nation = %i', $reqQueryType, $nationID); } else if($reqArgType===2){ $generalBasicList = $db->query('SELECT no, name, npc, turntime, officer_level, value as %b FROM general LEFT JOIN rank_data ON general.no = rank_data.general_id WHERE rank_data.type = %s AND general.nation = %i', $reqQueryType, $reqQueryType, $nationID ); } else if($reqArgType===3){ $generalBasicList = array_map(function($arr){ $arr['aux'] = Json::decode($arr['aux']); return $arr; }, $db->query('SELECT no, name, npc, turntime, officer_level, aux FROM general WHERE nation = %i', $nationID)); } else{ throw new \sammo\MustNotBeReachedException(); } usort($generalBasicList, $comp); if(!$gen){ $gen = $generalBasicList[0]['no']; } $showGeneral = General::createGeneralObjFromDB($gen); ?> <?=UniqueConst::$serverName?>: 감찰부
감 찰 부
정렬순서 : 대상장수 :
getVar('npc') > 1 || $permission >= 2): ?>
장 수 정 보 장 수 열 전
전투 기록 전투 결과
개인 기록