Add newsletter management functionality

This commit is contained in:
Alex Cabal 2022-03-20 17:40:19 -05:00
parent 90ee0a93c9
commit b0197d189a
57 changed files with 1017 additions and 143 deletions

View file

@ -0,0 +1,5 @@
<?
namespace Exceptions;
class EbookParsingException extends SeException{
}

View file

@ -0,0 +1,5 @@
<?
namespace Exceptions;
class InvalidAuthorException extends SeException{
}

View file

@ -0,0 +1,6 @@
<?
namespace Exceptions;
class InvalidCaptchaException extends SeException{
protected $message = 'We couldnt validate your CAPTCHA response.';
}

View file

@ -0,0 +1,5 @@
<?
namespace Exceptions;
class InvalidCollectionException extends SeException{
}

View file

@ -0,0 +1,6 @@
<?
namespace Exceptions;
class InvalidCredentialsException extends SeException{
protected $message = 'Invalid credentials.';
}

View file

@ -0,0 +1,5 @@
<?
namespace Exceptions;
class InvalidEbookException extends SeException{
}

View file

@ -0,0 +1,6 @@
<?
namespace Exceptions;
class InvalidEmailException extends SeException{
protected $message = 'We couldnt understand your email address.';
}

View file

@ -0,0 +1,6 @@
<?
namespace Exceptions;
class InvalidNewsletterSubscriberException extends SeException{
protected $message = 'We couldnt find you in our newsletter subscribers list.';
}

View file

@ -0,0 +1,6 @@
<?
namespace Exceptions;
class InvalidRequestException extends SeException{
protected $message = 'Invalid request.';
}

View file

@ -0,0 +1,6 @@
<?
namespace Exceptions;
class NewsletterRequiredException extends SeException{
protected $message = 'You must select at least one newsletter to subscribe to.';
}

View file

@ -0,0 +1,6 @@
<?
namespace Exceptions;
class NewsletterSubscriberExistsException extends SeException{
protected $message = 'Youre already subscribed to the newsletter.';
}

View file

@ -0,0 +1,5 @@
<?
namespace Exceptions;
class NoopException extends SeException{
}

View file

@ -0,0 +1,5 @@
<?
namespace Exceptions;
class SeException extends \Exception{
}

View file

@ -0,0 +1,11 @@
<?
namespace Exceptions;
class SeeOtherEbookException extends SeException{
public $Url;
public function __construct(string $url = ''){
$this->Url = $url;
parent::__construct('This ebook is at a different URL: ' . $url);
}
}

View file

@ -0,0 +1,63 @@
<?
namespace Exceptions;
use function Safe\json_encode;
class ValidationException extends SeException{
public $Exceptions = [];
public $HasExceptions = false;
public $IsFatal = false;
public function __toString(): string{
$output = '';
foreach($this->Exceptions as $exception){
$output .= $exception->getMessage() . '; ';
}
return rtrim($output, '; ');
}
public function Add(\Exception $exception, bool $isFatal = false): void{
if(is_a($exception, static::class)){
foreach($exception->Exceptions as $childException){
$this->Add($childException);
}
}
else{
$this->Exceptions[] = $exception;
}
if($isFatal){
$this->IsFatal = true;
}
$this->HasExceptions = true;
}
public function Serialize(): string{
$val = '';
foreach($this->Exceptions as $childException){
$val .= $childException->getCode() . ',';
}
$val = rtrim($val, ',');
return $val;
}
public function Has(string $exception): bool{
foreach($this->Exceptions as $childException){
if(is_a($childException, $exception)){
return true;
}
}
return false;
}
public function Clear(): void{
unset($this->Exceptions);
$this->Exceptions = [];
$this->HasExceptions = false;
}
}

View file

@ -0,0 +1,11 @@
<?
namespace Exceptions;
class WebhookException extends SeException{
public $PostData;
public function __construct(string $message = '', string $data = null){
$this->PostData = $data;
parent::__construct($message);
}
}