Files
iTop/sources/Application/WelcomePopup/Message.php
2024-07-18 16:06:12 +02:00

194 lines
5.6 KiB
PHP

<?php
/*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
namespace Combodo\iTop\Application\WelcomePopup;
use iWelcomePopupExtension;
use utils;
/**
* Class Message
*
* @author Guillaume Lajarige <guillaume.lajarige@combodo.com>
* @package Combodo\iTop\Application\WelcomePopup
*/
class Message {
/** @var string Default TWIG template */
protected const DEFAULT_TWIG_TEMPLATE_REL_PATH = 'templates/application/welcome-popup/templates/left-title-description-right-illustration.html.twig';
/** @var string Unique ID of the message within its provider */
protected readonly string $sId;
/** @var int Importance of the message {@see \iWelcomePopupExtension::ENUM_IMPORTANCE_HIGH} and {@see \iWelcomePopupExtension::ENUM_IMPORTANCE_CRITICAL} */
protected int $iImportance;
/** @var string Title of the message in plain text */
protected string $sTitle;
/** @var string Description of the message, can contain HTML */
protected string $sDescription;
/** @var string|null Optional illustration to display with the description, should be an absolute URI (illustration can be on another server) */
protected null|string $sIllustrationAbsURI;
/** @var array Additional parameters to pass to {@see \Combodo\iTop\Application\WelcomePopup\Message::$sTWIGTemplateRelPath} */
protected array $aAdditionalParameters;
/** @var string|null TWIG template to use for the rendering of the message content (title, description, illustration) */
protected readonly null|string $sTWIGTemplateRelPath;
/**
* @param string $sId {@see \Combodo\iTop\Application\WelcomePopup\Message::$sId}
* @param string $sTitle {@see \Combodo\iTop\Application\WelcomePopup\Message::$sTitle}
* @param string $sDescription {@see \Combodo\iTop\Application\WelcomePopup\Message::$sDescription}
* @param string|null $sIllustrationAbsURI {@see \Combodo\iTop\Application\WelcomePopup\Message::$sIllustrationAbsURI}
* @param array $aAdditionalParameters {@see \Combodo\iTop\Application\WelcomePopup\Message::$aAdditionalParameters}
* @param int $iImportance {@see \Combodo\iTop\Application\WelcomePopup\Message::$iImportance}
* @param string|null $sTWIGTemplateRelPath {@see \Combodo\iTop\Application\WelcomePopup\Message::$sTWIGTemplateRelPath}
*/
public function __construct(string $sId, string $sTitle, string $sDescription, null|string $sIllustrationAbsURI = null, array $aAdditionalParameters = [], int $iImportance = iWelcomePopupExtension::DEFAULT_IMPORTANCE, null|string $sTWIGTemplateRelPath = null)
{
$this->sId = $sId;
$this->sTitle = $sTitle;
$this->sDescription = $sDescription;
$this->sIllustrationAbsURI = $sIllustrationAbsURI;
$this->aAdditionalParameters = $aAdditionalParameters;
$this->iImportance = $iImportance;
$this->sTWIGTemplateRelPath = $sTWIGTemplateRelPath ?? static::DEFAULT_TWIG_TEMPLATE_REL_PATH;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$sId
* @return string
*/
public function GetID(): string
{
return $this->sId;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$sDescription
* @return string
*/
public function GetTitle(): string
{
return $this->sTitle;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$sTitle
* @param string $sTitle
*
* @return static
*/
public function SetTitle(string $sTitle): static
{
$this->sTitle = $sTitle;
return $this;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$sDescription
* @return string
*/
public function GetDescription(): string
{
return $this->sDescription;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$sDescription
* @param string $sDescription
*
* @return static
*/
public function SetDescription(string $sDescription): static
{
$this->sDescription = $sDescription;
return $this;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$sIllustrationAbsURI
* @return string|null
*/
public function GetIllustrationAbsURI(): ?string
{
return $this->sIllustrationAbsURI;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$sIllustrationAbsURI
*
* @param string|null $sIllustrationAbsURI
*
* @return static
*/
public function SetIllustrationAbsURI(?string $sIllustrationAbsURI): static
{
$this->sIllustrationAbsURI = $sIllustrationAbsURI;
return $this;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::HasIllustration()
* @return bool
*/
public function HasIllustration(): bool
{
return utils::IsNotNullOrEmptyString($this->sIllustrationAbsURI);
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$aAdditionalParameters
* @return array
*/
public function GetAdditionalParameters(): array
{
return $this->aAdditionalParameters;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$aAdditionalParameters
*
* @param array $aAdditionalParameters
*
* @return static
*/
public function SetAdditionalParameters(array $aAdditionalParameters): static
{
$this->aAdditionalParameters = $aAdditionalParameters;
return $this;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$iImportance
* @return int
*/
public function GetImportance(): int
{
return $this->iImportance;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$iImportance
*
* @param int $iImportance
*
* @return static
*/
public function SetImportance(int $iImportance): static
{
$this->iImportance = $iImportance;
return $this;
}
/**
* @see \Combodo\iTop\Application\WelcomePopup\Message::$sTWIGTemplateRelPath
* @return string|null
*/
public function GetTWIGTemplateRelPath(): ?string
{
return $this->sTWIGTemplateRelPath;
}
}