<?php
/**
* @defgroup site Site
* Site-related concerns such as the Site object and version management.
*/
/**
* @file classes/site/Site.php
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class Site
*
* @ingroup site
*
* @see SiteDAO
*
* @brief Describes system-wide site properties.
*/
namespace PKP\site;
use PKP\facades\Locale;
use PKP\i18n\LocaleMetadata;
class Site extends \PKP\core\DataObject
{
/**
* Return associative array of all locales supported by the site.
* These locales are used to provide a language toggle on the main site pages.
*
* @param int $langLocaleStatus The const value of one of LocaleMetadata:LANGUAGE_LOCALE_*
*/
public function getSupportedLocaleNames(int $langLocaleStatus = LocaleMetadata::LANGUAGE_LOCALE_WITHOUT): array
{
static $supportedLocales;
if (isset($supportedLocales)) {
return $supportedLocales;
}
$supportedLocales = Locale::getFormattedDisplayNames($this->getSupportedLocales(), null, $langLocaleStatus);
asort($supportedLocales);
return $supportedLocales;
}
/**
* Return associative array of all locales currently by the site.
* These locales are used to provide a language toggle on the main site pages.
*
* @param int $langLocaleStatus The const value of one of LocaleMetadata:LANGUAGE_LOCALE_*
*/
public function getInstalledLocaleNames(int $langLocaleStatus = LocaleMetadata::LANGUAGE_LOCALE_WITH): array
{
static $installedLocales;
if (isset($installedLocales)) {
return $installedLocales;
}
$installedLocales = Locale::getFormattedDisplayNames($this->getInstalledLocales(), null, $langLocaleStatus);
asort($installedLocales);
return $installedLocales;
}
//
// Get/set methods
//
/**
* Get site title.
*
* @param string $locale Locale code to return, if desired.
*/
public function getTitle($locale = null)
{
return $this->getData('title', $locale);
}
/**
* Get localized site title.
*/
public function getLocalizedTitle()
{
return $this->getLocalizedData('title');
}
/**
* Get "localized" site page title (if applicable).
*
* @return array|string
*
* @deprecated 3.3.0
*/
public function getLocalizedPageHeaderTitle()
{
if ($this->getLocalizedData('pageHeaderTitleImage')) {
return $this->getLocalizedData('pageHeaderTitleImage');
}
if ($this->getData('pageHeaderTitleImage', Locale::getPrimaryLocale())) {
return $this->getData('pageHeaderTitleImage', Locale::getPrimaryLocale());
}
if ($this->getLocalizedData('title')) {
return $this->getLocalizedData('title');
}
if ($this->getData('title', Locale::getPrimaryLocale())) {
return $this->getData('title', Locale::getPrimaryLocale());
}
return '';
}
/**
* Get redirect
*
* @return int
*/
public function getRedirect()
{
return $this->getData('redirect');
}
/**
* Set redirect
*
* @param int $redirect
*/
public function setRedirect($redirect)
{
$this->setData('redirect', (int)$redirect);
}
/**
* Get localized site about statement.
*/
public function getLocalizedAbout()
{
return $this->getLocalizedData('about');
}
/**
* Get localized site contact name.
*/
public function getLocalizedContactName()
{
return $this->getLocalizedData('contactName');
}
/**
* Get localized site contact email.
*/
public function getLocalizedContactEmail()
{
return $this->getLocalizedData('contactEmail');
}
/**
* Get minimum password length.
*
* @return int
*/
public function getMinPasswordLength()
{
return $this->getData('minPasswordLength');
}
/**
* Set minimum password length.
*
* @param int $minPasswordLength
*/
public function setMinPasswordLength($minPasswordLength)
{
$this->setData('minPasswordLength', $minPasswordLength);
}
/**
* Get primary locale.
*
* @return string
*/
public function getPrimaryLocale()
{
return $this->getData('primaryLocale');
}
/**
* Set primary locale.
*
* @param string $primaryLocale
*/
public function setPrimaryLocale($primaryLocale)
{
$this->setData('primaryLocale', $primaryLocale);
}
/**
* Get installed locales.
*
* @return array
*/
public function getInstalledLocales()
{
return $this->getData('installedLocales') ?? [];
}
/**
* Set installed locales.
*
* @param array $installedLocales
*/
public function setInstalledLocales($installedLocales)
{
$this->setData('installedLocales', $installedLocales);
}
/**
* Get array of all supported locales (for static text).
*
* @return array
*/
public function getSupportedLocales()
{
return $this->getData('supportedLocales') ?? [];
}
/**
* Set array of all supported locales (for static text).
*
* @param array $supportedLocales
*/
public function setSupportedLocales($supportedLocales)
{
$this->setData('supportedLocales', $supportedLocales);
}
/**
* Get the unique site ID.
*/
public function getUniqueSiteID(): ?string
{
return $this->getData('uniqueSiteId');
}
/**
* Set the unique site ID.
*/
public function setUniqueSiteID(string $uniqueSiteId): void
{
$this->setData('uniqueSiteId', $uniqueSiteId);
}
}
if (!PKP_STRICT_MODE) {
class_alias('\PKP\site\Site', '\Site');
}
|