서버 예약 오픈을 UI에 통합
This commit is contained in:
+4
-1
@@ -51,14 +51,17 @@ $reserve_open = Util::getReq('reserve_open');
|
||||
if($reserve_open){
|
||||
$reserve_open = new \DateTime($reserve_open);
|
||||
$db = DB::db();
|
||||
|
||||
|
||||
ResetHelper::clearDB();
|
||||
|
||||
$scenarioObj = new Scenario($scenario, true);
|
||||
$db->delete('reserved_open', true);
|
||||
$db->insert('reserved_open', [
|
||||
'options'=>Json::encode([
|
||||
'turnterm'=>$turnterm,
|
||||
'sync'=>$sync,
|
||||
'scenario'=>$scenario,
|
||||
'scenarioName'=>$scenarioObj->getTitle(),
|
||||
'fiction'=>$fiction,
|
||||
'extend'=>$extend,
|
||||
'npcmode'=>$npcmode,
|
||||
|
||||
@@ -4,15 +4,49 @@ namespace sammo;
|
||||
include "lib.php";
|
||||
|
||||
$session = Session::requireLogin([
|
||||
'game'=>'x',
|
||||
'game'=>null,
|
||||
'me'=>null
|
||||
])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
if(!class_exists('\\sammo\\DB')){
|
||||
Json::die([
|
||||
'game'=>null,
|
||||
'me'=>null
|
||||
]);
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
$game = $db->queryFirstRow('SELECT isUnited, npcMode, year, month, scenario, scenario_text, maxgeneral as maxUserCnt, turnTerm from game where `no`=1');
|
||||
|
||||
if(!$game){
|
||||
$reserved = $db->queryFirstRow(
|
||||
'SELECT * FROM reserved_open ORDER BY `date` ASC LIMIT 1'
|
||||
);
|
||||
if(!$reserved){
|
||||
Json::die([
|
||||
'game'=>null,
|
||||
'me'=>null
|
||||
]);
|
||||
}
|
||||
|
||||
$options = Json::decode($reserved['options']);
|
||||
|
||||
Json::die([
|
||||
'reserved'=>[
|
||||
'scenarioName'=>$options['scenarioName'],
|
||||
'turnterm'=>$options['turnterm'],
|
||||
'fictionMode'=>($options['fiction']?'연의':'가상'),
|
||||
'npcMode'=>($options['npcmode']?'가능':'불가'),
|
||||
'openDatetime'=>$reserved['date']
|
||||
],
|
||||
'game'=>null,
|
||||
'me'=>null
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
$nationCnt = $db->queryFirstField('SELECT count(`nation`) from nation where `level` > 0');
|
||||
$genCnt = $db->queryFirstField('SELECT count(`no`) from general where `npc` < 2');
|
||||
$npcCnt = $db->queryFirstField('SELECT count(`no`) from general where `npc` >= 2');
|
||||
|
||||
+13
-1
@@ -643,4 +643,16 @@ CREATE TABLE `general_public_record` (
|
||||
)
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
ENGINE=InnoDB
|
||||
;
|
||||
;
|
||||
|
||||
######
|
||||
# 예약 오픈 테이블
|
||||
CREATE TABLE `reserved_open` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`options` TEXT NULL DEFAULT NULL,
|
||||
`date` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `date` (`date`)
|
||||
)
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
ENGINE=MyISAM;
|
||||
|
||||
@@ -12,6 +12,7 @@ foreach(AppConf::getList() as $setting){
|
||||
'color'=>$setting->getColor(),
|
||||
'korName'=>$setting->getKorName(),
|
||||
'name'=>$setting->getShortName(),
|
||||
'exists'=>$setting->isExists(),
|
||||
'enable'=>$setting->isRunning()
|
||||
];
|
||||
|
||||
|
||||
+17
-1
@@ -42,6 +42,14 @@ var serverLoginTemplate = "\
|
||||
</td>\
|
||||
";
|
||||
|
||||
|
||||
var serverReservedTemplate = "\
|
||||
<td colspan='4' class='server_reserved'>\
|
||||
- 오픈 일시 : <%openDatetime%> - <br>\
|
||||
<span style='color:orange;'><%scenarioName%></span> <span style='color:limegreen;'><%turnterm%>분 턴 서버</span><br>\
|
||||
(연의 모드:<%fictionMode%>), (빙의 여부:<%npcMode%>)</td>\
|
||||
";
|
||||
|
||||
$(function(){
|
||||
$("#btn_logout").click(Entrance_Logout);
|
||||
Entrance_UpdateServer();
|
||||
@@ -64,7 +72,7 @@ function Entrance_drawServerList(serverInfos){
|
||||
$.each(serverInfos, function(idx, serverInfo){
|
||||
var $serverHtml = $(TemplateEngine(serverListTemplate, serverInfo));
|
||||
$serverList.append($serverHtml);
|
||||
if(!serverInfo.enable){
|
||||
if(!serverInfo.exists){
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -72,6 +80,14 @@ function Entrance_drawServerList(serverInfos){
|
||||
|
||||
|
||||
$.getJSON("../"+serverInfo.name+'/j_server_basic_info.php',{}, function(result){
|
||||
if(result.reserved){
|
||||
$serverHtml.find('.server_down').detach();
|
||||
$serverHtml.append(
|
||||
TemplateEngine(serverReservedTemplate, result.reserved)
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!result.game){
|
||||
return;
|
||||
}
|
||||
|
||||
+12
-1
@@ -27,17 +27,28 @@ def main():
|
||||
break
|
||||
|
||||
servList = []
|
||||
autoResetList = []
|
||||
for path in glob.glob(basepath+'/*/d_setting/DB.php'):
|
||||
servPath = os.path.dirname(os.path.dirname(path))
|
||||
servRelPath = os.path.relpath(servPath, basepath)
|
||||
|
||||
resetAbsPath = servPath + '/j_autoreset.php'
|
||||
resetPath = webBase + '/' + servRelPath + '/j_autoreset.php'
|
||||
if os.path.exists(resetAbsPath):
|
||||
autoResetList.append(resetPath)
|
||||
|
||||
if servPath in hiddenList:
|
||||
continue
|
||||
|
||||
servRelPath = os.path.relpath(servPath, basepath)
|
||||
webPath = webBase + '/' + servRelPath + '/proc.php'
|
||||
|
||||
servList.append(webPath)
|
||||
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=len(servList)) as executor:
|
||||
waiters=[]
|
||||
for resetPath in autoResetList:
|
||||
future = executor.submit(run, resetPath)
|
||||
waiters.append(future)
|
||||
for _ in range(4):
|
||||
for webPath in servList:
|
||||
future = executor.submit(run, webPath)
|
||||
|
||||
@@ -7,4 +7,17 @@ Deny from all
|
||||
SetEnvIf X-Forwarded-For ^<?=str_replace('.', '\\.', $allow_ip)?> env_allow_1
|
||||
Allow from env=env_allow_1
|
||||
Allow from <?=$allow_ip?>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<Files j_install.php>
|
||||
Allow from all
|
||||
</Files>
|
||||
<Files install.php>
|
||||
Allow from all
|
||||
</Files>
|
||||
<Files j_server_basic_info.php>
|
||||
Allow from all
|
||||
</Files>
|
||||
<Files ~ "\.(xml|css|jpe?g|png|gif|js|pdf)$">
|
||||
Allow from all
|
||||
</Files>
|
||||
Reference in New Issue
Block a user