PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.9
Advanced Access Manager – Access Governance for WordPress v5.9
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 Factory.php 7 years ago Manager.php 7 years ago Token.php 7 years ago Validator.php 7 years ago
Token.php
157 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 'SERVER' => 'AAM_Core_Request::server',
34 'ARGS' => 'AAM_Core_Policy_Token::getArgValue'
35 );
36
37 /**
38 * Evaluate collection of tokens and replace them with values
39 *
40 * @param string $part String with tokens
41 * @param array $tokens Extracted token
42 *
43 * @return string
44 *
45 * @access public
46 * @static
47 */
48 public static function evaluate($part, array $tokens, array $args = array()) {
49 foreach($tokens as $token) {
50 $val = self::getValue(
51 preg_replace('/^\$\{([^}]+)\}$/', '${1}', $token),
52 $args
53 );
54
55 $part = str_replace(
56 $token,
57 (is_scalar($val) ? $val : json_encode($val)),
58 $part
59 );
60 }
61
62 return $part;
63 }
64
65 /**
66 * Get token value
67 *
68 * @param string $token
69 * @param array $args
70 *
71 * @return mixed
72 *
73 * @access protected
74 * @static
75 */
76 protected static function getValue($token, $args) {
77 $parts = explode('.', $token);
78
79 if (isset(self::$map[$parts[0]])) {
80 $value = call_user_func(self::$map[$parts[0]], $parts[1], $args);
81 } elseif ($parts[0] === 'CALLBACK' && is_callable($parts[1])) {
82 $value = call_user_func($parts[1], $args);
83 }
84
85 return $value;
86 }
87
88 /**
89 * Get USER's value
90 *
91 * @param string $prop
92 *
93 * @return mixed
94 *
95 * @access protected
96 * @static
97 */
98 protected static function getUserValue($prop) {
99 $user = AAM::api()->getUser();
100
101 switch(strtolower($prop)) {
102 case 'ip':
103 case 'ipaddress':
104 $value = AAM_Core_Request::server('REMOTE_ADDR');
105 break;
106
107 case 'authenticated':
108 $value = $user->isVisitor() ? false : true;
109 break;
110
111 case 'capabilities':
112 $value = array();
113 foreach($user->allcaps as $cap => $effect) {
114 if (!empty($effect)) {
115 $value[] = $cap;
116 }
117 }
118 break;
119
120 default:
121 $value = $user->{$prop};
122 break;
123 }
124
125 return $value;
126 }
127
128 /**
129 * Get inline argument
130 *
131 * @param string $prop
132 * @param array $args
133 *
134 * @return mixed
135 *
136 * @access protected
137 * @static
138 */
139 protected static function getArgValue($prop, $args) {
140 return (isset($args[$prop]) ? $args[$prop] : null);
141 }
142
143 /**
144 * Get current datetime value
145 *
146 * @param string $prop
147 *
148 * @return string
149 *
150 * @access protected
151 * @static
152 */
153 protected static function getDateTimeValue($prop) {
154 return date($prop);
155 }
156
157 }