$name = strtolower(ym_post('name'));
 $label = stripcslashes(ym_post('label'));
 $caption = stripcslashes(ym_post('caption'));
 $type = ym_post('type');
 $available_values = ym_post('available_values');
 $value = stripcslashes(ym_post('value'));
 $page = ym_post('page', 1);
 $required = ym_post('required', false);
 $readonly = ym_post('readonly', false);
 $profile_only = ym_post('profile_only', false);
 $no_profile = ym_post('no_profile', false);
 $new_error = '';
 if (empty($name)) {
     $new_error = __('Name is required', 'ym');
 } else {
     if (!validate_custom_field_label($name)) {
         // failed chars
         $new_error = __('Name can only contain a-z, 0-9, and _ characters', 'ym');
     } else {
         if (!validate_custom_field_label_length($name)) {
             echo '<div id="message" class="error"><p>' . __('You have created a name that is longer than 10 Characters and cannot be synced with MailChimp', 'ym') . '</p></div>';
         }
     }
 }
 if (empty($new_error)) {
     $fld_obj = get_option('ym_custom_fields');
     $entries = $fld_obj->entries;
     foreach ($entries as $key => $entry) {
         if ($id == $entry['id']) {
             $old = ym_get_custom_field_by_id($id);
             $entry = array('id' => $id, 'name' => $name, 'label' => $label, 'caption' => $caption, 'available_values' => $available_values, 'type' => $type, 'required' => $required, 'value' => $value, 'page' => $page, 'readonly' => $readonly, 'profile_only' => $profile_only, 'no_profile' => $no_profile, 'builtin' => $old['builtin']);
function ym_register_custom_field($name, $label = false, $enable = true, $type = 'hidden', $additional = false)
{
    $name = strtolower($name);
    // validate html safe-ish
    if (!validate_custom_field_label($name)) {
        return false;
    }
    // label check
    if (!$label) {
        $label = $name;
    }
    $label = stripcslashes($label);
    // exists
    $fields = get_option('ym_custom_fields');
    foreach ($fields->entries as $entry) {
        $entry['label'] = isset($entry['label']) ? $entry['label'] : '';
        if ($entry['name'] == $name || $entry['label'] == $label) {
            return false;
        }
    }
    if (!$additional) {
        $additional = array();
    }
    $defaults = array('caption' => false, 'available_values' => '', 'value' => '', 'page' => 1, 'required' => false, 'readonly' => false, 'profile_only' => false, 'no_profile' => false);
    // defaults
    foreach ($defaults as $default => $value) {
        if (!isset($additional[$default]) || empty($additional[$default])) {
            $additional[$default] = $value;
        } else {
            $additional[$default] = stripcslashes($additional[$default]);
        }
    }
    $id = $fields->next_id;
    $fields->next_id = $id + 1;
    $entry = array('id' => $id, 'name' => $name, 'label' => $label, 'caption' => $additional['caption'], 'available_values' => $additional['available_values'], 'type' => $type, 'required' => $additional['required'], 'value' => $additional['value'], 'page' => $additional['page'], 'readonly' => $additional['readonly'], 'profile_only' => $additional['profile_only'], 'no_profile' => $additional['no_profile'], 'builtin' => FALSE);
    $fields->entries[] = $entry;
    if ($enable) {
        $fields->order .= ';' . $id;
    }
    update_option('ym_custom_fields', $fields);
    return true;
}