PluginProbe ʕ •ᴥ•ʔ
Nested Pages / 2.0.1
Nested Pages v2.0.1
3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 trunk 1.0 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.3.0 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.2 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.3.1 1.6.3.2 1.6.4 1.6.5 1.6.5.1 1.6.5.2 1.6.6 1.6.7 1.6.8 1.7.0 1.7.1 2.0.1 2.0.2 2.0.3 2.0.4 3.0.1 3.0.10 3.0.11 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.20 3.1.21 3.1.22 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7
wp-nested-pages / app / Config / Settings.php
wp-nested-pages / app / Config Last commit date
Settings.php 8 years ago SettingsRepository.php 8 years ago
Settings.php
150 lines
1 <?php
2 namespace NestedPages\Config;
3
4 use NestedPages\Helpers;
5 use NestedPages\Entities\User\UserRepository;
6 use NestedPages\Entities\PostType\PostTypeRepository;
7 use NestedPages\Config\SettingsRepository;
8 use NestedPages\Entities\PluginIntegration\IntegrationFactory;
9 use NestedPages\Entities\Listing\ListingRepository;
10 use NestedPages\Entities\Post\PostRepository;
11
12 /**
13 * Plugin Settings
14 */
15 class Settings
16 {
17 /**
18 * Nested Pages Menu
19 * @var object
20 */
21 private $menu;
22
23 /**
24 * User Repository
25 */
26 private $user_repo;
27
28 /**
29 * Post Type Repository
30 */
31 private $post_type_repo;
32
33 /**
34 * Post Types
35 */
36 private $post_types;
37
38 /**
39 * Settings Repository
40 */
41 private $settings;
42
43 /**
44 * Plugin Integration
45 */
46 private $integrations;
47
48 /**
49 * Listing Repository
50 */
51 private $listing_repo;
52
53 /**
54 * Post Repository
55 */
56 private $post_repo;
57
58 public function __construct()
59 {
60 add_action( 'admin_menu', array( $this, 'registerSettingsPage' ) );
61 add_action( 'admin_init', array( $this, 'registerSettings' ) );
62 add_action( 'updated_option', array( $this, 'updateMenuName'), 10, 3);
63 $this->user_repo = new UserRepository;
64 $this->settings = new SettingsRepository;
65 $this->post_type_repo = new PostTypeRepository;
66 $this->integrations = new IntegrationFactory;
67 $this->listing_repo = new ListingRepository;
68 $this->post_repo = new PostRepository;
69 }
70
71 /**
72 * Register the settings page
73 * @see admin_menu
74 */
75 public function registerSettingsPage()
76 {
77 add_options_page(
78 __('Nested Pages Settings', 'wp-nested-pages'),
79 __('Nested Pages', 'wp-nested-pages'),
80 'manage_options',
81 'nested-pages-settings',
82 array( $this, 'settingsPage' )
83 );
84 }
85
86 /**
87 * Register the settings
88 * @see admin_init
89 */
90 public function registerSettings()
91 {
92 register_setting( 'nestedpages-general', 'nestedpages_menu' );
93 register_setting( 'nestedpages-general', 'nestedpages_menusync' );
94 register_setting( 'nestedpages-general', 'nestedpages_disable_menu' );
95 register_setting( 'nestedpages-general', 'nestedpages_ui' );
96 register_setting( 'nestedpages-general', 'nestedpages_allowsorting' );
97 register_setting( 'nestedpages-posttypes', 'nestedpages_posttypes' );
98 }
99
100 /**
101 * Update the menu name if option is updated
102 * @see updated_option in wp-includes/option.php
103 * @since 1.1.5
104 */
105 public function updateMenuName($option, $old_value, $value)
106 {
107 if ( $option == 'nestedpages_menu' ){
108
109 $menu = get_term_by('id', $old_value, 'nav_menu');
110 if ( $menu ) {
111 delete_option('nestedpages_menu'); // Delete the option to prevent infinite loop
112 update_option('nestedpages_menu', $old_value);
113 wp_update_term($menu->term_id, 'nav_menu', array(
114 'name' => $value,
115 'slug' => sanitize_title($value)
116 ));
117 }
118 }
119 }
120
121 /**
122 * Set the Menu Object
123 * @since 1.1.5
124 */
125 private function setMenu()
126 {
127 $menu_id = get_option('nestedpages_menu');
128 $this->menu = get_term_by('id', $menu_id, 'nav_menu');
129 }
130
131 /**
132 * Get Post Types
133 * @since 1.2.0
134 */
135 private function getPostTypes()
136 {
137 return $this->post_type_repo->getPostTypesObject();
138 }
139
140 /**
141 * Display the Settings Page
142 * Callback for registerSettingsPage method
143 */
144 public function settingsPage()
145 {
146 $this->setMenu();
147 $tab = ( isset($_GET['tab']) ) ? $_GET['tab'] : 'general';
148 include( Helpers::view('settings/settings') );
149 }
150 }