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

85 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;
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 = '';
35
36 if ($this->wordpress->isUserLoggedIn() === false) {
37 $loginForm = $this->getIncludeContents('LoginForm.php');
38 }
39
40 return $this->wordpress->applyFilters('uam_login_form', $loginForm);
41 }
42
43 public function loginFormShortCode(): string
44 {
45 return $this->getLoginFormHtml();
46 }
47
48 public function publicShortCode(mixed $attributes, string $content = ''): string
49 {
50 return ($this->wordpress->isUserLoggedIn() === false) ? $this->wordpress->doShortCode($content) : '';
51 }
52
53 private function getUserGroupsMapFromAttributes(array $attributes): array
54 {
55 $userGroups = (isset($attributes['group']) === true) ? explode(',', $attributes['group']) : [];
56 return array_flip(array_map('trim', $userGroups));
57 }
58
59 /**
60 * @throws UserGroupTypeException
61 */
62 public function privateShortCode(array $attributes, string $content = ''): string
63 {
64 if ($this->wordpress->isUserLoggedIn() === true) {
65 $userGroupMap = $this->getUserGroupsMapFromAttributes($attributes);
66
67 if ($userGroupMap === []) {
68 return $this->wordpress->doShortCode($content);
69 }
70
71 $userUserGroups = $this->userGroupHandler->getUserGroupsForUser();
72
73 foreach ($userUserGroups as $userGroup) {
74 if (isset($userGroupMap[$userGroup->getId()])
75 || isset($userGroupMap[$userGroup->getName()])
76 ) {
77 return $this->wordpress->doShortCode($content);
78 }
79 }
80 }
81
82 return '';
83 }
84 }
85