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; }
<?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); }