PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.8.2
Advanced Access Manager – Access Governance for WordPress v5.8.2
6.8.4 6.8.5 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13 6.9.14 6.9.15 6.9.16 6.9.17 6.9.18 6.9.19 6.9.2 6.9.20 6.9.21 6.9.22 6.9.23 6.9.24 6.9.25 6.9.26 6.9.27 6.9.28 6.9.29 6.9.3 6.9.30 6.9.31 6.9.32 6.9.33 6.9.34 6.9.35 6.9.36 6.9.37 6.9.38 6.9.39 6.9.4 6.9.41 6.9.42 6.9.43 6.9.44 6.9.45 6.9.46 6.9.47 6.9.48 6.9.49 6.9.5 6.9.51 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.0-alpha.6 7.0.0-alpha.7 7.0.0-beta.1 7.0.0-rc1 7.0.0-rc2 7.0.0-rc3 7.0.1 7.0.10 7.0.11 7.0.2 7.0.3 7.0.4 7.0.5 7.0.6 7.0.7 7.0.8 7.0.9 7.1.0 7.1.1 trunk 3.0 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.5 4.7.6 4.8 4.8.1 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.5.1 4.9.5.2 5.0 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.1 5.1.1 5.10 5.11 5.2 5.2.1 5.2.5 5.2.6 5.2.7 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.4 5.4.1 5.4.2 5.4.3 5.4.3.1 5.4.3.2 5.5 5.5.1 5.5.2 5.6 5.6.1 5.6.1.1 5.7 5.7.1 5.7.2 5.7.3 5.8 5.8.1 5.8.2 5.8.3 5.9 5.9.1 5.9.1.1 5.9.2 5.9.2.1 5.9.3 5.9.4 5.9.5 5.9.6 5.9.6.1 5.9.6.2 5.9.6.3 5.9.7 5.9.7.1 5.9.7.2 5.9.7.3 5.9.8 5.9.8.1 5.9.9 5.9.9.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.2.0 6.2.1 6.2.2 6.3.0 6.3.1 6.3.2 6.3.3 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.5.2 6.5.3 6.5.4 6.6.0 6.6.1 6.6.2 6.6.3 6.6.4 6.7.0 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 6.7.6 6.7.7 6.7.8 6.7.9 6.8.0 6.8.1 6.8.2 6.8.3
advanced-access-manager / Application / Core / Policy / Token.php
advanced-access-manager / Application / Core / Policy Last commit date
Condition.php 7 years ago Manager.php 7 years ago Token.php 7 years ago Validator.php 7 years ago
Token.php
126 lines
1 <?php
2
3 /**
4 * ======================================================================
5 * LICENSE: This file is subject to the terms and conditions defined in *
6 * file 'license.txt', which is part of this source code package. *
7 * ======================================================================
8 */
9
10 /**
11 * AAM core policy token evaluator
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 * @since AAM v5.8.2
16 */
17 final class AAM_Core_Policy_Token {
18
19 /**
20 * Literal map token's type to the executable method that returns actual value
21 *
22 * @var array
23 *
24 * @access protected
25 * @static
26 */
27 protected static $map = array(
28 'USER' => 'AAM_Core_Policy_Token::getUserValue',
29 'DATETIME' => 'AAM_Core_Policy_Token::getDateTimeValue',
30 'GET' => 'AAM_Core_Request::get',
31 'POST' => 'AAM_Core_Request::post',
32 'COOKIE' => 'AAM_Core_Request::cookie'
33 );
34
35 /**
36 * Evaluate collection of tokens and replace them with values
37 *
38 * @param string $part String with tokens
39 * @param array $tokens Extracted token
40 *
41 * @return string
42 *
43 * @access public
44 * @static
45 */
46 public static function evaluate($part, array $tokens) {
47 foreach($tokens as $token) {
48 $part = str_replace(
49 $token,
50 self::getValue(preg_replace('/^\$\{([^}]+)\}$/', '${1}', $token)),
51 $part
52 );
53 }
54
55 return $part;
56 }
57
58 /**
59 * Get token value
60 *
61 * @param string $token
62 * @param mixed $value
63 *
64 * @return mixed
65 *
66 * @access protected
67 * @static
68 */
69 protected static function getValue($token, $value = null) {
70 $parts = explode('.', $token);
71
72 if (isset(self::$map[$parts[0]])) {
73 $value = call_user_func(self::$map[$parts[0]], $parts[1], $value);
74 } elseif ($parts[0] === 'CALLBACK' && is_callable($parts[1])) {
75 $value = call_user_func($parts[1], $value);
76 }
77
78 return $value;
79 }
80
81 /**
82 * Get USER's value
83 *
84 * @param string $prop
85 *
86 * @return mixed
87 *
88 * @access protected
89 * @static
90 */
91 protected static function getUserValue($prop) {
92 $user = AAM::api()->getUser();
93
94 switch(strtolower($prop)) {
95 case 'ip':
96 case 'ipaddress':
97 $value = AAM_Core_Request::server('REMOTE_ADDR');
98 break;
99
100 case 'authenticated':
101 $value = $user->isVisitor() ? false : true;
102 break;
103
104 default:
105 $value = $user->{$prop};
106 break;
107 }
108
109 return $value;
110 }
111
112 /**
113 * Get current datetime value
114 *
115 * @param string $prop
116 *
117 * @return string
118 *
119 * @access protected
120 * @static
121 */
122 protected static function getDateTimeValue($prop) {
123 return date($prop);
124 }
125
126 }