- <?php
- /***********************************
- * Скрипт вывода банов SourceBans
- * Автор Onotole
- *
- * Скрипт для CMS e107.
- * http://e107club.ru
- ***********************************/
- // Данные базы. Сюда прописывать данные, которые вписаны в 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 htmlspecialchars($admin[$id],ENT_QUOTES);
- }
- // Далее идет примерный вывод данных в таблице. К самой таблице
- // или к ее элементам можете подставлять стили или классы Вашего движка
- require_once 'class2.php';
- require_once HEADERF;
- $text = '
- <table>
- <tr>
- <td>
- Ник
- </td>
- <td>
- Причина
- </td>
- <td>
- Админ
- </td>
- <td>
- Срок
- </td>
- </tr>';
- foreach($bans as $ban)
- {
- $text .= '
- <tr>
- <td>
- '.htmlspecialchars($ban['name'], ENT_QUOTES).'
- </td>
- <td>
- '.htmlspecialchars($ban['reason'], ENT_QUOTES).'
- </td>
- <td>
- '.getAdmin($ban['aid']).'
- </td>
- <td>
- '.date2word($ban['length']).'
- </td>
- </tr>';
- }
- $text .= '
- </table>';
- $ns->tablerender('Список банов', $text);
- require_once FOOTERF;