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