Services\ModuleBuilder::setFormDropdownSources PHP Method

setFormDropdownSources() public method

public setFormDropdownSources ( $input ) : string
$input
return string
    public function setFormDropdownSources($input)
    {
        $sources = array();
        $source_modules = array_filter(array_keys($input), function ($key) {
            if (str_contains($key, 'moduleform')) {
                return true;
            }
        });
        foreach ($source_modules as $source_module) {
            if ($input[$source_module] != 0) {
                list($module_id, $form_id) = explode('-', $input[$source_module]);
                // The form field of the current module, to be replaced by
                $form_field = str_replace('moduleform-', 'formfield-', $source_module);
                $field_name = str_replace('moduleform-', '', $source_module);
                $target_field = $input[$form_field];
                $module = BuiltModule::find($module_id);
                $form = BuiltForm::find($form_id);
                $module_alias = $this->generateModuleAlias($module->name);
                if (is_int($form_id)) {
                    $table_name = $this->generateTableName($module->name, $form->name);
                    $model_name = $this->generateModelName($table_name);
                } else {
                    $model_name = $form_id;
                }
                if ($module->vendor != '') {
                    $module_alias = "{$module->vendor}\\{$module_alias}";
                }
                $sources[$field_name] = "\\Modules\\{$module_alias}\\Models\\{$model_name}::lists('{$target_field}', '{$target_field}')";
            }
        }
        $source_array = var_export($sources, true);
        // Replace the sources to not be strings
        $source_array = strtr($source_array, array("=> '" => "=> ", "\\'" => "'", ")'" => ")", "\\\\" => "\\"));
        return $source_array;
    }