/** * Validate and sanitize any submitted data. Used when editing the definition for * this type of element. Default behavior here is to require only a unique name and * label. Override this if customized validation is required. * * into the field values. * * @param array $posted_data = $_POST data * @return array filtered field_data that can be saved OR can be safely repopulated */ public function save_definition_filter($posted_data) { $posted_data = parent::save_definition_filter($posted_data); if (empty($posted_data['alternate_input']) && empty($posted_data['options'])) { $this->errors['options'][] = __('At least one option or alternate input is required.', CCTM_TXTDOMAIN); } return $posted_data; // filtered data }
/** * This should replace the awkward save_definition_filter() function... * * @param string $name for field * @return boolean */ public static function valid_name($name) { self::$e = array(); if (empty($name)) { self::$e[] = __('Name is required.', CCTM_TXTDOMAIN); return false; } // Are there any invalid characters? 1st char. must be a letter (req'd for valid prop/func names) if (!preg_match('/^[a-z]{1}[a-z_0-9]*$/i', $name)) { self::$e[] = sprintf(__('%s contains invalid characters. The name may only contain letters, numbers, and underscores, and it must begin with a letter.', CCTM_TXTDOMAIN), '<strong>' . $name . '</strong>'); } // Is the name too long? if (strlen($name) > 255) { self::$e[] = __('The name is too long. Names must not exceed 255 characters.', CCTM_TXTDOMAIN); } // Run into any reserved words? if (in_array($name, CCTM::$reserved_field_names)) { self::$e[] = sprintf(__('%s is a reserved name.', CCTM_TXTDOMAIN), '<strong>' . $name . '</strong>'); } if (empty(self::$e)) { return true; } return false; }
/** * Custom filter on the name due to WP's limitations: * http://code.google.com/p/wordpress-custom-content-type-manager/issues/detail?id=271 */ public function save_definition_filter($posted_data) { $posted_data = parent::save_definition_filter($posted_data); // Are there any invalid characters? 1st char. must be a letter (req'd for valid prop/func names) if (!empty($posted_data['name']) && !preg_match('/^[a-z]*$/', $posted_data['name'])) { $this->errors['name'][] = __('Due to WordPress limitations, WYSIWYG fields can contain ONLY lowercase letters.', CCTM_TXTDOMAIN); $posted_data['name'] = preg_replace('/[^a-z]/', '', $posted_data['name']); } return $posted_data; }
/** * Handle the "checked by default" option * * @param array $posted_data -- a copy of $_POST * @return array filtered $_POST data */ public function save_definition_filter($posted_data) { $posted_data = parent::save_definition_filter($posted_data); if (!isset($posted_data['checked_by_default'])) { $posted_data['checked_by_default'] = 0; // set it } return $posted_data; }