public function onInstallingSite(InstallingSite $event) { if (!is_dir($this->masterPath)) { // Master copy doesn't yet exist, so let it be created. return; } // Import the site's folder. if (is_dir($this->drupal->getSitePath())) { $this->filesystem->chmod($this->drupal->getSitePath(), 0777, 00, true); } $this->filesystem->mirror($this->masterPath, $this->drupal->getSitePath(), null, ['override' => true, 'delete' => true]); // Clean the database. (Mainly for SQLite.) $this->processRunner->run(ProcessBuilder::create()->setPrefix($this->binary)->add('sql-drop')->add('--uri=' . $this->drupal->getUri())->add('--yes')->setWorkingDirectory($this->drupal->getPath())->setTimeout(null)->getProcess()); // Import the database. $this->processRunner->run(ProcessBuilder::create()->setPrefix($this->binary)->add('sql-query')->add('--file=' . $this->drupal->getSitePath() . '/db.sql')->add('--uri=' . $this->drupal->getUri())->add('--yes')->setWorkingDirectory($this->drupal->getPath())->setTimeout(null)->getProcess()); $this->filesystem->remove($this->drupal->getSitePath() . '/db.sql'); $this->eventDispatcher->dispatch(SiteCloned::NAME, new SiteCloned($this->drupal)); // Signify that a site isn't actually being installed. $event->stopPropagation(); }