PluginProbe
User Access Manager / trunk
User Access Manager vtrunk
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 trunk, 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