public static function copy($style, $old, $new) { $gantry = Gantry::instance(); /** @var UniformResourceLocator $locator */ $locator = $gantry['locator']; $oldPath = $locator->findResource('gantry-config://' . $old, true, true); $newPath = $locator->findResource('gantry-config://' . $new, true, true); if (file_exists($oldPath)) { Folder::copy($oldPath, $newPath); } $installer = new TemplateInstaller($style->extension_id); $installer->updateStyle($new, ['configuration' => $new]); }
public function duplicate($id) { $gantry = $this->container; /** @var UniformResourceLocator $locator */ $locator = $gantry['locator']; $path = $locator->findResource("gantry-config://{$id}"); if (!$path || !is_dir($path)) { throw new \RuntimeException('Outline not found', 404); } $folder = $this->findFreeName(trim(preg_replace('|[^a-z\\d_-]|ui', '_', $id), '_')); $newPath = $locator->findResource("gantry-config://{$folder}", true, true); try { Folder::copy($path, $newPath); } catch (\Exception $e) { throw new \RuntimeException(sprintf('Duplicating Outline failed: ', $e->getMessage()), 500, $e); } }