plugins.php 7.3 KB

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