- <?php
- /***********************************
- * Скрипт вывода банов SourceBans
- * Автор Onotole
- *
- * Скрипт универсальный.
- * При правильном подходе заработает
- * на любой CMS
- * Самое главное - это узнать,
- * как пишутся произвольные страницы
- * для Вашей CMS
- ***********************************/
- // Данные базы. Сюда прописывать данные, которые вписаны в databases.cfg
- $host = 'localhost'; // Хост БД
- $database = 'sourcebans'; // База данных
- $user = 'user'; // Пользователь базы
- $pass = 'password'; // Пароль пользователя
- $prefix = 'sb'; // Префикс таблиц. По умолчанию sb
- // Настройки
- $limit = 20; // Количество банов для вывода
- $showpast = 1; // Выводить ли истекшие баны (0 - не выводить, 1 выводить)
- /********************************************************
- * Дальше желательно ничего не трогать
- ********************************************************/
- // Функция преобразования срока бана в человеко-понятный вид
- function date2word($dif,$short=false)
- {
- if($dif == 0)
- return 'Навсегда';
- $dif = $dif;
- if($dif) {
- $s = "";
- $years=intval($dif/(60*60*24*365));
- $dif=$dif-($years*(60*60*24*365));
- if($years) {
- $s.= $years." лет ";
- }
- if($years && $short) return $s;
- $months=intval($dif/(60*60*24*30));
- $dif=$dif-($months*(60*60*24*30));
- if($months) {
- $s.= $months." мес. ";
- }
- if($months && $short) return $s;
- $weeks=intval($dif/(60*60*24*7));
- $dif=$dif-($weeks*(60*60*24*7));
- if($weeks) {
- $s.= $weeks." нед. ";
- }
- if($weeks && $short) return $s;
- $days=intval($dif/(60*60*24));
- $dif=$dif-($days*(60*60*24));
- if($days) {
- $s.= $days." дн. ";
- }
- if($days && $short) return $s;
- $hours=intval($dif/(60*60));
- $dif=$dif-($hours*(60*60));
- if($hours) {
- $s.= $hours." час. ";
- }
- if($hours && $short) return $s;
- $minutes=intval($dif/(60));
- $seconds=$dif-($minutes*60);
- if($minutes) {
- $s.= $minutes." мин.";
- }
- if($minutes && $short) return $s;
- if($short) return $seconds." сек.";
- return $s;
- } else {
- return;
- }
- }
- // Подключаемся к базе
- $db = new PDO("mysql:host={$host};dbname={$database}", $user, $pass);
- // Выбираем баны
- $bans = $db->query("SELECT * FROM `{$prefix}_bans`".($showpast === 0 ? " WHERE ISNULL(`RemoveType`)" : "")." ORDER BY `bid` DESC LIMIT {$limit}")->fetchAll();
- // Выбираем админов, чтобы не делать кучи запросов
- $adminsquery = $db->query("SELECT `aid`, `user` FROM `{$prefix}_admins`")->fetchAll();
- // Загоняем админов в массив id => user
- $admin = array();
- foreach($adminsquery as $admins)
- {
- $admin[$admins['aid']] = $admins['user'];
- }
- // Функция вывода ника админа по его ID
- function getAdmin($id)
- {
- global $admin;
- if(!array_key_exists($id, $admin))
- return 'Удален';
- return $admin[$id];
- }
- ?>
- <?php
- // Далее идет примерный вывод данных в таблице. К самой таблице
- // или к ее элементам можете подставлять стили или классы Вашего движка
- ?>
- <table>
- <thead>
- <tr>
- <th>
- Ник
- </th>
- <th>
- Причина
- </th>
- <th>
- Админ
- </th>
- <th>
- Срок
- </th>
- </tr>
- </thead>
- <tbody>
- <?php foreach($bans as $ban): ?>
- <tr>
- <td>
- <?php echo htmlspecialchars($ban['name'], ENT_QUOTES) ?>
- </td>
- <td>
- <?php echo htmlspecialchars($ban['reason'], ENT_QUOTES) ?>
- </td>
- <td>
- <?php echo getAdmin($ban['aid']) ?>
- </td>
- <td>
- <?php echo date2word($ban['length']) ?>
- </td>
- </tr>
- <?php endforeach; ?>
- </tbody>
- </table>