Refactor _mod.php by stripping out conditional moderator statements. The update centralizes authorization checks for various moderation actions such as blocking users and appointing new moderators. It also optimizes several lines in the code by suppressing unnecessary components. The old method of using 'admin' has been replaced by an object-oriented 'm' class to streamline and improve code maintenance.

This commit is contained in:
Ivor Barhansky 2023-12-08 18:56:26 +02:00
parent 8c4778c093
commit dac8ffef5d

View File

@ -15,16 +15,6 @@ if (!$m->isModerator) {
return; return;
} }
$rang = 'Модератор';
if (isset($_GET['remod'])) {
if ($_GET['remod'] == 1) {
$_SESSION['remod'] = 3;
} else {
$_SESSION['remod'] = 1;
}
}
$merror = ''; $merror = '';
$uer = ''; $uer = '';
@ -50,23 +40,23 @@ if (!empty($_POST['logingo'])) {
$moderation->depersonalize($_POST['time']); $moderation->depersonalize($_POST['time']);
} elseif (!empty($_POST['undepersonalize'])) { } elseif (!empty($_POST['undepersonalize'])) {
$moderation->undepersonalize(); $moderation->undepersonalize();
} elseif (!empty($_POST['ban'])) { } elseif (!empty($_POST['ban']) && $m->canBlockUsers) {
$moderation->ban(); $moderation->ban();
} elseif (!empty($_POST['unban'])) { } elseif (!empty($_POST['unban']) && $m->canBlockUsers) {
$moderation->unban(); $moderation->unban();
} elseif (!empty($_POST['addmoderator'])) { } elseif (!empty($_POST['addmoderator']) && $m->isAdmin) {
$administration->addmoderator(); $administration->addmoderator();
} elseif (!empty($_POST['deletemoderator'])) { } elseif (!empty($_POST['deletemoderator']) && $m->isAdmin) {
$administration->removemoderator(); $administration->removemoderator();
} elseif (!empty($_POST['changegender'])) { } elseif (!empty($_POST['changegender']) && $m->isAdmin) {
$administration->changegender(); $administration->changegender();
} elseif (!empty($_POST['changelogin']) && !empty($_POST['newLogin'])) { } elseif (!empty($_POST['changelogin']) && !empty($_POST['newLogin']) && $m->isAdmin) {
$administration->changelogin($_POST['newLogin']); $administration->changelogin($_POST['newLogin']);
} elseif (!empty($_POST['giveitem']) && !empty($_POST['itemId'])) { } elseif (!empty($_POST['giveitem']) && !empty($_POST['itemId']) && $m->isAdmin) {
$administration->additem((int)$_POST['itemId']); $administration->additem((int)$_POST['itemId']);
} elseif (!empty($_POST['kickfrombattle'])) { } elseif (!empty($_POST['kickfrombattle']) && $m->isAdmin) {
$administration->kickfrombattle(); $administration->kickfrombattle();
} elseif (!empty($_POST['toggleinvisibility'])) { } elseif (!empty($_POST['toggleinvisibility']) && $m->isAdmin) {
$administration->toggleinvisibility(); $administration->toggleinvisibility();
} }
@ -93,7 +83,7 @@ if (isset($_GET['go'])) {
$go = round($_GET['go']); $go = round($_GET['go']);
} }
if ($go == 3 && $u->info['admin'] > 0) { if ($go == 3 && $m->isAdmin) {
?> ?>
<table style="width: 100%"> <table style="width: 100%">
<tr> <tr>
@ -227,11 +217,11 @@ if ($go == 3 && $u->info['admin'] > 0) {
</tr> </tr>
</table> </table>
<?php <?php
} elseif ($go == 2 && $u->info['admin'] > 0) { } elseif ($go == 2 && $m->isAdmin) {
if (isset($_POST['q_name'])) { if (isset($_POST['q_name'])) {
$qd = []; $qd = [];
/* Array ([q_act_atr_1] => 0 [q_act_val_1] => [q_tr_atr_1] => 0 [q_tr_val_1] => [q_ng_atr_1] => 0 [q_ng_val_1] => [q_nk_atr_NaN] => 0 /* Array ([q_act_atr_1] => 0 [q_act_val_1] => [q_tr_atr_1] => 0 [q_tr_val_1] => [q_ng_atr_1] => 0 [q_ng_val_1] => [q_nk_atr_NaN] => 0
[q_nk_val_NaN] => [q_info] => test описание [q_line1] => 1 [q_line2] => 1 [q_fast] => 1 [q_fast_city] => capitalcity [q_align1] => 1 [q_align2] => 1 [q_align3] => 1 ) */ [q_nk_val_NaN] => [q_info] => test описание [q_line1] => 1 [q_line2] => 1 [q_fast] => 1 [q_align1] => 1 [q_align2] => 1 [q_align3] => 1 ) */
$qd['name'] = $_POST['q_name']; $qd['name'] = $_POST['q_name'];
$qd['lvl'] = explode('-', $_POST['q_lvl']); $qd['lvl'] = explode('-', $_POST['q_lvl']);
$qd['info'] = $_POST['q_info']; $qd['info'] = $_POST['q_info'];
@ -239,7 +229,6 @@ if ($go == 3 && $u->info['admin'] > 0) {
$qd['line'] = $_POST['q_line2']; $qd['line'] = $_POST['q_line2'];
} }
if ($_POST['q_fast'] == 1) { if ($_POST['q_fast'] == 1) {
$qd['city'] = $_POST['q_fast_city'];
$gd['fast'] = 1; $gd['fast'] = 1;
} }
if ($_POST['align1'] == 1) { if ($_POST['align1'] == 1) {
@ -257,7 +246,7 @@ if ($go == 3 && $u->info['admin'] > 0) {
} }
} else { } else {
$i = -2; $i = -2;
$qd['act_date'] = trim($qd['act_date'], ':|:'); $qd['act_date'] = trim($qd['act_date'], ':|');
} }
$i++; $i++;
} }
@ -269,7 +258,7 @@ if ($go == 3 && $u->info['admin'] > 0) {
} }
} else { } else {
$i = -2; $i = -2;
$qd['tr_date'] = trim($qd['tr_date'], ':|:'); $qd['tr_date'] = trim($qd['tr_date'], ':|');
} }
$i++; $i++;
} }
@ -281,7 +270,7 @@ if ($go == 3 && $u->info['admin'] > 0) {
} }
} else { } else {
$i = -2; $i = -2;
$qd['win_date'] = trim($qd['win_date'], ':|:'); $qd['win_date'] = trim($qd['win_date'], ':|');
} }
$i++; $i++;
} }
@ -293,7 +282,7 @@ if ($go == 3 && $u->info['admin'] > 0) {
} }
} else { } else {
$i = -2; $i = -2;
$qd['lose_date'] = trim($qd['lose_date'], ':|:'); $qd['lose_date'] = trim($qd['lose_date'], ':|');
} }
$i++; $i++;
} }
@ -397,18 +386,43 @@ if ($go == 3 && $u->info['admin'] > 0) {
</script> </script>
<title>Текстовое поле</title> <title>Текстовое поле</title>
<style>
.vtop {
vertical-align: top;
}
<table width="100%"> .center {
text-align: center;
}
table.cs0 {
border-spacing: 0;
}
table.cp5 {
border-collapse: collapse;
}
table.cp5 td {
padding: 5px;
}
table.newquest {
width: 100%;
border: 0;
background-color: #e1e1e1;
}
</style>
<table style="width: 100%;">
<tr> <tr>
<td align="center"><h3>Редактор заданий</h3></td> <td class="center"><h3>Редактор заданий</h3></td>
<td width="150" align="right"> <td style="width: 150px; text-align: right;">
<input type="button" class="btn btn-success" value="Вернуться" onclick="location='/main.php?moderation';"/> <input type="button" class="btn btn-success" value="Вернуться" onclick="location='/main.php?moderation';"/>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
<table class="cs0 cp5 newquest">
<table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#E1E1E1">
<!-- --> <!-- -->
<tr> <tr>
<td style="border-bottom:1px solid #CCCCCC;"> <td style="border-bottom:1px solid #CCCCCC;">
@ -422,58 +436,55 @@ if ($go == 3 && $u->info['admin'] > 0) {
<td style="border-bottom:1px solid #CCCCCC; background-color: #dadada;"> <td style="border-bottom:1px solid #CCCCCC; background-color: #dadada;">
<b>Панель добавления новых заданий:</b><br> <b>Панель добавления новых заданий:</b><br>
<form method="post" action="/main.php?moderation&go=2"> <form method="post" action="/main.php?moderation&go=2">
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<table class="cs0 cp5" style="width: 100%; border: 0;">
<tr> <tr>
<td width="200" valign="top"><label for="q_name">Название задания</label></td> <td class="vtop" style="width: 200px;"><label for="q_name">Название задания</label></td>
<td><input name="q_name" id="q_name" value="" size="60" maxlength="50"/> <td><input name="q_name" id="q_name" size="60" maxlength="50">
</td> </td>
</tr> </tr>
<tr> <tr>
<td valign="top"><label for="q_lvl">Уровень задания</label></td> <td class="vtop"><label for="q_lvl">Уровень задания</label></td>
<td><input name="q_lvl" id="q_lvl" value="0-21" size="10" maxlength="5"/></td> <td><input name="q_lvl" id="q_lvl" value="0-21" size="10" maxlength="5"/></td>
</tr> </tr>
<tr> <tr>
<td valign="top">Действия</td> <td class="vtop">Действия</td>
<td valign="top" id="qact"><a href="javascript:void(0)" onclick="addqact()"><small>[+] добавить</small></a></td> <td class="vtop" id="qact"><a href="javascript:void(0)" onclick="addqact()"><small>[+] добавить</small></a></td>
</tr> </tr>
<tr> <tr>
<td valign="top">Условия</td> <td class="vtop">Условия</td>
<td valign="top" id="qtr"><a href="javascript:void(0)" onclick="addqtr()"><small>[+] добавить</small></a></td> <td class="vtop" id="qtr"><a href="javascript:void(0)" onclick="addqtr()"><small>[+] добавить</small></a></td>
</tr> </tr>
<tr> <tr>
<td valign="top">Награда</td> <td class="vtop">Награда</td>
<td valign="top" id="qng"><a href="javascript:void(0)" onclick="addqng()"><small>[+] добавить</small></a></td> <td class="vtop" id="qng"><a href="javascript:void(0)" onclick="addqng()"><small>[+] добавить</small></a></td>
</tr> </tr>
<tr> <tr>
<td valign="top">Неудача</td> <td class="vtop">Неудача</td>
<td valign="top" id="qnk"><a href="javascript:void(0)" onclick="addqnk()"><small>[+] добавить</small></a></td> <td class="vtop" id="qnk"><a href="javascript:void(0)" onclick="addqnk()"><small>[+] добавить</small></a></td>
</tr> </tr>
<tr> <tr>
<td valign="top"><label for="q_info">Описание задания</label></td> <td class="vtop"><label for="q_info">Описание задания</label></td>
<td><textarea name="q_info" id="q_info" style="width:90%" rows="7"></textarea></td> <td><textarea name="q_info" id="q_info" style="width:90%" rows="7"></textarea></td>
</tr> </tr>
<tr style="background-color: #cbcbcb"> <tr style="background-color: #cbcbcb">
<td align="center" valign="top"> <td class="vtop center">
<label><input name="q_line1" type="checkbox" id="checkbox3" value="1"/> <label><input name="q_line1" type="checkbox" id="checkbox3" value="1">
Линейное задание</label> Линейное задание</label>
</td> </td>
<td bgcolor="#CBCBCB"> <td>
<label><input name="q_line2" id="q_line3" value="" size="5" maxlength="3"/> <label><input name="q_line2" id="q_line3" size="5" maxlength="3">
, id линейного сюжета</label> , id линейного сюжета</label>
</td> </td>
</tr> </tr>
<tr style="background-color: #cbcbcb"> <tr style="background-color: #cbcbcb">
<td align="center" valign="top"> <td class="vtop center">
<label><input name="q_fast" type="checkbox" id="q_fast" value="1"/> <label><input name="q_fast" type="checkbox" id="q_fast" value="1">
Быстрое задание</label> Быстрое задание</label>
</td> </td>
<td>
<label><input name="q_fast_city" id="q_fast_city" value="capitalcity" size="50" maxlength="50">
, город которым ограничен квест <small>(стереть, если не ограничен)</small><label>
</td>
</tr> </tr>
<tr style="background-color: #cbcbcb"> <tr style="background-color: #cbcbcb">
<td align="center" valign="top"> <td class="vtop center">
<small> <small>
<label> <label>
<input name="q_align1" type="checkbox" id="q_align1" value="1">Свет, <input name="q_align1" type="checkbox" id="q_align1" value="1">Свет,
@ -497,7 +508,7 @@ if ($go == 3 && $u->info['admin'] > 0) {
<!-- --> <!-- -->
</table> </table>
<table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#E1E1E1"> <table class="cs0 cp5 newquest">
<!-- --> <!-- -->
<?php <?php
if (isset($_GET['delq'])) { if (isset($_GET['delq'])) {
@ -542,30 +553,7 @@ if ($go == 3 && $u->info['admin'] > 0) {
padding: 10px; padding: 10px;
} }
</style> </style>
<script> <div id="useMagic" style="display:none; position:absolute; border:solid 1px #776f59; left: 50px; top: 186px;" class="modpow">
function openMod(title, dat) {
const d = document.getElementById('useMagic');
if (d) {
document.getElementById('modtitle').innerHTML = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top">' + title + '</td><td width="30" valign="top"><div align="right"><a title="Закрыть окно" onClick="closeMod(); return false;" href="#">x</a></div></td></tr></table>';
document.getElementById('moddata').innerHTML = dat;
d.style.display = '';
top.chat.inObj = top.frames['main'].document.getElementById('logingo');
top.frames['main'].document.getElementById('logingo').focus();
}
}
function closeMod() {
const d = document.getElementById('useMagic');
if (d) {
document.getElementById('modtitle').innerHTML = '';
document.getElementById('moddata').innerHTML = '';
d.style.display = 'none';
}
}
</script>
<div id="useMagic"
style="display:none; position:absolute; border:solid 1px #776f59; left: 50px; top: 186px;"
class="modpow">
<div class="mt" id="modtitle"></div> <div class="mt" id="modtitle"></div>
<div class="md" id="moddata"></div> <div class="md" id="moddata"></div>
</div> </div>
@ -583,9 +571,8 @@ if ($go == 3 && $u->info['admin'] > 0) {
<form action="/main.php?moderation&rnd=<?= PassGen::intCode() ?>" method="post" name="F1" id="F1"> <form action="/main.php?moderation&rnd=<?= PassGen::intCode() ?>" method="post" name="F1" id="F1">
<?php <?php
$uer = ''; $uer = '';
//используем заклятия //используем заклятия (старая реализация, замещается)
if (isset($_GET['usemod'])) { if (isset($_GET['usemod'])) {
if (isset($_POST['usevampir'])) { if (isset($_POST['usevampir'])) {
require_once('moder/usevampir.php'); require_once('moder/usevampir.php');
} elseif (isset($_POST['teleport'])) { } elseif (isset($_POST['teleport'])) {
@ -604,73 +591,70 @@ if ($go == 3 && $u->info['admin'] > 0) {
} }
echo '<span style="color: red; ">' . $uer . '</span>'; echo '<span style="color: red; ">' . $uer . '</span>';
//Темная склонка, кусается сука!)
?> ?>
<br/> <br>
<div style="padding:10px; margin:5px; border-bottom:1px solid #cac9c7;">
<h4>Наложить/Снять наказание</h4>
<form method="post" id="moderation">
<label for="logingo">Логин персонажа:</label>
<input type="text" id="logingo" name="logingo">
<label for="modReason">Причина действия (где применимо):</label>
<input type="text" id="modReason" name="modReason">
</form>
<?php if ($m->isModerator): ?> <div>
<div style="padding:10px; margin:5px; border-bottom:1px solid #cac9c7;"> <label>Время в минутах: <input type="number" min="1" name="time" form="moderation"></label>
<h4>Наложить/Снять наказание</h4> <input type="submit" name="silence" value="Молчанка в чате" form="moderation">
<form method="post" id="moderation"> <input type="submit" name="unsilence" value="❌ Снять молчанку" form="moderation"><br>
<label for="logingo">Логин персонажа:</label>
<input type="text" id="logingo" name="logingo"> <label>Количество дней: <input type="number" min="1" name="time" form="moderation"></label>
<label for="modReason">Причина действия (где применимо):</label> <input type="submit" name="prison" value="Посадить в тюрьму" form="moderation">
<input type="text" id="modReason" name="modReason"> <input type="submit" name="unprison" value="❌ Выпустить из тюрьмы" form="moderation"><br>
<label>Количество дней: <input type="number" min="1" name="time" form="moderation"></label>
<input type="submit" name="depersonalize" value="Скрыть профиль" form="moderation">
<input type="submit" name="undepersonalize" value="❌ Раскрыть профиль" form="moderation"><br>
<form method="post">
<label for="marrypartner1">Партнёр 1</label>
<input type="text" id="marrypartner1" name="logingo">
<label for="marrypartner2">Партнёр 2</label>
<input type="text" id="marrypartner2" name="logingo2">
<input type="submit" name="marry" value="💘 Свадьба!">
<input type="submit" name="unmarry" value="💔 Развод!">
</form> </form>
<div> <?php if ($m->canBlockUsers): ?>
<label>Время в минутах: <input type="number" min="1" name="time" form="moderation"></label> <div style="background-color: lightcoral; margin: 5px 1px; border: 1px dashed crimson;">
<input type="submit" name="silence" value="Молчанка в чате" form="moderation"> <input type="submit" name="ban" value="🔒 ️Заблокировать>" form="moderation">
<input type="submit" name="unsilence" value="❌ Снять молчанку" form="moderation"><br> <input type="submit" name="unban" value="🔓 Разблокировать" form="moderation">
<label>Количество дней: <input type="number" min="1" name="time" form="moderation"></label>
<input type="submit" name="prison" value="Посадить в тюрьму" form="moderation">
<input type="submit" name="unprison" value="❌ Выпустить из тюрьмы" form="moderation"><br>
<label>Количество дней: <input type="number" min="1" name="time" form="moderation"></label>
<input type="submit" name="depersonalize" value="Скрыть профиль" form="moderation">
<input type="submit" name="undepersonalize" value="❌ Раскрыть профиль" form="moderation"><br>
<form method="post">
<label for="marrypartner1">Партнёр 1</label>
<input type="text" id="marrypartner1" name="logingo">
<label for="marrypartner2">Партнёр 2</label>
<input type="text" id="marrypartner2" name="logingo2">
<input type="submit" name="marry" value="💘 Свадьба!">
<input type="submit" name="unmarry" value="💔 Развод!">
</form>
<?php if ($m->canBlockUsers): ?>
<div style="background-color: lightcoral; margin: 5px 1px; border: 1px dashed crimson;">
<input type="submit" name="ban" value="🔒 ️Заблокировать>" form="moderation">
<input type="submit" name="unban" value="🔓 Разблокировать" form="moderation">
</div>
<?php endif; ?>
</div>
<?php if ($m->isAdmin): ?>
<div>
<a href="/main.php?moderation&go=2">Редактировать квесты, задания и обучающие программы</a><br>
<a href="/main.php?moderation&go=3">Редактировать квесты для Нубозавров</a><br>
<a href="/main.php?moderation&go=1">Редактировать возможности подчиненных</a><br>
</div> </div>
<input type="submit" name="addmoderator" value="Назначить модератором>" form="moderation">
<input type="submit" name="deletemoderator" value="❌ Убрать из модераторов" form="moderation">
<input type="submit" name="kickfrombattle" value="⚔️ Вытащить из боя>" form="moderation">
<input type="submit" name="changegender" value="👨🏻‍🤝‍👩🏻 Сменить пол" form="moderation"><br>
<label for="newLogin">Новый логин:</label> <input type="text" id="newLogin" name="newLogin">
<input type="submit" name="changelogin" value="📝 Сменить логин"><br>
<label for="itemId">ID предмета:</label> <input type="number" id="itemId" name="itemId" min="1">
<input type="submit" name="giveitem" value="🎁 Подарить предмет"><br>
<button disabled>Добавить опыта</button> <i style="color: grey">- очень сломанная херня.</i>
<?php endif; ?> <?php endif; ?>
</div> </div>
<?php endif;
<?php if ($m->isAdmin): ?>
<div>
<a href="/main.php?moderation&go=2">Редактировать квесты, задания и обучающие программы</a><br>
<a href="/main.php?moderation&go=3">Редактировать квесты для Нубозавров</a><br>
<a href="/main.php?moderation&go=1">Редактировать возможности подчиненных</a><br>
</div>
<input type="submit" name="addmoderator" value="Назначить модератором>" form="moderation">
<input type="submit" name="deletemoderator" value="❌ Убрать из модераторов" form="moderation">
<input type="submit" name="kickfrombattle" value="⚔️ Вытащить из боя>" form="moderation">
<input type="submit" name="changegender" value="👨🏻‍🤝‍👩🏻 Сменить пол" form="moderation"><br>
<label for="newLogin">Новый логин:</label> <input type="text" id="newLogin" name="newLogin">
<input type="submit" name="changelogin" value="📝 Сменить логин"><br>
<label for="itemId">ID предмета:</label> <input type="number" id="itemId" name="itemId" min="1">
<input type="submit" name="giveitem" value="🎁 Подарить предмет"><br>
<button disabled>Добавить опыта</button> <i style="color: grey">- очень сломанная херня.</i>
<?php endif; ?>
</div>
<?php
if ($m->isAdmin) { if ($m->isAdmin) {
/** Мегафон только для администраторов. */ /** Мегафон только для администраторов. */
Announcement::init(); Announcement::init();
@ -714,7 +698,6 @@ if ($go == 3 && $u->info['admin'] > 0) {
HTML; HTML;
} }
} }
} ?> } ?>
</form> </form>
<?php <?php