Вход Регистрация
Файл: library/XenForo/ViewPublic/Helper/User.php
Строк: 56
<?php

class XenForo_ViewPublic_Helper_User
{
    
/**
     * Generates left and top CSS positions for a user avatar to be cropped within .avatarCropper
     *
     * @param array $user Must contain avatar_width, avatar_height, avatar_crop_x and avatar_crop_y keys
     *
     * @return array (top: Xpx; top: Ypx)
     */
    
public static function getAvatarCropCss(array $user)
    {
        
$largeSize 192;

        if (
$user['avatar_width'])
        {
            if (
$user['avatar_width'] >= $largeSize || $user['avatar_height'] >= $largeSize)
            {
                if (
$user['avatar_width'] > $user['avatar_height'])
                {
                    
// landscape
                    
$ratio = -$user['avatar_height'] / 96;
                    
$left max($user['avatar_crop_x'] * $ratio$largeSize $user['avatar_width']);
                    return array(
                        
'left' => $left 'px',
                        
'top' => max(0, ($largeSize $user['avatar_height']) / 2) . 'px'
                    
);
                }
                else if (
$user['avatar_width'] < $user['avatar_height'])
                {
                    
// portrait
                    
$ratio = -$user['avatar_width'] / 96;
                    
$top max($user['avatar_crop_y'] * $ratio$largeSize $user['avatar_height']);
                    return array(
                        
'left' => max(0, ($largeSize $user['avatar_width']) / 2) . 'px',
                        
'top' => $top 'px'
                    
);
                }
            }
            else
            {
                
// center small image
                
return array(
                    
'left' => ($largeSize $user['avatar_width']) / 'px',
                    
'top' => ($largeSize $user['avatar_height']) / 'px'
                
);
            }
        }

        return array(
'left' => '0px''top' => '0px');
    }

    
/**
     * Gets the HTML value of the user field.
     *
     * @param array $field
     * @param mixed $value Value of the field; if null, pulls from field_value in field
     */
    
public static function getUserFieldValueHtml(array $field$value null)
    {
        if (
$value === null && isset($field['field_value']))
        {
            
$value $field['field_value'];
        }

        if (
$value === '' || $value === null)
        {
            return 
'';
        }

        
$multiChoice false;
        
$choice '';

        switch (
$field['field_type'])
        {
            case 
'radio':
            case 
'select':
                
$choice $value;
                
$value = new XenForo_Phrase("user_field_$field[field_id]_choice_$value");
                
$value->setPhraseNameOnInvalid(false);
                break;

            case 
'checkbox':
            case 
'multiselect':
                
$multiChoice true;
                if (!
is_array($value) || count($value) == 0)
                {
                    return 
'';
                }

                
$newValues = array();
                foreach (
$value AS $id => $choice)
                {
                    
$phrase = new XenForo_Phrase("user_field_$field[field_id]_choice_$choice");
                    
$phrase->setPhraseNameOnInvalid(false);

                    
$newValues[$choice] = $phrase;
                }
                
$value $newValues;
                break;

            case 
'textbox':
            case 
'textarea':
            default:
                
$value nl2br(htmlspecialchars(XenForo_Helper_String::censorString($value)));
        }

        if (!empty(
$field['display_template']))
        {
            if (
$multiChoice && is_array($value))
            {
                foreach (
$value AS $choice => &$thisValue)
                {
                    
$thisValue strtr($field['display_template'], array(
                        
'{$fieldId}' => $field['field_id'],
                        
'{$value}' => $thisValue,
                        
'{$valueUrl}' => urlencode($thisValue),
                        
'{$choice}' => $choice,
                    ));
                }
            }
            else
            {
                
$value strtr($field['display_template'], array(
                    
'{$fieldId}' => $field['field_id'],
                    
'{$value}' => $value,
                    
'{$valueUrl}' => urlencode($value),
                    
'{$choice}' => $choice,
                ));
            }
        }

        return 
$value;
    }

    
/**
     * Add user field HTML keys to the given list of fields.
     *
     * @param XenForo_View $view
     * @param array $fields
     * @param array $values Field values; pulls from field_value in fields if not specified here
     */
    
public static function addUserFieldsValueHtml(XenForo_View $view, array $fields, array $values = array())
    {
        foreach (
$fields AS &$field)
        {
            
$field['fieldValueHtml'] = self::getUserFieldValueHtml(
                
$field,
                isset(
$values[$field['field_id']]) ? $values[$field['field_id']] : null
            
);
        }

        return 
$fields;
    }
}
Онлайн: 2
Реклама