2017-02-11 19:56:02 +00:00
|
|
|
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace JKingWeb\NewsSync;
|
|
|
|
|
|
|
|
abstract class AbstractException extends \Exception {
|
|
|
|
|
2017-02-16 20:29:42 +00:00
|
|
|
const CODES = [
|
|
|
|
"Exception.uncoded" => -1,
|
|
|
|
"Exception.invalid" => 1, // this exception MUST NOT have a message string defined
|
|
|
|
"Exception.unknown" => 10000,
|
|
|
|
"Lang/Exception.defaultFileMissing" => 10101,
|
|
|
|
"Lang/Exception.fileMissing" => 10102,
|
|
|
|
"Lang/Exception.fileUnreadable" => 10103,
|
|
|
|
"Lang/Exception.fileCorrupt" => 10104,
|
|
|
|
"Lang/Exception.stringMissing" => 10105,
|
2017-02-16 22:50:34 +00:00
|
|
|
"Lang/Exception.stringInvalid" => 10106,
|
2017-03-08 13:19:42 +00:00
|
|
|
"Db/Exception.extMissing" => 10201,
|
|
|
|
"Db/Exception.fileMissing" => 10202,
|
|
|
|
"Db/Exception.fileUnusable" => 10203,
|
|
|
|
"Db/Exception.fileUnreadable" => 10204,
|
|
|
|
"Db/Exception.fileUnwritable" => 10205,
|
|
|
|
"Db/Exception.fileUncreatable" => 10206,
|
|
|
|
"Db/Exception.fileCorrupt" => 10207,
|
|
|
|
"Db/Exception.updateTooNew" => 10211,
|
2017-03-10 02:39:42 +00:00
|
|
|
"Db/Exception.updateManual" => 10212,
|
|
|
|
"Db/Exception.updateManualOnly" => 10213,
|
|
|
|
"Db/Exception.updateFileMissing" => 10214,
|
|
|
|
"Db/Exception.updateFileUnusable" => 10215,
|
|
|
|
"Db/Exception.updateFileUnreadable" => 10216,
|
|
|
|
"Db/Exception.updateFileError" => 10217,
|
|
|
|
"Db/Exception.updateFileIncomplete" => 10218,
|
2017-03-08 17:29:22 +00:00
|
|
|
"Db/Exception.paramTypeInvalid" => 10221,
|
|
|
|
"Db/Exception.paramTypeUnknown" => 10222,
|
|
|
|
"Db/Exception.paramTypeMissing" => 10223,
|
|
|
|
"Db/Exception.engineErrorGeneral" => 10224, // this symbol may have engine-specific duplicates to accomodate engine-specific error string construction
|
|
|
|
"Db/ExceptionInput.missing" => 10231,
|
|
|
|
"Db/ExceptionInput.whitespace" => 10232,
|
|
|
|
"Db/ExceptionInput.tooLong" => 10233,
|
|
|
|
"Db/ExceptionInput.tooShort" => 10234,
|
|
|
|
"Db/ExceptionInput.idMissing" => 10235,
|
|
|
|
"Db/ExceptionInput.constraintViolation" => 10236,
|
|
|
|
"Db/ExceptionInput.typeViolation" => 10237,
|
|
|
|
"Db/ExceptionTimeout.general" => 10241,
|
2017-03-10 02:39:42 +00:00
|
|
|
"Conf/Exception.fileMissing" => 10301,
|
|
|
|
"Conf/Exception.fileUnusable" => 10302,
|
|
|
|
"Conf/Exception.fileUnreadable" => 10303,
|
|
|
|
"Conf/Exception.fileUnwritable" => 10304,
|
|
|
|
"Conf/Exception.fileUncreatable" => 10305,
|
|
|
|
"Conf/Exception.fileCorrupt" => 10306,
|
2017-02-16 20:29:42 +00:00
|
|
|
"User/Exception.functionNotImplemented" => 10401,
|
|
|
|
"User/Exception.doesNotExist" => 10402,
|
|
|
|
"User/Exception.alreadyExists" => 10403,
|
|
|
|
"User/Exception.authMissing" => 10411,
|
|
|
|
"User/Exception.authFailed" => 10412,
|
2017-02-21 00:04:08 +00:00
|
|
|
"User/ExceptionAuthz.notAuthorized" => 10421,
|
2017-02-19 22:02:03 +00:00
|
|
|
"Feed/Exception.invalidCertificate" => 10501,
|
|
|
|
"Feed/Exception.invalidUrl" => 10502,
|
|
|
|
"Feed/Exception.maxRedirect" => 10503,
|
|
|
|
"Feed/Exception.maxSize" => 10504,
|
|
|
|
"Feed/Exception.timeout" => 10505,
|
|
|
|
"Feed/Exception.forbidden" => 10506,
|
|
|
|
"Feed/Exception.unauthorized" => 10507,
|
|
|
|
"Feed/Exception.malformed" => 10511,
|
|
|
|
"Feed/Exception.xmlEntity" => 10512,
|
|
|
|
"Feed/Exception.subscriptionNotFound" => 10521,
|
2017-03-10 02:39:42 +00:00
|
|
|
"Feed/Exception.unsupportedFeedFormat" => 10522,
|
2017-02-16 20:29:42 +00:00
|
|
|
];
|
2017-02-11 19:56:02 +00:00
|
|
|
|
2017-02-16 20:29:42 +00:00
|
|
|
public function __construct(string $msgID = "", $vars = null, \Throwable $e = null) {
|
|
|
|
if($msgID=="") {
|
|
|
|
$msg = "Exception.unknown";
|
|
|
|
$code = 10000;
|
|
|
|
} else {
|
|
|
|
$class = get_called_class();
|
|
|
|
$codeID = str_replace("\\", "/", str_replace(NS_BASE, "", $class)).".$msgID";
|
|
|
|
if(!array_key_exists($codeID, self::CODES)) {
|
2017-02-21 00:04:08 +00:00
|
|
|
throw new Exception("uncoded", $codeID);
|
2017-02-16 20:29:42 +00:00
|
|
|
} else {
|
|
|
|
$code = self::CODES[$codeID];
|
|
|
|
$msg = "Exception.".str_replace("\\", "/", $class).".$msgID";
|
|
|
|
}
|
|
|
|
$msg = Lang::msg($msg, $vars);
|
|
|
|
}
|
|
|
|
parent::__construct($msg, $code, $e);
|
|
|
|
}
|
2017-02-11 19:56:02 +00:00
|
|
|
}
|