PluginProbe
User Access Manager / 2.3.20
User Access Manager v2.3.20
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 / Authentication / ShortCodeController.php

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

81 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace UserAccessManager\Controller\Frontend\Authentication;
6
7 use UserAccessManager\Config\WordpressConfig;
8 use UserAccessManager\Controller\Controller;
9 use UserAccessManager\UserGroup\UserGroupHandler;
10 use UserAccessManager\UserGroup\UserGroupTypeException;
11 use UserAccessManager\Wrapper\Php;
12 use UserAccessManager\Wrapper\Wordpress;
13
14 class ShortCodeController extends Controller
15 {
16 use LoginControllerTrait;
17
18 public function __construct(
19 Php $php,
20 Wordpress $wordpress,
21 WordpressConfig $wordpressConfig,
22 protected UserGroupHandler $userGroupHandler
23 ) {
24 parent::__construct($php, $wordpress, $wordpressConfig);
25 }
26
27 protected function getWordpress(): Wordpress
28 {
29 return $this->wordpress;
30 }
31
32 public function getLoginFormHtml(): string
33 {
34 $loginForm = $this->wordpress->isUserLoggedIn() === false ? $this->getIncludeContents('LoginForm.php') : '';
35
36 return $this->wordpress->applyFilters('uam_login_form', $loginForm);
37 }
38
39 public function loginFormShortCode(): string
40 {
41 return $this->getLoginFormHtml();
42 }
43
44 public function publicShortCode(mixed $attributes, string $content = ''): string
45 {
46 return ($this->wordpress->isUserLoggedIn() === false) ? $this->wordpress->doShortCode($content) : '';
47 }
48
49 private function getUserGroupsMapFromAttributes(array $attributes): array
50 {
51 $userGroups = (isset($attributes['group']) === true) ? explode(',', $attributes['group']) : [];
52 return array_flip(array_map('trim', $userGroups));
53 }
54
55 /**
56 * @throws UserGroupTypeException
57 */
58 public function privateShortCode(array $attributes, string $content = ''): string
59 {
60 if ($this->wordpress->isUserLoggedIn() === true) {
61 $userGroupMap = $this->getUserGroupsMapFromAttributes($attributes);
62
63 if ($userGroupMap === []) {
64 return $this->wordpress->doShortCode($content);
65 }
66
67 $userUserGroups = $this->userGroupHandler->getUserGroupsForUser();
68
69 foreach ($userUserGroups as $userGroup) {
70 if (isset($userGroupMap[$userGroup->getId()])
71 || isset($userGroupMap[$userGroup->getName()])
72 ) {
73 return $this->wordpress->doShortCode($content);
74 }
75 }
76 }
77
78 return '';
79 }
80 }
81