Вход Регистрация
Файл: system/src/Users/UserMutators.php
Строк: 166
<?php

/**
 * This file is part of JohnCMS Content Management System.
 *
 * @copyright JohnCMS Community
 * @license   https://opensource.org/licenses/GPL-3.0 GPL-3.0
 * @link      https://johncms.com JohnCMS Project
 */

declare(strict_types=1);

namespace 
JohncmsUsers;

use 
CarbonCarbon;
use 
JohncmsSystemi18nTranslator;
use 
JohncmsSystemLegacyTools;

trait 
UserMutators
{
    
/**
     * @var array Упрощенный массив банов для обратной совместимости
     */
    
private $ban_list = [];

    
/**
     * @var Ban Баны пользователя
     */
    
private $active_bans = [];

    
/**
     * @param string $value
     * @return string
     */
    
public function getBrowserAttribute(string $value): string
    
{
        return 
htmlspecialchars($value);
    }

    
/**
     * Определяем пользователь онлайн или нет
     *
     * @return bool
     */
    
public function getIsOnlineAttribute(): bool
    
{
        return 
time() <= $this->lastdate 300;
    }

    
/**
     * Название должности пользователя
     *
     * @return string
     */
    
public function getRightsNameAttribute(): string
    
{
        
$user_rights_names = [
            
=> d__('system''Forum moderator'),
            
=> d__('system''Download moderator'),
            
=> d__('system''Library moderator'),
            
=> d__('system''Super moderator'),
            
=> d__('system''Administrator'),
            
=> d__('system''Supervisor'),
        ];

        return 
array_key_exists($this->rights$user_rights_names) ? $user_rights_names[$this->rights] : '';
    }

    
/**
     * Ссылка на страницу профиля пользователя
     *
     * @return string
     */
    
public function getProfileUrlAttribute(): string
    
{
        return 
'/profile/?user=' $this->id;
    }

    
/**
     * Ссылка на страницу поиска по IP
     *
     * @return string
     */
    
public function getSearchIpUrlAttribute(): string
    
{
        return 
'/admin/search_ip/?ip=' $this->ip;
    }

    
/**
     * Ссылка на страницу whois IP
     *
     * @return string
     */
    
public function getWhoisIpUrlAttribute(): string
    
{
        return 
'/admin/ip_whois/?ip=' $this->ip;
    }

    
/**
     * Ссылка на страницу поиска по IP за прокси
     *
     * @return string
     */
    
public function getSearchIpViaProxyUrlAttribute(): string
    
{
        return ! empty(
$this->ip_via_proxy) ? '/admin/search_ip/?ip=' $this->ip_via_proxy '';
    }

    
/**
     * Ссылка на страницу whois IP за прокси
     *
     * @return string
     */
    
public function getWhoisIpViaProxyUrlAttribute(): string
    
{
        return ! empty(
$this->ip_via_proxy) ? '/admin/ip_whois/?ip=' $this->ip_via_proxy '';
    }

    
/**
     * Проферка валидности пользователя
     *
     * @return bool
     */
    
public function getIsValidAttribute(): bool
    
{
        return (
$this->id && $this->preg);
    }

    
/**
     * Получаем время последнего визита
     *
     * @return string
     */
    
public function getLastVisitAttribute(): string
    
{
        
/** @var Translator $translator */
        
$translator di(Translator::class);
        return 
$this->is_online '' Carbon::createFromTimestampUTC($this->lastdate)
            ->
locale($translator->getLocale())
            ->
diffForHumans(['join' => false'parts' => 2]);
    }

    
/**
     * У пользователя день рождения?
     *
     * @return bool
     */
    
public function getIsBirthdayAttribute(): bool
    
{
        return (
$this->dayb === date('j') && $this->monthb === date('n'));
    }

    
/**
     * День рождения пользователя
     *
     * @return string
     */
    
public function getBirthdayDateAttribute(): string
    
{
        return (empty(
$this->dayb) ? '' sprintf('%02d'$this->dayb) . '.' sprintf('%02d'$this->monthb) . '.' $this->yearofbirth);
    }

    
/**
     * Местоположение пользователя
     *
     * @return string
     */
    
public function getDisplayPlaceAttribute(): string
    
{
        
/** @var Tools $tools */
        
$tools di(Tools::class);
        return 
$tools->displayPlace($this->place);
    }

    
/**
     * Обработанное поле О себе.
     *
     * @return string
     */
    
public function getFormattedAboutAttribute(): string
    
{
        
/** @var Tools $tools */
        
$tools di(Tools::class);
        return 
$tools->smilies($tools->checkout($this->about11));
    }

    
/**
     * Обработанное поле сайт
     *
     * @return string
     */
    
public function getWebsiteAttribute(): string
    
{
        
/** @var Tools $tools */
        
$tools di(Tools::class);
        return 
$tools->checkout($this->www01);
    }

    
/**
     * Фотография польхователя
     *
     * @return array
     */
    
public function getPhotoAttribute(): array
    {
        
$photo = [];
        if (
file_exists(UPLOAD_PATH 'users/photo/' $this->id '_small.jpg')) {
            
$photo['photo'] = '/upload/users/photo/' $this->id '.jpg';
            
$photo['photo_preview'] = '/upload/users/photo/' $this->id '_small.jpg';
        }
        return 
$photo;
    }

    
/**
     * Получаем баны пользоваетля
     *
     * @return array
     */
    
public function getBanAttribute(): array
    {
        if (! empty(
$this->active_bans)) {
            return 
$this->ban_list;
        }

        
$this->ban_list = [];
        
/** @var Ban $bans */
        
$bans $this->bans();
        
$this->active_bans $bans->active()->get();
        if (
$this->active_bans->count()) {
            foreach (
$this->active_bans as $ban) {
                
/** @var Ban $ban */
                
$this->ban_list[$ban->ban_type] = 1;
            }
        }

        return 
$this->ban_list;
    }
}
Онлайн: 0
Реклама