Вход Регистрация
Файл: app/Http/Controllers/Forum/ActiveController.php
Строк: 60
<?php

declare(strict_types=1);

namespace 
AppHttpControllersForum;

use 
AppHttpControllersController;
use 
AppModelsPost;
use 
AppModelsTopic;
use 
AppModelsUser;
use 
IlluminateHttpJsonResponse;
use 
IlluminateViewView;

class 
ActiveController extends Controller
{
    public ?
User $user;

    
/**
     * Конструктор
     */
    
public function __construct()
    {
        
$this->middleware(function ($request, $next) {
            
$login = $request->input('user', getUser('login'));
            
$this->user = getUserByLogin($login);

            if (! 
$this->user) {
                
abort(404, __('validator.user'));
            }

            return 
$next($request);
        });
    }

    
/**
     * Вывод тем
     */
    
public function topics(): View
    
{
        
$user = $this->user;

        
$topics = Topic::query()
            ->
where('user_id', $user->id)
            ->
orderByDesc('updated_at')
            ->
with('forum', 'user', 'lastPost.user')
            ->
paginate(setting('forumtem'))
            ->
appends(['user' => $user->login]);

        return 
view('forums/active_topics', compact('topics', 'user'));
    }

    
/**
     * Вывод сообщений
     */
    
public function posts(): View
    
{
        
$user = $this->user;

        
$posts = Post::query()
            ->
where('user_id', $user->id)
            ->
orderByDesc('created_at')
            ->
with('topic', 'user')
            ->
paginate(setting('forumpost'))
            ->
appends(['user' => $user->login]);

        return 
view('forums/active_posts', compact('posts', 'user'));
    }

    
/**
     * Удаление сообщений
     */
    
public function destroy(int $id): JsonResponse
    
{
        if (! 
isAdmin()) {
            return 
response()->json([
                
'success' => false,
                
'message' => __('forums.posts_deleted_moderators'),
            ]);
        }

        
$post = Post::query()
            ->
where('id', $id)
            ->
with('topic.forum')
            ->
first();

        if (! 
$post) {
            return 
response()->json([
                
'success' => false,
                
'message' => __('forums.post_not_exist'),
            ]);
        }

        
$post->delete();
        
$post->topic->decrement('count_posts');
        
$post->topic->forum->decrement('count_posts');

        return 
response()->json([
            
'success' => true,
            
'message' => __('main.record_deleted_success'),
        ]);
    }
}
Онлайн: 0
Реклама