function AdminExtensionsUninstall() { global $db, $config, $user; // Для старых модулей $ext_type = $_GET['type']; $folder = $_GET['name']; if (isset($_GET['group'])) { $group = $_GET['group']; } switch ($ext_type) { case EXT_MODULE: $mod_path = RealPath2(System::config('mod_dir') . $folder); $info = ExtLoadInfo($mod_path); if (isset($_POST['ok']) || isset($info['1.3'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); // Могут быть использованы в uninstall.php $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); if (isset($info['1.3'])) { // Удаляем пункт меню $folder = SafeEnv($folder, 255, str); AdminMenuDeleteModule($folder); } } Audit('Расширения: Удаление модуля "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-1'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('modules', "`folder`='{$folder}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Модуль не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($mod['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы модуля</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление модуля "' . $name . '"', $text); } break; case EXT_BLOCK: $mod_path = RealPath2(System::config('blocks_dir') . $folder); if (isset($_POST['ok'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); } Audit('Удаление блока "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-2'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('block_types', "`folder`='{$folder}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Блок не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($mod['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление блока "' . $name . '"', $text); } break; case EXT_PLUGIN: if (isset($_GET['group'])) { $group = $_GET['group'] . '/'; $groupenv = SafeEnv($_GET['group'], 255, str); } else { $group = ''; $groupenv = ''; } $mod_path = RealPath2(System::config('plug_dir') . $group . $folder); $info = ExtLoadInfo($mod_path); if (isset($_POST['ok']) || isset($info['1.3'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); // FIXME: plugin config } if (isset($info['1.3'])) { $folder = SafeEnv($folder, 255, str); System::database()->Delete('plugins', "`name`='{$folder}' and `group`='{$groupenv}'"); } PluginsClearCache(); Audit('Расширения: Удаление плагина "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-3'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('plugins', "`name`='{$folder}' and `group`='{$groupenv}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Плагин не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($info['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление плагина "' . $name . '"', $text); } break; case EXT_TEMPLATE: $mod_path = RealPath2(System::config('tpl_dir') . $folder); if (isset($_POST['ok'])) { ExtRemoveTemplate($folder, isset($_POST['delete_files'])); Audit('Расширения: Удаление шаблона "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-4'); } else { $info = ExtLoadInfo($mod_path); if ($info === false) { $info = array('name' => $folder, 'description' => '', 'author' => '', 'site' => '', 'version' => '1.0', 'admin' => false); } $name = SafeDB($info['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление шаблона "' . $name . '"', $text); } break; } }
} // Удаляем таблицы if ($delete_tables) { $db = System::database(); $db->DropTable('forum_basket_post'); $db->DropTable('forum_basket_topics'); $db->DropTable('forum_posts'); $db->DropTable('forum_subscription'); $db->DropTable('forum_topics_read'); $db->DropTable('forum_topics'); $db->DropTable('forums'); $db->DropTable('forum_online'); } // Конфигурация RemoveConfigGroup('forum'); // Пункты за сообщения на форуме RemovePointsConfig('forum'); // Доступ RemoveAccessRestriction('forum', 'forum'); // Модуль ExtRemoveModule('forum'); // Удяляем пункт меню AdminMenuDeleteModule('forum'); // Удаляем все файлы модуля if ($delete_files) { //RmDirRecursive($mod_path); // Удаление папки модуля //unlink($mod_path.'/info.php'); // Удаление файла в папке модуля //unlink(System::config('tpl_dir').System::config('general/default_template').'/module/forums.html'); // Удаление шаблона из шаблона по умолчанию // Шаблон по умолчанию - это шаблон от которого наследуются другие шаблоны и перегружают его (не обязательно текущий выбранный в настройках) // Шаблоны следует добавляет при установке в шаблон по умолчанию (в 1.4 default, в 1.3 IgrimTheme). }