Files
Roman Pyrih 968c7e1248 first commit
2026-04-28 09:27:26 +02:00

113 lines
2.5 KiB
PHP

<?php
/**
* Custom exceptions
*
* Standard: PSR-2
*
* @link http://www.php-fig.org/psr/psr-2 Full Documentation
*
* @package SC\DUPX\U
*/
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
/**
* Dup installer custom exception
*/
class DupxException extends Exception
{
/** @var string formatted html string */
protected $longMsg = '';
/** @var false|array{url: string, label: string} */
protected $faqLink = false;
/**
* Class constructor
*
* @param string $shortMsg Short message
* @param string $longMsg Long message
* @param string $faqLinkUrl FAQ link URL
* @param string $faqLinkLabel FAQ link label
* @param int $code Exception code
* @param Exception $previous Previous exception
*/
public function __construct($shortMsg, $longMsg = '', $faqLinkUrl = '', $faqLinkLabel = '', $code = 0, Exception $previous = null)
{
parent::__construct($shortMsg, $code, $previous);
$this->longMsg = (string) $longMsg;
if (strlen($faqLinkUrl) > 0) {
$this->faqLink = array(
'url' => $faqLinkUrl,
'label' => $faqLinkLabel,
);
}
}
/**
* Get the long message
*
* @return string
*/
public function getLongMsg()
{
return $this->longMsg;
}
/**
* Check is have faq link
*
* @return bool
*/
public function haveFaqLink()
{
return $this->faqLink !== false;
}
/**
* Get FAQ URL
*
* @return string
*/
public function getFaqLinkUrl()
{
if ($this->haveFaqLink()) {
return $this->faqLink['url'];
} else {
return '';
}
}
/**
* Get FAQ label
*
* @return string
*/
public function getFaqLinkLabel()
{
if ($this->haveFaqLink()) {
return $this->faqLink['label'];
} else {
return '';
}
}
/**
* Custom string representation of object
*
* @return string
*/
public function __toString()
{
$result = __CLASS__ . ": [{$this->code}]: {$this->message}";
if ($this->haveFaqLink()) {
$result .= "\n\tSee FAQ " . $this->faqLink['label'] . ': ' . $this->faqLink['url'];
}
if (!empty($this->longMsg)) {
$result .= "\n\t" . strip_tags($this->longMsg);
}
$result .= "\n";
return $result;
}
}