public function getEnumValues($api, $args)
 {
     // if the field is not opps_view_by, go up to the parent
     if ($args['field'] !== 'opps_view_by') {
         return parent::getEnumValues($api, $args);
     } else {
         global $app_list_strings, $app_strings, $current_language;
         $value = $app_list_strings['opps_config_view_by_options_dom'];
         $value['Opportunities'] = $app_list_strings['moduleList']['Opportunities'];
         $value['RevenueLineItems'] = $app_list_strings['moduleList']['Opportunities'] . ' ' . $app_strings['LBL_DNB_AND'] . ' ';
         if (isset($app_list_strings['moduleList']['RevenueLineItems'])) {
             $value['RevenueLineItems'] .= $app_list_strings['moduleList']['RevenueLineItems'];
         } else {
             // when it's not enabled, the RLI module is not in the moduleList, so we need to
             // pull it from the module lang file
             $moduleLang = return_module_language($current_language, 'RevenueLineItems');
             $value['RevenueLineItems'] .= $moduleLang['LBL_MODULE_NAME'];
         }
         generateEtagHeader(md5(serialize($value)), 3600);
         return $value;
     }
     // opps_view_by
 }
 /**
  * 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;
 }