From 76fdbc6c3ecafc14f274ec7f1ea8d9b4b44a77e7 Mon Sep 17 00:00:00 2001 From: Martin Ambrus Date: Sat, 2 Dec 2017 11:57:59 +0100 Subject: [PATCH] feat: ability for players with Multihunter rank to see&write MH messages #398 --- GameEngine/Database.php | 29 ++++++++++++++++++++++++++--- GameEngine/Message.php | 18 +++++++++++++++--- Templates/Message/inbox.tpl | 16 ++++++++++++++-- Templates/Message/sent.tpl | 16 ++++++++++++++-- Templates/Message/write.tpl | 10 +++++++--- 5 files changed, 76 insertions(+), 13 deletions(-) diff --git a/GameEngine/Database.php b/GameEngine/Database.php index d72f48c1..b522f4fd 100755 --- a/GameEngine/Database.php +++ b/GameEngine/Database.php @@ -4101,15 +4101,26 @@ References: User ID/Message ID, Mode global $session; $mode = (int) $mode; + $mode_updated = false; // update $id if we should show Support messages for Admins and we are an admin if ( - ($session->access == MULTIHUNTER || $session->access == ADMIN) + $session->access == ADMIN && ADMIN_RECEIVE_SUPPORT_MESSAGES && in_array($mode, [1,2,6,9,10,11]) ) { $id = $id . ', 1'; + $mode_updated = true; } + // update $id if we should show Multihunter messages for the current player + if ( + $session->access == MULTIHUNTER + && in_array($mode, [1,2,6,9,10,11]) + ) { + $id = $id . ', 5'; + $mode_updated = true; + } + if (in_array($mode, [5,7,8])) { if (!is_array($id)) { $id = [$id]; @@ -4119,7 +4130,9 @@ References: User ID/Message ID, Mode } } } else { - $id = (int) $id; + if (!$mode_updated) { + $id = (int) $id; + } } global $session; @@ -4134,7 +4147,17 @@ References: User ID/Message ID, Mode $q = "SELECT * FROM " . TB_PREFIX . "mdata where id = $id"; break; case 4: - $q = "UPDATE " . TB_PREFIX . "mdata set viewed = 1 where id = $id AND target IN(".((($session->access == MULTIHUNTER || $session->access == ADMIN) && ADMIN_RECEIVE_SUPPORT_MESSAGES) ? $session->uid.',1' : $session->uid).")"; + $show_target = $session->uid; + + if ($session->access == ADMIN && ADMIN_RECEIVE_SUPPORT_MESSAGES) { + $show_target .= ',1'; + } + + if ($session->access == MULTIHUNTER) { + $show_target .= ',5'; + } + + $q = "UPDATE " . TB_PREFIX . "mdata set viewed = 1 where id = $id AND target IN(".$show_target.")"; break; case 5: $q = "UPDATE " . TB_PREFIX . "mdata set deltarget = 1,viewed = 1 where id IN(".implode(', ', $id).")"; diff --git a/GameEngine/Message.php b/GameEngine/Message.php index 6b9e20f5..e415167e 100755 --- a/GameEngine/Message.php +++ b/GameEngine/Message.php @@ -582,9 +582,21 @@ class Message { } } - // check if we're not sending this as support - $support_from_admin_allowed = ( ( $session->access == MULTIHUNTER || $session->access == ADMIN ) && ADMIN_RECEIVE_SUPPORT_MESSAGES ); - $database->sendMessage( $user, ( ( ! empty( $_POST['as_support'] ) && $support_from_admin_allowed ) ? 1 : $session->uid ), htmlspecialchars( addslashes( $topic ) ), htmlspecialchars( addslashes( $text ) ), 0, $alliance, $player, $coor, $report ); + // check if we're not sending this as Support or Multihunter + $support_from_admin_allowed = ( $session->access == ADMIN && ADMIN_RECEIVE_SUPPORT_MESSAGES ); + $send_as = $session->uid; + + // send as Support? + if (( ! empty( $_POST['as_support'] ) && $support_from_admin_allowed )) { + $send_as = 1; + } + + // send as Multihunter + if (( ! empty( $_POST['as_multihunter'] ) && $session->access == MULTIHUNTER )) { + $send_as = 5; + } + + $database->sendMessage( $user, $send_as, htmlspecialchars( addslashes( $topic ) ), htmlspecialchars( addslashes( $text ) ), 0, $alliance, $player, $coor, $report ); } } diff --git a/Templates/Message/inbox.tpl b/Templates/Message/inbox.tpl index f8dc6f4b..926994b3 100644 --- a/Templates/Message/inbox.tpl +++ b/Templates/Message/inbox.tpl @@ -55,7 +55,8 @@ $s = 0; } $name = 1; - $support_messages = (($session->access == MULTIHUNTER || $session->access == ADMIN) && ADMIN_RECEIVE_SUPPORT_MESSAGES); + $support_messages = ($session->access == ADMIN && ADMIN_RECEIVE_SUPPORT_MESSAGES); + $multihunter_messages = ($session->access == MULTIHUNTER); for($i=(1+$s);$i<=(10+$s);$i++) { if(count($message->inbox1) >= $i) { @@ -67,7 +68,18 @@ else { echo ""; } - echo "".((!$support_messages || ($support_messages && $message->inbox1[$i-1]['target'] != 1)) ? "inbox1[$i-1]['id']."\" />" : 'S')." + + $message_for_text = ''; + + if (!$support_messages || ($support_messages && $message->inbox1[$i-1]['target'] != 1) || ($multihunter_messages && $message->inbox1[$i-1]['target'] != 5)) { + $message_for_text = "inbox1[$i-1]['id']."\" />"; + } else if ($support_messages) { + $message_for_text = 'S'; + } else if ($multihunter_messages) { + $message_for_text = 'M'; + } + + echo "".$message_for_text." inbox1[$i-1]['id']."\">".$message->inbox1[$i-1]['topic']." "; if($message->inbox1[$i-1]['viewed'] == 0) { echo "(new)"; diff --git a/Templates/Message/sent.tpl b/Templates/Message/sent.tpl index 35869e63..08f238d9 100644 --- a/Templates/Message/sent.tpl +++ b/Templates/Message/sent.tpl @@ -57,7 +57,8 @@ $s = 0; } $name = 1; - $support_messages = (($session->access == MULTIHUNTER || $session->access == ADMIN) && ADMIN_RECEIVE_SUPPORT_MESSAGES); + $support_messages = ($session->access == ADMIN && ADMIN_RECEIVE_SUPPORT_MESSAGES); + $multihunter_messages = ($session->access == MULTIHUNTER); for($i=(1+$s);$i<=(10+$s);$i++) { if(count($message->sent1) >= $i) { @@ -67,7 +68,18 @@ else { echo ""; } - echo "".((!$support_messages || ($support_messages && $message->inbox1[$i-1]['target'] != 1)) ? "sent1[$i-1]['id']."\" />" : 'S')." + + $sent_as_text = ''; + + if (!$support_messages || ($support_messages && $message->inbox1[$i-1]['target'] != 1) || ($multihunter_messages && $message->inbox1[$i-1]['target'] != 5)) { + $sent_as_text = "sent1[$i-1]['id']."\" />"; + } else if ($support_messages) { + $sent_as_text = 'S'; + } else if ($multihunter_messages) { + $sent_as_text = 'M'; + } + + echo "".$sent_as_text." sent1[$i-1]['id']."\">".$message->sent1[$i-1]['topic']." "; if($message->sent1[$i-1]['viewed'] == 0) { echo "(unread)"; diff --git a/Templates/Message/write.tpl b/Templates/Message/write.tpl index 6bf8604e..36ce0272 100644 --- a/Templates/Message/write.tpl +++ b/Templates/Message/write.tpl @@ -98,12 +98,16 @@ Reply: ".$database->getUserField($id,'username',0)." access == MULTIHUNTER || $session->access == ADMIN) && ADMIN_RECEIVE_SUPPORT_MESSAGES && !empty($_GET['mid'])) { + if ($session->access == ADMIN && ADMIN_RECEIVE_SUPPORT_MESSAGES && !empty($_GET['mid'])) { ?>
/> Send as Support + } else if ($session->access == MULTIHUNTER) { + ?>
+ /> Send as Multihunter +

Addressbook