$zip->open(Workbench::$directory . '/xtend.zip'); $zip->extractTo(Workbench::$directory); // move application folder rename(Workbench::$directory . '/xTend-' . $latest_release . '/dist/Application', Workbench::$directory . '/' . $name); // remove directory (new Objects\DirectoryHandler\Directory(Workbench::$directory . '/xTend-' . $latest_release))->remove(); // remove zip file and directory unlink(Workbench::$directory . '/xtend.zip'); // add application to Workbench configuration Workbench::new($name, $domain, $path); // get namespace from name $namespace = Workbench::namespace($name); // add to index.php file_put_contents(Workbench::$directory . '/' . Workbench::get('public') . '/index.php', ' namespace ' . $namespace . ' { global $matched_application; if(__NAMESPACE__==$matched_application) { Core\\App::start(__DIR__); Core\\FileHandler::system(\'Config.App.App.php\')->include(); Core\\App::run(); } }', FILE_APPEND); // replace old namespaces (default Application) foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(Workbench::$directory . '/' . $name)) as $file) { // skip if not file / if not PHP file if (!is_file($file) || substr($file, strrpos($file, '.')) !== '.php') { continue; } Workbench::filespace($file, 'Application', $namespace); } }, 'new');
namespace Application; use xTend\Workbench\Workbench; /** * Sets the public directory */ Workbench::register('^set:public ([a-zA-Z0-9\\.\\_]+)$', function ($argv) { rename(Workbench::$directory . '/' . Workbench::get('public'), Workbench::$directory . '/' . $argv[1]); Workbench::set('public', $argv[1]); Workbench::save(); }, 'set:public'); /** * Sets the workbench application */ Workbench::register('^set:application ([a-zA-Z0-9\\.\\_]+)$', function ($argv) { $name = $argv[1]; $namespace = Workbench::namespace($name); if (is_dir(Workbench::$directory . '/' . $name) && isset(Workbench::get('applications')[$name])) { Workbench::set('application', $name); Workbench::save(); // rename namespaces in commmand files and so on $commands = array_diff(scandir(Workbench::$directory . '/CLI/Commands'), ['.', '..']); foreach ($commands as $command) { Workbench::filespace(Workbench::$directory . '/CLI/Commands/' . $command, 'Application', $namespace); } Workbench::filespace(Workbench::$directory . '/workbench', 'Application', $namespace); } else { die('The application \'' . $name . '\' does not exist'); } }, 'set:application');
namespace Application; use RecursiveIteratorIterator; use RecursiveDirectoryIterator; use xTend\Workbench\Workbench; Workbench::register('^rename ([a-zA-Z0-9\\.\\_]+)$', function ($argv) { $name = $argv[1]; $namespace = Workbench::namespace($name); // do check if (isset(Workbench::get('applications')[$name])) { die('Application name already used'); } // rename rename(Workbench::$directory . '/' . Workbench::get('application'), Workbench::$directory . '/' . $name); // replace old namespaces (default Application) foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(Workbench::$directory . '/' . $name)) as $file) { // skip if not file / if not PHP file if (!is_file($file) || substr($file, strrpos($file, '.')) !== '.php') { continue; } Workbench::filespace($file, 'Application', $namespace); } // replace in index.php Workbench::filespace(Workbench::$directory . '/' . Workbench::get('public') . '/index.php', 'Application', $namespace); // rename application in configuration $restrictions = Workbench::get('applications')[Workbench::get('application')]; unset(Workbench::$configuration['applications'][Workbench::get('application')]); Workbench::$configuration['applications'][$name] = $restrictions; // set application Workbench::$commands['set:application']->execute($argv); }, 'rename');