PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 4.4
Advanced Access Manager – Access Governance for WordPress v4.4
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 / Shortcode / Strategy / Content.php
advanced-access-manager / Application / Shortcode / Strategy Last commit date
Content.php 9 years ago Interface.php 9 years ago Login.php 9 years ago
Content.php
125 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 shortcode strategy for content
12 *
13 * Shortcode strategy to manage access to the parts of post's content
14 *
15 * @package AAM
16 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
17 */
18 class AAM_Shortcode_Strategy_Content implements AAM_Shortcode_Strategy_Interface {
19
20 /**
21 *
22 * @var type
23 */
24 protected $args;
25
26 /**
27 *
28 * @var type
29 */
30 protected $content;
31
32 /**
33 * Initialize shortcode decorator
34 *
35 * Expecting attributes in $args are:
36 * "hide" => comma-separated list of role and user IDs to hide content
37 * "show" => comma-separated list of role and user IDs to show content
38 * "limit" => comma-separated list of role and user IDs to limit content
39 * "message" => message to show if "limit" is defined
40 * "callback" => callback function that returns message if "limit" is defined
41 *
42 * @param type $args
43 * @param type $content
44 */
45 public function __construct($args, $content) {
46 $this->args = $args;
47 $this->content = do_shortcode($content);
48 }
49
50 /**
51 * Process shortcode
52 *
53 */
54 public function run() {
55 //prepare user
56 if (get_current_user_id()) {
57 $user = array(AAM::getUser()->ID, AAM::getUser()->roles[0]);
58 } else {
59 $user = array('visitor');
60 }
61
62 $show = $this->getAccess('show');
63 $limit = $this->getAccess('limit');
64 $hide = $this->getAccess('hide');
65 $msg = $this->getMessage();
66
67 if (!empty($this->args['callback'])) {
68 $content = call_user_func($this->args['callback'], $this);
69 } else {
70 $content = $this->content;
71
72 //#1. Check if content is restricted for current user
73 if (in_array('all', $hide) || count(array_intersect($user, $hide))) {
74 $content = '';
75 }
76
77 //#2. Check if content is limited for current user
78 if (in_array('all', $limit) || count(array_intersect($user, $limit))) {
79 $content = do_shortcode($msg);
80 }
81
82 //#3. Check if content is allosed for current user
83 if (count(array_intersect($user, $show))) {
84 $content = $this->content;
85 }
86 }
87
88 return $content;
89 }
90
91 /**
92 *
93 * @return type
94 */
95 public function getAccess($type) {
96 $access = (isset($this->args[$type]) ? $this->args[$type] : null);
97
98 return array_map('trim', explode(',', $access));
99 }
100
101 /**
102 *
103 * @return type
104 */
105 public function getMessage() {
106 return isset($this->args['message']) ? $this->args['message'] : null;
107 }
108
109 /**
110 *
111 * @return type
112 */
113 public function getArgs() {
114 return $this->args;
115 }
116
117 /**
118 *
119 * @return type
120 */
121 public function getContent() {
122 return $this->content;
123 }
124
125 }