Completed
Push — master ( 419d71...4ab42b )
by Sudar
11:47
created

Setting::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
1
<?php namespace EmailLog\Core\UI\Setting;
2
3
defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
4
5
/**
6
 * Email Log Setting.
7
 * Contains a setting section and a number of fields.
8
 *
9
 * @since 2.0.0
10
 */
11
abstract class Setting {
12
13
	/**
14
	 * @var \EmailLog\Core\UI\Setting\SettingSection
15
	 */
16
	protected $section;
17
18
	/**
19
	 * Set default values for SettingSection.
20
	 * Further customization can be done by the add-on in the `initialize` method.
21
	 */
22
	public function __construct() {
23
		$this->section = new SettingSection();
24
		$this->section->fields = $this->get_fields();
25
		$this->section->callback = array( $this, 'render' );
26
		$this->section->sanitize_callback = array( $this, 'sanitize' );
27
28
		$this->initialize();
29
	}
30
31
	/**
32
	 * Setup hooks and filters.
33
	 */
34
	public function load() {
35
		add_filter( 'el_setting_sections', array( $this, 'register' ) );
36
	}
37
38
	/**
39
	 * Register the setting using the filter.
40
	 *
41
	 * @param SettingSection[] $sections List of existing SettingSections.
42
	 *
43
	 * @return SettingSection[] Modified list of SettingSections.
44
	 */
45
	public function register( $sections ) {
46
		$sections[] = $this->section;
47
48
		return $sections;
49
	}
50
51
	/**
52
	 * Get the value stored in the option.
53
	 *
54
	 * @return mixed Stored value.
55
	 */
56
	protected function get_value() {
57
		return get_option( $this->section->option_name );
58
	}
59
60
	/**
61
	 * Customize the SettingSection.
62
	 *
63
	 * @return void
64
	 */
65
	abstract protected function initialize();
66
67
	/**
68
	 * Get the list of SettingFields.
69
	 *
70
	 * @return SettingField[] List of fields for the Setting.
71
	 */
72
	abstract protected function get_fields();
73
74
	/**
75
	 * Render the Settings.
76
	 *
77
	 * @return void
78
	 */
79
	abstract public function render();
80
81
	/**
82
	 * Sanitize the option values.
83
	 *
84
	 * @param mixed $values User entered values.
85
	 *
86
	 * @return mixed Sanitized values.
87
	 */
88
	abstract public function sanitize( $values );
89
}
90