function rex_uninstall_addon($addons, $addonname)
{
    global $REX, $I18N;
    $state = true;
    $install_dir = $REX['INCLUDE_PATH'] . '/addons/' . $addonname;
    $uninstall_file = $install_dir . '/uninstall.inc.php';
    $uninstall_sql = $install_dir . '/uninstall.sql';
    if (is_readable($uninstall_file)) {
        require $uninstall_file;
        // Wurde das "uninstall" Flag gesetzt, oder eine Fehlermeldung ausgegeben? Wenn ja, Abbruch
        if (OOAddon::isInstalled($addonname) || !empty($REX['ADDON']['installmsg'][$addonname])) {
            $state = $I18N->msg('addon_no_uninstall', $addonname) . '<br/>';
            if (empty($REX['ADDON']['installmsg'][$addonname])) {
                $state .= $I18N->msg('addon_no_reason');
            } else {
                $state .= $REX['ADDON']['installmsg'][$addonname];
            }
        } else {
            $state = rex_deactivate_addon($addons, $addonname);
            if ($state === true && is_readable($uninstall_sql)) {
                $state = rex_install_dump($uninstall_sql);
                if ($state !== true) {
                    $state = 'Error found in uninstall.sql:<br />' . $state;
                }
            }
            if ($state === true) {
                // regenerate Addons file
                $state = rex_generateAddons($addons);
            }
        }
    } else {
        $state = $I18N->msg("addon_uninstall_not_found");
    }
    // Fehler beim uninstall -> Addon bleibt installiert
    if ($state !== true) {
        $REX['ADDON']['install'][$addonname] = 1;
    }
    return $state;
}
/**
 * Hilfsfunktion zur Installation.
 *
 * @param int $step Installationsschritt
 * @return string
 */
