# user-access-manager/trunk/src/Controller/Frontend/Authentication/ShortCodeController.php

User Access Manager, version trunk. 81 lines.

- Page: https://pluginprobe.com/plugins/user-access-manager/trunk/code/src/Controller/Frontend/Authentication/ShortCodeController.php
- Raw: https://pluginprobe.com/plugins/user-access-manager/trunk/raw/src/Controller/Frontend/Authentication/ShortCodeController.php
- Modified: 2026-08-06T11:11:24+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/user-access-manager/trunk/code/src/Controller/Frontend/Authentication/ShortCodeController.php#L10-L20`.

```php
<?php

declare(strict_types=1);

namespace UserAccessManager\Controller\Frontend\Authentication;

use UserAccessManager\Config\WordpressConfig;
use UserAccessManager\Controller\Controller;
use UserAccessManager\UserGroup\UserGroupHandler;
use UserAccessManager\UserGroup\UserGroupTypeException;
use UserAccessManager\Wrapper\Php;
use UserAccessManager\Wrapper\Wordpress;

class ShortCodeController extends Controller
{
    use LoginControllerTrait;

    public function __construct(
        Php $php,
        Wordpress $wordpress,
        WordpressConfig $wordpressConfig,
        protected UserGroupHandler $userGroupHandler
    ) {
        parent::__construct($php, $wordpress, $wordpressConfig);
    }

    protected function getWordpress(): Wordpress
    {
        return $this->wordpress;
    }

    public function getLoginFormHtml(): string
    {
        $loginForm = $this->wordpress->isUserLoggedIn() === false ? $this->getIncludeContents('LoginForm.php') : '';

        return $this->wordpress->applyFilters('uam_login_form', $loginForm);
    }

    public function loginFormShortCode(): string
    {
        return $this->getLoginFormHtml();
    }

    public function publicShortCode(mixed $attributes, string $content = ''): string
    {
        return ($this->wordpress->isUserLoggedIn() === false) ? $this->wordpress->doShortCode($content) : '';
    }

    private function getUserGroupsMapFromAttributes(array $attributes): array
    {
        $userGroups = (isset($attributes['group']) === true) ? explode(',', $attributes['group']) : [];
        return array_flip(array_map('trim', $userGroups));
    }

    /**
     * @throws UserGroupTypeException
     */
    public function privateShortCode(array $attributes, string $content = ''): string
    {
        if ($this->wordpress->isUserLoggedIn() === true) {
            $userGroupMap = $this->getUserGroupsMapFromAttributes($attributes);

            if ($userGroupMap === []) {
                return $this->wordpress->doShortCode($content);
            }

            $userUserGroups = $this->userGroupHandler->getUserGroupsForUser();

            foreach ($userUserGroups as $userGroup) {
                if (isset($userGroupMap[$userGroup->getId()])
                    || isset($userGroupMap[$userGroup->getName()])
                ) {
                    return $this->wordpress->doShortCode($content);
                }
            }
        }

        return '';
    }
}

```
