PluginProbe ʕ •ᴥ•ʔ
Wordfence Security – Firewall, Malware Scan, and Login Security / 8.2.2
Wordfence Security – Firewall, Malware Scan, and Login Security v8.2.2
8.2.2 8.2.1 8.2.0 3.7.1 3.7.2 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.8.8 3.8.9 3.9.1 4.0.1 4.0.2 4.0.3 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.1 5.1.2 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.1 5.3.10 5.3.11 5.3.12 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.3.8 5.3.9 6.0.1 6.0.10 6.0.11 6.0.12 6.0.14 6.0.15 6.0.16 6.0.17 6.0.18 6.0.19 6.0.2 6.0.20 6.0.21 6.0.22 6.0.23 6.0.24 6.0.25 6.0.3 6.0.4 6.0.5 6.0.6 6.0.7 6.0.8 6.0.9 6.1.1 6.1.10 6.1.11 6.1.12 6.1.14 6.1.15 6.1.16 6.1.17 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.1.7 6.1.8 6.1.9 6.2.0 6.2.1 6.2.10 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.2.8 6.2.9 6.3.0 6.3.1 6.3.10 6.3.11 6.3.12 6.3.14 6.3.15 6.3.16 6.3.17 6.3.18 6.3.19 6.3.2 6.3.20 6.3.21 6.3.22 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.3.8 6.3.9 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1.0 7.1.1 7.1.10 7.1.11 7.1.12 7.1.14 7.1.15 7.1.16 7.1.17 7.1.18 7.1.19 7.1.2 7.1.20 7.1.3 7.1.4 7.1.5 7.1.6 7.1.7 7.1.8 7.1.9 7.10.0 7.10.1 7.10.2 7.10.3 7.10.4 7.10.5 7.10.6 7.10.7 7.11.0 7.11.1 7.11.2 7.11.3 7.11.4 7.11.5 7.11.6 7.11.7 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.4.0 7.4.1 7.4.10 7.4.11 7.4.12 7.4.14 7.4.2 7.4.3 trunk 7.4.4 1.1 7.4.5 1.2 7.4.6 1.3 7.4.7 1.3.1 7.4.8 1.3.2 7.4.9 1.3.3 7.5.0 1.4.2 7.5.1 1.4.3 7.5.10 1.4.4 7.5.11 1.4.5 7.5.2 1.4.6 7.5.3 1.4.7 7.5.4 1.4.8 7.5.5 1.5.1 7.5.6 1.5.2 7.5.7 1.5.3 7.5.8 1.5.4 7.5.9 1.5.5 7.6.0 1.5.6 7.6.1 2.0.1 7.6.2 2.0.2 7.7.0 2.0.3 7.7.1 2.0.5 7.8.0 2.0.6 7.8.1 2.0.7 7.8.2 2.1.0 7.9.0 2.1.1 7.9.1 2.1.2 7.9.2 2.1.3 7.9.3 2.1.4 8.0.0 2.1.5 8.0.1 3.0.2 8.0.2 3.0.3 8.0.3 3.0.4 8.0.4 3.0.5 8.0.5 3.0.6 8.1.0 3.0.7 8.1.1 3.0.8 8.1.2 3.0.9 8.1.3 3.1.0 8.1.4 3.1.1 v1.4.1 3.1.2 3.1.4 3.1.6 3.2.1 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.1 3.4.4 3.4.5 3.5.1 3.5.2 3.6.1 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9
wordfence / models / page / wfPage.php
wordfence / models / page Last commit date
wfPage.php 7 years ago
wfPage.php
264 lines
1 <?php
2
3 class wfPage {
4 const PAGE_DASHBOARD = 'dashboard';
5 const PAGE_DASHBOARD_OPTIONS = 'dashboard-options';
6 const PAGE_FIREWALL = 'firewall';
7 const PAGE_FIREWALL_OPTIONS = 'firewall-options';
8 const PAGE_BLOCKING = 'blocking';
9 const PAGE_BLOCKING_OPTIONS = 'blocking-options';
10 const PAGE_SCAN = 'scan';
11 const PAGE_SCAN_OPTIONS = 'scan-options';
12 const PAGE_TOOLS_2FA = 'tools-2fa';
13 const PAGE_TOOLS_LIVE_TRAFFIC = 'tools-2fa';
14 const PAGE_TOOLS_WHOIS = 'tools-whois';
15 const PAGE_TOOLS_IMPORT_EXPORT = 'tools-import-export';
16 const PAGE_TOOLS_DIAGNOSTICS = 'tools-diagnostics';
17 const PAGE_SUPPORT = 'support';
18
19 /** @var string */
20 private $_identifier;
21
22 /**
23 * Provides validation for a user-provided page identifier.
24 *
25 * @param string $identifier
26 * @return bool
27 */
28 public static function isValidPage($identifier) {
29 switch ($identifier) {
30 case self::PAGE_DASHBOARD:
31 case self::PAGE_DASHBOARD_OPTIONS:
32 case self::PAGE_FIREWALL:
33 case self::PAGE_FIREWALL_OPTIONS:
34 case self::PAGE_BLOCKING:
35 case self::PAGE_BLOCKING_OPTIONS:
36 case self::PAGE_SCAN:
37 case self::PAGE_SCAN_OPTIONS:
38 case self::PAGE_TOOLS_2FA:
39 case self::PAGE_TOOLS_LIVE_TRAFFIC:
40 case self::PAGE_TOOLS_IMPORT_EXPORT:
41 case self::PAGE_TOOLS_WHOIS:
42 case self::PAGE_TOOLS_DIAGNOSTICS:
43 case self::PAGE_SUPPORT:
44 return true;
45 }
46 return false;
47 }
48
49 /**
50 * Convenience function for returning the user-displayable label for the given page.
51 *
52 * @param string $identifier
53 * @return bool|string
54 */
55 public static function pageLabel($identifier) {
56 $page = new wfPage($identifier);
57 return $page->label();
58 }
59
60 /**
61 * Convenience function for returning the canonical URL for the given page.
62 *
63 * @param string $identifier
64 * @param string|bool $source The source page identifier to append to the URL if wanted.
65 * @return string
66 */
67 public static function pageURL($identifier, $source = false) {
68 $page = new wfPage($identifier);
69 return $page->url($source);
70 }
71
72 public function __construct($identifier) {
73 $this->_identifier = $identifier;
74 }
75
76 public function __get($key) {
77 switch ($key) {
78 case 'identifier':
79 return $this->_identifier;
80 }
81
82 throw new OutOfBoundsException("{$key} is not a valid property");
83 }
84
85 public function __isset($key) {
86 switch ($key) {
87 case 'identifier':
88 return true;
89 }
90 return false;
91 }
92
93 /**
94 * Returns the user-displayable label for the page.
95 *
96 * @return bool|string
97 */
98 public function label() {
99 switch ($this->identifier) {
100 case self::PAGE_DASHBOARD:
101 return __('Dashboard', 'wordfence');
102 case self::PAGE_DASHBOARD_OPTIONS:
103 return __('Global Options', 'wordfence');
104 case self::PAGE_FIREWALL:
105 return __('Firewall', 'wordfence');
106 case self::PAGE_FIREWALL_OPTIONS:
107 return __('Firewall Options', 'wordfence');
108 case self::PAGE_BLOCKING:
109 return __('Blocking', 'wordfence');
110 case self::PAGE_BLOCKING_OPTIONS:
111 return __('Blocking Options', 'wordfence');
112 case self::PAGE_SCAN:
113 return __('Scan', 'wordfence');
114 case self::PAGE_SCAN_OPTIONS:
115 return __('Scan Options', 'wordfence');
116 case self::PAGE_TOOLS_2FA:
117 return __('Two-Factor Authentication', 'wordfence');
118 case self::PAGE_TOOLS_LIVE_TRAFFIC:
119 return __('Live Traffic', 'wordfence');
120 case self::PAGE_TOOLS_IMPORT_EXPORT:
121 return __('Import/Export Options', 'wordfence');
122 case self::PAGE_TOOLS_WHOIS:
123 return __('Whois Lookup', 'wordfence');
124 case self::PAGE_TOOLS_DIAGNOSTICS:
125 return __('Diagnostics', 'wordfence');
126 case self::PAGE_SUPPORT:
127 return __('Support', 'wordfence');
128 }
129
130 return false;
131 }
132
133 /**
134 * Returns the canonical URL for the page.
135 *
136 * @param string|bool $source The source page identifier to append to the URL if wanted.
137 * @return string
138 */
139 public function url($source = false) {
140 $page = '';
141 $subpage = '';
142 $hash = '';
143 switch ($this->identifier) {
144 case self::PAGE_DASHBOARD:
145 $page = 'Wordfence';
146 break;
147 case self::PAGE_DASHBOARD_OPTIONS:
148 $page = 'Wordfence';
149 $subpage = 'global_options';
150 break;
151 case self::PAGE_FIREWALL:
152 $page = 'WordfenceWAF';
153 break;
154 case self::PAGE_FIREWALL_OPTIONS:
155 $page = 'WordfenceWAF';
156 $subpage = 'waf_options';
157 break;
158 case self::PAGE_BLOCKING:
159 $page = 'WordfenceWAF';
160 $hash = '#top#blocking';
161 break;
162 case self::PAGE_BLOCKING_OPTIONS:
163 $page = 'WordfenceWAF';
164 $subpage = 'blocking_options';
165 break;
166 case self::PAGE_SCAN:
167 $page = 'WordfenceScan';
168 break;
169 case self::PAGE_SCAN_OPTIONS:
170 $page = 'WordfenceScan';
171 $subpage = 'scan_options';
172 break;
173 case self::PAGE_TOOLS_2FA:
174 $page = 'WordfenceTools';
175 $subpage = 'twofactor';
176 break;
177 case self::PAGE_TOOLS_LIVE_TRAFFIC:
178 $page = 'WordfenceTools';
179 $subpage = 'livetraffic';
180 break;
181 case self::PAGE_TOOLS_IMPORT_EXPORT:
182 $page = 'WordfenceTools';
183 $subpage = 'importexport';
184 break;
185 case self::PAGE_TOOLS_WHOIS:
186 $page = 'WordfenceTools';
187 $subpage = 'whois';
188 break;
189 case self::PAGE_TOOLS_DIAGNOSTICS:
190 $page = 'WordfenceTools';
191 $subpage = 'diagnostics';
192 break;
193 case self::PAGE_SUPPORT:
194 $page = 'WordfenceSupport';
195 break;
196 }
197
198 $baseURL = 'admin.php?';
199 $baseURL .= 'page=' . rawurlencode($page);
200 if (!empty($subpage)) { $baseURL .= '&subpage=' . rawurlencode($subpage); }
201 if (self::isValidPage($source)) { $baseURL .= '&source=' . rawurlencode($source); }
202 if (!empty($hash)) { $baseURL .= $this->_hashURLEncode($hash); }
203 if (function_exists('network_admin_url') && is_multisite()) {
204 return network_admin_url($baseURL);
205 }
206
207 return admin_url($baseURL);
208 }
209
210 /**
211 * Splits a URI hash component and URL-encodes its members.
212 *
213 * @param string $hash
214 * @return string
215 */
216 private function _hashURLEncode($hash) {
217 $components = explode('#', $hash);
218 foreach ($components as &$c) {
219 $c = rawurlencode($c);
220 }
221 return implode('#', $components);
222 }
223
224 /**
225 * Returns an ordered array of the pages required to reach this page, this page being the last entry in the array.
226 *
227 * @return array
228 */
229 public function breadcrumbs() {
230 switch ($this->identifier) {
231 case self::PAGE_DASHBOARD:
232 return array($this);
233 case self::PAGE_DASHBOARD_OPTIONS:
234 return array(new wfPage(wfPage::PAGE_DASHBOARD), $this);
235 case self::PAGE_FIREWALL:
236 return array($this);
237 case self::PAGE_FIREWALL_OPTIONS:
238 return array(new wfPage(wfPage::PAGE_FIREWALL), $this);
239 case self::PAGE_BLOCKING:
240 return array($this);
241 case self::PAGE_BLOCKING_OPTIONS:
242 return array(new wfPage(wfPage::PAGE_BLOCKING), $this);
243 case self::PAGE_SCAN:
244 return array($this);
245 case self::PAGE_SCAN_OPTIONS:
246 return array(new wfPage(wfPage::PAGE_SCAN), $this);
247 case self::PAGE_TOOLS_2FA:
248 return array($this);
249 case self::PAGE_TOOLS_LIVE_TRAFFIC:
250 return array($this);
251 case self::PAGE_TOOLS_IMPORT_EXPORT:
252 return array($this);
253 case self::PAGE_TOOLS_WHOIS:
254 return array($this);
255 case self::PAGE_TOOLS_DIAGNOSTICS:
256 return array($this);
257 case self::PAGE_SUPPORT:
258 return array($this);
259 }
260
261 return array();
262 }
263 }
264