forked from devsam/core
이전 로그 보기 추가
This commit is contained in:
+12
-3
@@ -175,10 +175,16 @@ $('#die_immediately').click(function(){
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top>
|
||||
<?=formatHistoryToHTML(getGeneralActionLogRecent($generalID, 24))?>
|
||||
<div id='generalActionPlate'>
|
||||
<?=formatHistoryToHTML(getGeneralActionLogRecent($generalID, 24), 'generalAction')?>
|
||||
</div>
|
||||
<button type="button" class="load_old_log btn btn-secondary btn-block" data-log_type="generalAction">이전 로그 불러오기</button>
|
||||
</td>
|
||||
<td valign=top>
|
||||
<?=formatHistoryToHTML(getBattleDetailLogRecent($generalID, 24))?>
|
||||
<div id='battleDetailPlate'>
|
||||
<?=formatHistoryToHTML(getBattleDetailLogRecent($generalID, 24), 'battleDetail')?>
|
||||
</div>
|
||||
<button type="button" class="load_old_log btn btn-secondary btn-block" data-log_type="battleDetail">이전 로그 불러오기</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -190,7 +196,10 @@ $('#die_immediately').click(function(){
|
||||
<?=formatHistoryToHTML(getGeneralHistoryLogAll($generalID))?>
|
||||
</td>
|
||||
<td valign=top>
|
||||
<?=formatHistoryToHTML(getBattleResultRecent($generalID, 24))?>
|
||||
<div id='battleResultPlate'>
|
||||
<?=formatHistoryToHTML(getBattleResultRecent($generalID, 24), 'battleResult')?>
|
||||
</div>
|
||||
<button type="button" class="load_old_log btn btn-secondary btn-block" data-log_type="battleResult">이전 로그 불러오기</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
+47
-13
@@ -101,12 +101,20 @@ function getAuctionLogRecent(int $count) {
|
||||
}
|
||||
|
||||
//DB-based
|
||||
function formatHistoryToHTML(array $history):string{
|
||||
function formatHistoryToHTML(array $history, ?string $type=null):string{
|
||||
$result = [];
|
||||
foreach($history as $item){
|
||||
$result[] = ConvertLog($item);
|
||||
if($type){
|
||||
foreach($history as $seq=>$item){
|
||||
$result[] = "<div class='log_{$type}' id='log_{$type}_{$seq}' data-seq='{$seq}'>".ConvertLog($item).'</div>';
|
||||
}
|
||||
}
|
||||
return join('<br>', $result);
|
||||
else{
|
||||
foreach($history as $seq=>$item){
|
||||
$result[] = '<div>'.ConvertLog($item).'</div>';
|
||||
}
|
||||
}
|
||||
|
||||
return join('', $result);
|
||||
}
|
||||
|
||||
function pushGeneralActionLog(int $generalID, ?array $history, ?int $year=null, ?int $month=null) {
|
||||
@@ -134,10 +142,19 @@ function pushGeneralActionLog(int $generalID, ?array $history, ?int $year=null,
|
||||
function getGeneralActionLogRecent(int $generalID, int $count):array{
|
||||
$db = DB::db();
|
||||
|
||||
return $db->queryFirstColumn(
|
||||
'SELECT `text` from general_record WHERE general_id = %i AND log_type = "action" order by id desc LIMIT %i',
|
||||
return Util::convertPairArrayToDict($db->queryAllLists(
|
||||
'SELECT `id`,`text` from general_record WHERE general_id = %i AND log_type = "action" order by id desc LIMIT %i',
|
||||
$generalID, $count
|
||||
);
|
||||
));
|
||||
}
|
||||
|
||||
function getGeneralActionLogMore(int $generalID, int $startSeq, int $count):array{
|
||||
$db = DB::db();
|
||||
|
||||
return Util::convertPairArrayToDict($db->queryAllLists(
|
||||
'SELECT `id`,`text` from general_record WHERE general_id = %i AND log_type = "action" AND id < %i order by id desc LIMIT %i',
|
||||
$generalID, $startSeq, $count
|
||||
));
|
||||
}
|
||||
|
||||
function pushBattleResultLog(int $generalID, array $history, ?int $year=null, ?int $month=null) {
|
||||
@@ -165,10 +182,19 @@ function pushBattleResultLog(int $generalID, array $history, ?int $year=null, ?i
|
||||
function getBattleResultRecent(int $generalID, int $count):array {
|
||||
$db = DB::db();
|
||||
|
||||
return $db->queryFirstColumn(
|
||||
'SELECT `text` from general_record WHERE general_id = %i AND log_type = "battle_brief" order by id desc LIMIT %i',
|
||||
return Util::convertPairArrayToDict($db->queryAllLists(
|
||||
'SELECT `id`, `text` from general_record WHERE general_id = %i AND log_type = "battle_brief" order by id desc LIMIT %i',
|
||||
$generalID, $count
|
||||
);
|
||||
));
|
||||
}
|
||||
|
||||
function getBattleResultMore(int $generalID, int $startSeq, int $count):array {
|
||||
$db = DB::db();
|
||||
|
||||
return Util::convertPairArrayToDict($db->queryAllLists(
|
||||
'SELECT `id`, `text` from general_record WHERE general_id = %i AND log_type = "battle_brief" AND id < %i order by id desc LIMIT %i',
|
||||
$generalID, $startSeq, $count
|
||||
));
|
||||
}
|
||||
|
||||
function pushBattleDetailLog(int $generalID, array $history, ?int $year=null, ?int $month=null) {
|
||||
@@ -196,12 +222,20 @@ function pushBattleDetailLog(int $generalID, array $history, ?int $year=null, ?i
|
||||
function getBattleDetailLogRecent(int $generalID, int $count):array {
|
||||
$db = DB::db();
|
||||
|
||||
return $db->queryFirstColumn(
|
||||
'SELECT `text` from general_record WHERE general_id = %i AND log_type = "battle" order by id desc LIMIT %i',
|
||||
return Util::convertPairArrayToDict($db->queryAllLists(
|
||||
'SELECT `id`,`text` from general_record WHERE general_id = %i AND log_type = "battle" order by id desc LIMIT %i',
|
||||
$generalID, $count
|
||||
);
|
||||
));
|
||||
}
|
||||
|
||||
function getBattleDetailLogMore(int $generalID, int $startSeq, int $count):array {
|
||||
$db = DB::db();
|
||||
|
||||
return Util::convertPairArrayToDict($db->queryAllLists(
|
||||
'SELECT `id`,`text` from general_record WHERE general_id = %i AND log_type = "battle" AND id < %i order by id desc LIMIT %i',
|
||||
$generalID, $startSeq, $count
|
||||
));
|
||||
}
|
||||
|
||||
function pushGeneralHistoryLog(int $generalID, ?array $history, $year=null, $month=null) {
|
||||
if(!$history){
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include('lib.php');
|
||||
include('func.php');
|
||||
|
||||
$session = Session::requireGameLogin([]);
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$generalID = Session::getGeneralID();
|
||||
|
||||
$targetID = Util::getPost('general_id', 'int', $generalID);
|
||||
$reqTo = Util::getPost('to', 'int', PHP_INT_MAX);
|
||||
$reqType = Util::getPost('type', 'string');
|
||||
|
||||
if(!in_array($reqType, [
|
||||
'generalAction',
|
||||
'battleResult',
|
||||
'battleDetail'
|
||||
])){
|
||||
return Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'요청 타입이 올바르지 않습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if($generalID <= 0 || $reqTo <= 0){
|
||||
return Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'요청 대상이 올바르지 않습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
$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) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'접속 제한입니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if($generalID !== $targetID){
|
||||
[$testGeneralNationID, $testGeneralNPCType] = $db->queryFirstList('SELECT nation,npc FROM general WHERE no = %i', $targetID);
|
||||
|
||||
$permission = checkSecretPermission($me);
|
||||
if($permission < 0){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'국가에 소속되어있지 않습니다.'
|
||||
]);
|
||||
}
|
||||
if ($permission < 1 && $testGeneralNPCType < 2) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'권한이 부족합니다. 수뇌부가 아니거나 사관년도가 부족합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if($testGeneralNationID !== $nationID){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'동일한 국가의 장수가 아닙니다.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
if($reqType == 'generalAction'){
|
||||
$result = getGeneralActionLogMore($targetID, $reqTo, 30, $lastSeq);
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success',
|
||||
'sequence'=>$lastSeq,
|
||||
'log'=>array_map(function($data){return ConvertLog($data);}, $result)
|
||||
]);
|
||||
}
|
||||
if($reqType == 'battleResult'){
|
||||
$result = getBattleResultMore($targetID, $reqTo, 30, $lastSeq);
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success',
|
||||
'sequence'=>$lastSeq,
|
||||
'log'=>array_map(function($data){return ConvertLog($data);}, $result)
|
||||
]);
|
||||
}
|
||||
if($reqType == 'battleDetail'){
|
||||
$result = getBattleDetailLogMore($targetID, $reqTo, 30, $lastSeq);
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success',
|
||||
'sequence'=>$lastSeq,
|
||||
'log'=>array_map(function($data){return ConvertLog($data);}, $result)
|
||||
]);
|
||||
}
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'Invalid'.$reqType,
|
||||
]);
|
||||
@@ -30,5 +30,56 @@ jQuery(function($){
|
||||
|
||||
}
|
||||
|
||||
$('.load_old_log').click(function(){
|
||||
var $thisBtn = $(this);
|
||||
var logType = $thisBtn.data('log_type');
|
||||
var $last = $('.log_{0}:last'.format(logType));
|
||||
var reqTo = null;
|
||||
if($last.length){
|
||||
reqTo = $last.data('seq');
|
||||
}
|
||||
|
||||
$.post({
|
||||
url:'j_general_log_old.php',
|
||||
dataType:'json',
|
||||
data:{
|
||||
to:reqTo,
|
||||
type:logType
|
||||
}
|
||||
}).then(function(data){
|
||||
if(!data){
|
||||
return quickReject('로그를 받아오지 못했습니다.');
|
||||
}
|
||||
if(!data.result){
|
||||
return quickReject('로그를 받아오지 못했습니다. : '+data.reason);
|
||||
}
|
||||
|
||||
var keys = Object.keys(data.log);
|
||||
if(keys.length > 1 && keys[0] < keys[1]){
|
||||
keys.reverse();
|
||||
}
|
||||
|
||||
if(keys == 0){
|
||||
$thisBtn.hide();
|
||||
return;
|
||||
}
|
||||
|
||||
var html = [];
|
||||
$.each(keys, function(_, key){
|
||||
if($('#log_{0}_{1}'.format(logType, key)).length){
|
||||
return true;
|
||||
}
|
||||
var item = data.log[key];
|
||||
html.push("<div class='log_{0}' id='log_{0}_{1}' data-seq='{1}'>{2}</div>".format(logType, key, item));
|
||||
});
|
||||
|
||||
$('#{0}Plate'.format(logType)).append(html);
|
||||
}, errUnknown)
|
||||
.fail(function(reason){
|
||||
alert(reason);
|
||||
location.reload();
|
||||
});
|
||||
})
|
||||
|
||||
initCustomCSSForm();
|
||||
});
|
||||
Reference in New Issue
Block a user