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

class XenForo_Helper_UserChangeLog
{
    protected 
$_fieldInfo = array(
        
'username'            => 'user_name',
        
'email'               => 'email_address',
        
'gender'              => array('gender''_prepareGender'),
        
'custom_title'        => 'custom_title',
        
'timezone'            => array('time_zone''_prepareTimeZone'),
        
'visible'             => array('show_online_status''_prepareYesNoField'),
        
'user_group_id'       => 'user_group',
        
'secondary_group_ids' => 'secondary_user_groups',
        
'avatar_date'         => array('avatar_date''_prepareDateField'),
        
'register_date'       => array('joined''_prepareDateField'),
        
'gravatar'            => 'gravatar',
        
'user_state'          => array('user_state''_prepareUserState'),
        
'is_moderator'        => array('moderator''_prepareYesNoField'),
        
'is_admin'            => array('administrator''_prepareYesNoField'),
        
'is_staff'            => array('staff_member''_prepareYesNoField'),
        
'is_banned'           => array('banned''_prepareYesNoField'),

        
'dob_day'       => 'dob_day',
        
'dob_month'     => 'dob_month',
        
'dob_year'      => 'dob_year',
        
'signature'     => 'signature',
        
'homepage'      => 'home_page',
        
'location'      => 'location',
        
'occupation'    => 'occupation',
        
'about'         => 'about_you',
        
'custom_fields' => 'custom_user_fields',

        
'show_dob_year'          => array('show_year_of_birth''_prepareYesNoField'),
        
'show_dob_date'          => array('show_day_and_month_of_birth''_prepareYesNoField'),
        
'content_show_signature' => array('show_signatures_with_messages''_prepareYesNoField'),
        
'receive_admin_email'    => array('receive_site_mailings''_prepareYesNoField'),
        
'email_on_conversation'  => array('email_conversation_notifications''_prepareYesNoField'),
        
'is_discouraged'         => array('discouraged''_prepareYesNoField'),
        
'enable_rte'             => array('enable_rte''_prepareYesNoField'),
        
'enable_flash_uploader'  => array('enable_flash_uploader''_prepareYesNoField'),
        
'default_watch_state'    => array('watch_threads_when_creating_or_replying''_prepareWatchState'),

        
'allow_view_profile'               => array('view_your_details_on_your_profile_page''_preparePrivacyField'),
        
'allow_post_profile'               => array('post_messages_on_your_profile_page''_preparePrivacyField'),
        
'allow_send_personal_conversation' => array('start_conversations_with_you''_preparePrivacyField'),
        
'allow_view_identities'            => array('view_your_identities''_preparePrivacyField'),
        
'allow_receive_news_feed'          => array('receive_your_news_feed''_preparePrivacyField'),

        
'scheme_class' => 'authentication_scheme_class',
        
'data'         => 'password'// special case!
    
);

    
/**
     * Cache of usergroupId => title
     *
     * @var array
     */
    
protected $_userGroups null;

    
/**
     * Cache of custom user fields info
     *
     * @var array
     */
    
protected $_customFields null;

    protected 
$_userFieldModel null;

    public function 
prepareField(array $field)
    {
        
$colonPosition strpos($field['field'], ':');
        if (
$colonPosition !== false)
        {
            return 
$this->_prepareCustomField(substr($field['field'], $colonPosition 1), $field);
        }
        else
        {
            return 
$this->_prepareField($field);
        }
    }

    
/**
     * @return XenForo_Model_UserField
     */
    
protected function _getUserFieldModel()
    {
        if (
$this->_userFieldModel === null)
        {
            
$this->_userFieldModel XenForo_Model::create('XenForo_Model_UserField');
        }

        return 
$this->_userFieldModel;
    }

    protected function 
_getCustomFieldInfo()
    {
        if (
$this->_customFields === null)
        {
            
$this->_customFields $this->_getUserFieldModel()->getUserFields();
        }

        return 
$this->_customFields;
    }

    protected function 
_prepareCustomFieldArrayValue(array $fieldChoices$fieldChoice)
    {
        
$value = array();

        if (
$fieldChoice && is_array($fieldChoice))
        {
            foreach (
$fieldChoice AS $choice)
            {
                
$value[] = isset($fieldChoices[$choice]) ? $fieldChoices[$choice] : $choice;
            }
        }

        return 
implode(', '$value);
    }

