PluginProbe
User Access Manager / 2.1.3
User Access Manager v2.1.3
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.3, at src/Controller/Frontend/ShortCodeController.php

138 lines 3.5 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 * Returns the login bar.
57 *
58 * @return string
59 */
60 public function getLoginFormHtml()
61 {
62 $loginForm = '';
63
64 if ($this->wordpress->isUserLoggedIn() === false) {
65 $loginForm = $this->getIncludeContents('LoginForm.php');
66 }
67
68 return $this->wordpress->applyFilters('uam_login_form', $loginForm);
69 }
70
71 /**
72 * Handles the login form short code.
73 *
74 * @return string
75 */
76 public function loginFormShortCode()
77 {
78 return $this->getLoginFormHtml();
79 }
80
81 /**
82 * Handles the public short code.
83 *
84 * @param array $attributes
85 * @param string $content
86 *
87 * @return string
88 */
89 public function publicShortCode($attributes, $content = '')
90 {
91 return ($this->wordpress->isUserLoggedIn() === false) ? $this->wordpress->doShortCode($content) : '';
92 }
93
94 /**
95 * Returns the user group map from the short code attribute.
96 *
97 * @param array $attributes
98 *
99 * @return array
100 */
101 private function getUserGroupsMapFromAttributes(array $attributes)
102 {
103 $userGroups = (isset($attributes['group']) === true) ? explode(',', $attributes['group']) : [];
104 return (array)array_flip(array_map('trim', $userGroups));
105 }
106
107 /**
108 * Handles the private short code.
109 *
110 * @param array $attributes
111 * @param string $content
112 *
113 * @return string
114 */
115 public function privateShortCode($attributes, $content = '')
116 {
117 if ($this->wordpress->isUserLoggedIn() === true) {
118 $userGroupMap = $this->getUserGroupsMapFromAttributes($attributes);
119
120 if ($userGroupMap === []) {
121 return $this->wordpress->doShortCode($content);
122 }
123
124 $userUserGroups = $this->accessHandler->getUserGroupsForUser();
125
126 foreach ($userUserGroups as $userGroup) {
127 if (isset($userGroupMap[$userGroup->getId()])
128 || isset($userGroupMap[$userGroup->getName()])
129 ) {
130 return $this->wordpress->doShortCode($content);
131 }
132 }
133 }
134
135 return '';
136 }
137 }
138