示例#1
0
 /**
  * Funcao para edicao da config do [Modulo]
  * @param string $controller Nome do controlador
  * @return void
  */
 public function getFile($controller)
 {
     // $this->logic->_getConfigFiles();
     // Busca o arquivo especificado
     $cfg_file = mkny_model_config_path($controller) . '.php';
     // Field types
     $f_types = array_unique(array_values(app()->make('Mkny\\Cinimod\\Logic\\AppLogic')->_getFieldTypes()));
     // Se o diretorio nao existir
     if (!realpath(dirname($cfg_file))) {
         \File::makeDirectory(dirname($cfg_file));
     }
     // Config file data
     if (!\File::exists($cfg_file)) {
         $stub = \File::get(__DIR__ . '/../Commands/stubs/model_config.stub');
         \Mkny\Cinimod\Logic\UtilLogic::translateStub(array('var_fields_data' => ''), $stub);
         \File::put($cfg_file, $stub);
     }
     // Config file data
     $config_str = \File::getRequire($cfg_file)['fields'];
     // Pula o primeiro indice
     // array_shift($config_str);
     $valOrder = 1;
     // Fornece o tipo "types" para todos os campos, para selecao
     foreach ($config_str as $key => $value) {
         if (!is_array($config_str[$key])) {
             $config_str[$key] = array();
         }
         $config_str[$key]['name'] = $key;
         $config_str[$key]['type'] = isset($value['type']) ? $value['type'] : 'string';
         $config_str[$key]['form_add'] = isset($value['form_add']) ? $value['form_add'] : true;
         $config_str[$key]['form_edit'] = isset($value['form_edit']) ? $value['form_edit'] : true;
         $config_str[$key]['grid'] = isset($value['grid']) ? $value['grid'] : true;
         $config_str[$key]['relationship'] = isset($value['relationship']) ? $value['relationship'] : false;
         $config_str[$key]['required'] = isset($value['required']) ? $value['required'] : false;
         $config_str[$key]['searchable'] = isset($value['searchable']) ? $value['searchable'] : false;
         $config_str[$key]['order'] = isset($value['order']) ? $value['order'] : $valOrder++;
         $config_str[$key]['types'] = array_combine($f_types, $f_types);
     }
     if (isset(array_values($config_str)[1]['order'])) {
         usort($config_str, function ($dt, $db) {
             if (!isset($db['order'])) {
                 $db['order'] = 0;
             }
             if (isset($dt['order'])) {
                 return $dt['order'] - $db['order'];
             } else {
                 return 0;
             }
         });
         $newConfig = [];
         foreach ($config_str as $sortfix) {
             $newConfig[$sortfix['name']] = $sortfix;
         }
         $config_str = $newConfig;
     }
     $data['controller'] = $controller;
     $data['data'] = $config_str;
     return view('cinimod::admin.generator.config_detailed_new')->with($data);
     // return view('cinimod::admin.generator.config_detailed')->with($data);
 }
示例#2
0
 /**
  * Build the model class with the given name.
  *
  * @param  string  $name
  * @return string
  */
 protected function buildClass($name)
 {
     $stub = $this->files->get($this->getStub());
     // Setta as variaveis de classe
     $this->setClassVariables();
     // Traduz a stub
     Logic\UtilLogic::translateStub($this->translation, $stub);
     // Termina a traducao da stub e retorna
     return $this->replaceNamespace($stub, $name)->replaceClass($stub, $name);
 }
