Example #1
0
$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));
 }