Просмотр файла libarea-0.9/app/Controllers/User/UserController.php

Размер файла: 5.38Kb
<?php

declare(strict_types=1);

namespace App\Controllers\User;

use Hleb\Static\Request;
use Hleb\Base\Controller;
use App\Models\User\UserModel;
use App\Models\{PublicationModel, FolderModel};
use Meta, Html;

class UserController extends Controller
{
    protected $limit = 35;

    public function all(): void
    {
        $this->callIndex('all');
    }

    public function new(): void
    {
        $this->callIndex('new');
    }

    /**
     * All users
     * Все пользователи
     *
     * @param [type] $sheet
     * @return void
     */
    function callIndex($sheet)
    {
        $usersCount = UserModel::getUsersAllCount();
        $users      = UserModel::getUsersAll(Html::pageNumber(), $this->limit, $sheet);
        notEmptyOrView404($users);

        $m = [
            'og'    => false,
            'url'   => url('users.' . $sheet),
        ];

        render(
            'user/all',
            [
                'meta'  => Meta::get(__('meta.' . $sheet . '_users'), __('meta.' . $sheet . '_users_desc'), $m),
                'data'  => [
                    'sheet'         => $sheet,
                    'type'          => 'all_users',
                    'pagesCount'    => ceil($usersCount / $this->limit),
                    'pNum'          => Html::pageNumber(),
                    'users'         => $users
                ]
            ]
        );
    }

    /**
     * Member bookmarks page
     * Страница закладок участника
     *
     * @return void
     */
    function favorites()
    {
        $favorites = UserModel::userFavorite();

        $result = [];
        foreach ($favorites as $ind => $row) {
            if ($row['action_type'] == 'post') {
                $row['comment_post_id'] = $row['post_id'];
            }

            $row['post']    = PublicationModel::getPost($row['comment_post_id'], 'id');
            $result[$ind]   = $row;
        }

        render(
            '/user/favorite/all',
            [
                'meta'  => Meta::get(__('app.favorites')),
                'data'  => [
                    'sheet'     => 'favorites',
                    'type'      => 'favorites',
                    'favorites' => $result,
                    'tags'      => FolderModel::get('favorite', $this->container->user()->id()),
                ]
            ]
        );
    }

    /**
     * Participant's folder page (for bookmarks)
     * Страница папок участника (для закладок)
     *
     * @return void
     */
    function folders()
    {
        /** @toDo здесь возможно, ошибка, так как у get() только один параметр */
        $folders = FolderModel::get('favorite', $this->container->user()->id());

        render(
            '/user/favorite/folders',
            [
                'meta'  => Meta::get(__('app.folders')),
                'data'  => [
                    'sheet'     => 'folders',
                    'type'      => 'folders',
                    'folders'   => $folders,
                    'count'     => count($folders),
                ]
            ]
        );
    }

    /**
     * Undocumented function
     *
     * @return void
     */
    public function foldersFavorite()
    {
        render(
            '/user/favorite/all',
            [
                'meta'  => Meta::get(__('app.favorites')),
                'data'  => [
                    'sheet'     => 'favorites',
                    'type'      => 'favorites',
                    'favorites' => UserModel::userFavorite(Request::param('id')->asInt())
                ]
            ]
        );
    }

    /**
     * Member Draft Page
     * Страница черновиков участника
     *
     * @return void
     */
    function drafts()
    {
        render(
            '/user/draft',
            [
                'meta'  => Meta::get(__('app.drafts')),
                'data'  => [
                    'drafts'    => UserModel::userDraftPosts(),
                    'sheet'     => 'drafts',
                    'type'      => 'drafts',
                ]
            ]
        );
    }

    /**
     * User preferences page
     * Страница предпочтений пользователя
     *
     * @return void
     */
    public function subscribed()
    {
        render(
            '/user/favorite/read-subscribed',
            [
                'meta'  => Meta::get(__('app.subscribed')),
                'data'  => [
                    'h1'    => __('app.subscribed') . ' ' . $this->container->user()->login(),
                    'sheet' => 'subscribed',
                    'type'  => 'favorites',
                    'contents' => PublicationModel::getContentListUser('subscribed'),
                ]
            ]
        );
    }

    /**
     * User preferences page
     * Страница предпочтений пользователя
     *
     * @return void
     */
    public function read()
    {
        render(
            '/user/favorite/read-subscribed',
            [
                'meta'  => Meta::get(__('app.i_read')),
                'data'  => [
                    'h1'    => __('app.i_read') . ' ' . $this->container->user()->login(),
                    'sheet' => 'read',
                    'type'  => 'favorites',
                    'contents' => PublicationModel::getContentListUser('read')
                ]
            ]
        );
    }
}