Вход Регистрация
Файл: app/Models/PaidAdvert.php
Строк: 48
<?php

declare(strict_types=1);

namespace 
AppModels;

use 
IlluminateSupportFacadesCache;

/**
 * Class PaidAdvert
 *
 * @property int id
 * @property string place
 * @property string site
 * @property array names
 * @property string color
 * @property int bold
 * @property int user_id
 * @property int created_at
 * @property int deleted_at
 */
class PaidAdvert extends BaseModel
{
    public const 
TOP_ALL 'top_all';
    public const 
TOP 'top';
    public const 
FORUM 'forum';
    public const 
BOTTOM_ALL 'bottom_all';
    public const 
BOTTOM 'bottom';

    
/**
     * Места размещения
     */
    
public const PLACES = [
        
self::TOP_ALL,
        
self::TOP,
        
self::FORUM,
        
self::BOTTOM_ALL,
        
self::BOTTOM,
    ];

    
/**
     * The attributes that should be cast to native types.
     */
    
protected $casts = [
        
'names' => 'array',
    ];

    
/**
     * Indicates if the model should be timestamped.
     */
    
public $timestamps false;

    
/**
     * The attributes that aren't mass assignable.
     */
    
protected $guarded = [];

    
/**
     * Кэширует ссылки платной рекламы
     *
     * @return array Список ссылок
     */
    
public static function statAdverts(): array
    {
        return 
Cache::remember('paidAdverts'3600, static function () {
            
$data self::query()->where('deleted_at''>'SITETIME)->orderBy('created_at')->get();

            
$links = [];
            if (
$data->isNotEmpty()) {
                foreach (
$data as $val) {
                    
$names check($val->names);

                    
$sites = [];
                    foreach (
$names as $name) {
                        if (
$val->color) {
                            
$name '<span style="color:' $val->color '">' $name '</span>';
                        }

                        
$link '<a href="' $val->site '" target="_blank">' $name '</a>';

                        if (
$val->bold) {
                            
$link '<b>' $link '</b>';
                        }

                        
$sites[] = $link;
                    }

                    
$links[$val->place][] = $sites;
                }
            }

            return 
$links;
        });
    }
}
Онлайн: 0
Реклама