public function doAdd($req, $res) { $params = new RequestParams($req); $name = $params->post('name'); $sys_name = $params->post('system_name'); $desc = $params->post('description'); $version = $params->post('version'); $author = $params->post('author'); $sys_name = preg_replace("/[^A-Za-z0-9_]/", "", $sys_name); if (!$sys_name) { $this->flash->addMessage('errors', 'Module system_name is empty!'); return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator')); } $sys_name = Str::studly($sys_name); if (is_dir(MODULE_PATH . $sys_name)) { $this->flash->addMessage('errors', 'Module exist!'); return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator')); } $path = MODULE_PATH . $sys_name; if (!FileWorker::copy(MODULE_PATH . 'ModuleGenerator' . DIRECTORY_SEPARATOR . 'Source' . DIRECTORY_SEPARATOR . '.default', $path)) { $this->flash->addMessage('errors', 'Module dir \\"' . MODULE_PATH . '\\" - is write protect. Check permissions!'); return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator')); } $ret = FileWorker::replaseInFile($path . '/info.json', ["%name%", "%description%", "%system_name%", "%version%", "%author%"], [$name, $desc, $sys_name, $version, $author]); if ($ret === false) { $this->flash->addMessage('errors', 'Replace file content for \\"' . $path . '/info.json' . '\\" - is write protect. Check permissions!'); return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator')); } $ret = FileWorker::replaseInFile($path . '/Module.php', ["%system_name%"], [$sys_name]); if ($ret === false) { $this->flash->addMessage('errors', 'Replace file content for \\"' . $path . '/Module.php' . '\\" - is write protect. Check permissions!'); return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator')); } $this->flash->addMessage('success', 'Module create!'); return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator')); }