protected function setUp() { parent::setUp(); $cluster = new \Model\Cluster(); $schema = $this->getSchema(true); $cluster->addSchema($schema); /** @var Generator generator */ if (!self::$generator) { self::$generator = new Generator(); $runString = "--output-dir=" . GENERATE_OUTPUT . ' --db-user='******' --db-password='******' --db-schema=' . DB_NAME . ' --db-host=' . DB_HOST; //$this->getDb(), $cluster, GENERATE_OUTPUT self::$generator->run($runString); } }
public function testGetSchema() { $this->assertInstanceOf('Model\\Generator', $this->generator); $this->assertNull($this->generator->getCluster()); }
public function createAction() { $tableName = $this->dispatcher->getParam('table'); $formData = []; $dbFields = $this->db->describeColumns($tableName); $tableAlias = ''; if ($this->request->hasPost('fsubmit')) { // if ($this->security->checkToken()) { $formData['columnsRedefined'] = []; $formData['fproperty'] = $this->request->getPost('fproperty', null, []); $formData['fnullable'] = $this->request->getPost('fnullable', null, []); $formData['ffilterable'] = $this->request->getPost('ffilterable', null, []); $formData['fsortable'] = $this->request->getPost('fsortable', null, []); $formData['fsearchable'] = $this->request->getPost('fsearchable', null, []); $formData['fconstant'] = $this->request->getPost('fconstant', null, []); $formData['fexclude_i'] = $this->request->getPost('fexclude_i', null, []); $formData['fexclude_ae'] = $this->request->getPost('fexclude_ae', null, []); $formData['fvalidation'] = $this->request->getPost('fvalidation', null, []); $formData['finputtype'] = $this->request->getPost('finputtype', null, []); $formData['flabel'] = $this->request->getPost('flabel', null, []); $formData['ftype'] = $this->request->getPost('ftype', null, []); $formData['fmodelname'] = $this->request->getPost('fmodelname', null, ''); $formData['fmodelextends'] = $this->request->getPost('fmodelextends', null, ''); $formData['fprimary'] = $this->request->getPost('fprimary', null, ''); $formData['fcontrollername'] = $this->request->getPost('fcontrollername', null, ''); $formData['fmodulename'] = $this->request->getPost('fmodulename', null, ''); $formData['frecordperpage'] = $this->request->getPost('frecordperpage', null, '1'); $formData['fcontrollertype'] = $this->request->getPost('fcontrollertype', null, 'normal'); //Property foreach ($formData['fproperty'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['property'] = $value; } //Nullable foreach ($formData['fnullable'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['nullable'] = $value; } //Filterable foreach ($formData['ffilterable'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['filterable'] = $value; } //Sortable foreach ($formData['fsortable'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['sortable'] = $value; } //Searchable foreach ($formData['fsearchable'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['searchable'] = $value; } //Constant foreach ($formData['fconstant'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['constant'] = $value; } //Type foreach ($formData['ftype'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['type'] = $value; } //Exclude Add/Edit foreach ($formData['fexclude_ae'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['exclude_ae'] = $value; } //Exclude Index foreach ($formData['fexclude_i'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['exclude_i'] = $value; } //PrimaryKey foreach ($formData['fprimary'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['primary'] = $value; } //Validation foreach ($formData['fvalidation'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['validation'] = $value; } //InputType foreach ($formData['finputtype'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['inputtype'] = $value; } //Label Controller foreach ($formData['flabel'] as $columnname => $value) { $formData['columnsRedefined'][$columnname]['label'] = $value; } //generate model $this->generatemodel($formData['columnsRedefined'], $tableName, $formData['fmodelname'], $formData['fmodelextends']); //generate controller if ($formData['fcontrollertype'] == 'normal') { $this->generatecontroller($formData['columnsRedefined'], $formData['fmodulename'], $formData['fcontrollername'], $formData['fmodelname'], $formData['frecordperpage']); } else { } //generate view if ($formData['fcontrollertype'] == 'normal') { $this->generateview($formData['columnsRedefined'], $formData['fmodulename'], $formData['fcontrollername'], $formData['fmodelname']); } else { } //generate language if ($formData['fcontrollertype'] == 'normal') { $this->generatelanguage($formData['columnsRedefined'], $formData['fcontrollername']); } else { } if (strlen($this->message) > 0) { $this->flash->success($this->message); $this->logger->name = 'GENERATOR'; $this->logger->info($this->message); } else { $this->flash->error('ERROR! GENERATING FAILED.'); } // } } foreach ($dbFields as $field) { $column = []; $label = str_replace('_', ' ', $field->getName()); $typeName = substr(\Model\Generator::getTypeName($field->getType()), 5); $inputType = $typeName == 'TEXT' ? 'textarea' : 'text'; $column = ['name' => $field->getName(), 'property' => str_replace('_', '', $field->getName()), 'type' => $field->getType(), 'typename' => $typeName, 'size' => $field->getSize(), 'isNumeric' => $field->isNumeric(), 'isPrimary' => $field->isPrimary(), 'isNotNull' => $field->isNotNull(), 'label' => ucfirst($label), 'inputtype' => $inputType]; if ($field->isPrimary()) { $formData['primarykey'] = $field->getName(); $tableAlias = substr($formData['primarykey'], 0, strpos($formData['primarykey'], '_') + 1); } if (strlen($tableAlias) > 0) { $column['property'] = str_replace('_', '', str_replace($tableAlias, '', $field->getName())); } $formData['columns'][] = $column; } // Indexes List $formData['indexesCol'] = array(); $myIndexList = $this->db->describeIndexes($tableName, $this->config->app_db->name); if ($myIndexList == true) { foreach ($myIndexList as $indexes) { foreach ($indexes->getColumns() as $indexCol) { $formData['indexesCol'][] = $indexCol; } } } // Assign table Alias $formData['tableAlias'] = $tableAlias; // Assign Model Class name $formData['modelName'] = ''; $tmpModelname = str_replace($this->config->app_db->prefix, '', $tableName); $tmpModelname = explode('_', $tmpModelname); foreach ($tmpModelname as $modelname) { $formData['modelName'] .= ucfirst($modelname); } // Assign Controller Class name $formData['controllerName'] = ucfirst(strtolower($formData['modelName'])); // var_dump($formData); // die; $this->tag->prependTitle('Code Generator'); $this->breadcrumb->add('Code Generator', 'admin/codegenerator'); $this->breadcrumb->add('Table "' . $tableName . '"', 'admin/codegenerator/create'); $this->view->setVars(['breadcrumb' => $this->breadcrumb->generate(), 'tableName' => $tableName, 'formData' => $formData, 'blockTable' => $this->blockTable]); }