diff --git a/hwe/sammo/ActionLogger.php b/hwe/sammo/ActionLogger.php new file mode 100644 index 00000000..49b67fff --- /dev/null +++ b/hwe/sammo/ActionLogger.php @@ -0,0 +1,169 @@ +generalId = $generalId; + $this->nationId = $nationId; + $this->autoFlush = $autoFlush; + } + + public function __destruct(){ + if($this->autoFlush){ + $this->flush(); + } + } + + public function flush(){ + $db = DB::db(); + + if($this->generalHistoryLog){ + $rawText = join('
', $this->generalHistoryLog).'
'; + $db->update('general', [ + 'history'=>$db->sqleval('concat(%s, history)', $rawText) + ], 'no=%i', $this->generalId); + $this->generalHistoryLog = []; + } + + if($this->generalActionLog){ + pushGenLog(['no'=>$this->generalId], $this->generalActionLog); + $this->generalActionLog = []; + } + + if($this->generalBattleResultLog){ + pushGenLog(['no'=>$this->generalId], $this->generalBattleResultLog); + $this->generalBattleResultLog = []; + } + + if($this->generalBattleDetailLog){ + pushGenLog(['no'=>$this->generalId], $this->generalBattleDetailLog); + $this->generalBattleDetailLog = []; + } + + if($this->nationId && $this->nationalHistoryLog){ + $rawText = join('
', $this->nationalHistoryLog).'
'; + $db->update('nation', [ + 'history'=>$db->sqleval('concat(%s, history)', $rawText) + ], 'nation=%i', $this->nationId); + $this->nationalHistoryLog = []; + } + + if($this->globalHistoryLog){ + pushWorldHistory($this->globalHistoryLog); + $this->globalHistoryLog = []; + } + + if($this->globalActionLog){ + pushGeneralPublicRecord($this->globalActionLog); + $this->globalActionLog = []; + } + } + + + public function pushGeneralHistoryLog($text){ + if(!$text){ + return; + } + if(is_array($text)){ + foreach($text as $textItem){ + $this->pushGeneralHistoryLog($textItem); + } + return; + } + $this->generalHistoryLog[] = $text; + } + + public function pushGeneralActionLog($text){ + if(!$text){ + return; + } + if(is_array($text)){ + foreach($text as $textItem){ + $this->pushGeneralActionLog($textItem); + } + return; + } + $this->generalActionLog[] = $text; + } + + public function pushGeneralBattleResultLog($text){ + if(!$text){ + return; + } + if(is_array($text)){ + foreach($text as $textItem){ + $this->pushGeneralBattleResultLog($textItem); + } + return; + } + $this->generalBattleResultLog[] = $text; + } + + public function pushGeneralBattleDetailLog($text){ + if(!$text){ + return; + } + if(is_array($text)){ + foreach($text as $textItem){ + $this->pushGeneralBattleDetailLog($textItem); + } + return; + } + $this->generalBattleDetailLog[] = $text; + } + + public function pushNationalHistoryLog($text){ + if(!$text){ + return; + } + if(is_array($text)){ + foreach($text as $textItem){ + $this->pushNationalHistoryLog($textItem); + } + return; + } + $this->nationalHistoryLog[] = $text; + } + + public function pushGlobalActionLog($text){ + if(!$text){ + return; + } + if(is_array($text)){ + foreach($text as $textItem){ + $this->pushGlobalActionLog($textItem); + } + return; + } + $this->globalActionLog[] = $text; + } + + public function pushGlobalHistoryLog($text){ + if(!$text){ + return; + } + if(is_array($text)){ + foreach($text as $textItem){ + $this->pushGlobalHistoryLog($textItem); + } + return; + } + $this->globalHistoryLog[] = $text; + } + + + +} \ No newline at end of file