function _a_63_install($step = 0)
{
    global $REX;
    /**
     * init
     */
    $error = '';
    $tmpFolder = $REX['MEDIAFOLDER'] . '/' . $REX['TEMP_PREFIX'] . '/';
    $mediaFolder = $REX['MEDIAFOLDER'] . '/' . $REX['TEMP_PREFIX'] . '/guestbook_63/';
    $cssPathSource = '/addons/guestbook/css/';
    $cssFile = 'guestbook.css';
    static $_a63_checkTabelle = '';
    switch ($step) {
        case 1:
            /**
             * pruefe config/ auf Schreibrechte
             */
            $error = rex_is_writable(dirname(__FILE__) . '/config');
            break;
        case 2:
            /**
             * pruefe config/status.txt auf Schreibrechte
             */
            $error = rex_is_writable(dirname(__FILE__) . '/config/status.txt');
            break;
        case 3:
            /**
             * das addon_framework muss installiert und aktiviert sein
             */
            if (!OOAddon::isAvailable('addon_framework')) {
                $error = 'Required addon "addon_framework" is either not installed or not activated!';
            }
            break;
        case 4:
            // erstelle tmp-Ordner, wenn nicht schon vorhanden
            if (!is_dir($tmpFolder) && !mkdir($tmpFolder)) {
                $error = 'Unable to create folder "' . $tmpFolder . '"';
            }
            @chmod($tmpFolder, $REX['DIRPERM']);
            break;
        case 5:
            // erstelle AddOn-Ordner im tmp-Ordner
            if (!is_dir($mediaFolder) && !mkdir($mediaFolder)) {
                $error = 'Unable to create folder "' . $mediaFolder . '"';
            }
            @chmod($mediaFolder, $REX['DIRPERM']);
            break;
        case 6:
            // kopiere CSS in Mediafolder
            $cssSrc = $REX['INCLUDE_PATH'] . $cssPathSource . $cssFile;
            $cssDst = $mediaFolder . $cssFile;
            if (!file_exists($cssDst) && !copy($cssSrc, $cssDst)) {
                $error = 'Unable to copy file to "' . $cssDst . '"';
            }
            // setze Rechte nach master.inc.php-Vorgabe
            @chmod($cssDst, $REX['FILEPERM']);
            break;
        case 7:
            // Gibt es die GB-Tabelle schon?
            $_a63_checkTabelle = rex_a63_CheckTabelle();
            // SQL wird nur ausgefuehrt, wenn die Tabelle noch nicht in der DB existiert.
            if (!$_a63_checkTabelle) {
                $error = rex_install_dump(dirname(__FILE__) . '/install_tabelle.sql', false);
            }
            break;
        case 8:
            // installiere die benoetigten Module und Aktionen
            // ToDo: eine Ueberpruefung ob die Module und Aktionen schon installiert ist waere notwendig
            // ToDo: aber dazu fehlen noch einige Vorraussetzungen in den Redaxotabellen selbst
            $error = rex_install_dump(dirname(__FILE__) . '/install_moduleaction.sql', false);
            break;
        case 9:
            // DB-Daten installiert? Dann hiermit weiter.
            include dirname(__FILE__) . '/install.php';
            // rex_a63_installAction2Modul(Name des Modules, Name der Action)
            $error = rex_a63_installAction2Modul('Gaestebuch - Eintragsliste', 'Gaestebuch - Eintragsliste StatusPerDatei');
            break;
        default:
            $error = $I18N_A63('Fehler bei der Installation. Kein passender Installationsschritt gefunden.');
            break;
    }
    return $error;
}
 function uninstall($addonName)
 {
     $state = TRUE;
     $install_dir = $this->baseFolder($addonName);
     $uninstall_file = $install_dir . 'uninstall.inc.php';
     $uninstall_sql = $install_dir . 'uninstall.sql';
     if (is_readable($uninstall_file)) {
         $this->includeUninstaller($addonName, $uninstall_file);
         // Wurde das "install" Flag gesetzt?
         // Fehlermeldung ausgegeben? Wenn ja, Abbruch
         $instmsg = $this->apiCall('getProperty', array($addonName, 'installmsg', ''));
         if ($this->apiCall('isInstalled', array($addonName)) || $instmsg) {
             $state = $this->I18N('no_uninstall', $addonName) . '<br />';
             if ($instmsg == '') {
                 $state .= $this->I18N('no_reason');
             } else {
                 $state .= $instmsg;
             }
         } else {
             $state = $this->deactivate($addonName);
             if ($state === TRUE && is_readable($uninstall_sql)) {
                 $state = rex_install_dump($uninstall_sql);
                 if ($state !== TRUE) {
                     $state = 'Error found in uninstall.sql:<br />' . $state;
                 }
             }
             if ($state === TRUE) {
                 // regenerate Addons file
                 $state = $this->generateConfig();
             }
         }
     } else {
         $state = $this->I18N('uninstall_not_found');
     }
     $mediaFolder = $this->mediaFolder($addonName);
     if ($state === TRUE && is_dir($mediaFolder)) {
         if (!rex_deleteDir($mediaFolder, TRUE)) {
             $state = $this->I18N('install_cant_delete_files');
         }
     }
     // Fehler beim uninstall -> Addon bleibt installiert
     if ($state !== TRUE) {
         $this->apiCall('setProperty', array($addonName, 'install', 1));
     }
     return $state;
 }
<?php

$mypage = 'd2u_stellenmarkt';
// Jetzt das SQL dieses Addons installieren
$error = rex_install_dump(dirname(__FILE__) . '/install.sql');
if (!OOAddon::isActivated('xoutputfilter')) {
    // xoutputfilter aktivieren
    $error = "Das Addon XOutputFilter ist für die Installation notwendig";
}
if ($error != 1) {
    $REX['ADDON']['installmsg'][$mypage] = $error;
} else {
    $REX['ADDON']['install'][$mypage] = true;
}
<?php

/**
 * Guestbook Addon 
 * @author staab[at]public-4u[dot]de Markus Staab
 * @author <a href="http://www.public-4u.de">www.public-4u.de</a>
 * @author redaxo[at]koalashome[dot]de Sven (Koala) Eichler
 * @package redaxo4
 * @version $Id: uninstall.inc.php,v 1.4 2009/01/28 14:42:38 koala_s Exp $
 */
