PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.0
4.11.0 4.10.0 4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Settings / DarkMode.php
wp-staging / Framework / Settings Last commit date
DarkMode.php 1 day ago Settings.php 1 day ago SettingsTable.php 1 day ago
DarkMode.php
141 lines
1 <?php
2
3 namespace WPStaging\Framework\Settings;
4
5 use WPStaging\Core\WPStaging;
6 use WPStaging\Framework\Security\Auth;
7 use WPStaging\Framework\Traits\PagesTrait;
8 use WPStaging\Framework\Utils\Sanitize;
9
10 class DarkMode
11 {
12 use PagesTrait;
13
14
15
16
17 const OPTION_DEFAULT_COLOR_MODE = 'wpstg_default_color_mode';
18
19
20
21
22 const OPTION_DEFAULT_OS_COLOR_MODE = 'wpstg_default_os_color_mode';
23
24
25
26
27 private $sanitize;
28
29
30
31
32 private $auth;
33
34
35
36
37 private $defaultColorMode;
38
39 public function __construct()
40 {
41 $this->auth = WPStaging::make(Auth::class);
42 $this->sanitize = WPStaging::make(Sanitize::class);
43 $this->getDefaultColorMode();
44 }
45
46
47
48
49 public function ajaxEnableDefaultColorMode()
50 {
51 if (!$this->auth->isAuthenticatedRequest('', 'manage_options')) {
52 wp_send_json_error();
53 }
54
55 $defaultColorMode = isset($_POST['mode']) ? $this->sanitize->sanitizeString($_POST['mode']) : '';
56
57 if (empty($defaultColorMode)) {
58 wp_send_json_error();
59 }
60
61 if ($this->defaultColorMode === $defaultColorMode) {
62 wp_send_json_success();
63 }
64
65 update_option(self::OPTION_DEFAULT_COLOR_MODE, $defaultColorMode);
66
67 wp_send_json_success();
68 }
69
70
71
72
73 public function ajaxSetDefaultOsMode()
74 {
75 if (!$this->auth->isAuthenticatedRequest('', 'manage_options')) {
76 wp_send_json_error();
77 }
78
79 $defaultOsColorMode = (isset($_POST['defaultOsColorMode'])) ? $this->sanitize->sanitizeString($_POST['defaultOsColorMode']) : '';
80
81 if (empty($defaultOsColorMode)) {
82 wp_send_json_error();
83 }
84
85 update_option(self::OPTION_DEFAULT_OS_COLOR_MODE, $defaultOsColorMode);
86 wp_send_json_success([
87 'defaultColorMode' => $this->defaultColorMode,
88 ]);
89 }
90
91
92
93
94 public function mayBeShowDarkMode()
95 {
96 if (!$this->isWPStagingAdminPage()) {
97 return;
98 }
99
100 if (!$this->isDarkModeEnabled()) {
101 return;
102 }
103
104 add_filter('admin_body_class', function ($classes) {
105 return $classes . ' wpstg-dark';
106 });
107 }
108
109
110
111
112 private function isDarkModeEnabled(): bool
113 {
114 $defaultColorMode = get_option(self::OPTION_DEFAULT_COLOR_MODE, '');
115 if (empty($defaultColorMode)) {
116 return false;
117 }
118
119 $defaultOsColorMode = get_option(self::OPTION_DEFAULT_OS_COLOR_MODE, '');
120
121 if ($defaultColorMode === 'system' && $defaultOsColorMode === 'light') {
122 return false;
123 }
124
125 if ($defaultColorMode === 'light') {
126 return false;
127 }
128
129 return true;
130 }
131
132
133
134
135 private function getDefaultColorMode()
136 {
137 $this->defaultColorMode = get_option(self::OPTION_DEFAULT_COLOR_MODE, '');
138 return $this->defaultColorMode;
139 }
140 }
141