149 lines
3.9 KiB
PHP
149 lines
3.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
namespace In2code\Femanager\Utility;
|
|
|
|
use In2code\Femanager\Domain\Model\User;
|
|
use In2code\Femanager\Domain\Model\UserGroup;
|
|
use TYPO3\CMS\Core\Context\Context;
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
|
|
/**
|
|
* Class FrontendUtility
|
|
*/
|
|
class FrontendUtility extends AbstractUtility
|
|
{
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected static $pluginNames = [
|
|
'tx_femanager_pi1',
|
|
'tx_femanager_pi2'
|
|
];
|
|
|
|
/**
|
|
* Get current pid
|
|
*
|
|
* @return int
|
|
*/
|
|
public static function getCurrentPid(): int
|
|
{
|
|
return (int)self::getTypoScriptFrontendController()->id;
|
|
}
|
|
|
|
/**
|
|
* Get frontend language uid
|
|
*
|
|
* @return int
|
|
*/
|
|
public static function getFrontendLanguageUid(): int
|
|
{
|
|
$languageUid = 0;
|
|
$languageAspect = GeneralUtility::makeInstance(Context::class)->getAspect('language');
|
|
$languageUid = $languageAspect->getId();
|
|
return $languageUid;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public static function getCharset(): string
|
|
{
|
|
return self::getTypoScriptFrontendController()->metaCharset;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
* @codeCoverageIgnore
|
|
*/
|
|
public static function getUriToCurrentPage(): string
|
|
{
|
|
$contentObject = ObjectUtility::getContentObject();
|
|
$configuration = [
|
|
'parameter' => self::getCurrentPid()
|
|
];
|
|
return $contentObject->typoLink_URL($configuration);
|
|
}
|
|
|
|
/**
|
|
* Set object properties from forceValues in TypoScript
|
|
*
|
|
* @param User $user
|
|
* @param array $settings
|
|
* @return User $object
|
|
* @codeCoverageIgnore
|
|
*/
|
|
public static function forceValues(User $user, array $settings)
|
|
{
|
|
foreach ((array)$settings as $field => $config) {
|
|
$config = null;
|
|
if (stristr($field, '.')) {
|
|
continue;
|
|
}
|
|
// value to set
|
|
$value = self::getContentObject()->cObjGetSingle($settings[$field], $settings[$field . '.']);
|
|
self::forceValue($user, $field, $value);
|
|
}
|
|
return $user;
|
|
}
|
|
|
|
/**
|
|
* Set single object property from forceValues in TypoScript
|
|
*
|
|
* @param User $user
|
|
* @param string $field
|
|
* @param any $value
|
|
*/
|
|
public static function forceValue(User $user, string $field, $value): void
|
|
{
|
|
if ($field === 'usergroup') {
|
|
// need objectstorage for usergroup field
|
|
$user->removeAllUsergroups();
|
|
$values = GeneralUtility::trimExplode(',', $value, true);
|
|
$userGroupRepository = self::getUserGroupRepository();
|
|
|
|
foreach ($values as $usergroupUid) {
|
|
/** @var UserGroup $usergroup */
|
|
$usergroup = $userGroupRepository->findByUid($usergroupUid);
|
|
$user->addUsergroup($usergroup);
|
|
}
|
|
} else {
|
|
// set value
|
|
$setterMethod = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $field)));
|
|
if (method_exists($user, $setterMethod)) {
|
|
$user->{$setterMethod}($value);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public static function getControllerName(): string
|
|
{
|
|
$controllerName = '';
|
|
foreach (self::$pluginNames as $pluginName) {
|
|
$variables = GeneralUtility::_GPmerged($pluginName);
|
|
if (!empty($variables['controller'])) {
|
|
$controllerName = $variables['controller'];
|
|
}
|
|
}
|
|
return $controllerName;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public static function getActionName(): string
|
|
{
|
|
$actionName = '';
|
|
foreach (self::$pluginNames as $pluginName) {
|
|
$variables = GeneralUtility::_GPmerged($pluginName);
|
|
if (!empty($variables['action'])) {
|
|
$actionName = $variables['action'];
|
|
}
|
|
}
|
|
return $actionName;
|
|
}
|
|
}
|