2016-10-07 02:41:04 +00:00
|
|
|
<?php
|
2016-12-16 20:49:07 +00:00
|
|
|
namespace AzuraCast;
|
2016-10-07 02:41:04 +00:00
|
|
|
|
2017-05-21 04:27:34 +00:00
|
|
|
use Entity;
|
2016-10-07 02:41:04 +00:00
|
|
|
|
|
|
|
class Customization
|
|
|
|
{
|
2017-07-19 00:09:29 +00:00
|
|
|
/** @var array */
|
|
|
|
protected $app_settings;
|
2016-10-07 02:41:04 +00:00
|
|
|
|
2017-05-21 04:27:34 +00:00
|
|
|
/** @var Entity\User|null */
|
2016-10-07 02:41:04 +00:00
|
|
|
protected $user;
|
|
|
|
|
2017-07-19 00:09:29 +00:00
|
|
|
/** @var Entity\Repository\SettingsRepository */
|
|
|
|
protected $settings_repo;
|
2016-10-07 02:41:04 +00:00
|
|
|
|
2017-07-19 00:09:29 +00:00
|
|
|
public function __construct($app_settings, $user, $settings_repo)
|
2016-10-07 02:41:04 +00:00
|
|
|
{
|
2017-07-19 00:09:29 +00:00
|
|
|
$this->app_settings = $app_settings;
|
|
|
|
$this->user = $user;
|
|
|
|
$this->settings_repo = $settings_repo;
|
2016-10-07 02:41:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the user's custom time zone or the system default.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getTimeZone()
|
|
|
|
{
|
2017-08-17 18:28:48 +00:00
|
|
|
if ($this->user !== null && !empty($this->user->getTimezone())) {
|
|
|
|
return $this->user->getTimezone();
|
2017-01-24 00:35:16 +00:00
|
|
|
} else {
|
2016-10-07 02:41:04 +00:00
|
|
|
return date_default_timezone_get();
|
2017-01-24 00:35:16 +00:00
|
|
|
}
|
2016-10-07 02:41:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the user-customized, browser-specified or system default locale.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getLocale()
|
|
|
|
{
|
|
|
|
$locale = null;
|
2017-07-19 00:09:29 +00:00
|
|
|
$supported_locales = $this->app_settings['locale']['supported'];
|
2016-10-07 02:41:04 +00:00
|
|
|
|
|
|
|
// Prefer user-based profile locale.
|
2017-08-17 18:28:48 +00:00
|
|
|
if ($this->user !== null && !empty($this->user->getLocale()) && $this->user->getLocale() !== 'default') {
|
|
|
|
if (isset($supported_locales[$this->user->getLocale()])) {
|
|
|
|
$locale = $this->user->getLocale();
|
2017-01-24 00:35:16 +00:00
|
|
|
}
|
2016-10-07 02:41:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Attempt to load from browser headers.
|
2017-01-24 00:35:16 +00:00
|
|
|
if (!$locale) {
|
2016-10-07 02:41:04 +00:00
|
|
|
$browser_locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
|
|
|
|
2017-01-24 00:35:16 +00:00
|
|
|
foreach ($supported_locales as $lang_code => $lang_name) {
|
|
|
|
if (strcmp(substr($browser_locale, 0, 2), substr($lang_code, 0, 2)) == 0) {
|
2016-10-07 02:41:04 +00:00
|
|
|
$locale = $lang_code;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Default to system option.
|
2017-01-24 00:35:16 +00:00
|
|
|
if (!$locale) {
|
2017-07-19 00:09:29 +00:00
|
|
|
$locale = $this->app_settings['locale']['default'];
|
2017-01-24 00:35:16 +00:00
|
|
|
}
|
2016-10-07 02:41:04 +00:00
|
|
|
|
|
|
|
return $locale;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the user-customized or system default theme.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getTheme()
|
|
|
|
{
|
2017-08-17 18:28:48 +00:00
|
|
|
if ($this->user !== null && !empty($this->user->getTheme())) {
|
2017-07-19 00:09:29 +00:00
|
|
|
$available_themes = $this->app_settings['themes']['available'];
|
2017-08-17 18:28:48 +00:00
|
|
|
if (isset($available_themes[$this->user->getTheme()])) {
|
|
|
|
return $this->user->getTheme();
|
2017-01-24 00:35:16 +00:00
|
|
|
}
|
2016-10-07 02:41:04 +00:00
|
|
|
}
|
|
|
|
|
2017-07-19 00:09:29 +00:00
|
|
|
return $this->app_settings['themes']['default'];
|
2016-10-07 02:41:04 +00:00
|
|
|
}
|
2017-05-21 04:27:34 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the instance name for this AzuraCast instance.
|
|
|
|
*
|
|
|
|
* @return string|null
|
|
|
|
*/
|
|
|
|
public function getInstanceName()
|
|
|
|
{
|
|
|
|
static $instance_name;
|
|
|
|
|
|
|
|
if ($instance_name === null) {
|
2017-07-19 00:09:29 +00:00
|
|
|
$instance_name = $this->settings_repo->getSetting('instance_name', '');
|
2017-05-21 04:27:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return $instance_name;
|
|
|
|
}
|
2016-10-07 02:41:04 +00:00
|
|
|
}
|