1. <?php
  2. /***********************************
  3. * Скрипт вывода банов SourceBans
  4. * Автор Onotole
  5. *
  6. * Скрипт для CMS e107.
  7. * http://e107club.ru
  8. ***********************************/
  9. // Данные базы. Сюда прописывать данные, которые вписаны в databases.cfg
  10. $host = 'localhost'; // Хост БД
  11. $database = 'sourcebans'; // База данных
  12. $user = 'user'; // Пользователь базы
  13. $pass = 'password'; // Пароль пользователя
  14. $prefix = 'sb'; // Префикс таблиц. По умолчанию sb
  15. // Настройки
  16. $limit = 20; // Количество банов для вывода
  17. $showpast = 1; // Выводить ли истекшие баны (0 - не выводить, 1 выводить)
  18. /********************************************************
  19. * Дальше желательно ничего не трогать
  20. ********************************************************/
  21. // Функция преобразования срока бана в человеко-понятный вид
  22. function date2word($dif,$short=false)
  23. {
  24. if($dif == 0)
  25. return 'Навсегда';
  26. $dif = $dif;
  27. if($dif) {
  28. $s = "";
  29. $years=intval($dif/(60*60*24*365));
  30. $dif=$dif-($years*(60*60*24*365));
  31. if($years) {
  32. $s.= $years." лет ";
  33. }
  34. if($years && $short) return $s;
  35. $months=intval($dif/(60*60*24*30));
  36. $dif=$dif-($months*(60*60*24*30));
  37. if($months) {
  38. $s.= $months." мес. ";
  39. }
  40. if($months && $short) return $s;
  41. $weeks=intval($dif/(60*60*24*7));
  42. $dif=$dif-($weeks*(60*60*24*7));
  43. if($weeks) {
  44. $s.= $weeks." нед. ";
  45. }
  46. if($weeks && $short) return $s;
  47. $days=intval($dif/(60*60*24));
  48. $dif=$dif-($days*(60*60*24));
  49. if($days) {
  50. $s.= $days." дн. ";
  51. }
  52. if($days && $short) return $s;
  53. $hours=intval($dif/(60*60));
  54. $dif=$dif-($hours*(60*60));
  55. if($hours) {
  56. $s.= $hours." час. ";
  57. }
  58. if($hours && $short) return $s;
  59. $minutes=intval($dif/(60));
  60. $seconds=$dif-($minutes*60);
  61. if($minutes) {
  62. $s.= $minutes." мин.";
  63. }
  64. if($minutes && $short) return $s;
  65. if($short) return $seconds." сек.";
  66. return $s;
  67. } else {
  68. return;
  69. }
  70. }
  71. // Подключаемся к базе
  72. $db = new PDO("mysql:host={$host};dbname={$database}", $user, $pass);
  73. // Выбираем баны
  74. $bans = $db->query("SELECT * FROM `{$prefix}_bans`".($showpast === 0 ? " WHERE ISNULL(`RemoveType`)" : "")." ORDER BY `bid` DESC LIMIT {$limit}")->fetchAll();
  75. // Выбираем админов, чтобы не делать кучи запросов
  76. $adminsquery = $db->query("SELECT `aid`, `user` FROM `{$prefix}_admins`")->fetchAll();
  77. // Загоняем админов в массив id => user
  78. $admin = array();
  79. foreach($adminsquery as $admins)
  80. {
  81. $admin[$admins['aid']] = $admins['user'];
  82. }
  83. // Функция вывода ника админа по его ID
  84. function getAdmin($id)
  85. {
  86. global $admin;
  87. if(!array_key_exists($id, $admin))
  88. return 'Удален';
  89. return htmlspecialchars($admin[$id],ENT_QUOTES);
  90. }
  91. // Далее идет примерный вывод данных в таблице. К самой таблице
  92. // или к ее элементам можете подставлять стили или классы Вашего движка
  93. require_once 'class2.php';
  94. require_once HEADERF;
  95. $text = '
  96. <table>
  97. <tr>
  98. <td>
  99. Ник
  100. </td>
  101. <td>
  102. Причина
  103. </td>
  104. <td>
  105. Админ
  106. </td>
  107. <td>
  108. Срок
  109. </td>
  110. </tr>';
  111. foreach($bans as $ban)
  112. {
  113. $text .= '
  114. <tr>
  115. <td>
  116. '.htmlspecialchars($ban['name'], ENT_QUOTES).'
  117. </td>
  118. <td>
  119. '.htmlspecialchars($ban['reason'], ENT_QUOTES).'
  120. </td>
  121. <td>
  122. '.getAdmin($ban['aid']).'
  123. </td>
  124. <td>
  125. '.date2word($ban['length']).'
  126. </td>
  127. </tr>';
  128. }
  129. $text .= '
  130. </table>';
  131. $ns->tablerender('Список банов', $text);
  132. require_once FOOTERF;