setReadOnly(); if ($session->userGrade < 5) { header('location:_admin1.php'); die(); } $v = new Validator($_POST); $v->rule('integer', [ 'maxgeneral', 'minutes2' ])->rule('dateFormat', [ 'starttime' ], 'Y-m-d H:i:s'); if (!$v->validate()) { Error($v->errorStr()); } $msg = Util::getPost('msg'); $btn = Util::getPost('btn'); $log = Util::getPost('log'); $starttime = Util::getPost('starttime', 'string', (new \DateTime())->format('Y-m-d H:i:s')); $maxgeneral = Util::getPost('maxgeneral', 'int', GameConst::$defaultMaxGeneral); $maxnation = Util::getPost('maxnation', 'int', GameConst::$defaultMaxNation); $startyear = Util::getPost('startyear', 'int', GameConst::$defaultStartYear); $db = DB::db(); $gameStor = KVStorage::getStorage($db, 'game_env'); $admin = getAdmin(); switch ($btn) { case "변경": $gameStor->msg = $msg; break; case "로그쓰기": pushGlobalHistoryLog(["{$log}"]); break; case "변경1": $gameStor->starttime = (new \DateTime($starttime))->format('Y-m-d H:i:s'); break; case "변경2": $gameStor->maxgeneral = $maxgeneral; break; case "변경3": $gameStor->maxnation = $maxnation; break; case "변경4": $gameStor->startyear = $startyear; break; case "1분턴": case "2분턴": case "5분턴": case "10분턴": case "20분턴": case "30분턴": case "60분턴": case "120분턴": $admin = $gameStor->getValues(['turntime', 'turnterm', 'year', 'startyear', 'month']); switch ($btn) { case "1분턴": $turnterm = 1; break; case "2분턴": $turnterm = 2; break; case "5분턴": $turnterm = 5; break; case "10분턴": $turnterm = 10; break; case "20분턴": $turnterm = 20; break; case "30분턴": $turnterm = 30; break; case "60분턴": $turnterm = 60; break; case "120분턴": $turnterm = 120; break; } $oldunit = $admin['turnterm'] * 60; $unit = $turnterm * 60; $unitDiff = $unit / $oldunit; $servTurnTime = new \DateTimeImmutable($admin['turntime']); foreach ($db->query('SELECT no,turntime FROM general') as $gen) { $genTurnTime = new \DateTimeImmutable($gen['turntime']); $timeDiff = TimeUtil::DateIntervalToSeconds($genTurnTime->diff($servTurnTime)); $timeDiff *= $unitDiff; $newGenTurnTime = $servTurnTime->add(TimeUtil::secondsToDateInterval($timeDiff)); $db->update('general', [ 'turntime'=>$newGenTurnTime->format('Y-m-d H:i:s.u') ], 'no=%i', $gen['no']); } $turn = ($admin['year'] - $admin['startyear']) * 12 + $admin['month'] - 1; $starttime = $servTurnTime->sub(TimeUtil::secondsToDateInterval($turn * $unit))->format('Y-m-d H:i:s'); $starttime = cutTurn($starttime, $turnterm, false); $gameStor->turnterm = $turnterm; $gameStor->starttime = $starttime; pushGlobalHistoryLog(["★턴시간이 $btn으로 변경됩니다."]); break; } header('location:_admin1.php');