This repository has been archived on 2023-08-16. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
footnotes/src/includes/settings/general/class-general-settings-section.php

83 lines
3.3 KiB
PHP
Raw Normal View History

2021-05-17 12:56:22 +01:00
<?php
/**
* File providing the `GeneralSettingsSection` class.
*
* @package footnotes
* @since 2.8.0
*/
declare(strict_types=1);
2021-05-30 07:40:40 +01:00
namespace footnotes\includes\settings\general;
2021-05-17 12:56:22 +01:00
require_once plugin_dir_path( __DIR__ ) . 'class-settings-section.php';
2021-05-17 12:56:22 +01:00
use footnotes\includes\settings\SettingsSection;
2021-05-17 12:56:22 +01:00
use footnotes\includes\settings\general\ReferenceContainerSettingsGroup;
use footnotes\includes\settings\general\ScrollingSettingsGroup;
use footnotes\includes\settings\general\ShortcodeSettingsGroup;
use footnotes\includes\settings\general\NumberingSettingsGroup;
use footnotes\includes\settings\general\HardLinksSettingsGroup;
use footnotes\includes\settings\general\LoveSettingsGroup;
use footnotes\includes\settings\general\ExcerptsSettingsGroup;
use footnotes\includes\settings\general\AMPCompatSettingsGroup;
2021-05-17 12:56:22 +01:00
/**
* Class defining general plugin settings.
*
* @package footnotes
* @since 2.8.0
*/
class GeneralSettingsSection extends SettingsSection {
2021-05-17 12:56:22 +01:00
/**
* The groups of settings within this section.
*
* @var SettingsGroup[]
*
* @since 2.8.0
*/
protected array $settings_groups;
2021-05-17 12:56:22 +01:00
public function __construct(
$options_group_slug,
$section_slug,
$title
) {
$this->options_group_slug = $options_group_slug;
$this->section_slug = $section_slug;
$this->title = $title;
2021-05-17 12:56:22 +01:00
$this->load_dependencies();
$this->add_settings_groups( get_option( $this->options_group_slug ) );
$this->load_options_group();
2021-05-17 12:56:22 +01:00
}
2021-05-17 12:56:22 +01:00
protected function load_dependencies(): void {
parent::load_dependencies();
require_once plugin_dir_path( __DIR__ ) . 'general/class-reference-container-settings-group.php';
require_once plugin_dir_path( __DIR__ ) . 'general/class-scrolling-settings-group.php';
require_once plugin_dir_path( __DIR__ ) . 'general/class-shortcode-settings-group.php';
require_once plugin_dir_path( __DIR__ ) . 'general/class-numbering-settings-group.php';
require_once plugin_dir_path( __DIR__ ) . 'general/class-hard-links-settings-group.php';
require_once plugin_dir_path( __DIR__ ) . 'general/class-love-settings-group.php';
require_once plugin_dir_path( __DIR__ ) . 'general/class-excerpts-settings-group.php';
require_once plugin_dir_path( __DIR__ ) . 'general/class-amp-compat-settings-group.php';
2021-05-17 12:56:22 +01:00
}
2021-05-17 12:56:22 +01:00
protected function add_settings_groups(): void {
$this->settings_groups = array(
AMPCompatSettingsGroup::GROUP_ID => new AMPCompatSettingsGroup( $this->options_group_slug, $this->section_slug ),
ReferenceContainerSettingsGroup::GROUP_ID => new ReferenceContainerSettingsGroup( $this->options_group_slug, $this->section_slug ),
ScrollingSettingsGroup::GROUP_ID => new ScrollingSettingsGroup( $this->options_group_slug, $this->section_slug ),
ShortcodeSettingsGroup::GROUP_ID => new ShortcodeSettingsGroup( $this->options_group_slug, $this->section_slug ),
NumberingSettingsGroup::GROUP_ID => new NumberingSettingsGroup( $this->options_group_slug, $this->section_slug ),
HardLinksSettingsGroup::GROUP_ID => new HardLinksSettingsGroup( $this->options_group_slug, $this->section_slug ),
ExcerptsSettingsGroup::GROUP_ID => new ExcerptsSettingsGroup( $this->options_group_slug, $this->section_slug ),
LoveSettingsGroup::GROUP_ID => new LoveSettingsGroup( $this->options_group_slug, $this->section_slug ),
2021-05-17 12:56:22 +01:00
);
}
}