plugins.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. if (!DEFINED('EGP'))
  3. exit(header('Refresh: 0; URL=http://' . $_SERVER['SERVER_NAME'] . '/404'));
  4. $sql->query('SELECT `unit`, `tarif`, `pack` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
  5. $server = array_merge($server, $sql->get());
  6. $html->nav($server['address'], $cfg['http'] . 'servers/id/' . $id);
  7. // Подразделы
  8. $aSub = array('install', 'delete', 'update', 'plugin', 'config', 'search');
  9. // Если выбран подраздел
  10. if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
  11. $html->nav('Плагины', $cfg['http'] . 'servers/id/' . $id . '/section/plugins');
  12. $nmch = sys::rep_act('server_plugins_go_' . $id, 10);
  13. include(SEC . 'servers/games/plugins/' . $url['subsection'] . '.php');
  14. } else {
  15. $html->nav('Плагины');
  16. // Если есть кеш
  17. if ($mcache->get('server_plugins_' . $id) != '')
  18. $html->arr['main'] = $mcache->get('server_plugins_' . $id);
  19. else {
  20. include(LIB . 'games/plugins.php');
  21. // Категории
  22. $cats = $sql->query('SELECT `id`, `name` FROM `plugins_category` WHERE `game`="' . $server['game'] . '" ORDER BY `sort` ASC');
  23. while ($cat = $sql->get($cats)) {
  24. // Плагины
  25. $plugins = $sql->query('SELECT `id`, `name`, `desc`, `images`, `status`, `upd`, `packs`, `price` FROM `plugins` WHERE `cat`="' . $cat['id'] . '" ORDER BY `sort`, `id` ASC');
  26. while ($plugin = $sql->get($plugins)) {
  27. // Проверка, установлен ли плагин на сервер
  28. $sql->query('SELECT `id` FROM `plugins_install` WHERE `server`="' . $id . '" AND `plugin`="' . $plugin['id'] . '" LIMIT 1');
  29. if ($sql->num())
  30. continue;
  31. // Проверка наличия обновленной версии плагина
  32. if ($plugin['upd']) {
  33. $idp = $plugin['id'];
  34. $sql->query('SELECT `name`, `desc`, `images`, `status`, `packs`, `price` FROM `plugins_update` WHERE `plugin`="' . $plugin['id'] . '" ORDER BY `id` DESC LIMIT 1');
  35. if ($sql->num()) {
  36. $plugin = $sql->get();
  37. $plugin['id'] = $idp;
  38. } else
  39. $plugin['upd'] = 0;
  40. }
  41. // Проверка на доступность плагина к установленной на сервере сборке
  42. $packs = strpos($plugin['packs'], ':') ? explode(':', $plugin['packs']) : array($plugin['packs']);
  43. if (!in_array($server['pack'], $packs) and $plugin['packs'] != 'all')
  44. continue;
  45. $images = plugins::images($plugin['images'], $plugin['id']);
  46. if ($plugin['price']) {
  47. $sql->query('SELECT `id` FROM `plugins_buy` WHERE `plugin`="' . $plugin['id'] . '" AND `server`="' . $id . '" LIMIT 1');
  48. $buy = $sql->num();
  49. }
  50. // Шаблон плагина
  51. $html->get('plugin', 'sections/servers/games/plugins');
  52. $html->set('id', $id);
  53. $html->set('plugin', $plugin['id']);
  54. plugins::status($plugin['status']);
  55. $html->set('name', htmlspecialchars_decode($plugin['name']));
  56. $html->set('desc', htmlspecialchars_decode($plugin['desc']));
  57. if (!empty($images)) {
  58. $html->unit('images', 1);
  59. $html->set('images', $images);
  60. } else
  61. $html->unit('images');
  62. if (!$buy and $plugin['price']) {
  63. $html->unit('price', true, true);
  64. $html->set('price', $plugin['price']);
  65. } else
  66. $html->unit('price', false, true);
  67. $html->pack('plugins');
  68. }
  69. // Шаблон блока плагинов
  70. $html->get('category', 'sections/servers/games/plugins');
  71. $html->set('name', $cat['name']);
  72. $html->set('plugins', isset($html->arr['plugins']) ? $html->arr['plugins'] : 'Доступных для установки плагинов нет.', 1);
  73. $html->pack('addons');
  74. }
  75. unset($cats, $cat, $plugins, $plugin);
  76. // Список установленных плагинов на сервер (отдельный блок)
  77. $pl_ins = $sql->query('SELECT `plugin`, `upd`, `time` FROM `plugins_install` WHERE `server`="' . $id . '" ORDER BY `plugin`');
  78. while ($plugin = $sql->get($pl_ins)) {
  79. $sql->query('SELECT `id` FROM `plugins` WHERE `id`="' . $plugin['plugin'] . '" LIMIT 1');
  80. if (!$sql->num())
  81. continue;
  82. $isUpd = $plugin['upd'];
  83. // Если установлен обновленный плагин
  84. if ($isUpd)
  85. $sql->query('SELECT `name`, `desc`, `status`, `cfg`, `upd` FROM `plugins_update` WHERE `id`="' . $isUpd . '" LIMIT 1');
  86. else
  87. $sql->query('SELECT `name`, `desc`, `status`, `cfg`, `upd` FROM `plugins` WHERE `id`="' . $plugin['plugin'] . '" LIMIT 1');
  88. $plugin = array_merge($plugin, $sql->get());
  89. // Шаблон плагина
  90. $html->get('plugin_install', 'sections/servers/games/plugins');
  91. $html->set('id', $id);
  92. $html->set('plugin', $plugin['plugin']);
  93. plugins::status($plugin['status']);
  94. if ($plugin['cfg']) $html->unit('config', 1); else $html->unit('config');
  95. if ($plugin['upd']) $html->unit('update', 1); else $html->unit('update');
  96. $html->set('name', htmlspecialchars_decode($plugin['name']));
  97. $html->set('time', sys::today($plugin['time']));
  98. $html->set('desc', htmlspecialchars_decode($plugin['desc']));
  99. $html->pack('install');
  100. }
  101. $html->get('plugins', 'sections/servers/games');
  102. $html->set('id', $id);
  103. $html->set('addons', isset($html->arr['addons']) ? $html->arr['addons'] : '');
  104. $html->set('install', isset($html->arr['install']) ? $html->arr['install'] : 'Установленные плагины отсутствуют.');
  105. $html->pack('main');
  106. $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60);
  107. }
  108. }
  109. ?>