2021-06-29 19:20:33 -04:00
|
|
|
<?php
|
2024-05-23 03:26:56 -04:00
|
|
|
|
2026-04-18 15:42:08 -04:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
2021-06-29 19:20:33 -04:00
|
|
|
/**
|
2024-05-23 03:26:56 -04:00
|
|
|
* SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
|
|
|
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
2021-06-29 19:20:33 -04:00
|
|
|
*/
|
|
|
|
|
namespace OCP;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* An Exception class with the intention to be presented to the end user
|
|
|
|
|
*
|
|
|
|
|
* @since 23.0.0
|
|
|
|
|
*/
|
|
|
|
|
class HintException extends \Exception {
|
|
|
|
|
/**
|
|
|
|
|
* HintException constructor.
|
|
|
|
|
*
|
|
|
|
|
* @since 23.0.0
|
2026-04-18 15:42:08 -04:00
|
|
|
* @param string $message The error message. It is not intended to be shown
|
|
|
|
|
* to the end user unless the hint is empty, and
|
|
|
|
|
* therefore should not be translated.
|
|
|
|
|
* @param string $hint A useful message presented to the end user. It should
|
|
|
|
|
* be translated, but must not contain sensitive data.
|
2021-06-29 19:20:33 -04:00
|
|
|
* @param int $code
|
|
|
|
|
* @param \Exception|null $previous
|
|
|
|
|
*/
|
2026-04-18 15:42:08 -04:00
|
|
|
public function __construct(
|
|
|
|
|
string $message,
|
|
|
|
|
private string $hint = '',
|
|
|
|
|
int $code = 0,
|
|
|
|
|
?\Exception $previous = null,
|
|
|
|
|
) {
|
2021-06-29 19:20:33 -04:00
|
|
|
parent::__construct($message, $code, $previous);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns a string representation of this Exception that includes the error
|
|
|
|
|
* code, the message and the hint.
|
|
|
|
|
*
|
|
|
|
|
* @since 23.0.0
|
|
|
|
|
*/
|
|
|
|
|
public function __toString(): string {
|
2024-09-15 15:40:55 -04:00
|
|
|
return self::class . ": [{$this->code}]: {$this->message} ({$this->hint})\n";
|
2021-06-29 19:20:33 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the hint with the intention to be presented to the end user. If
|
2023-05-10 05:56:34 -04:00
|
|
|
* an empty hint was specified upon instantiation, the message is returned
|
2021-06-29 19:20:33 -04:00
|
|
|
* instead.
|
|
|
|
|
*
|
|
|
|
|
* @since 23.0.0
|
|
|
|
|
*/
|
|
|
|
|
public function getHint(): string {
|
2026-04-18 15:42:08 -04:00
|
|
|
return $this->hint !== '' ? $this->hint : $this->message;
|
2021-06-29 19:20:33 -04:00
|
|
|
}
|
|
|
|
|
}
|