示例#3
0
 /**
  * Funcao para buscar e montar o sistema de relacionamentos do Eloquent
  * 
  * @param string $table Nome da tabela que sera gerada
  * @return string Funcao gerada
  */
 public function _getRelations($table)
 {
     $this->var_config_relations = [];
     $stubModelConfig = $this->files->get(__DIR__ . '/stubs/model_function_relation.stub');
     // Pega os relacionamentos no banco
     $AppLogic = new Logic\AppLogic();
     $relations = $AppLogic->buildRelationships($table);
     // dd($relations);
     $field_types = $AppLogic->_getFieldTypes();
     if ($relations) {
         $stubs = [];
         foreach ($relations as $rel) {
             // Copia a stub mae
             $stub_child = trim(substr(trim($stubModelConfig), 5)) . "\n\n";
             // Tentativa fim
             // Trampo pra pegar a primeira coluna para o possivel nome do campo
             $columns = $AppLogic->buildColumns($rel->table_primary, $rel->schema_primary);
             $field_name = $columns[0]->name;
             foreach ($columns as $column) {
                 if ($field_types[$column->type] == 'string') {
                     $field_name = $column->name;
                     break;
                 }
             }
             // Setta as configuracoes
             $arrConfig = array('relation_class_name' => $AppLogic->controllerName($rel->table_primary), 'relation_field_id' => $rel->table_foreign_field, 'relation_field_fkey' => $rel->table_primary_field, 'relation_field_name' => $field_name);
             // Tentativa de automatizar o processo, na criacao da var_config
             $this->var_config_relations[$rel->table_foreign_field] = $arrConfig;
             // Traduz a stub
             Logic\UtilLogic::translateStub($arrConfig, $stub_child);
             $stubs[] = $stub_child;
         }
         return implode("\n\n", $stubs);
     } else {
         return '';
     }
 }
示例#4
0
 /**
  * Monta o template do configurador de model (var)
  * 
  * @return  array Dados do config
  */
 private function _getModelConfig($table)
 {
     $stubModelConfig = $this->files->get(__DIR__ . '/stubs/model_config_fields.stub');
     // Pega as colunas da tabela do banco
     $AppLogic = new Logic\AppLogic();
     $columns = $AppLogic->buildColumnsWithKeys($table);
     $field_types = $AppLogic->_getFieldTypes();
     $stubs = [];
     foreach ($columns as $indice => $row) {
         // Copia a stub mae
         $stub_child = trim(substr(trim($stubModelConfig), 5)) . "\n\n";
         // Setta as configuracoes
         $arrConfig = array('var_name' => $row->name, 'var_type' => $indice === 0 ? 'primaryKey' : $row->type, 'var_type_laravel' => $indice === 0 ? 'primaryKey' : $field_types[$row->type], 'go_to_grid' => 'true', 'go_to_form_add' => $indice === 0 ? 'false' : 'true', 'go_to_form_edit' => $indice === 0 ? 'false' : 'true', 'is_required' => $row->is_null == 'NO' ? 'true' : 'false', 'var_relationship' => 'false', 'var_values' => 'false', 'num_ordem' => $indice);
         // Trampa nos values pre-definidos
         if (isset($row->def_constraint) && !empty($row->def_constraint)) {
             // var_dump($col->def_constraint);exit;
             $check = $AppLogic->_getCheck($row->def_constraint);
             $arrConfig['var_type_laravel'] = 'select';
             $arrConfig['var_values'] = "['" . implode("','", $check) . "']";
         }
         // Trampa na relacao
         if (isset($this->var_config_relations[$row->name])) {
             $arrConfig['var_type_laravel'] = 'select';
             // variabilizar o relationship
             $arrConfig['var_relationship'] = "\n\t[\n\t\t" . "'model' => '\\App\\Models\\" . $this->var_config_relations[$row->name]['relation_class_name'] . "',\n\t\t" . "'field_key' => '{$this->var_config_relations[$row->name]['relation_field_id']}',\n\t\t" . "'field_fkey' => '{$this->var_config_relations[$row->name]['relation_field_fkey']}',\n\t\t" . "'field_show' => '{$this->var_config_relations[$row->name]['relation_field_name']}',\n\t\t" . "'where' => false,\n\t\t" . "]\n\t";
         }
         // Trampa fim
         // Traduz a stub
         Logic\UtilLogic::translateStub($arrConfig, $stub_child);
         $stubs[] = $stub_child;
     }
     return implode("\n\n", $stubs);
 }