protected function sanitize_field_input($value, $instance) { /* @var $field_factory SiteOrigin_Widget_Field_Factory */ $field_factory = SiteOrigin_Widget_Field_Factory::single(); foreach ($this->fields as $sub_field_name => $sub_field_options) { /* @var $sub_field SiteOrigin_Widget_Field_Base */ if (!empty($this->sub_fields) && !empty($this->sub_fields[$sub_field_name])) { $sub_field = $this->sub_fields[$sub_field_name]; } else { $sub_field = $field_factory->create_field($this->base_name . '][' . $sub_field_name, $sub_field_options, $this->for_widget, $this->parent_container); } $value[$sub_field_name] = $sub_field->sanitize(isset($value[$sub_field_name]) ? $value[$sub_field_name] : null, $value); $value = $sub_field->sanitize_instance($value); } return $value; }
/** * Update the widget instance. * * @param array $new_instance * @param array $old_instance * @param string $form_type The type of form we're using. * @return array|void */ public function update($new_instance, $old_instance, $form_type = 'widget') { if (!class_exists('SiteOrigin_Widgets_Color_Object')) { require plugin_dir_path(__FILE__) . 'inc/color.php'; } if ($form_type == 'widget') { if (empty($this->form_options)) { $this->form_options = $this->form_options(); } $form_options = $this->form_options; } else { $form_options = $this->get_form($form_type); } if (!empty($form_options)) { /* @var $field_factory SiteOrigin_Widget_Field_Factory */ $field_factory = SiteOrigin_Widget_Field_Factory::single(); foreach ($form_options as $field_name => $field_options) { /* @var $field SiteOrigin_Widget_Field_Base */ if (!empty($this->fields) && !empty($this->fields[$field_name])) { $field = $this->fields[$field_name]; } else { $field = $field_factory->create_field($field_name, $field_options, $this); $this->fields[$field_name] = $field; } $new_instance[$field_name] = $field->sanitize(isset($new_instance[$field_name]) ? $new_instance[$field_name] : null, $new_instance, isset($old_instance[$field_name]) ? $old_instance[$field_name] : null); $new_instance = $field->sanitize_instance($new_instance); } // Let other plugins also sanitize the instance $new_instance = apply_filters('siteorigin_widgets_sanitize_instance', $new_instance, $form_options, $this); $new_instance = apply_filters('siteorigin_widgets_sanitize_instance_' . $this->id_base, $new_instance, $form_options, $this); } // Remove the old CSS, it'll be regenerated on page load. $this->delete_css($this->modify_instance($new_instance)); return $new_instance; }