Просмотр файла admin/modules/install.php

Размер файла: 11.66Kb
  1. <?php
  2. include '../../engine/includes/start.php';
  3.  
  4. if (!$creator)
  5. Core::stop();
  6.  
  7. $set_mod = parse_ini_file(H . 'engine/files/data/modules.ini');
  8. $set['title'] = 'Установка модулей';
  9. include incDir.'head.php';
  10.  
  11. if (isset($_GET['select']))
  12. {
  13. if (!file_exists(H . 'engine/files/modules/configs/'.$_GET['select'].'.app'))
  14. Core::msg_show('Модуль не найден');
  15. else
  16. {
  17. if (isset($_GET['uninstall']))
  18. {
  19. unlink(H.'engine/files/modules/configs/'.$_GET['select'].'.app');
  20. unlink(H.'engine/files/modules/archives/'.$_GET['select'].'.zip');
  21. if (is_file(H.'style/icons/modules/'.$_GET['select'].'.png'))
  22. {
  23. unlink(H.'style/icons/modules/'.$_GET['select'].'.png');
  24. }
  25. echo '
  26. <a href="/admin/?act=modules"><div class="link">Модули</div></a>
  27. <a href="/admin/modules/install.php"><div class="link">Установить модули</div></a>
  28. <a href="/admin/"><div class="link">Админка</div></a>';
  29. include H . 'engine/includes/foot.php';
  30. }
  31. $module = array_map('htmlspecialchars', parse_ini_file(H . 'engine/files/modules/configs/'.$_GET['select'].'.app'));
  32. if (isset($_GET['install']))
  33. {
  34. $dir_install = empty($module['dir_install']) ? H : H . $module['dir_install'] . '/';
  35. $dir_pre_install = empty($module['dir_install']) ? tmpDir : tmpDir . $module['dir_install'] . '/';
  36. $ftp_dir_ins = str_replace(H, '', $dir_install);
  37. $ftp_dir_pre = str_replace(H, '', $dir_pre_install);
  38. if (!is_dir($dir_install) && !mkdir($dir_install))
  39. Core::msg_show('Возникла проблема с папкой для установки');
  40. else
  41. {
  42. Core::get('zip');
  43. $zip = new Pclzip(H . 'engine/files/modules/archives/'.$_GET['select'].'.zip');
  44. if (!empty($ftp_data['ftp_host']))
  45. {
  46. Core::get('ftp');
  47. $ftp_data = parse_ini_file(H . 'engine/files/data/modules.ini');
  48. $ftp = new ftp;
  49. if (!$ftp->connect($ftp_data['ftp_host'], $ftp_data['ftp_user'], $ftp_data['ftp_pass']))
  50. {
  51. echo "Ошибка соединения через ftp: ";
  52. print_r($ftp->error_no);
  53. print_r($ftp->error_msg);
  54. $zip->extract(PCLZIP_OPT_SUBSTITUE_FILE, $dir_install);
  55. }
  56. else
  57. {
  58. @mkdir($dir_pre_install, 0777);
  59. $zip->extract(PCLZIP_OPT_SUBSTITUE_FILE, $dir_pre_install);
  60. foreach($zip->listContent() as $file)
  61. {
  62. if ($file['folder'])
  63. {
  64. if (!is_dir($dir_install . $file['filename']))
  65. {
  66. mkdir($dir_install . $file['filename'], 0777);
  67. }
  68. }
  69. else
  70. {
  71. //$fil = $zip->extract(PCLZIP_OPT_BY_NAME, $file['filename'], PCLZIP_OPT_EXTRACT_AS_STRING);
  72. $ftp->put($ftp_dir_ins. $file['filename'], $dir_pre_install . $file['filename']); //, $fil[0]['content']))
  73. unlink($dir_pre_install . $file['filename']);
  74. }
  75. }
  76. }
  77. }
  78. else
  79. {
  80. $zip->extract(PCLZIP_OPT_SUBSTITUE_FILE, H);
  81. }
  82. Core::msg_show('Модуль установлен', 'menu_razd');
  83.  
  84. if (!empty($module['file_sql']))
  85. {
  86. $sql->from_file($dir_install . $module['file_sql']);
  87. $sql->free(true);
  88. Core::msg_show('Сделаны запросы из файла ' .$module['file_sql'], 'menu_razd');
  89. unlink($dir_install . $module['file_sql']);
  90. }
  91.  
  92. if (!empty($module['dir_chmod']))
  93. {
  94. $dirs = explode(' ', $module['dir_chmod']);
  95. foreach($dirs as $dir)
  96. {
  97. chmod(H . $dir, 0777);
  98. }
  99. Core::msg_show('Выставлены права доступа 777 на необходимые папки', 'menu_razd');
  100. }
  101.  
  102. mysqli_query($sql->db, "INSERT INTO `modules` SET
  103. `name` = '".my_esc($module['module_name'])."',
  104. `ru_name` = '".(!empty($module['module_runame']) ? my_esc($module['module_runame']) : '')."',
  105. `desc` = '".(!empty($module['module_desc']) ? my_esc($module['module_desc']) : '')."',
  106. `version` = '".(!empty($module['module_version']) && is_numeric($module['module_version']) ? $module['module_version'] : '')."',
  107. `uninstaller` = '".(!empty($module['file_uninstaller']) ? my_esc($module['file_uninstaller']) : '')."',
  108. `author_name` = '". my_esc($module['author_name'])."',
  109. `author_e-mail` = '".(!empty($module['author_e-mail']) ? my_esc($module['author_e-mail']) : '')."',
  110. `author_icq` = '".(!empty($module['author_icq']) ? intval($module['author_icq']) : '')."',
  111. `author_wmid` = '".(!empty($module['author_wmid']) ? intval($module['author_wmid']) : '')."'");
  112.  
  113.  
  114. unlink(H.'engine/files/modules/configs/'.$_GET['select'].'.app');
  115. unlink(H.'engine/files/modules/archives/'.$_GET['select'].'.zip');
  116. if (file_exists(H.'style/icons/modules/'.$_GET['select'].'.png'))
  117. Rename(H.'style/icons/modules/'.$_GET['select'].'.png', H.'style/icons/modules/'.$module['module_name'].'.png');
  118.  
  119. echo '<a href="/admin/?act=modules"><div class="link">Модули</div></a><a href="/admin/"><div class="link">Админка</div></a>';
  120. include H . 'engine/includes/foot.php';
  121. }
  122. }
  123.  
  124. Core::get('cache.class');
  125. $cache = new cache(tmpDir . 'modules[name='.$_GET['select'].';screens='.(isset($_GET['screens']) ? 1 : 0).'].swc');
  126. if (!$cache->life(9999999999999999))
  127. {
  128. ob_start();
  129. $base = null;
  130.  
  131. if ($set_mod['check_author'] == 1)
  132. {
  133. Core::get('Banbase');
  134. Core::get('GixSuApi', 'functions');
  135. $search['wmid'] = !empty($module['author_wmid']) ? $module['author_wmid'] : null;
  136. !empty($module['author_e-mail']) ? $search['email'] = $module['author_e-mail'] : null;
  137. !empty($module['author_icq']) ? $search['icq'] = $module['author_icq'] : null;
  138. $base = Banbase::search_arr($search);
  139. foreach($base as $arr => $val); // Надеюсь класс подправят
  140.  
  141. $gix = GixSuApi($search['wmid']);
  142. }
  143.  
  144. echo '<div class="post"><table><tr><td style="width:15%">'.
  145. '<img src="/style/icons/modules/' . (file_exists(H . 'style/icons/modules/'.$_GET['select'] .'.png') ? htmlspecialchars($_GET['select']) : '0') .'.png"/></td><td><span class="status">Название модуля:</span> '.
  146. (!empty($module['module_runame']) ? $module['module_runame'] . ' ('.$module['module_name'] . ')' : $module['module_name']) . '<br />'.
  147. (!empty($module['secwind_version']) ? '<span class="status">Для версии secwind:</span> '.$module['secwind_version'] : '<span class="status">Подходит для всех версий</span>') . '<br />'.
  148. (!empty($module['module_desc']) ? '<span class="status">Описание:</span> '.nl2br($module['module_desc']).'<br />' : '') .
  149. (!empty($module['module_version']) ? '<span class="status">Версия:</span> '.$module['module_version'].'<br />' : '').'</td></tr></table>';
  150.  
  151. if (!empty($module['module_screens']))
  152. {
  153. $imgs = explode(' ', $module['module_screens']);
  154. $img_all = count($imgs);
  155.  
  156. if (isset($_GET['screens']))
  157. {
  158. $i = 1;
  159. foreach ($imgs as $img)
  160. {
  161. echo '<a href="http://dbwap.ru/'.$img.'"><img src="http://dbwap.ru/'.$img.'.png" width="30%"/></a>'.($img_all <= 3 ? ' . ' : '<br />');
  162. if ($i++ == 5)
  163. break;
  164. }
  165. echo '<br /><a href="?select='.$_GET['select'].'">Скрыть скриншоты</a><br />'; // Не дыра
  166. }
  167. else
  168. echo '<a href="?select='.$_GET['select'].'&amp;screens">Скриншоты ('.$img_all.')</a><br />';
  169. }
  170.  
  171. echo
  172. '<span class="status">Автор:</span> '.$module['author_name'].'<br />'.
  173. (!empty($base) ? '<div class="news">'.$module['author_name'] . ' находится в черном списке Banbase.ru<br />Добавил '.$val['admin'].' на сайт '.$val['url'] . ' <br />'. $val['descr'].'</div>' : '') .
  174. (!empty($gix) && $gix['retval'] == 0 ? '<div class="p_m">Рейтинг автора на торговой площадке Gix.su: '.$gix['rating'].'<br /><a href="'.$gix['link'].'">Другие работы '.$gix['nick'].'</a></div>' : '') .
  175. (!empty($module['author_e-mail']) ? '<span class="status">E-mail:</span> '.$module['author_e-mail'].'<br />' : '') .
  176. (!empty($module['author_icq']) ? '<span class="status">ICQ:</span> <a href="http://www.icq.com/people/'.$module['author_icq'].'/">'.$module['author_icq'].'</a><br />' : '') .
  177. (!empty($module['author_wmid']) ? '<span class="status">WMID:</span> <a href="http://passport.webmoney.ru/asp/certview.asp?wmid='.$module['author_wmid'].'">'.$module['author_wmid'].'</a><br />' : '') .
  178. (!empty($module['file_uninstaller']) ? '<span class="status">Файл удаления:</span> есть' : '<span class="status">Файл удаления:</span> вручную') . '<br />' .
  179. (!empty($module['file_sql']) ? '<span class="status">Файл SQL:</span> да<br />' : '') .
  180. (!empty($module['dir_install']) ? '<span class="status">Установка в папку:</span> '.$module['dir_install'] : '<span class="status">Установка в:</span> корень') . '<br />'.
  181. (!empty($module['dir_chmod']) ? '<span class="status">Chmod в:</span> '.$module['dir_chmod'].'<br />' : '') .'</div>';
  182. echo '<div class="post">Установка будет через <a href="settings.php">ftp</a>, настройте данные</div>';
  183. echo '<a href="?select='.$_GET['select'].'&amp;install"><div class="link">Установить</div></a><a href="?select='.$_GET['select'].'&amp;uninstall"><div class="link">Удалить</div></a>';
  184. $cache->write();
  185. }
  186. echo $cache->read();
  187. }
  188. }
  189. else
  190. {
  191. $modules = opendir(H . 'engine/files/modules/configs/');
  192.  
  193. echo '<div class="menu_razd">Выберите модуль, который хотели бы установить</div>';
  194.  
  195. while ($modul = readdir($modules))
  196. {
  197. if ($modul == '.' || $modul == '..')
  198. continue;
  199.  
  200. $name = pathinfo($modul, PATHINFO_FILENAME);
  201. $module = array_map('htmlspecialchars', parse_ini_file(H . 'engine/files/modules/configs/'.$name.'.app'));
  202. echo '
  203. <table class="post" style="width:100%"><tr>
  204. <td style="width:7%">
  205. <img width="70%" src="/style/icons/modules/' . (file_exists(H . 'style/icons/modules/'. $name .'.png') ? $name : '0') .'.png"/>
  206. </td>
  207. <td><a href="?select='.$name.'">'
  208. .(!empty($module['module_runame']) ? $module['module_runame'] : $module['module_name']) .'</a> '
  209. .(!empty($module['module_version']) ? '<span class="status" style="float:right;font-size:smaller">'.$module['module_version'].'</span>' : '')
  210. .(!empty($module['module_desc']) ? '<br />' . $module['module_desc']: '').'</td></tr></table>';
  211. }
  212. }
  213.  
  214. echo '<a href="/admin/?act=modules"><div class="link">Модули</div></a><a href="/admin/"><div class="link">Админка</div></a>';
  215.  
  216. include incDir.'foot.php';