<?php use Core\Db; use Moderation\{AdmFactory, Announcement, Moderator, ModFactory, UserRegistrationList}; /** @var User $u */ if (!defined('GAME')) { die(); } $m = new Moderator($u->info['id']); if (!$m->isModerator) { return; } $merror = ''; $uer = ''; $go = isset($_GET['go']) ? round($_GET['go']) : 0; if (!empty($_POST['logingo'])) { $moderation = new ModFactory( strip_tags($_POST['logingo']), empty($_POST['modReason']) ? '' : $_POST['modReason'], $u->info['room'], ); $administration = new AdmFactory( strip_tags($_POST['logingo']) ); if (!empty($_POST['silence']) && !empty($_POST['time'])) { $moderation->silence($_POST['time']); } elseif (!empty($_POST['unsilence'])) { $moderation->unsilence(); } elseif (!empty($_POST['prison']) && !empty($_POST['time'])) { $moderation->prison($_POST['time']); } elseif (!empty($_POST['unprison'])) { $moderation->unprison(); } elseif (!empty($_POST['depersonalize']) && !empty($_POST['time'])) { $moderation->depersonalize($_POST['time']); } elseif (!empty($_POST['undepersonalize'])) { $moderation->undepersonalize(); } elseif (!empty($_POST['ban']) && $m->canBlockUsers) { $moderation->ban(); } elseif (!empty($_POST['unban']) && $m->canBlockUsers) { $moderation->unban(); } elseif (!empty($_POST['addmoderator']) && $m->isAdmin) { $administration->addmoderator(); } elseif (!empty($_POST['deletemoderator']) && $m->isAdmin) { $administration->removemoderator(); } elseif (!empty($_POST['changegender']) && $m->isAdmin) { $administration->changegender(); } elseif (!empty($_POST['changelogin']) && !empty($_POST['newLogin']) && $m->isAdmin) { $administration->changelogin($_POST['newLogin']); } elseif (!empty($_POST['giveitem']) && !empty($_POST['itemId']) && $m->isAdmin) { $administration->additem((int)$_POST['itemId']); } elseif (!empty($_POST['kickfrombattle']) && $m->isAdmin) { $administration->kickfrombattle(); } elseif (!empty($_POST['toggleinvisibility']) && $m->isAdmin) { $administration->toggleinvisibility(); } if (!empty($moderation->status)) { $uer = $moderation->status; } elseif (!empty($administration->status)) { $uer = $administration->status; } } if (!empty($_POST['marrypartner1']) && !empty($_POST['marrypartner2'])) { if (!empty($_POST['marry'])) { $uer = 'marry: Not available'; } elseif (!empty($_POST['unmarry'])) { $uer = 'unmarry: Not available'; } } echo '<script src="/js/jquery.js"></script>'; if ($go == 3 && $m->isAdmin) { ?> <table style="width: 100%"> <tr> <td style="text-align: center;"><h3>Редактирование обучающих квестов</h3></td> <td style="text-align: right; width: 150px;"> <input type="button" value=">" onclick="location='main.php?moderation';"/> <input type="button" value="Вернуться" onclick="location='main.php?moderation&go=3';"/> </td> </tr> <tr> <td><?= empty($merror) ? '' : "<span style='color: red;'>$merror</span>" ?> <?php $sx = ['Мужской', 'Женский', 'Общий']; if (isset($_GET['eq'])) { $pl = Db::getRow('select * from an_quest where id = ?', [(int)$_GET['eq']]); if (isset($pl['id'])) { if (isset($_POST['pl_name'])) { $pl['name'] = $_POST['pl_name']; $pl['sex'] = $_POST['pl_sex']; $pl['ico_bot'] = $_POST['pl_ico_bot']; $pl['name_bot'] = $_POST['pl_name_bot']; $pl['info'] = $_POST['pl_info']; $pl['act'] = $_POST['pl_act']; $pl['next'] = $_POST['pl_next']; $pl['win'] = $_POST['pl_win']; $pl['data'] = $_POST['pl_data']; $pl['room'] = $_POST['pl_room']; $pl['module'] = $_POST['pl_module']; Db::sql( 'update an_quest set name = ?, sex = ?, ico_bot = ?, name_bot = ?, info = ?, act = ?, next = ?, win = ?, data = ?, room = ?, module = ? where id = ?', [ $pl['name'], $pl['sex'], $pl['ico_bot'], $pl['name_bot'], $pl['info'], $pl['act'], $pl['next'], $pl['win'], $pl['data'], $pl['room'], $pl['module'], $pl['id'], ] ); $pl = Db::getRow('select * from an_quest where id = ?', [(int)$_GET['eq']]); } ?> <form method="post" action="/main.php?moderation&go=3&eq=<?= $pl['id'] ?>"> #id: <?= $pl['id'] ?><br/> <label> Название квеста: <input style="width:200px;" name="pl_name" type="text" value="<?= $pl['name'] ?>"> </label><br/> <hr/> <label> Пол: <input style="width:20px;" name="pl_sex" type="text" value="<?= $pl['sex'] ?>"> </label><br/> <label> Картинка бота: <input style="width:216px;" name="pl_ico_bot" type="text" value="<?= $pl['ico_bot'] ?>"> </label><br/> <label> Имя бота: <input style="width:253px;" name="pl_name_bot" type="text" value="<?= $pl['name_bot'] ?>"> </label> <hr/> <br/> <label> Информация:<br/><textarea style="width:330px;" name="pl_info"><?= $pl['info'] ?></textarea> </label><br/> <label> Действие: <input style="width:255px;" name="pl_act" type="text" value="<?= $pl['act'] ?>"> </label><br/> <label> Следующий квест: <input style="width:200px;" name="pl_next" type="text" value="<?= $pl['next'] ?>"> </label><br/> <label> Награда: <input style="width:200px;" name="pl_win" type="text" value="<?= $pl['win'] ?>"> (опыт|кр|екр|предметы) </label><br/> <label> Дата: <input style="width:200px;" name="pl_data" type="text" value="<?= $pl['data'] ?>"> </label><br/> <hr/> <label> Комната (требует): <input name="pl_room" type="text" value="<?= $pl['room'] ?>"> </label><br/> <label> Модуль, действие (требует): <input name="pl_module" type="text" value="<?= $pl['module'] ?>"> </label> <hr/> <input type="submit" value="Сохранить квест"> </form> <?php } else { echo '<div style="text-align: center">Квест не найден.</div>>'; } } else { echo '<a href="/main.php?moderation&go=3&add=1">Добавить новый квест</a><hr>'; if (isset($_GET['del'])) { Db::sql('delete from an_quest where id = ?', [(int)$_GET['del']]); } elseif (isset($_GET['add'])) { Db::sql('insert into an_quest (id) values (default)'); } foreach (Db::getRows('select id, name, sex from an_quest') as ['id' => $qid, 'name' => $qname, 'sex' => $qsex]) { $qsex = $sx[$qsex]; echo <<<HTML <div> <span style="width:50px;display:inline-block;">$qid</span> <span style="width:250px;display:inline-block; font-weight: bold;">$qname($qsex)</span> <a href="/main.php?moderation&go=3&eq=$qid">Изменить</a> <a href="/main.php?moderation&go=3&del=$qid">Удалить</a> </div> <hr> HTML; } } ?> </td> </tr> </table> <?php } elseif ($go == 2 && $m->isAdmin) { if (isset($_POST['q_name'])) { $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 [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['lvl'] = explode('-', $_POST['q_lvl']); $qd['info'] = $_POST['q_info']; if ($_POST['q_line1'] == 1) { $qd['line'] = $_POST['q_line2']; } if ($_POST['q_fast'] == 1) { $gd['fast'] = 1; } if ($_POST['align1'] == 1) { $qd['align'] = 1; } elseif ($_POST['align2'] == 1) { $qd['align'] = 3; } elseif ($_POST['align3'] == 1) { $qd['align'] = 7; } $i = 1; while ($i != -1) { if (isset($_POST['q_act_atr_' . $i])) { if ($_POST['q_act_val_' . $i] != '') { $qd['act_date'] .= $_POST['q_act_atr_' . $i] . ':=:' . $_POST['q_act_val_' . $i] . ':|:'; } } else { $i = -2; $qd['act_date'] = trim($qd['act_date'], ':|'); } $i++; } $i = 1; while ($i != -1) { if (isset($_POST['q_tr_atr_' . $i])) { if ($_POST['q_tr_val_' . $i] != '') { $qd['tr_date'] .= $_POST['q_tr_atr_' . $i] . ':=:' . $_POST['q_tr_val_' . $i] . ':|:'; } } else { $i = -2; $qd['tr_date'] = trim($qd['tr_date'], ':|'); } $i++; } $i = 1; while ($i != -1) { if (isset($_POST['q_ng_atr_' . $i])) { if ($_POST['q_ng_val_' . $i] != '') { $qd['win_date'] .= $_POST['q_ng_atr_' . $i] . ':=:' . $_POST['q_ng_val_' . $i] . ':|:'; } } else { $i = -2; $qd['win_date'] = trim($qd['win_date'], ':|'); } $i++; } $i = 1; while ($i != -1) { if (isset($_POST['q_nk_atr_' . $i])) { if ($_POST['q_nk_val_' . $i] != '') { $qd['lose_date'] .= $_POST['q_nk_atr_' . $i] . ':=:' . $_POST['q_nk_val_' . $i] . ':|:'; } } else { $i = -2; $qd['lose_date'] = trim($qd['lose_date'], ':|'); } $i++; } Db::sql( 'insert into quests (name, min_lvl, max_lvl, tr_date, act_date, win_date, lose_date, info, line, align, fast) values (?,?,?,?,?,?,?,?,?,?,?)', [ $qd['name'], $qd['lvl'][0], $qd['lvl'][1], $qd['tr_date'], $qd['act_date'], $qd['win_date'], $qd['lose_date'], $qd['info'], $qd['line'], $qd['align'], $qd['fast'], ] ); } ?> <script src="/js/modpanel.js"></script> <title>Текстовое поле</title> <style> .vtop { vertical-align: top; } .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> <td class="center"><h3>Редактор заданий</h3></td> <td style="width: 150px; text-align: right;"> <input type="button" class="btn btn-success" value="Вернуться" onclick="location='/main.php?moderation';"/> </td> </tr> <tr> <td> <table class="cs0 cp5 newquest"> <!-- --> <tr> <td style="border-bottom:1px solid #CCCCCC;"> <div style="margin-left:11px;"> <a href="javascript:void(0)" onclick="nqst()">Добавить новое задание</a> </div> <div></div> </td> </tr> <tr id="addNewquest" style="display:none;"> <td style="border-bottom:1px solid #CCCCCC; background-color: #dadada;"> <b>Панель добавления новых заданий:</b><br> <form method="post" action="/main.php?moderation&go=2"> <table class="cs0 cp5" style="width: 100%; border: 0;"> <tr> <td class="vtop" style="width: 200px;"><label for="q_name">Название задания</label></td> <td><input name="q_name" id="q_name" size="60" maxlength="50"> </td> </tr> <tr> <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> </tr> <tr> <td class="vtop">Действия</td> <td class="vtop" id="qact"><a href="javascript:void(0)" onclick="addqact()"><small>[+] добавить</small></a></td> </tr> <tr> <td class="vtop">Условия</td> <td class="vtop" id="qtr"><a href="javascript:void(0)" onclick="addqtr()"><small>[+] добавить</small></a></td> </tr> <tr> <td class="vtop">Награда</td> <td class="vtop" id="qng"><a href="javascript:void(0)" onclick="addqng()"><small>[+] добавить</small></a></td> </tr> <tr> <td class="vtop">Неудача</td> <td class="vtop" id="qnk"><a href="javascript:void(0)" onclick="addqnk()"><small>[+] добавить</small></a></td> </tr> <tr> <td class="vtop"><label for="q_info">Описание задания</label></td> <td><textarea name="q_info" id="q_info" style="width:90%" rows="7"></textarea></td> </tr> <tr style="background-color: #cbcbcb"> <td class="vtop center"> <label><input name="q_line1" type="checkbox" id="checkbox3" value="1"> Линейное задание</label> </td> <td> <label><input name="q_line2" id="q_line3" size="5" maxlength="3"> , id линейного сюжета</label> </td> </tr> <tr style="background-color: #cbcbcb"> <td class="vtop center"> <label><input name="q_fast" type="checkbox" id="q_fast" value="1"> Быстрое задание</label> </td> </tr> <tr style="background-color: #cbcbcb"> <td class="vtop center"> <small> <label> <input name="q_align1" type="checkbox" id="q_align1" value="1">Свет, </label> <label> <input name="q_align2" type="checkbox" id="q_align2" value="1"/>Тьма, </label><br> <label> <input name="q_align3" type="checkbox" id="q_align3" value="1"/>Нейтрал, </label> </small> </td> <td> <input type="submit" value="Добавить задание"/> </td> </tr> </table> </form> </td> </tr> <!-- --> </table> <table class="cs0 cp5 newquest"> <!-- --> <?php if (isset($_GET['delq'])) { Db::sql('delete from quests where id = ?', [$_GET['delq']]); } $ql = Db::getRows('select id, name, info from quests'); foreach ($ql as $quest): ?> <tr> <td style="border-bottom:1px solid #CCCCCC; width: 300px;"> <div style="margin-left:11px;"><?= $quest['name'] ?></div> <div></div> </td> <td style="border-bottom:1px solid #CCCCCC; background-color: #dadada; width: 75px;"> <div style="text-align: center;"> <a href="/main.php?moderation&go=2&delq=<?= $quest['id'] ?>">удалить</a> </div> </td> <td style="border-bottom:1px solid #CCCCCC;"> <small><b>Описание:</b> <?= $quest['info'] ?></small> </td> </tr> <?php endforeach; ?> <!-- --> </table> </td> </tr> </table> <?php } else { ?> <style> .modpow { background-color: #ddd5bf; } .mt { background-color: #b1a993; padding: 5px 10px; } .md { padding: 10px; } </style> <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="md" id="moddata"></div> </div> <div style="display: grid; grid-template-columns: auto 150px;"> <div style="text-align: center;"> <?php ?> <h3>Модераторская</h3> <?php ?> </div> <div style="text-align: right;"> <input type="button" class="btn btn-danger" value="Вернуться" onclick="location='main.php';"> </div> </div> <form action="/main.php?moderation&rnd=<?= PassGen::intCode() ?>" method="post" name="F1" id="F1"> <span style="color: red;"><?= $uer ?></span> <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> <div> <label>Время в минутах: <input type="number" min="1" name="time" form="moderation"></label> <input type="submit" name="silence" value="Молчанка в чате" form="moderation"> <input type="submit" name="unsilence" value="❌ Снять молчанку" form="moderation"><br> <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> <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) { /** Мегафон только для администраторов. */ Announcement::init(); /** Регистрации персонажей только для администраторов. */ UserRegistrationList::get(); /** Лог действий модераторов только для администраторов. */ $dsee = []; if (!isset($_POST['smod1'])) { $_POST['smod1'] = date('d.m.Y'); } $dsee['date'] = explode('.', $_POST['smod1']); $dsee['date'] = $dsee['date'][2] . '-' . $dsee['date'][1] . '-' . $dsee['date'][0]; $dsee['t1'] = strtotime($dsee['date'] . ' 00:00:00'); $dsee['t2'] = strtotime($dsee['date'] . ' 23:59:59'); $dsee['date'] = date('d.m.Y', $dsee['t1']); ?> <div style="padding:0 10px 5px 10px; margin:5px; border-bottom:1px solid #cac9c7;"> <h4>Показать лог действий модераторов</h4> <label> Показать действия за <input name="smod1" type="text" id="smod1" value="<?= $_POST['smod1'] ?>" size="11" maxlength="10"> </label> <label> Логин модератора <input name="smod2" type="text" id="smod2" value="<?= $_POST['smod2'] ?>" size="30" maxlength="30"> </label> <input type="submit" name="delosee3" id="delosee3" class="btn" value="Поиск"/> </div> <?php if (isset($_POST['delosee3'])) { foreach (Db::getRows('select uid, time, text from users_delo where login = ? and time between ? and ?', [$_POST['smod2'], $dsee['t1'], $dsee['t2']]) as $log) { $date = date('d.m.Y H:i:s', $log['time']); $login = User::getLogin($log['uid']); echo <<<HTML <div style="padding:0 10px 5px 10px; margin:5px; border-bottom:1px solid #cac9c7;"> <div style="display:inline-block;width:150px;color:green">$date</div> {$log['text']} персонажу $login </div> HTML; } } } ?> </form> <?php }