$error = rex_install_dump(dirname(__FILE__) . '/uninstall_tabelle.sql', false);
if ($error != '' and strlen($error) > 3) {
    $REX['ADDON']['installmsg']['guestbook'] = $error;
} else {
    $REX['ADDON']['install']['guestbook'] = 0;
}
<?php

/**
 * MetaForm Addon
 *
 * @author markus[dot]staab[at]redaxo[dot]de Markus Staab
 *
 * @package redaxo4
 * @version svn:$Id$
 */
$error = '';
require_once $REX['INCLUDE_PATH'] . '/addons/metainfo/extensions/extension_cleanup.inc.php';
rex_a62_metainfo_cleanup(array('force' => true));
// uninstall ausführen, damit die db clean ist vorm neuen install
$uninstall = $REX['INCLUDE_PATH'] . '/addons/metainfo/uninstall.sql';
rex_install_dump($uninstall);
if ($error != '') {
    $REX['ADDON']['installmsg']['metainfo'] = $error;
} else {
    $REX['ADDON']['install']['metainfo'] = true;
}
function rex_uninstall_plugin($plugins, $pluginname)
{
    global $REX, $I18N_COM;
    $state = true;
    $install_dir = rex_plugins_dir() . '/' . $pluginname;
    $uninstall_file = $install_dir . '/uninstall.inc.php';
    $uninstall_sql = $install_dir . '/uninstall.sql';
    if (is_readable($uninstall_file)) {
        require $uninstall_file;
        // Wurde das "uninstall" Flag gesetzt, oder eine Fehlermeldung ausgegeben? Wenn ja, Abbruch
        $instmsg = OOPlugin::getProperty($pluginname, 'installmsg', '');
        if (OOPlugin::isInstalled($pluginname) || $instmsg) {
            $state = $I18N_COM->msg('plugin_no_uninstall', $pluginname) . '<br/>';
            if (empty($instmsg)) {
                $state .= $I18N_COM->msg('plugin_no_reason');
            } else {
                $state .= $instmsg;
            }
        } else {
            $state = rex_deactivate_plugin($plugins, $pluginname);
            if ($state === true && is_readable($uninstall_sql)) {
                $state = rex_install_dump($uninstall_sql);
                if ($state !== true) {
                    $state = 'Error found in uninstall.sql:<br />' . $state;
                }
            }
            if ($state === true) {
                // regenerate Addons file
                $state = rex_generatePlugins($plugins);
            }
        }
    } else {
        $state = $I18N_COM->msg("plugin_uninstall_not_found");
    }
    // Fehler beim uninstall -> Addon bleibt installiert
    if ($state !== true) {
        OOPlugin::setProperty($pluginname, 'install', 1);
    }
    return $state;
}
Exemple #8
0
<?php

/**
 * MetaForm Addon
 *
 * @author markus[dot]staab[at]redaxo[dot]de Markus Staab
 *
 * @package redaxo4
 * @version svn:$Id$
 */
