public function save_data($post_id)
 {
     global $post;
     if (is_object($post) && self::CPT_NAME !== $post->post_type) {
         return;
     }
     $input = new SpectrOMInput();
     // TODO: nonce verification
     $form_data = $_POST['spectrom_metabox'];
     $this->_create_settings($post_id);
     $valid = new SpectrOMValidation();
     if ($valid->validate_all($this->_settings, $form_data)) {
         // save meta data
     }
 }
 /**
  * Performs validation operations on posted data from form
  * @param $input Input data
  */
 public function validate_options($input)
 {
     $valid = array();
     $validator = new SpectrOMValidation();
     if (NULL !== $input) {
         foreach ($this->_args['sections'] as $section_id => $section) {
             foreach ($section['fields'] as $field_id => $field) {
                 $data = '';
                 if (isset($input[$field_id])) {
                     $data = $input[$field_id];
                 }
                 $is_valid = TRUE;
                 if (isset($field['validation'])) {
                     $rules = explode(' ', $field['validation']);
                     $is_valid = $validator->validate($data, $rules, $field);
                 }
                 if ($is_valid) {
                     $valid[$field_id] = $data;
                 } else {
                     if (isset($this->_args['revert_unvalidated'])) {
                         $valid[$field_id] = isset($field['value']) ? $field['value'] : '';
                     }
                 }
             }
         }
     }
     return $valid;
 }