    protected function 
_prepareCustomField($fieldName, array $field)
    {
        
$userFieldInfo $this->_getCustomFieldInfo();

        if (isset(
$userFieldInfo[$fieldName]))
        {
            
$fieldInfo $userFieldInfo[$fieldName];

            if (
$fieldInfo['field_type'] == 'checkbox' || $fieldInfo['field_type'] == 'multiselect')
            {
                
$fieldChoices = @unserialize($fieldInfo['field_choices']);

                
$field['old_value'] = $this->_prepareCustomFieldArrayValue($fieldChoices, @unserialize($field['old_value']));
                
$field['new_value'] = $this->_prepareCustomFieldArrayValue($fieldChoices, @unserialize($field['new_value']));
            }
            else if (
$fieldInfo['field_type'] == 'radio' || $fieldInfo['field_type'] == 'select')
            {
                
$fieldChoices = @unserialize($fieldInfo['field_choices']);

                
$field['old_value'] = (empty($field['old_value']) ? '' $fieldChoices[$field['old_value']]);
                
$field['new_value'] = (empty($field['new_value']) ? '' $fieldChoices[$field['new_value']]);
            }

            
$field['name'] = new XenForo_Phrase('user_field_' $fieldName);
        }
        else
        {
            
$field['name'] = $fieldName;
        }

        return 
$field;
    }

    protected function 
_getFieldPhraseName($fieldName)
    {
        if (isset(
$this->_fieldInfo[$fieldName]))
        {
            if (
is_array($this->_fieldInfo[$fieldName]))
            {
                return 
$this->_fieldInfo[$fieldName][0];
            }
            else
            {
                return 
$this->_fieldInfo[$fieldName];
            }
        }
        else
        {
            return 
$fieldName;
        }
    }

    protected function 
_prepareField(array $field)
    {
        if (!isset(
$field['name']))
        {
            
$field['name'] = new XenForo_Phrase($this->_getFieldPhraseName($field['field']));
        }

        
$methodName $this->_getPrepareMethodName($field['field']);
        if (
method_exists($this$methodName))
        {
            
$field['old_value'] = call_user_func(array($this$methodName), $field['old_value']);
            
$field['new_value'] = call_user_func(array($this$methodName), $field['new_value']);
        }

        return 
$field;
    }

    protected function 
_getPrepareMethodName($fieldName)
    {
        if (isset(
$this->_fieldInfo[$fieldName]) && is_array($this->_fieldInfo[$fieldName]))
        {
            return 
$this->_fieldInfo[$fieldName][1];
        }
        else
        {
            return 
'_prepareField' str_replace('_'''$fieldName);
        }
    }

    protected function 
_prepareFieldUserGroupId($value)
    {
        if (
$this->_userGroups === null)
        {
            
$this->_userGroups XenForo_Application::getDb()->fetchPairs('SELECT user_group_id, title FROM xf_user_group');
        }

        if (isset(
$this->_userGroups[$value]))
        {
            return 
$this->_userGroups[$value];
        }
        else
        {
            return 
$value;
        }
    }

    protected function 
_prepareFieldSecondaryGroupIds($value)
    {
        
$ids preg_split('/,/'$value, -1PREG_SPLIT_NO_EMPTY);

        foreach (
$ids AS &$id)
        {
            
$id $this->_prepareFieldUserGroupId($id);
        }

        return 
implode(', '$ids);
    }

    protected function 
_prepareTimeZone($value)
    {
        
$tzs XenForo_Helper_TimeZone::getTimeZones();
        return isset(
$tzs[$value]) ? $tzs[$value] : $value;
    }

    protected function 
_prepareGender($value)
    {
        switch (
$value)
        {
            case 
'male': return new XenForo_Phrase('male');
            case 
'female': return new XenForo_Phrase('female');
            case 
'': return new XenForo_Phrase('unspecified');

            default: return 
$value;
        }
    }

    protected function 
_prepareUserState($value)
    {
        switch (
$value)
        {
            case 
'valid': return new XenForo_Phrase('valid');
            case 
'email_confirm': return new XenForo_Phrase('awaiting_email_confirmation');
            case 
'email_confirm_edit': return new XenForo_Phrase('awaiting_email_confirmation_from_edit');
            case 
'email_bounce': return new XenForo_Phrase('email_invalid_bounced');
            case 
'moderated': return new XenForo_Phrase('awaiting_approval');

            default: return 
$value;
        }
    }

    protected function 
_prepareWatchState($value)
    {
        switch (
$value)
        {
            case 
'watch_no_email': return new XenForo_Phrase('yes');
            case 
'watch_email': return new XenForo_Phrase('yes_with_email');
            case 
'': return new XenForo_Phrase('no');

            default: return 
$value;
        }
    }

    protected function 
_preparePrivacyField($value)
    {
        switch (
$value)
        {
            case 
'everyone': return new XenForo_Phrase('all_visitors');
            case 
'members': return new XenForo_Phrase('members_only');
            case 
'followed': return new XenForo_Phrase('followed_members_only');
            case 
'none': return new XenForo_Phrase('nobody');

            default: return 
$value;
        }
    }

    protected function 
_prepareDateField($value)
    {
        if (
$value)
        {
            return 
XenForo_Locale::date($value);
        }
        else
        {
            return 
'';
        }
    }

    protected function 
_prepareYesNoField($value)
    {
        return new 
XenForo_Phrase($value 'yes' 'no');
    }
}
Онлайн: 3
Реклама