1. <?php
  2. /***********************************
  3. * Скрипт вывода банов AmxBans
  4. * Автор Onotole
  5. *
  6. * Скрипт универсальный.
  7. * При правильном подходе заработает
  8. * на любой CMS
  9. * Самое главное - это узнать,
  10. * как пишутся произвольные страницы
  11. * для Вашей CMS
  12. ***********************************/
  13. // Данные базы. Сюда прописывать данные, которые вписаны в sql.cfg
  14. $amx_sql_host = 'localhost'; // Хост БД
  15. $amx_sql_user = 'user'; // Пользователь базы
  16. $amx_sql_pass = 'password'; // Пароль пользователя
  17. $amx_sql_db = 'amxbans'; // База данных
  18. // Настройки
  19. $limit = 20; // Количество банов для вывода
  20. $showpast = 0; // Выводить ли истекшие баны (0 - не выводить, 1 выводить)
  21. /********************************************************
  22. * Дальше желательно ничего не трогать
  23. ********************************************************/
  24. // Функция преобразования срока бана в человеко-понятный вид
  25. function date2word($dif,$short=false)
  26. {
  27. if($dif == 0)
  28. return 'Навсегда';
  29. $dif = $dif * 60;
  30. if($dif) {
  31. $s = "";
  32. $years=intval($dif/(60*60*24*365));
  33. $dif=$dif-($years*(60*60*24*365));
  34. if($years) {
  35. $s.= $years." лет ";
  36. }
  37. if($years && $short) return $s;
  38. $months=intval($dif/(60*60*24*30));
  39. $dif=$dif-($months*(60*60*24*30));
  40. if($months) {
  41. $s.= $months." мес. ";
  42. }
  43. if($months && $short) return $s;
  44. $weeks=intval($dif/(60*60*24*7));
  45. $dif=$dif-($weeks*(60*60*24*7));
  46. if($weeks) {
  47. $s.= $weeks." нед. ";
  48. }
  49. if($weeks && $short) return $s;
  50. $days=intval($dif/(60*60*24));
  51. $dif=$dif-($days*(60*60*24));
  52. if($days) {
  53. $s.= $days." дн. ";
  54. }
  55. if($days && $short) return $s;
  56. $hours=intval($dif/(60*60));
  57. $dif=$dif-($hours*(60*60));
  58. if($hours) {
  59. $s.= $hours." час. ";
  60. }
  61. if($hours && $short) return $s;
  62. $minutes=intval($dif/(60));
  63. $seconds=$dif-($minutes*60);
  64. if($minutes) {
  65. $s.= $minutes." мин.";
  66. }
  67. if($minutes && $short) return $s;
  68. if($short) return $seconds." сек.";
  69. return $s;
  70. } else {
  71. return;
  72. }
  73. }
  74. $db = new PDO("mysql:host={$amx_sql_host};dbname={$amx_sql_db}", $amx_sql_user, $amx_sql_pass);
  75. $bans = $db->query("SELECT * FROM `amx_bans`".($showpast === 0 ? " WHERE `expired` = 0" : "")." ORDER BY `bid` DESC LIMIT {$limit}")->fetchAll();
  76. ?>
  77. <?php
  78. // Далее идет примерный вывод данных в таблице. К самой таблице
  79. // или к ее элементам можете подставлять стили или классы Вашего движка
  80. ?>
  81. <table>
  82. <thead>
  83. <tr>
  84. <th>
  85. Ник
  86. </th>
  87. <th>
  88. Причина
  89. </th>
  90. <th>
  91. Админ
  92. </th>
  93. <th>
  94. Срок
  95. </th>
  96. </tr>
  97. </thead>
  98. <tbody>
  99. <?php foreach($bans as $ban): ?>
  100. <tr>
  101. <td>
  102. <?php echo htmlspecialchars($ban['player_nick'], ENT_QUOTES) ?>
  103. </td>
  104. <td>
  105. <?php echo htmlspecialchars($ban['ban_reason'], ENT_QUOTES) ?>
  106. </td>
  107. <td>
  108. <?php echo htmlspecialchars($ban['admin_nick'], ENT_QUOTES) ?>
  109. </td>
  110. <td>
  111. <?php echo date2word($ban['ban_length']) ?>
  112. </td>
  113. </tr>
  114. <?php endforeach; ?>
  115. </tbody>
  116. </table>