public function submit_html_form()
 {
     // basic security check
     $this->bridge->check_admin_referer($this->form_name);
     $options = $this->form_options;
     $option_formats = $this->form['formats'];
     foreach ($options as $name => &$option) {
         // if this form item is hidden, it should not be handled here
         if ($this->is_form_item_hidden($name)) {
             continue;
         }
         if (isset($_POST[$name])) {
             // make sure options are in expected formats, only when option
             // values are not array, if array all values will be sanitized
             // but not formatted, plugin should take care of the formats
             // explicitly
             $option = !is_array($_POST[$name]) ? $this->format_field($name, $_POST[$name]) : $this->sanitize($_POST[$name]);
         }
         if (!isset($_POST[$name])) {
             // unchecked single checkbox
             if (isset($this->form['checkbox'][$name])) {
                 $option = '';
             } elseif (isset($this->form['checkbox_multi'][$name]) || isset($this->form['select_multi'][$name])) {
                 // unchecked/unselected multi-checkboxes and multi-select
                 $option = array();
             }
         }
     }
     // allow the current form to save its submitted data using a different
     // form name
     $form_name = $this->bridge->apply_filters('bwp_option_page_submit_form_name', $this->form_name);
     // save $_POST options for later use
     $post_options = $options;
     // allow filtering the options that are going to be updated
     $options = $this->bridge->apply_filters('bwp_option_page_submit_options', $options);
     // always refresh the options for the form, so that form fields will
     // correctly show user-submitted values, use original options from
     // $_POST if $options is not valid after being filtered
     $this->form_options = array_merge($this->form_options, $options ? $options : $post_options);
     // allow plugin to return false or non-array to not update any options at all
     if ($options === false || !is_array($options)) {
         return false;
     }
     // @since rev 159 update some options only to allow splitting an
     // option key across multiple option pages. This should update site
     // options as well
     $this->plugin->update_some_options($form_name, $options);
     return true;
 }