Example #1
0
 /**
  * Execute this command.
  *
  * @return int
  *
  * @since  2.0
  */
 protected function doExecute()
 {
     $package = $this->getArgument(0);
     if (!$package) {
         throw new WrongArgumentException('Please enter package name.');
     }
     $package = ConsoleHelper::getAllPackagesResolver()->getPackage($package);
     if (!$package) {
         throw new \InvalidArgumentException(sprintf('Package: %s not found', $this->getArgument(0)));
     }
     $recordClass = $this->getArgument(1);
     if (!$recordClass) {
         throw new WrongArgumentException('Please enter record name or class.');
     }
     $recordClass = StringNormalise::toClassNamespace($recordClass);
     $pkgNamespace = ReflectionHelper::getNamespaceName($package);
     if (!class_exists($recordClass)) {
         $recordClass = $pkgNamespace . '\\Record\\' . ucfirst($recordClass) . 'Record';
     }
     $table = null;
     if (class_exists($recordClass)) {
         try {
             /** @var Record $record */
             $record = new $recordClass();
             $table = $record->getTableName();
         } catch (\Exception $e) {
             // Nothing
         }
     }
     if ($this->getArgument(2)) {
         $table = $this->getArgument(2);
     }
     $columns = Ioc::getDatabase()->getTable($table, true)->getColumnDetails(true);
     $fields = [];
     $dataType = Ioc::getDatabase()->getTable($table)->getDataType();
     foreach ($columns as $column) {
         $fields[] = ['name' => $column->Field, 'type' => $dataType::getPhpType(explode('(', $column->Type)[0])];
     }
     // Prepare Trait name
     $name = end(explode('\\', $recordClass));
     $name = str_replace('Record', '', $name);
     $shortName = ucfirst($name) . 'DataTrait';
     $data = ['package_namespace' => $pkgNamespace . '\\Record\\Traits', 'short_name' => $shortName, 'columns' => $fields];
     $content = (new Edge(new EdgeStringLoader()))->render($this->getTemplate(), $data);
     $file = $package->getDir() . '/Record/Traits/' . $shortName . '.php';
     if (is_file($file) && !(new BooleanPrompter())->ask('File: <comment>' . $file . '</comment> exists, do you want to override it? [N/y]: ', false)) {
         throw new \RuntimeException('  Canceled...');
     }
     File::write($file, $content);
     $this->out()->out('Writing file: <info>' . $file . '</info> success.');
     return true;
 }
Example #2
0
 /**
  * onAfterRouting
  *
  * @param Event $event
  *
  * @return  void
  */
 public function onAfterRouting(Event $event)
 {
     /** @var WebApplication $app */
     $app = $event['app'];
     $package = $app->getPackage();
     // In Warder
     if ($this->warder->isEnabled()) {
         RecordResolver::addNamespace(ReflectionHelper::getNamespaceName($this->warder) . '/Admin/Record', PriorityQueue::LOW);
         DataMapperResolver::addNamespace(ReflectionHelper::getNamespaceName($this->warder) . '/Admin/DataMapper', PriorityQueue::LOW);
         FieldDefinitionResolver::addNamespace(ReflectionHelper::getNamespaceName($package) . '/Form');
     }
     // Frontend
     if ($this->warder->isFrontend()) {
         $package->getMvcResolver()->addNamespace(ReflectionHelper::getNamespaceName($this->warder), PriorityQueue::BELOW_NORMAL);
         FieldDefinitionResolver::addNamespace(ReflectionHelper::getNamespaceName($this->warder) . '\\Form');
     } elseif ($this->warder->isAdmin()) {
         $package->getMvcResolver()->addNamespace(ReflectionHelper::getNamespaceName($this->warder) . '\\Admin', PriorityQueue::BELOW_NORMAL);
         FieldDefinitionResolver::addNamespace(ReflectionHelper::getNamespaceName($this->warder) . '\\Admin\\Form');
     }
 }