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;
}