Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Option/PreRegAction.php
<?php

namespace XF\Option;

use function
array_key_exists, is_array;

class
PreRegAction extends AbstractOption
{
    public static function
renderOption(\XF\Entity\Option $option, array $htmlParams)
    {
       
/** @var \XF\Repository\UserGroup $userGroupRepo */
       
$userGroupRepo = \XF::repository('XF:UserGroup');

       
$userGroups = $userGroupRepo->getUserGroupOptionsData(false, 'option');

        return
self::getTemplate('admin:option_template_preRegAction', $option, $htmlParams, [
           
'userGroups' => $userGroups,
        ]);
    }

    public static function
verifyOption(array &$value, \XF\Entity\Option $option)
    {
        if (!
array_key_exists('enabled', $value))
        {
            return
true;
        }

        if (!
array_key_exists('userGroups', $value) || !is_array($value['userGroups']))
        {
           
$option->error(\XF::phrase('you_must_select_at_least_one_group_check_permissions_against'), $option->option_id);
            return
false;
        }

       
sort($value['userGroups'], SORT_NUMERIC);

       
/** @var \XF\Repository\PermissionCombination $permComboRepo */
       
$permComboRepo = \XF::app()->repository('XF:PermissionCombination');
       
$combination = $permComboRepo->getPermissionCombinationOrPlaceholder($value['userGroups']);
        if (!
$combination->exists())
        {
           
$combination->save();
        }

       
$value['permissionCombinationId'] = $combination->permission_combination_id;

        return
true;
    }
}