options_group_slug);
if (!! $options_group) {
foreach ($options_group as $setting_key => $setting_value) {
$this->set_setting_value($setting_key, $setting_value);
}
}
}
public function add_settings_section(): void {
add_settings_section(
$this->section_slug,
__( $this->title, 'footnotes'),
array($this, 'setting_section_callback'),
'footnotes'
);
}
public function add_settings_fields($component): void {
foreach($this->settings_groups as $settings_group) {
$settings_group->add_settings_fields($component);
}
}
public function setting_section_callback(): void {
echo "
";
}
protected abstract function add_settings_groups(): void;
public function get_options_group_slug(): string {
return $this->options_group_slug;
}
public function get_section_slug(): string {
return $this->section_slug;
}
public function get_title(): string {
return $this->title;
}
public function get_settings_group(string $group_id) {
return $this->settings_groups[$group_id];
}
public function get_setting(string $setting_key): ?Setting {
foreach ($this->settings_groups as $settings_group) {
$setting = $settings_group->get_setting($setting_key);
if ($setting) return $setting;
}
return null;
}
public function get_options(): array {
$options = array();
foreach ($this->settings_groups as $settings_group) {
$options = array_merge($options, $settings_group->get_options());
}
return $options;
}
public function get_setting_value(string $setting_key) {
$setting = $this->get_setting($setting_key);
if (! $setting) return null;
else return $setting->value ?? $setting->default_value ?? trigger_error("No default value found for ".$setting_key.".", E_USER_ERROR);
}
public function set_setting_value(string $setting_key, $value): ?bool {
$setting = $this->get_setting($setting_key);
if (! $setting) return null;
else return $setting->set_value($value);
}
}