diff --git a/hwe/css/msg.css b/hwe/css/msg.css
index d6ef807c..873165d0 100644
--- a/hwe/css/msg.css
+++ b/hwe/css/msg.css
@@ -10,12 +10,16 @@
/*임시용 끝*/
#message_board section{
- width:498px;
+ overflow-y:auto;
+ overflow-x:hidden;
+ max-width:498px;
}
.msg_plate{
width:100%;
- border:groove 0.1em;
+ border-bottom:groove 0.1em;
+ border-left:groove 0.1em;
+ border-right:groove 0.1em;
height:64px;
font-size:12px;
word-break:break-all;
@@ -36,6 +40,18 @@
}
+.public_message{
+ height:667px;
+}
+
+.private_message{
+ height:667px;
+}
+
+.national_message{
+ height:1350px;
+}
+
.msg_icon{
float:left;
width:64px;
diff --git a/hwe/index.php b/hwe/index.php
index 97ceb0db..af7540d8 100644
--- a/hwe/index.php
+++ b/hwe/index.php
@@ -287,22 +287,16 @@ if ($session->userGrade >= 5) {
=allButton()?>=banner()?>
diff --git a/hwe/j_msg_get_recent.php b/hwe/j_msg_get_recent.php
index ff3368b9..0d097207 100644
--- a/hwe/j_msg_get_recent.php
+++ b/hwe/j_msg_get_recent.php
@@ -27,21 +27,36 @@ if($nationID === null){
$result = [];
$result['result'] = true;
-$result['private'] = array_map(function(Message $msg){
+$nextSequence = $reqSequence;
+
+$result['private'] = array_map(function(Message $msg) use (&$nextSequence){
+ if($msg->id > $nextSequence){
+ $nextSequence = $msg->id;
+ }
return $msg->toArray();
}, Message::getMessagesFromMailBox($generalID, Message::MSGTYPE_PRIVATE, 10, $reqSequence));
-$result['public'] = array_map(function(Message $msg){
+$result['public'] = array_map(function(Message $msg)use (&$nextSequence){
+ if($msg->id > $nextSequence){
+ $nextSequence = $msg->id;
+ }
return $msg->toArray();
-}, Message::getMessagesFromMailBox(Message::MAILBOX_PUBLIC, Message::MSGTYPE_PUBLIC, 20, $reqSequence));
+}, Message::getMessagesFromMailBox(Message::MAILBOX_PUBLIC, Message::MSGTYPE_PUBLIC, 10, $reqSequence));
-$result['national'] = array_map(function(Message $msg){
+$result['national'] = array_map(function(Message $msg)use (&$nextSequence){
+ if($msg->id > $nextSequence){
+ $nextSequence = $msg->id;
+ }
return $msg->toArray();
}, Message::getMessagesFromMailBox(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_NATIONAL, 20, $reqSequence));
-$result['diplomacy']= array_map(function(Message $msg){
+$result['diplomacy']= array_map(function(Message $msg)use (&$nextSequence){
+ if($msg->id > $nextSequence){
+ $nextSequence = $msg->id;
+ }
return $msg->toArray();
}, Message::getMessagesFromMailBox(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_DIPLOMACY, 10, 0));
+$result['sequence'] = $nextSequence;
Json::die($result);
\ No newline at end of file
diff --git a/hwe/j_msg_submit.php b/hwe/j_msg_submit.php
index f6a159da..81853731 100644
--- a/hwe/j_msg_submit.php
+++ b/hwe/j_msg_submit.php
@@ -21,7 +21,7 @@ if(!$v->validate()){
}
$mailbox = (int)$post['mailbox'];
-$text = StringUtil::cutStringForWidth($post['text'], 100, '');
+$text = StringUtil::cutStringForWidth($post['text'], 199, '');
$session = Session::requireGameLogin([
'msgID'=>null
diff --git a/hwe/sammo/Message.php b/hwe/sammo/Message.php
index 2607a137..80818f30 100644
--- a/hwe/sammo/Message.php
+++ b/hwe/sammo/Message.php
@@ -105,11 +105,24 @@ class Message
}
public function toArray():array{
+ if($this->msgType === Message::MSGTYPE_PUBLIC){
+ $src = $this->src->toArray();
+ $dest = [];
+ }
+ else if($this->msgType === Message::MSGTYPE_NATIONAL || $this->msgType === Message::MSGTYPE_DIPLOMACY){
+ $src = $this->src->toArray();
+ $dest = $this->dest->toArray();
+ }
+ else{
+ $src = $this->src->toArray();
+ $dest = $this->dest->toArray();
+ }
+
return [
'id'=>$this->id,
'msgType'=>$this->msgType,
- 'src'=>($this->src)?($this->src->toArray()):[],
- 'dest'=>($this->dest)?($this->dest->toArray()):[],
+ 'src'=>$src,
+ 'dest'=>$dest,
'text'=>$this->msg,
'option'=>$this->msgOption,
'time'=>$this->date->format('Y-m-d H:i:s')
@@ -215,7 +228,7 @@ class Message
return array_map(function ($row) {
return static::buildFromArray($row);
- }, $db->query('SELECT * FROM `message` WHERE %l %?', $where, $limitSql));
+ }, $db->query('SELECT * FROM `message` WHERE %l ORDER BY id DESC %? ', $where, $limitSql));
}
protected function sendRaw(int $mailbox):array{
diff --git a/hwe/sammo/MessageTarget.php b/hwe/sammo/MessageTarget.php
index 98616bb5..905c2975 100644
--- a/hwe/sammo/MessageTarget.php
+++ b/hwe/sammo/MessageTarget.php
@@ -66,4 +66,15 @@ class MessageTarget extends Target {
'icon'=>$this->icon
];
}
+
+ public function toArrayLight() : array{
+ //TODO: 이걸 꼭 연관 배열로 보낼 이유가 없다.
+ //TODO: 아이콘도 축약 가능하다.
+ return [
+ 'name'=>$this->generalName,
+ 'nation'=>$this->nationName,
+ 'color'=>$this->color,
+ 'icon'=>$this->icon
+ ];
+ }
}
\ No newline at end of file