public static function node_field_creation($table_name, $node, $name, $translation, $count, $languages) { $count++; $model = $node->model; $type = 'string'; $value = NULL; $trans_name = $name; $display_list = 'show'; $display_item = 'show'; $multiple = 0; $required = 0; $preset = 0; $new_row = false; $permission = NULL; $col_type = \DB::select(\DB::raw("SHOW FIELDS FROM " . $table_name . " where Field = '" . $name . "'"))[0]->Type; $extras = []; $requests = []; $field_options = []; if (strpos($name, '_id') !== false) { $type = 'relation'; $trans_name = str_replace('_id', '', $name); $value = $trans_name; if ($name == 'parent_id') { $preset = 1; if ($node->parent) { $value = $node->parent->name; } else { $value = $node->name; } } } else { if ($name == 'image' || $name == 'file' || $name == 'logo' || $name == 'isotype' || strpos($name, 'image') !== false || strpos($name, 'file') !== false) { if ($name == 'file' || strpos($name, 'file') !== false) { $type = 'file'; } else { $type = 'image'; } if ($col_type == 'text') { $multiple = 1; } array_push($extras, ['type' => 'folder', 'value' => $node->name . '-' . $name]); } else { if (strpos($name, 'checkbox') !== false) { $type = 'checkbox'; array_push($extras, ['type' => 'cols', 'value' => '12']); } else { if ($col_type == 'text') { $type = 'text'; $new_row = true; array_push($extras, ['type' => 'class', 'value' => 'simple-textarea']); array_push($extras, ['type' => 'cols', 'value' => '12']); array_push($extras, ['type' => 'rows', 'value' => '3']); } else { if ($name == 'password') { $type = 'password'; } else { if ($name == 'map') { $type = 'map'; array_push($extras, ['type' => 'cols', 'value' => '12']); } else { if ($col_type == 'tinyint(1)' || substr_count($col_type, 'enum') > 0) { $type = 'select'; if (substr_count($col_type, 'enum') > 0) { $value_array = substr($col_type, 6, -2); } else { if ($col_type == 'tinyint(1)') { $value_array = "0','1"; } } foreach (explode("','", $value_array) as $subvalue) { array_push($field_options, ['name' => $subvalue]); } } else { if ($col_type == 'timestamp' || $col_type == 'date' || $col_type == 'time') { $type = 'date'; if ($node->type == 'subchild') { array_push($extras, ['type' => 'class', 'value' => $col_type . '-control']); } else { array_push($extras, ['type' => 'class', 'value' => $col_type . 'picker']); } if ($name == 'created_at') { \Solunes\Master\App\Filter::create(['node_id' => $node->id, 'type' => 'field', 'subtype' => 'date', 'parameter' => 'created_at']); } else { if ($name == 'deleted_at') { $node->soft_delete = 1; $node->save(); } } } else { if (strpos($name, 'array') !== false) { $type = 'array'; array_push($extras, ['type' => 'rows', 'value' => '2']); } } } } } } } } } $hidden_names = ['id', 'site_id', 'slug', 'password', 'created_at', 'updated_at', 'deleted_at']; if (in_array($name, $hidden_names)) { $display_list = 'excel'; $display_item = 'none'; if ($name == 'password') { $display_item = 'admin'; } } else { if ($name == 'section_id') { $display_item = 'admin'; array_push($requests, ['action' => 'where', 'col' => $name, 'value_type' => 'relation', 'value' => 'node_pivot_id']); } else { if ($count > 6) { $display_list = 'excel'; } } } if ($node->type != 'field') { $rules = \FuncNode::node_check_rules($node, 'create'); if (array_key_exists($name, $rules) && strpos($rules[$name], 'required') !== false) { $required = 1; } } $field = new \Solunes\Master\App\Field(); $field->parent_id = $node->id; $field->name = $name; $field->trans_name = $trans_name; $field->type = $type; $field->order = $count; $field->display_list = $display_list; $field->display_item = $display_item; $field->translation = $translation; $field->multiple = $multiple; $field->new_row = $new_row; $field->value = $value; $field->preset = $preset; $field->required = $required; $field->save(); \FuncNode::node_generate_request($node, $requests); \FuncNode::field_generate_extras($field, $extras); \FuncNode::field_generate_options($node, $field, $field_options, $languages); return $count; }