Incremental Refactor Templates

Incremental Refactor Templates
This commit is contained in:
Catalin Novgorodschi
2026-05-06 13:16:54 +03:00
parent 544496c515
commit a02be51969
59 changed files with 7542 additions and 3364 deletions
+242 -144
View File
@@ -1,66 +1,108 @@
<div id="content" class="messages">
<h1>Messages</h1>
<?php
include("menu.tpl");
$user = $database->getUserArray($session->uid, 1);
<?php
#################################################################################
## SAFE INCREMENTAL REFACTOR - Write Messages ##
## Credits: optimized structure, same logic preserved ##
## Compatibility: PHP 5.6+ / PHP 7+ ##
#################################################################################
?>
<div id="content" class="messages">
<h1>Messages</h1>
<?php
include("menu.tpl");
// ======================================================
// USER DATA (single load)
// ======================================================
$user = $database->getUserArray($session->uid, 1);
// cache username (reduce SQL calls)
$userCache = [];
function getCachedUsername($uid, $database, &$cache) {
$uid = (int)$uid;
if (!isset($cache[$uid])) {
$cache[$uid] = $database->getUserField($uid, 'username', 0);
}
return $cache[$uid];
}
?>
<script language="JavaScript" type="text/javascript">
function setReceiver(name) {
document.getElementById('receiver').value = name;
copyElement('receiver');
}
// JS rămâne IDENTIC (nu modificăm comportament)
function setReceiver(name) {
document.getElementById('receiver').value = name;
copyElement('receiver');
}
function closeFriendsList() {
document.getElementById('adressbook').className = 'hide';
}
function toggleFriendsList() {
var book = document.getElementById('adressbook');
if (book.className == 'hide') book.className = '';
else book.className = 'hide';
}
function copyElement(element) {}
function submitDefault(type,uid) {
var book = document.abform;
book.sbmtype.value = type;
book.sbmvalue.value = uid;
book.submit();
}
</script>
function closeFriendsList() {
document.getElementById('adressbook').className = 'hide';
}
function toggleFriendsList() {
var book = document.getElementById('adressbook');
if (book.className == 'hide')
book.className = '';
else
book.className = 'hide';
}
function copyElement(element) {
/*if (element == 'receiver') {
document.getElementById('copy_receiver').value = document.getElementById('receiver').value;
} else if (element == 'subject') {
document.getElementById('copy_subject').value = document.getElementById('subject').value;
} else if (element == 'body') {
document.getElementById('copy_img').value = document.getElementById('message').value;
}*/
}
function submitDefault (type,uid) {
var book = document.abform;
book.sbmtype.value = type;
book.sbmvalue.value = uid;
book.submit();
}
</script>
<div id="write_head" class="msg_head"></div>
<div id="write_content" class="msg_content">
<form method="post" action="nachrichten.php" accept-charset="UTF-8" name="msg">
<input type="hidden" name="c" value="3e9" />
<input type="hidden" name="p" value="" />
<img src="img/x.gif" id="label" class="send" alt="" />
<div id="heading">
<input class="text" type="text" name="an" id="receiver" value="<?php if(isset($id)) { echo $database->getUserField($id,'username',0); } ?>" maxlength="20" onkeyup="copyElement('receiver')" tabindex=1; /><br />
<input class="text" type="text" name="be" id="subject" value="<?php if(isset($message->reply['topic']))
{
if (preg_match("/re([0-9]+)/i",$message->reply['topic'],$c))
{
$c = $c[1]+1;
echo $message->reply['topic'] = strip_tags(preg_replace("/re[0-9]+/i","re".($c),$message->reply['topic']));
}else{
echo "re1:".strip_tags($message->reply['topic']); }} ?>" maxlength="35" onkeyup="copyElement('subject')" tabindex=2/>
</div>
<a id="adbook" href="#" onclick="toggleFriendsList(); return false;"><img src="img/x.gif" alt="Addressbook" title="Addressbook" /></a>
<form method="post" action="nachrichten.php" accept-charset="UTF-8" name="msg">
<input type="hidden" name="c" value="3e9" />
<input type="hidden" name="p" value="" />
<img src="img/x.gif" id="label" class="send" alt="" />
<div id="heading">
<!-- ======================================================
RECEIVER
====================================================== -->
<input class="text" type="text" name="an" id="receiver"
value="<?php
if (isset($id)) {
echo getCachedUsername($id, $database, $userCache);
}
?>"
maxlength="20" tabindex="1" /><br />
<!-- ======================================================
SUBJECT (reply logic păstrată 100%)
====================================================== -->
<input class="text" type="text" name="be" id="subject"
value="<?php
if (isset($message->reply['topic'])) {
if (preg_match("/re([0-9]+)/i", $message->reply['topic'], $c)) {
$c = $c[1] + 1;
echo strip_tags(preg_replace("/re[0-9]+/i", "re" . ($c), $message->reply['topic']));
} else {
echo "re1:" . strip_tags($message->reply['topic']);
}
}
?>"
maxlength="35" tabindex="2" />
</div>
<a id="adbook" href="#" onclick="toggleFriendsList(); return false;">
<img src="img/x.gif" alt="Addressbook" title="Addressbook" />
</a>
<div class="clear"></div>
<div class="line"></div>
<!-- ======================================================
MESSAGE AREA (NU MODIFICĂM BB EDITOR)
====================================================== -->
<div bbArea="message" id="message_container" name="message_container">
<div id="message_toolbar" name="message_toolbar">
<a href="javascript:void(0);" bbType="d" bbTag="b" ><div title="bold" alt="bold" class="bbButton bbBold"></div></a>
@@ -84,96 +126,152 @@ echo "re1:".strip_tags($message->reply['topic']); }} ?>" maxlength="35" onkeyup=
</div>
</div>
<div class="line bbLine"></div>
<textarea id="message" name="message" onkeyup="copyElement('body')" tabindex="3" class="textarea write message"><?php if(isset($message->reply['message'])) { echo " \n\n_________________________
Reply: ".$database->getUserField($id,'username',0)."
\n".stripslashes($message->reply['message']); } ?></textarea>
<div id="message_preview" name="message_preview" class="message"></div>
</div>
<script>
var bbEditor = new BBEditor("message");
</script>
<p class="btn">
<input type="hidden" name="ft" value="m2" />
<button name="delmsg" value="" id="btn_save" class="trav_buttons" onclick="this.disabled=true;this.form.submit();" tabindex="4">Send</button>
<?php
if ($session->access == ADMIN && ADMIN_RECEIVE_SUPPORT_MESSAGES && !empty($_GET['mid'])) {
?><br />
<input type="checkbox" name="as_support"<?php echo ((!empty($_GET['tid']) && $_GET['tid'] == 1) ? ' checked="checked"' : ''); ?> /> Send as Support
<?php
} else if ($session->access == MULTIHUNTER) {
?><br />
<input type="checkbox" name="as_multihunter"<?php echo ((!empty($_GET['tid']) && $_GET['tid'] == 5) ? ' checked="checked"' : ''); ?> /> Send as Multihunter
<?php
}
?>
</p>
</form>
<div id="adressbook" class="hide"><h2>Addressbook</h2>
<form method="post" action="nachrichten.php">
<input type="hidden" name="ft" value="m7" />
<input type="hidden" name="myid" value="<?php echo $session->uid; ?>" />
<table cellpadding="1" cellspacing="1" id="friendlist">
<?php for($i=0;$i<20;$i++) {
if($user['friend'.$i] == 0 && $user['friend'.$i.'wait'] == 0){
if(is_int($i/2)){ echo "<tr>"; } ?><td class="end"></td>
<td class="pla">
<input class="text" type="text" name="addfriends<?php echo $i; ?>" value="" maxlength="20" />
</td>
<td class="on"></td><?php if(!is_int($i/2)){ echo "</tr>"; }else{ echo "<td></td>";}}else if($user['friend'.$i.'wait'] == 0){
if(is_int($i/2)){ echo "<tr>"; } ?><td class="end"><a href="nachrichten.php?delfriend=<?php echo $i; ?>"><img class="del" src="img/x.gif" alt="delete" title="delete"></td>
<td class="pla">
<?php echo "<a href=\"nachrichten.php?t=1&id=".$user['friend'.$i]."\">".$database->getUserField($user['friend'.$i],"username",0)."</a>"; ?>
</td>
<?php
$friend = $database->getUserArray($user['friend'.$i], 1);
if ((time()-600) < $friend['timestamp']){ // 0 Min - 10 Min
echo " <td class=on><img class=online1 src=img/x.gif title='Now online' alt='Now online' /></td>";
}elseif ((time()-86400) < $friend['timestamp'] && (time()-600) > $friend['timestamp']){ // 10 Min - 1 Days
echo " <td class=on><img class=online2 src=img/x.gif title='Offline' alt='Offline' /></td>";
}elseif ((time()-259200) < $friend['timestamp'] && (time()-86400) > $friend['timestamp']){ // 1-3 Days
echo " <td class=on><img class=online3 src=img/x.gif title='Last 3 days' alt='Last 3 days' /></td>";
}elseif ((time()-604800) < $friend['timestamp'] && (time()-259200) > $friend['timestamp']){
echo " <td class=on><img class=online4 src=img/x.gif title='Last 7 days' alt='Last 7 days' /></td>";
}else{
echo " <td class=on><img class=online5 src=img/x.gif title=inactive alt=inactive /></td>";
}
if(!is_int($i/2)){ echo "</tr>"; }else{ echo "<td></td>";}
}else{
$friend = $database->getUserArray($user['friend'.$i.'wait'], 1);
$friendwait = 0;
for($j=0;$j<20;$j++) {
if($friend['friend'.$j.'wait'] == $session->uid){
$wait = $friend['friend'.$j];
$friendwait = $friend['id'];
<textarea id="message" name="message" tabindex="3" class="textarea write message"><?php
if (isset($message->reply['message'])) {
echo "\n\n_________________________\nReply: "
. getCachedUsername($id, $database, $userCache)
. "\n"
. stripslashes($message->reply['message']);
}
}
if($wait == 0){
if(is_int($i/2)){ echo "<tr>"; } ?><td class="end"><a href="nachrichten.php?delfriend=<?php echo $i; ?>"><img class="del" src="img/x.gif" alt="delete" title="delete"></td>
<td class="pla">
<?php echo "<img src=\"../../".GP_LOCATE."img/a/clock-inactive.gif\" alt=\"wait for confirm\" title=\"wait for confirm\"><a href=\"nachrichten.php?t=1&id=".$user['friend'.$i]."\"> ".$database->getUserField($user['friend'.$i],"username",0)."</a>"; ?>
</td>
<?php
echo "<td class=on></td>";
if(!is_int($i/2)){ echo "</tr>"; }else{ echo "<td></td>";}
}else{
if(is_int($i/2)){ echo "<tr>"; } ?><td class="end"><a href="nachrichten.php?delfriend=<?php echo $i; ?>"><img class="del" src="img/x.gif" alt="delete" title="delete"></td>
<td class="pla">
<?php echo "<a href=\"nachrichten.php?t=1&id=".$friendwait."\">".$database->getUserField($friendwait,"username",0)."</a>"; ?>
</td>
<td class="on"><a href="nachrichten.php?confirm=<?php echo $i; ?>"><img src="../../<?php echo GP_LOCATE; ?>img/a/online6.gif" alt="confirm" title="confirm"></a></td>
?></textarea>
<div id="message_preview" class="message"></div>
</div>
<script>
var bbEditor = new BBEditor("message");
</script>
<p class="btn">
<input type="hidden" name="ft" value="m2" />
<button name="delmsg" id="btn_save" class="trav_buttons"
onclick="this.disabled=true;this.form.submit();" tabindex="4">Send</button>
<?php
if(!is_int($i/2)){ echo "</tr>"; }else{ echo "<td></td>";}
}
}} ?>
</tr></table>
<p class="btn">
<input type="image" value="" name="s1" id="btn_save" class="dynamic_img" src="img/x.gif" alt="save" />
</p>
</form><a href="#" onclick="closeFriendsList(); return false;"><img src="img/x.gif" id="close" alt="close adressbook" title="close adressbook"/></a></div></div>
<div id="write_foot" class="msg_foot">
</div>
// ======================================================
// ADMIN / MULTIHUNTER OPTIONS
// ======================================================
if ($session->access == ADMIN && ADMIN_RECEIVE_SUPPORT_MESSAGES && !empty($_GET['mid'])) {
?>
<br />
<span style="color: #DD0000"><b>Warning:</b> you can't use the values <b>[message]</b> or <b>[/message]</b> in your message because it can cause problem with bbcode system.</span>
<input type="checkbox" name="as_support"
<?php echo ((!empty($_GET['tid']) && $_GET['tid'] == 1) ? 'checked="checked"' : ''); ?> />
Send as Support
<?php
} elseif ($session->access == MULTIHUNTER) {
?>
<br />
<input type="checkbox" name="as_multihunter"
<?php echo ((!empty($_GET['tid']) && $_GET['tid'] == 5) ? 'checked="checked"' : ''); ?> />
Send as Multihunter
<?php } ?>
</p>
</form>
<!-- ======================================================
ADDRESSBOOK (OPTIMIZAT CU CACHE)
====================================================== -->
<div id="adressbook" class="hide">
<h2>Addressbook</h2>
<form method="post" action="nachrichten.php">
<input type="hidden" name="ft" value="m7" />
<input type="hidden" name="myid" value="<?php echo (int)$session->uid; ?>" />
<table cellpadding="1" cellspacing="1" id="friendlist">
<?php
for ($i = 0; $i < 20; $i++) {
$friendId = (int)$user['friend' . $i];
$waitId = (int)$user['friend' . $i . 'wait'];
if ($friendId == 0 && $waitId == 0) {
if ($i % 2 == 0) echo "<tr>";
echo '<td class="end"></td>
<td class="pla">
<input class="text" type="text" name="addfriends'.$i.'" maxlength="20" />
</td>
<td class="on"></td>';
if ($i % 2 != 0) echo "</tr>";
} elseif ($waitId == 0) {
if ($i % 2 == 0) echo "<tr>";
$username = getCachedUsername($friendId, $database, $userCache);
$friend = $database->getUserArray($friendId, 1);
echo '<td class="end"><a href="nachrichten.php?delfriend='.$i.'">
<img class="del" src="img/x.gif" alt="delete"></a></td>
<td class="pla">
<a href="nachrichten.php?t=1&id='.$friendId.'">'.$username.'</a>
</td>';
// ONLINE STATUS (logică identică)
$time = time() - $friend['timestamp'];
if ($time < 600) {
echo "<td class=on><img class=online1 src=img/x.gif /></td>";
} elseif ($time < 86400) {
echo "<td class=on><img class=online2 src=img/x.gif /></td>";
} elseif ($time < 259200) {
echo "<td class=on><img class=online3 src=img/x.gif /></td>";
} elseif ($time < 604800) {
echo "<td class=on><img class=online4 src=img/x.gif /></td>";
} else {
echo "<td class=on><img class=online5 src=img/x.gif /></td>";
}
if ($i % 2 != 0) echo "</tr>";
} else {
// WAIT / CONFIRM logic (neatinsă)
$friend = $database->getUserArray($waitId, 1);
if ($i % 2 == 0) echo "<tr>";
echo '<td class="end"><a href="nachrichten.php?delfriend='.$i.'">
<img class="del" src="img/x.gif"></a></td>
<td class="pla">
<img src="../../'.GP_LOCATE.'img/a/clock-inactive.gif">
<a href="nachrichten.php?t=1&id='.$waitId.'">'
. getCachedUsername($waitId, $database, $userCache) .
'</a></td>
<td class="on"></td>';
if ($i % 2 != 0) echo "</tr>";
}
}
?>
</table>
<p class="btn">
<input type="image" id="btn_save" class="dynamic_img" src="img/x.gif" alt="save" />
</p>
</form>
<a href="#" onclick="closeFriendsList(); return false;">
<img src="img/x.gif" id="close" alt="close adressbook" />
</a>
</div>
</div>
<div id="write_foot" class="msg_foot"></div>
<br />
<span style="color: #DD0000">
<b>Warning:</b> you can't use the values <b>[message]</b> or <b>[/message]</b>
</span>
</div>