GetDescription(['text', 'colorswatcher', 'fileupload', 'textarea', 'masked', 'colorpicker', 'numeric', 'dropdown', 'submit_button', 'checkbox', 'radio', 'buttonselection', 'divider', 'datepicker', 'slider', 'switch', 'signature', 'email', 'address', 'termofservice', 'name', 'rank', 'repeater', 'html', 'simpletext']); } public function GetFieldSettingsByFieldType($fieldType) { $field = $this->GetField($fieldType); if ($field === null) { return []; } $settings = []; foreach ($field['settings'] as $currentSetting) { $setting = $this->GetSetting($currentSetting); if ($setting === null) { continue; } $settings[] = $setting; } return $settings; } public function GetSetting($settingName) { if (strpos($settingName, ':') !== false) { $parts = explode(':', $settingName); $settingName = $parts[0]; $settingType = $parts[1]; $usage = ''; $instructions = ''; switch ($settingType) { case 'checkBox': $instructions = 'Allowed values 1 or 0'; break; case 'dropDown': if (!isset($parts[2])) { throw new FriendlyException('The setting is set as dropdown but have no options: ' . $settingType); } $options = explode('||', $parts[2]); $instructions = 'Allowed values: ' . implode(',', $options); break; case 'simpleText': break; case 'text': $instructions = 'this setting expect an html with basic html tags, allowed tags are p,span,a,strong,em,b,i,u,s,sub,sup,br,img,ol,ul,li,h1,h2,h3,h4,h5,h6,table,tr,td,th,thead,tbody,tfoot,caption,col,colgroup,row,rowgroup,column,columngroup.'; break; case 'color': $instructions = 'accept a 6 digit hex color for example #ff0000'; break; default: throw new FriendlyException('Invalid setting type: ' . $settingType); } $data = [ 'name' => $settingName, ]; if (!empty($usage)) { $data['usage'] = $usage; } if (!empty($instructions)) $data['instructions'] = $instructions; return $data; } $data = $this->GetSettingsData(); foreach ($data as $currentSetting) { if ($currentSetting['name'] == $settingName) { return $currentSetting; } } return null; } public function GetDescription($allowedFields = []) { $fieldText = ''; foreach ($this->GetFieldsData() as $currentField) { if (!empty($allowedFields) && !in_array($currentField['name'], $allowedFields)) { continue; } $fieldText .= "Name: " . $currentField['name'] . "\r\n"; $fieldText .= "Usage: " . $currentField['usage'] . "\r\n"; $fieldText .= "Common Use Cases: " . $currentField['common_use_cases'] . "\r\n"; if (isset($currentField['multiple_options'])) { $fieldText .= "Supports multiple options\r\n"; } if (isset($currentField['special_considerations'])) { $fieldText .= "Special Considerations: " . $currentField['special_considerations'] . "\r\n"; } $fieldText .= "\r\n"; } return $fieldText; } public function GetField($fieldType) { foreach ($this->GetFieldsData() as $currentField) { if ($currentField['name'] == $fieldType) { return $currentField; } } return null; } }