$error = '';
$result = rex_install_dump($REX['INCLUDE_PATH'] . '/addons/metainfo/_install.sql');
if ($result !== true) {
    $error = $result;
} else {
    require_once $REX['INCLUDE_PATH'] . '/addons/metainfo/classes/class.rex_table_manager.inc.php';
    $tablePrefixes = array('article' => array('art_', 'cat_'), 'file' => array('med_'));
    $columns = array('article' => array(), 'file' => array());
    foreach ($tablePrefixes as $table => $prefixes) {
        foreach (rex_sql::showColumns($REX['TABLE_PREFIX'] . $table) as $column) {
            $column = $column['name'];
            $prefix = substr($column, 0, 4);
            if (in_array(substr($column, 0, 4), $prefixes)) {
                $columns[$table][$column] = true;
            }
        }
    }
    $sql = rex_sql::factory();
    $sql->setQuery('SELECT p.name, p.default, t.dbtype, t.dblength FROM ' . $REX['TABLE_PREFIX'] . '62_params p, ' . $REX['TABLE_PREFIX'] . '62_type t WHERE p.type = t.id');
    $rows = $sql->getRows();
    $managers = array('article' => new rex_a62_tableManager($REX['TABLE_PREFIX'] . 'article'), 'file' => new rex_a62_tableManager($REX['TABLE_PREFIX'] . 'file'));
 public static function createWebsite($websiteId)
 {
     global $REX, $I18N, $curAddonCount, $curPluginCount;
     $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('======================================== CREATE 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_create_website_security_msg'));
         exit;
     }
     // include custom php file with additional userdefined stuff
     require_once WEBSITE_MANAGER_CUSTOM_DIR . 'create_website.before.inc.php';
     // extension point
     rex_register_extension_point('WEBSITE_BEFORE_CREATED', array('website_id' => $websiteId, 'sql_object' => $sql, 'table_prefix' => $tablePrefix, 'generated_dir' => $generatedDir, 'media_dir' => $mediaDir, 'log_object' => $log));
     // seo42 support
     if (OOAddOn::isAvailable('seo42') && !in_array('seo42', $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'])) {
         $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'][] = 'seo42';
     }
     // slice_status support
     if (OOAddOn::isAvailable('slice_status') && !in_array('slice_status', $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'])) {
         $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'][] = 'slice_status';
     }
     // ***************************************************************************************************
     // database tables
     // ***************************************************************************************************
     // users (always identical)
     rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . 'user AS SELECT * FROM rex_user');
     // articles (always different)
     rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'article` ( `pid` int(11) NOT NULL  auto_increment, `id` int(11) NOT NULL  , `re_id` int(11) NOT NULL  , `name` varchar(255) NOT NULL  , `catname` varchar(255) NOT NULL  , `catprior` int(11) NOT NULL  , `attributes` text NOT NULL  , `startpage` tinyint(1) NOT NULL  , `prior` int(11) NOT NULL  , `path` varchar(255) NOT NULL  , `status` tinyint(1) NOT NULL  , `createdate` int(11) NOT NULL  , `updatedate` int(11) NOT NULL  , `template_id` int(11) NOT NULL  , `clang` int(11) NOT NULL  , `createuser` varchar(255) NOT NULL  , `updateuser` varchar(255) NOT NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`pid`)) ENGINE=MyISAM;');
     rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'article_slice` ( `id` int(11) NOT NULL  auto_increment, `clang` int(11) NOT NULL  , `ctype` int(11) NOT NULL  , `re_article_slice_id` int(11) NOT NULL  ,`value1` text  NULL  , `value2` text NULL  , `value3` text NULL  , `value4` text NULL  , `value5` text NULL  , `value6` text NULL  , `value7` text NULL  , `value8` text NULL  , `value9` text NULL  , `value10` text NULL  , `value11` text NULL  , `value12` text NULL  , `value13` text NULL  , `value14` text NULL  , `value15` text NULL  , `value16` text NULL  , `value17` text NULL  , `value18` text NULL  , `value19` text NULL  , `value20` text NULL  , `file1` varchar(255) NULL  , `file2` varchar(255) NULL  , `file3` varchar(255) NULL  , `file4` varchar(255) NULL  , `file5` varchar(255) NULL  , `file6` varchar(255) NULL  , `file7` varchar(255) NULL  , `file8` varchar(255) NULL  , `file9` varchar(255) NULL  , `file10` varchar(255) NULL  , `filelist1` text NULL  , `filelist2` text NULL  , `filelist3` text NULL  , `filelist4` text NULL  , `filelist5` text NULL  , `filelist6` text NULL  , `filelist7` text NULL  , `filelist8` text NULL  , `filelist9` text NULL  , `filelist10` text NULL  , `link1` varchar(10) NULL  , `link2` varchar(10) NULL  , `link3` varchar(10) NULL  , `link4` varchar(10) NULL  , `link5` varchar(10) NULL  , `link6` varchar(10) NULL  , `link7` varchar(10) NULL  , `link8` varchar(10) NULL  , `link9` varchar(10) NULL  , `link10` varchar(10) NULL  , `linklist1` text NULL  , `linklist2` text NULL  , `linklist3` text NULL  , `linklist4` text NULL  , `linklist5` text NULL  , `linklist6` text NULL  , `linklist7` text NULL  , `linklist8` text NULL  , `linklist9` text NULL  , `linklist10` text NULL  , `php` text NULL  , `html` text NULL  ,`article_id` int(11) NOT NULL  , `modultyp_id` int(11) NOT NULL  , `createdate` int(11) NOT NULL  , `updatedate` int(11) NOT NULL  , `createuser` varchar(255) NOT NULL  , `updateuser` varchar(255) NOT NULL  , `next_article_slice_id` int(11) NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`id`,`re_article_slice_id`,`article_id`,`modultyp_id`)) ENGINE=MyISAM;');
     rex_website_manager_utils::logQuery($log, $sql, 'ALTER TABLE ' . $tablePrefix . 'article ADD INDEX `id` (`id`), ADD INDEX `clang` (`clang`), ADD UNIQUE INDEX `find_articles` (`id`, `clang`), ADD INDEX `re_id` (`re_id`);');
     rex_website_manager_utils::logQuery($log, $sql, 'ALTER TABLE ' . $tablePrefix . 'article_slice ADD INDEX `id` (`id`), ADD INDEX `clang` (`clang`), ADD INDEX `re_article_slice_id` (`re_article_slice_id`), ADD INDEX `article_id` (`article_id`), ADD INDEX `find_slices` (`clang`, `article_id`);');
     // clangs
     if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_clangs']) {
         // identical
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . 'clang AS SELECT * FROM rex_clang');
     } else {
         // different
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'clang` ( `id` int(11) NOT NULL  , `name` varchar(255) NOT NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`id`)) ENGINE=MyISAM;');
         rex_website_manager_utils::logQuery($log, $sql, 'INSERT INTO `' . $tablePrefix . 'clang` VALUES ("0", "deutsch", 0);');
     }
     // media
     if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_media']) {
         // identical
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . 'file AS SELECT * FROM rex_file');
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . 'file_category AS SELECT * FROM rex_file_category');
     } else {
         // different
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'file` ( `file_id` int(11) NOT NULL  auto_increment, `re_file_id` int(11) NOT NULL  , `category_id` int(11) NOT NULL  , `attributes` text NULL  , `filetype` varchar(255) NULL  , `filename` varchar(255) NULL  , `originalname` varchar(255) NULL  , `filesize` varchar(255) NULL  , `width` int(11) NULL  , `height` int(11) NULL  , `title` varchar(255) NULL  , `createdate` int(11) NOT NULL  , `updatedate` int(11) NOT NULL  , `createuser` varchar(255) NOT NULL  , `updateuser` varchar(255) NOT NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`file_id`)) ENGINE=MyISAM;');
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'file_category` ( `id` int(11) NOT NULL  auto_increment, `name` varchar(255) NOT NULL  , `re_id` int(11) NOT NULL  , `path` varchar(255) NOT NULL  , `createdate` int(11) NOT NULL  , `updatedate` int(11) NOT NULL  , `createuser` varchar(255) NOT NULL  , `updateuser` varchar(255) NOT NULL  , `attributes` text NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`id`,`name`)) ENGINE=MyISAM;');
         rex_website_manager_utils::logQuery($log, $sql, 'ALTER TABLE ' . $tablePrefix . 'file ADD INDEX `re_file_id` (`re_file_id`), ADD INDEX `category_id` (`category_id`);');
         rex_website_manager_utils::logQuery($log, $sql, 'ALTER TABLE ' . $tablePrefix . 'file_category DROP PRIMARY KEY, ADD PRIMARY KEY (`id`), ADD INDEX `re_id` (`re_id`);');
     }
     // modules
     if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_modules']) {
         // identical
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . 'module AS SELECT * FROM rex_module');
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . 'module_action AS SELECT * FROM rex_module_action');
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . 'action AS SELECT * FROM rex_action');
     } else {
         // different
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'module` ( `id` int(11) NOT NULL  auto_increment, `name` varchar(255) NOT NULL  , `category_id` int(11) NOT NULL  , `ausgabe` text NOT NULL  , `eingabe` text NOT NULL  , `createuser` varchar(255) NOT NULL  , `updateuser` varchar(255) NOT NULL  , `createdate` int(11) NOT NULL  , `updatedate` int(11) NOT NULL  , `attributes` text NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`id`,`category_id`)) ENGINE=MyISAM;');
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'module_action` ( `id` int(11) NOT NULL  auto_increment, `module_id` int(11) NOT NULL  , `action_id` int(11) NOT NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`id`)) ENGINE=MyISAM;');
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'action` ( `id` int(11) NOT NULL  auto_increment, `name` varchar(255) NOT NULL  , `preview` text NULL  , `presave` text NULL  , `postsave` text NULL  , `previewmode` tinyint(4) NULL  , `presavemode` tinyint(4) NULL  , `postsavemode` tinyint(4) NULL  , `createuser` varchar(255) NOT NULL  , `createdate` int(11) NOT NULL  , `updateuser` varchar(255) NOT NULL  , `updatedate` int(11) NOT NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`id`)) ENGINE=MyISAM;');
         rex_website_manager_utils::logQuery($log, $sql, 'ALTER TABLE ' . $tablePrefix . 'module DROP PRIMARY KEY, ADD PRIMARY KEY (`id`), ADD INDEX `category_id` (`category_id`);');
     }
     // templates
     if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_templates']) {
         // identical
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . 'template AS SELECT * FROM rex_template');
     } else {
         // different
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE TABLE `' . $tablePrefix . 'template` ( `id` int(11) NOT NULL  auto_increment, `label` varchar(255) NULL  , `name` varchar(255) NULL  , `content` text NULL  , `active` tinyint(1) NULL  , `createuser` varchar(255) NOT NULL  , `updateuser` varchar(255) NOT NULL  , `createdate` int(11) NOT NULL  , `updatedate` int(11) NOT NULL  , `attributes` text NULL  , `revision` int(11) NOT NULL  , PRIMARY KEY (`id`)) ENGINE=MyISAM;');
     }
     // meta infos
     if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_meta_infos']) {
         // identical
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . '62_type AS SELECT * FROM rex_62_type');
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . '62_params AS SELECT * FROM rex_62_params');
     } else {
         // different (addon will be reinstalled)
         if (!in_array('metainfo', $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'])) {
             $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'][] = 'metainfo';
         }
     }
     // image types
     if ($REX['WEBSITE_MANAGER_SETTINGS']['identical_image_types']) {
         // identical
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . '679_types AS SELECT * FROM rex_679_types');
         rex_website_manager_utils::logQuery($log, $sql, 'CREATE VIEW ' . $tablePrefix . '679_type_effects AS SELECT * FROM rex_679_type_effects');
     } else {
         // different (addon will be reinstalled)
         if (!in_array('image_manager', $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'])) {
             $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'][] = 'image_manager';
         }
     }
     // ***************************************************************************************************
     // directories
     // ***************************************************************************************************
     $includePath = realpath($REX['HTDOCS_PATH'] . 'redaxo/include/') . DIRECTORY_SEPARATOR;
     $htdocsPath = realpath($REX['HTDOCS_PATH']) . DIRECTORY_SEPARATOR;
     rex_website_manager_utils::logMkDir($log, $includePath . $generatedDir);
     rex_website_manager_utils::logMkDir($log, $includePath . $generatedDir . '/articles');
     rex_website_manager_utils::logMkDir($log, $includePath . $generatedDir . '/files');
     rex_website_manager_utils::logMkDir($log, $includePath . $generatedDir . '/templates');
     if (!$REX['WEBSITE_MANAGER_SETTINGS']['identical_media']) {
         rex_website_manager_utils::logMkDir($log, $htdocsPath . $mediaDir);
     }
     // ***************************************************************************************************
     // addons/plugins
     // ***************************************************************************************************
     $reinstallAddons = $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_addons'];
     $reinstallPlugins = $REX['WEBSITE_MANAGER_SETTINGS']['reinstall_plugins'];
     // set stuff for new website
     $REX['TABLE_PREFIX'] = $tablePrefix;
     $REX['GENERATED_PATH'] = realpath($REX['HTDOCS_PATH'] . 'redaxo/include/' . $generatedDir);
     // reinstall addons
     for ($curAddonCount = 0; $curAddonCount < count($reinstallAddons); $curAddonCount++) {
         if (OOAddon::isInstalled($reinstallAddons[$curAddonCount])) {
             require_once $REX['INCLUDE_PATH'] . '/addons/' . $reinstallAddons[$curAddonCount] . '/install.inc.php';
             $log->logInfo('[REINSTALL ADDON] ' . $reinstallAddons[$curAddonCount]);
             $sqlFile = $REX['INCLUDE_PATH'] . '/addons/' . $reinstallAddons[$curAddonCount] . '/install.sql';
             if (file_exists($sqlFile)) {
                 $returnValue = rex_install_dump($sqlFile);
                 if ($returnValue) {
                     $log->logInfo('[REINSTALL ADDON SQL DUMP] ' . $sqlFile);
                 } else {
                     $log->logError('[REINSTALL ADDON SQL DUMP] ' . $sqlFile);
                 }
             }
         } else {
             $log->logError('[REINSTALL ADDON] ' . $reinstallAddons[$curAddonCount]);
         }
     }
     // reinstall plugins
     for ($curPluginCount = 0; $curPluginCount < count($reinstallPlugins); $curPluginCount++) {
         $curAddon = '';
         $curPlugin = '';
         $reinstallPluginsArray = explode(WEBSITE_MANAGER_PLUGIN_DELIMITER, $reinstallPlugins[$curPluginCount]);
         if (isset($reinstallPluginsArray[0])) {
             $curAddon = $reinstallPluginsArray[0];
         }
         if (isset($reinstallPluginsArray[1])) {
             $curPlugin = $reinstallPluginsArray[1];
         }
         if ($curAddon != '' && $curPlugin != '' && OOPlugin::isInstalled($curAddon, $curPlugin)) {
             require_once $REX['INCLUDE_PATH'] . '/addons/' . $curAddon . '/plugins/' . $curPlugin . '/install.inc.php';
             $log->logInfo('[REINSTALL PLUGIN] ' . $curPlugin);
             $sqlFile = $REX['INCLUDE_PATH'] . '/addons/' . $curAddon . '/plugins/' . $curPlugin . '/install.sql';
             if (file_exists($sqlFile)) {
                 $returnValue = rex_install_dump($sqlFile);
                 if ($returnValue) {
                     $log->logInfo('[REINSTALL PLUGIN SQL DUMP] ' . $sqlFile);
                 } else {
                     $log->logError('[REINSTALL PLUGIN SQL DUMP] ' . $sqlFile);
                 }
             }
         } else {
             $log->logError('[REINSTALL PLUGIN] ' . $reinstallPlugins[$curPluginCount]);
         }
     }
     // include custom php file with additional userdefined stuff
     require_once WEBSITE_MANAGER_CUSTOM_DIR . 'create_website.after.inc.php';
     // extension point
     rex_register_extension_point('WEBSITE_AFTER_CREATED', array('website_id' => $websiteId, 'sql_object' => $sql, 'table_prefix' => $tablePrefix, 'generated_dir' => $generatedDir, 'media_dir' => $mediaDir, 'log_object' => $log));
     // put back stuff for master website
     $REX['TABLE_PREFIX'] = rex_website::tablePrefix;
     $REX['GENERATED_PATH'] = realpath($REX['HTDOCS_PATH'] . 'redaxo/include/' . rex_website::generatedDir);
 }