From c911469944ddc75a987ca926bb2877c805825227 Mon Sep 17 00:00:00 2001 From: Marius Diacu Date: Tue, 12 Sep 2017 16:36:39 +0300 Subject: [PATCH] Multisite coverage for post install/update script. Create settings.php and files directory for any directory present in `sites`, not just `default`. --- scripts/composer/ScriptHandler.php | 46 ++++++++++++++++-------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/scripts/composer/ScriptHandler.php b/scripts/composer/ScriptHandler.php index a75e4d34ee..ca39e75b97 100644 --- a/scripts/composer/ScriptHandler.php +++ b/scripts/composer/ScriptHandler.php @@ -35,28 +35,32 @@ public static function createRequiredFiles(Event $event) { } } - // Prepare the settings file for installation - if (!$fs->exists($drupalRoot . '/sites/default/settings.php') and $fs->exists($drupalRoot . '/sites/default/default.settings.php')) { - $fs->copy($drupalRoot . '/sites/default/default.settings.php', $drupalRoot . '/sites/default/settings.php'); - require_once $drupalRoot . '/core/includes/bootstrap.inc'; - require_once $drupalRoot . '/core/includes/install.inc'; - $settings['config_directories'] = [ - CONFIG_SYNC_DIRECTORY => (object) [ - 'value' => Path::makeRelative($drupalFinder->getComposerRoot() . '/config/sync', $drupalRoot), - 'required' => TRUE, - ], - ]; - drupal_rewrite_settings($settings, $drupalRoot . '/sites/default/settings.php'); - $fs->chmod($drupalRoot . '/sites/default/settings.php', 0666); - $event->getIO()->write("Create a sites/default/settings.php file with chmod 0666"); - } + require_once $drupalRoot . '/core/includes/bootstrap.inc'; + require_once $drupalRoot . '/core/includes/install.inc'; + $all_sites = array_filter(glob($drupalRoot . '/sites/*'), 'is_dir'); + foreach ($all_sites as $site_path) { + $site_name = basename($site_path); + // Prepare the settings file for installation + if (!$fs->exists($drupalRoot . '/sites/' . $site_name . '/settings.php') and $fs->exists($drupalRoot . '/sites/' . $site_name . '/default.settings.php')) { + $fs->copy($drupalRoot . '/sites/' . $site_name . '/default.settings.php', $drupalRoot . '/sites/' . $site_name . '/settings.php'); + $settings['config_directories'] = [ + CONFIG_SYNC_DIRECTORY => (object) [ + 'value' => Path::makeRelative($drupalFinder->getComposerRoot() . '/config/sites/' . $site_name . '/sync', $drupalRoot), + 'required' => TRUE, + ], + ]; + drupal_rewrite_settings($settings, $drupalRoot . '/sites/' . $site_name . '/settings.php'); + $fs->chmod($drupalRoot . '/sites/' . $site_name . '/settings.php', 0666); + $event->getIO()->write("Create a sites/' . $site_name . '/settings.php file with chmod 0666"); + } - // Create the files directory with chmod 0777 - if (!$fs->exists($drupalRoot . '/sites/default/files')) { - $oldmask = umask(0); - $fs->mkdir($drupalRoot . '/sites/default/files', 0777); - umask($oldmask); - $event->getIO()->write("Create a sites/default/files directory with chmod 0777"); + // Create the files directory with chmod 0777 + if (!$fs->exists($drupalRoot . '/sites/' . $site_name . '/files')) { + $oldmask = umask(0); + $fs->mkdir($drupalRoot . '/sites/' . $site_name . '/files', 0777); + umask($oldmask); + $event->getIO()->write("Create a sites/' . $site_name . '/files directory with chmod 0777"); + } } }