PluginProbe
User Access Manager / 2.1.5
User Access Manager v2.1.5
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
user-access-manager / src / Controller / Frontend / ShortCodeController.php

ShortCodeController.php in User Access Manager 2.1.5, at src/Controller/Frontend/ShortCodeController.php

146 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * ShortCodeController.php
4 *
5 * The ShortCodeController class file.
6 *
7 * PHP versions 5
8 *
9 * @author Alexander Schneider <alexanderschneider85@gmail.com>
10 * @copyright 2008-2017 Alexander Schneider
11 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
12 * @version SVN: $id$
13 * @link http://wordpress.org/extend/plugins/user-access-manager/
14 */
15 namespace UserAccessManager\Controller\Frontend;
16
17 use UserAccessManager\Access\AccessHandler;
18 use UserAccessManager\Config\WordpressConfig;
19 use UserAccessManager\Controller\Controller;
20 use UserAccessManager\Wrapper\Php;
21 use UserAccessManager\Wrapper\Wordpress;
22
23 /**
24 * Class ShortCodeController
25 *
26 * @package UserAccessManager\Controller\Frontend
27 */
28 class ShortCodeController extends Controller
29 {
30 use LoginControllerTrait;
31
32 /**
33 * @var AccessHandler
34 */
35 protected $accessHandler;
36
37 /**
38 * ShortCodeController constructor.
39 *
40 * @param Php $php
41 * @param Wordpress $wordpress
42 * @param WordpressConfig $wordpressConfig
43 * @param AccessHandler $userHandler
44 */
45 public function __construct(
46 Php $php,
47 Wordpress $wordpress,
48 WordpressConfig $wordpressConfig,
49 AccessHandler $userHandler
50 ) {
51 parent::__construct($php, $wordpress, $wordpressConfig);
52 $this->accessHandler = $userHandler;
53 }
54
55 /**
56 * @return Wordpress
57 */
58 protected function getWordpress()
59 {
60 return $this->wordpress;
61 }
62
63 /**
64 * Returns the login bar.
65 *
66 * @return string
67 */
68 public function getLoginFormHtml()
69 {
70 $loginForm = '';
71
72 if ($this->wordpress->isUserLoggedIn() === false) {
73 $loginForm = $this->getIncludeContents('LoginForm.php');
74 }
75
76 return $this->wordpress->applyFilters('uam_login_form', $loginForm);
77 }
78
79 /**
80 * Handles the login form short code.
81 *
82 * @return string
83 */
84 public function loginFormShortCode()
85 {
86 return $this->getLoginFormHtml();
87 }
88
89 /**
90 * Handles the public short code.
91 *
92 * @param array $attributes
93 * @param string $content
94 *
95 * @return string
96 */
97 public function publicShortCode($attributes, $content = '')
98 {
99 return ($this->wordpress->isUserLoggedIn() === false) ? $this->wordpress->doShortCode($content) : '';
100 }
101
102 /**
103 * Returns the user group map from the short code attribute.
104 *
105 * @param array $attributes
106 *
107 * @return array
108 */
109 private function getUserGroupsMapFromAttributes(array $attributes)
110 {
111 $userGroups = (isset($attributes['group']) === true) ? explode(',', $attributes['group']) : [];
112 return (array)array_flip(array_map('trim', $userGroups));
113 }
114
115 /**
116 * Handles the private short code.
117 *
118 * @param array $attributes
119 * @param string $content
120 *
121 * @return string
122 */
123 public function privateShortCode($attributes, $content = '')
124 {
125 if ($this->wordpress->isUserLoggedIn() === true) {
126 $userGroupMap = $this->getUserGroupsMapFromAttributes($attributes);
127
128 if ($userGroupMap === []) {
129 return $this->wordpress->doShortCode($content);
130 }
131
132 $userUserGroups = $this->accessHandler->getUserGroupsForUser();
133
134 foreach ($userUserGroups as $userGroup) {
135 if (isset($userGroupMap[$userGroup->getId()])
136 || isset($userGroupMap[$userGroup->getName()])
137 ) {
138 return $this->wordpress->doShortCode($content);
139 }
140 }
141 }
142
143 return '';
144 }
145 }
146