$I18N->appendFile($REX['INCLUDE_PATH'] . '/addons/website_manager/lang/'); if (!OOAddon::isActivated('website_manager')) { // don't allow uninstall if website manager is not active. otherwise codeline hint msg won't be shown. $REX['ADDON']['installmsg']['website_manager'] = $I18N->msg('website_manager_uninstall_activate_first'); $REX['ADDON']['install']['website_manager'] = 1; } else { if (isset($REX['WEBSITE_MANAGER']) && $REX['WEBSITE_MANAGER']->getWebsiteCount() > 1) { // user has to manually delete websites first $REX['ADDON']['installmsg']['website_manager'] = $I18N->msg('website_manager_uninstall_delete_generated'); $REX['ADDON']['install']['website_manager'] = 1; } else { if (!$REX['WEBSITE_MANAGER_SETTINGS']['allow_uninstall']) { // user has manually set this option so we can safly proceed with uninstallation $REX['ADDON']['installmsg']['website_manager'] = $I18N->msg('website_manager_uninstall_allow_uninstall'); $REX['ADDON']['install']['website_manager'] = 1; } else { if (isset($REX['WEBSITE_MANAGER_DO_UNINSTALL']) && !$REX['WEBSITE_MANAGER_DO_UNINSTALL']) { // don't allow uninstall if user still has codeline in master.inc.php $REX['ADDON']['installmsg']['website_manager'] = $I18N->msg('website_manager_uninstall_codeline_hint'); $REX['ADDON']['install']['website_manager'] = 1; } else { $sql = new rex_sql(); //$sql->debugsql = true; $sql->setQuery('DROP TABLE IF EXISTS `rex_website`'); rex_website_manager_utils::rrmdir(WEBSITE_MANAGER_DATA_DIR); rex_generateAll(); $REX['ADDON']['install']['website_manager'] = 0; } } } }
public static function destroyWebsite($websiteId) { global $REX, $I18N; $sql = rex_sql::factory(); $tablePrefix = rex_website::constructTablePrefix($websiteId); $generatedDir = rex_website::constructGeneratedDir($websiteId); $mediaDir = rex_website::constructMediaDir($websiteId); // init logger $logFile = WEBSITE_MANAGER_LOG_DIR; $log = KLogger::instance($logFile, KLogger::INFO); $log->logInfo('======================================== DESTROY WEBSITE WITH ID = ' . $websiteId . ' ========================================'); // just for security reasons if ($websiteId == rex_website::firstId) { $log->logError('Website ID = 1 detected --> Exit!'); echo rex_warning($I18N->msg('website_manager_destroy_website_security_msg')); exit; } // include custom php file with additional userdefined stuff require_once WEBSITE_MANAGER_CUSTOM_DIR . 'destroy_website.before.inc.php'; // extension point rex_register_extension_point('WEBSITE_BEFORE_DESTROYED', array('website_id' => $websiteId, 'sql_object' => $sql, 'table_prefix' => $tablePrefix, 'generated_dir' => $generatedDir, 'media_dir' => $mediaDir, 'log_object' => $log)); // *************************************************************************************************** // database views // *************************************************************************************************** // users rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . 'user'); // clangs if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_clangs']) { rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . 'clang'); } // media if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_media']) { rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . 'file'); rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . 'file_category'); } // modules if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_modules']) { rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . 'module'); rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . 'module_action'); rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . 'action'); } // templates if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_templates']) { rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . 'template'); } // meta infos if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_meta_infos']) { rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . '62_type'); rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . '62_params'); } // image types if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_image_types']) { rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . '679_types'); rex_website_manager_utils::logQuery($log, $sql, 'DROP VIEW ' . $tablePrefix . '679_type_effects'); } // *************************************************************************************************** // database tables // *************************************************************************************************** $tables = $sql->showTables(1, $tablePrefix); for ($i = 0; $i < count($tables); $i++) { rex_website_manager_utils::logQuery($log, $sql, 'DROP TABLE ' . $tables[$i]); } // *************************************************************************************************** // directories // *************************************************************************************************** $generatedPath = realpath($REX['HTDOCS_PATH'] . 'redaxo/include/') . DIRECTORY_SEPARATOR . $generatedDir; $mediaPath = realpath($REX['HTDOCS_PATH']) . DIRECTORY_SEPARATOR . $mediaDir; rex_website_manager_utils::rrmdir($generatedPath); if (is_dir($generatedPath)) { $log->logError('[REMOVE DIR] ' . $generatedPath); } else { $log->logInfo('[REMOVE DIR] ' . $generatedPath); } if (!$REX['WEBSITE_MANAGER_SETTINGS']['identical_media']) { rex_website_manager_utils::rrmdir($mediaPath); if (is_dir($mediaPath)) { $log->logError('[REMOVE DIR] ' . $mediaPath); } else { $log->logInfo('[REMOVE DIR] ' . $mediaPath); } } // include custom php file with additional userdefined stuff require_once WEBSITE_MANAGER_CUSTOM_DIR . 'destroy_website.after.inc.php'; // extension point rex_register_extension_point('WEBSITE_AFTER_DESTROYED', array('website_id' => $websiteId, 'sql_object' => $sql, 'table_prefix' => $tablePrefix, 'generated_dir' => $generatedDir, 'media_dir' => $mediaDir, 'log_object' => $log)); }