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

namespace XF\Option;

use function
array_key_exists;

abstract class
AbstractOption
{
   
/**
     * @return \XF\Template\Templater
     */
   
protected static function getTemplater()
    {
        return \
XF::app()->templater();
    }

    protected static function
convertChoicesToTemplaterForm(array $choices)
    {
        return
self::getTemplater()->mergeChoiceOptions([], $choices);
    }

    protected static function
getControlOptions(\XF\Entity\Option $option, array $htmlParams, $value = null)
    {
        return [
           
'name' => $htmlParams['inputName'],
           
'value' => $value === null ? $option->option_value : $value
       
];
    }

    protected static function
getRowOptions(\XF\Entity\Option $option, array $htmlParams)
    {
        return [
           
'label' => $option->title,
           
'hint' => $htmlParams['hintHtml'],
           
'explain' => $htmlParams['explainHtml'],
           
'html' => $htmlParams['listedHtml'],
           
'rowclass' => $htmlParams['rowClass'] ?? ''
       
];
    }

    protected static function
getSelectRow(\XF\Entity\Option $option, array $htmlParams, array $choices, $value = null)
    {
       
$controlOptions = self::getControlOptions($option, $htmlParams, $value);
       
$rowOptions = self::getRowOptions($option, $htmlParams);
       
$choices = self::convertChoicesToTemplaterForm($choices);

        return
self::getTemplater()->formSelectRow($controlOptions, $choices, $rowOptions);
    }

    protected static function
getRadioRow(\XF\Entity\Option $option, array $htmlParams, array $choices, $value = null)
    {
       
$controlOptions = self::getControlOptions($option, $htmlParams, $value);
       
$rowOptions = self::getRowOptions($option, $htmlParams);
       
$choices = self::convertChoicesToTemplaterForm($choices);

        return
self::getTemplater()->formRadioRow($controlOptions, $choices, $rowOptions);
    }

    protected static function
getCheckboxRow(\XF\Entity\Option $option, array $htmlParams, array $choices, $value = null)
    {
       
$controlOptions = self::getControlOptions($option, $htmlParams, $value);
       
$rowOptions = self::getRowOptions($option, $htmlParams);
       
$choices = self::convertChoicesToTemplaterForm($choices);

        return
self::getTemplater()->formCheckBoxRow($controlOptions, $choices, $rowOptions);
    }

    protected static function
getNumberBoxRow(\XF\Entity\Option $option, array $htmlParams, $value = null)
    {
       
$controlOptions = self::getControlOptions($option, $htmlParams, $value);

        foreach ([
'min', 'max', 'step', 'units'] AS $var)
        {
            if (
array_key_exists($var, $htmlParams))
            {
               
$controlOptions[$var] = $htmlParams[$var];
            }
        }

       
$rowOptions = self::getRowOptions($option, $htmlParams);

        return
self::getTemplater()->formNumberBoxRow($controlOptions, $rowOptions);
    }

    protected static function
getTemplate($template, \XF\Entity\Option $option, array $htmlParams, array $extraParams = [])
    {
       
$params = array_merge([
           
'option' => $option,
           
'inputName' => $htmlParams['inputName'],
           
'explainHtml' => $htmlParams['explainHtml'],
           
'hintHtml' => $htmlParams['hintHtml'],
           
'listedHtml' => $htmlParams['listedHtml'],
           
'rowClass' => $htmlParams['rowClass'] ?? ''
       
], $extraParams);

        return
self::getTemplater()->renderTemplate($template, $params);
    }
}