page_id = 'advanced_settings'; $this->init_constants(); } public static function instance() { if(is_null(self::$_instance)){ self::$_instance = new self(); } return self::$_instance; } public function init_constants(){ $this->cell_props = array( 'label_cell_props' => 'class="label"', 'input_cell_props' => 'class="field"', 'input_width' => '260px', 'label_cell_th' => true ); $this->cell_props_CB = array( 'label_props' => 'style="margin-right: 40px;"', ); $this->settings_fields = $this->get_advanced_settings_fields(); } public function get_advanced_settings_fields(){ return array( 'enable_label_override' => array( 'name'=>'enable_label_override', 'label'=>'Enable label override for address fields.', 'type'=>'checkbox', 'value'=>'1', 'checked'=>1 ), 'enable_placeholder_override' => array( 'name'=>'enable_placeholder_override', 'label'=>'Enable placeholder override for address fields.', 'type'=>'checkbox', 'value'=>'1', 'checked'=>1 ), 'enable_class_override' => array( 'name'=>'enable_class_override', 'label'=>'Enable class override for address fields.', 'type'=>'checkbox', 'value'=>'1', 'checked'=>0 ), 'enable_priority_override' => array( 'name'=>'enable_priority_override', 'label'=>'Enable priority override for address fields.', 'type'=>'checkbox', 'value'=>'1', 'checked'=>1 ), 'enable_required_override' => array( 'name'=>'enable_required_override', 'label'=>'Enable required validation override for address fields.', 'type'=>'checkbox', 'value'=>'1', 'checked'=>0 ), ); } public function render_page(){ $this->render_tabs(); $this->render_content(); } public function save_advanced_settings($settings){ $result = update_option(THWCFD_Utils::OPTION_KEY_ADVANCED_SETTINGS, $settings); return $result; } private function reset_settings(){ delete_option(THWCFD_Utils::OPTION_KEY_ADVANCED_SETTINGS); $this->print_notices('Settings successfully reset.', 'updated', false); } private function save_settings(){ $settings = array(); foreach( $this->settings_fields as $name => $field ) { $value = ''; if($field['type'] === 'checkbox'){ $value = !empty( $_POST['i_'.$name] ) ? $_POST['i_'.$name] : ''; }else if($field['type'] === 'multiselect_grouped'){ $value = !empty( $_POST['i_'.$name] ) ? $_POST['i_'.$name] : ''; $value = is_array($value) ? implode(',', wc_clean(wp_unslash($value))) : wc_clean(wp_unslash($value)); }else if($field['type'] === 'text' || $field['type'] === 'textarea'){ $value = !empty( $_POST['i_'.$name] ) ? $_POST['i_'.$name] : ''; $value = !empty($value) ? wc_clean( wp_unslash($value)) : ''; }else{ $value = !empty( $_POST['i_'.$name] ) ? $_POST['i_'.$name] : ''; $value = !empty($value) ? wc_clean( wp_unslash($value)) : ''; } $settings[$name] = $value; } $result = $this->save_advanced_settings($settings); if ($result == true) { $this->print_notices('Your changes were saved.', 'updated', false); } else { $this->print_notices('Your changes were not saved due to an error (or you made none!).', 'error', false); } } private function render_content(){ if(isset($_POST['reset_settings'])) $this->reset_settings(); if(isset($_POST['save_settings'])) $this->save_settings(); $this->render_plugin_settings(); } private function render_plugin_settings(){ $settings = THWCFD_Utils::get_advanced_settings(); ?>