setReadOnly(); if($session->userGrade < 5){ Json::die([ 'result'=>false, 'reason'=>'관리자 아님' ]); } $v = new Validator($_POST); $v->rule('required', [ 'turnterm', 'sync', 'scenario', 'fiction', 'extend', 'npcmode', 'show_img_level' ])->rule('integer', [ 'turnterm', 'sync', 'scenario', 'fiction', 'extend', 'npcmode', 'show_img_level' ]); if(!$v->validate()){ $errors = array_values((array)$v->errors()); $errors = array_map(function($value){return join(', ', $value);}, $errors); $errors = join(', ', $errors); Json::die([ 'result'=>false, 'reason'=>$errors ]); } $turnterm = (int)$_POST['turnterm']; $sync = (int)$_POST['sync']; $scenario = (int)$_POST['scenario']; $fiction = (int)$_POST['fiction']; $extend = (int)$_POST['extend']; $npcmode = (int)$_POST['npcmode']; $show_img_level = (int)$_POST['show_img_level']; if(120 % $turnterm != 0){ Json::die([ 'result'=>false, 'turnterm은 120의 약수여야 합니다.' ]); } if(!file_exists(__dir__.'/logs') || !file_exists(__dir__.'/data')){ if(!is_writable(__dir__)){ Json::die([ 'result'=>false, 'reason'=>'logs, data 디렉토리를 생성할 권한이 없습니다.' ]); } mkdir(__dir__.'/logs', 0644); mkdir(__dir__.'/data', 0644); } if(!is_writable(__dir__.'/logs')){ Json::die([ 'result'=>false, 'reason'=>'logs 디렉토리의 쓰기 권한이 없습니다' ]); } if(!is_writable(__dir__.'/data')){ Json::die([ 'result'=>false, 'reason'=>'data 디렉토리의 쓰기 권한이 없습니다' ]); } if(!is_writable(__dir__.'/d_setting')){ Json::die([ 'result'=>false, 'reason'=>'d_setting 디렉토리의 쓰기 권한이 없습니다' ]); } if(!file_exists(__dir__.'/logs/.htaccess')){ @file_put_contents(__dir__.'/logs/.htaccess', 'Deny from all'); } if(!file_exists(__dir__.'/data/.htaccess')){ @file_put_contents(__dir__.'/data/.htaccess', 'Deny from all'); } $db = DB::db(); $mysqli_obj = $db->get(); $scenarioObj = new Scenario($scenario, false); $startyear = $scenarioObj->getYear(); FileUtil::delInDir("logs"); FileUtil::delInDir("data"); $result = Util::generateFileUsingSimpleTemplate( __DIR__.'/d_setting/UniqueConst.orig.php', __DIR__.'/d_setting/UniqueConst.php',[ 'serverID'=>DB::prefix().'_'.Util::randomStr(8) ], true ); if($mysqli_obj->multi_query(file_get_contents(__dir__.'/sql/reset.sql'))){ while(true){ if (!$mysqli_obj->more_results()) { break; } if(!$mysqli_obj->next_result()){ break; } } } if($mysqli_obj->multi_query(file_get_contents(__dir__.'/sql/schema.sql'))){ while(true){ if (!$mysqli_obj->more_results()) { break; } if(!$mysqli_obj->next_result()){ break; } } } $db->insert('plock', [ 'plock'=>1 ]); CityConst::build(); $turntime = date('Y-m-d H:i:s'); $time = substr($turntime, 11, 2); if($sync == 0) { // 현재 시간을 1월로 맞춤 $starttime = cutTurn($turntime, $turnterm); $month = 1; $year = $startyear; } else { // 현재 시간과 동기화 list($starttime, $yearPulled, $month) = cutDay($turntime, $turnterm); if($yearPulled){ $year = $startyear-1; } else{ $year = $startyear; } } $killturn = 4800 / $turnterm; if($npcmode == 1) { $killturn = floor($killturn / 3); } $env = [ 'scenario'=>$scenario, 'scenario_text'=>$scenarioObj->getTitle(), 'startyear'=>$startyear, 'year'=> $year, 'month'=> $month, 'msg'=>'공지사항',//TODO:공지사항 'maxgeneral'=>500, 'normgeneral'=>300, 'maxnation'=>55, 'conlimit'=>300, 'gold_rate'=>100, 'rice_rate'=>100, 'turntime'=>$turntime, 'starttime'=>$starttime, 'turnterm'=>$turnterm, 'killturn'=>$killturn, 'genius'=>5, 'show_img_level'=>$show_img_level, 'npcmode'=>$npcmode, 'extended_general'=>$extend, 'fiction'=>$fiction ]; foreach(RootDB::db()->query('SELECT `no`, `name`, `picture`, `imgsvr` FROM member WHERE grade >= 5') as $admin){ $db->insert('general', [ 'owner'=>$admin['no'], 'name'=>$admin['name'], 'picture'=>$admin['picture'], 'imgsvr'=>$admin['imgsvr'], 'turntime'=>$turntime, 'killturn'=>null ]); } $db->insert('game', $env); $scenarioObj->build($env); $db->update('plock', [ 'plock'=>0 ], true); Json::die([ 'result'=>true ]);