示例#1
0
 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));
 }
示例#2
0
 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);
 }