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) {
전체 메시지(최고99자)
-
- -
+
개인 메시지(최고99자)
-
- -
+
국가 메시지(최고99자)
-
- -
+
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