/** * Retrieve list of fields * @param string $filter * @param array $additionalArgs * @return object * @codeCoverageIgnore */ public function retrieveFields($filter = '', ModuleApi $moduleApi, $type = '', $baseModule = '') { global $beanList; if (isset($beanList[$filter])) { $newModuleFilter = $filter; } else { $newModuleFilter = $this->pmseRelatedModule->getRelatedModuleName($baseModule, $filter); } $res = array(); new stdClass(); $res['name'] = $newModuleFilter; //$module = explode('_', $filter);// pull the related module out. //$filter = ucfirst(isset($module[1])?$module[1]:$module[0]); //$primal_module = ucfirst(isset($module[0])?$module[0]:''); $res['search'] = $filter; $res['success'] = true; $module_strings = return_module_language('en_us', 'ModuleBuilder'); $fieldTypes = $module_strings['fieldTypes']; //add datetimecombo type field from the vardef overrides to point to Datetime type $fieldTypes['datetime'] = $fieldTypes['datetimecombo']; $fieldTypes['name'] = "Name"; global $app_list_strings; $output = array(); $moduleBean = $this->getModuleFilter($newModuleFilter); $fieldsData = isset($moduleBean->field_defs) ? $moduleBean->field_defs : array(); foreach ($fieldsData as $field) { //$retrieveId = isset($additionalArgs['retrieveId']) && !empty($additionalArgs['retrieveId']) && $field['name'] == 'id' ? $additionalArgs['retrieveId'] : false; if (isset($field['vname']) && PMSEEngineUtils::isValidField($field, $type)) { if (PMSEEngineUtils::specialFields($field, $type)) { $field = array_merge($field, $this->replaceItemsValues($field)); } $tmpField = array(); $tmpField['value'] = $field['name']; $tmpField['text'] = str_replace(':', '', translate($field['vname'], $newModuleFilter)); // Handle field typing, starting with the vardef type for this field $tmpField['type'] = $field['type']; // If there is a known type for this type, use THAT if (isset($fieldTypes[$field['type']])) { $tmpField['type'] = $fieldTypes[$field['type']]; } $tmpField['optionItem'] = 'none'; if ($field['type'] == 'enum' || $field['type'] == 'radioenum') { if (!isset($field['options']) || !isset($app_list_strings[$field['options']])) { if (PMSEEngineUtils::specialFields($field, $type)) { $tmpField['optionItem'] = $this->gatewayModulesMethod($field); } else { $tmpField['optionItem'] = $moduleApi->getEnumValues(array(), array("module" => $newModuleFilter, "field" => $field["name"])); } } else { $tmpField['optionItem'] = $app_list_strings[$field['options']]; } } if ($field['type'] == 'bool') { $tmpField['optionItem'] = array("TRUE" => true, "FALSE" => false); } if (isset($field['required'])) { $tmpField['required'] = $field['required']; } if (isset($field['len'])) { $tmpField['len'] = $field['len']; } $output[] = $tmpField; } } $text = array(); foreach ($output as $key => $row) { $text[$key] = strtolower($row['text']); } array_multisort($text, SORT_ASC, $output); $res['result'] = $output; return $res; }