mirror of
https://github.com/flarum/framework.git
synced 2025-02-19 18:34:00 +08:00
123 lines
3.3 KiB
PHP
123 lines
3.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Flarum.
|
|
*
|
|
* (c) Toby Zerner <toby.zerner@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Flarum\Api\Serializer;
|
|
|
|
use Flarum\Forum\UrlGenerator;
|
|
use Flarum\Foundation\Application;
|
|
use Flarum\Settings\SettingsRepositoryInterface;
|
|
|
|
class ForumSerializer extends AbstractSerializer
|
|
{
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected $type = 'forums';
|
|
|
|
/**
|
|
* @var Application
|
|
*/
|
|
protected $app;
|
|
|
|
/**
|
|
* @var SettingsRepositoryInterface
|
|
*/
|
|
protected $settings;
|
|
|
|
/**
|
|
* @var UrlGenerator
|
|
*/
|
|
protected $url;
|
|
|
|
/**
|
|
* @param Application $app
|
|
* @param SettingsRepositoryInterface $settings
|
|
* @param UrlGenerator $url
|
|
*/
|
|
public function __construct(Application $app, SettingsRepositoryInterface $settings, UrlGenerator $url)
|
|
{
|
|
$this->app = $app;
|
|
$this->settings = $settings;
|
|
$this->url = $url;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getId($model)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function getDefaultAttributes($model)
|
|
{
|
|
$attributes = [
|
|
'title' => $this->settings->get('forum_title'),
|
|
'description' => $this->settings->get('forum_description'),
|
|
'showLanguageSelector' => (bool) $this->settings->get('show_language_selector', true),
|
|
'baseUrl' => $url = $this->app->url(),
|
|
'basePath' => parse_url($url, PHP_URL_PATH) ?: '',
|
|
'debug' => $this->app->inDebugMode(),
|
|
'apiUrl' => $this->app->url('api'),
|
|
'welcomeTitle' => $this->settings->get('welcome_title'),
|
|
'welcomeMessage' => $this->settings->get('welcome_message'),
|
|
'themePrimaryColor' => $this->settings->get('theme_primary_color'),
|
|
'themeSecondaryColor' => $this->settings->get('theme_secondary_color'),
|
|
'logoUrl' => $this->getLogoUrl(),
|
|
'faviconUrl' => $this->getFaviconUrl(),
|
|
'headerHtml' => $this->settings->get('custom_header'),
|
|
'allowSignUp' => (bool) $this->settings->get('allow_sign_up'),
|
|
'defaultRoute' => $this->settings->get('default_route'),
|
|
'canViewDiscussions' => $this->actor->can('viewDiscussions'),
|
|
'canStartDiscussion' => $this->actor->can('startDiscussion'),
|
|
'canViewUserList' => $this->actor->can('viewUserList')
|
|
];
|
|
|
|
if ($this->actor->can('administrate')) {
|
|
$attributes['adminUrl'] = $this->app->url('admin');
|
|
$attributes['version'] = $this->app->version();
|
|
}
|
|
|
|
return $attributes;
|
|
}
|
|
|
|
/**
|
|
* @return \Tobscure\JsonApi\Relationship
|
|
*/
|
|
protected function groups($model)
|
|
{
|
|
return $this->hasMany($model, 'Flarum\Api\Serializer\GroupSerializer');
|
|
}
|
|
|
|
/**
|
|
* @return null|string
|
|
*/
|
|
protected function getLogoUrl()
|
|
{
|
|
$logoPath = $this->settings->get('logo_path');
|
|
|
|
return $logoPath ? $this->url->toPath('assets/'.$logoPath) : null;
|
|
}
|
|
|
|
/**
|
|
* @return null|string
|
|
*/
|
|
protected function getFaviconUrl()
|
|
{
|
|
$faviconPath = $this->settings->get('favicon_path');
|
|
|
|
return $faviconPath ? $this->url->toPath('assets/'.$faviconPath) : null;
|
|
}
|
|
}
|