public function generate() { \Rebond\Util\Log::log(Error::LANG_GENERATED, 'Generation of language files', __FILE__, __LINE__); \Rebond\Util\Nav::createFolder(\Rebond\Config::getPath('rebond') . 'Cache/'); $this->generatePhp('Rebond', $this->xmlRebondLang); $this->generatePhp('Custom', $this->xmlCustomLang); $this->generateJavascript(array($this->xmlRebondLang, $this->xmlCustomLang)); }
public function run() { $entities = $this->xmlModel->getElementsByTagName('entity'); foreach ($entities as $ent) { $sqlEntity = $ent->getAttribute('name'); $entity = Converter::toCamelCase($sqlEntity, true); $main = $ent->getAttribute('main-property'); $enabled = $ent->getAttribute('enabled') == 'true' ? true : false; $hasContent = $ent->getAttribute('has-content') == 'false' ? false : true; $isPersistent = $ent->getAttribute('persistent') == 'false' ? false : true; $this->info[] = '<h2>' . $entity . '</h2>'; if (!$enabled) { $this->info[] = '<div class="orange">' . $entity . ' skipped.</div>'; continue; } if (!$this->validPackage($this->package)) { $this->info[] = '<div class="error">Invalid package: ' . $this->package . '. It must be one of the following: core, cms, bus, app.</div>'; continue; } if (!$this->validEntity($sqlEntity)) { $this->info[] = '<div class="error">Invalid entity: ' . $sqlEntity . '. It must start with a letter and contains alphanumeric characters.</div>'; continue; } $properties = $ent->getElementsByTagName('property'); $views = $ent->getElementsByTagName('view'); if (!$this->validProperties($properties)) { $this->info[] = '<div class="error">Invalid properties. Please check the manual.</div>'; continue; } if (!$this->validViews($views)) { $this->info[] = '<div class="error">Invalid views. Please check the manual.</div>'; continue; } $modelFolder = \Rebond\Config::getPath('rebond') . $this->package . '/' . $entity; if (!is_dir($modelFolder)) { $this->info[] = '<div>' . $entity . ' created.</div>'; } else { $this->info[] = '<div>' . $entity . ' updated.</div>'; } \Rebond\Util\Nav::createFolder($modelFolder . '/template'); \Rebond\Util\Nav::createFolder($modelFolder . '/Base'); // For App with content, Cms, Core, Bus if ($hasContent) { $model = new \Rebond\Generator\Model($this->package, $entity, $main, $isPersistent, $properties); $model->produce(); $this->info = array_merge($this->info, $model->getInfo()); $form = new \Rebond\Generator\Form($this->package, $entity, $properties); $form->produce(); $this->info = array_merge($this->info, $form->getInfo()); $service = new \Rebond\Generator\Service($this->package, $entity); $service->produce(); $this->info = array_merge($this->info, $service->getInfo()); if ($isPersistent) { $mysql = new \Rebond\Generator\Mysql($this->package, $sqlEntity, $properties); $mysql->produce(); $this->info = array_merge($this->info, $mysql->getInfo()); $view = new \Rebond\Generator\View($this->package, $entity, $main, $properties, $views, $this->generate); $view->produce(); $this->info = array_merge($this->info, $view->getInfo()); $data = new \Rebond\Generator\Data($this->package, $sqlEntity, $properties); $data->produce(); $this->info = array_merge($this->info, $data->getInfo()); } } if ($this->package == 'App') { $module = Module\Data::loadByTitle($entity); if (!isset($module)) { $module = new Module\Model(); $module->setTitle($entity); $module->setSummary($entity . ' summary'); $module->setStatus(StatusType::DELETED); $module->setHasContent($hasContent); $module->save(); } $gadget = new \Rebond\Generator\Gadget($entity, $views, $hasContent, $module->getId()); $gadget->produce(); $this->info = array_merge($this->info, $gadget->getInfo()); } } return implode('', $this->info); }