szurubooru/src/FormData/UserEditFormData.php

62 lines
2 KiB
PHP
Raw Normal View History

<?php
namespace Szurubooru\FormData;
class UserEditFormData implements \Szurubooru\IValidatable
{
public $userName;
public $email;
public $password;
2014-09-10 18:22:15 +02:00
public $accessRank;
public $avatarStyle;
2014-09-10 18:22:15 +02:00
public $avatarContent;
2014-09-07 14:50:16 +02:00
public $browsingSettings;
2014-09-30 13:22:11 +02:00
public $banned;
public function __construct($inputReader = null)
{
if ($inputReader !== null)
{
$this->userName = $inputReader->userName;
$this->email = $inputReader->email;
$this->password = $inputReader->password;
if ($inputReader->accessRank !== null)
$this->accessRank = \Szurubooru\Helpers\EnumHelper::accessRankFromString($inputReader->accessRank);
if ($inputReader->avatarStyle !== null)
$this->avatarStyle = \Szurubooru\Helpers\EnumHelper::avatarStyleFromString($inputReader->avatarStyle);
2014-09-15 17:09:42 +02:00
$this->avatarContent = $inputReader->decodeBase64($inputReader->avatarContent);
2014-09-07 14:50:16 +02:00
$this->browsingSettings = $inputReader->browsingSettings;
2014-09-30 13:22:11 +02:00
$this->banned = boolval($inputReader->banned);
}
}
public function validate(\Szurubooru\Validator $validator)
{
if ($this->userName !== null)
2014-09-10 17:42:39 +02:00
$validator->validateUserName($this->userName);
2014-09-10 17:42:39 +02:00
if ($this->password !== null)
$validator->validatePassword($this->password);
2014-09-10 17:42:39 +02:00
if ($this->email !== null)
$validator->validateEmail($this->email);
if (strlen($this->avatarContent) > 1024 * 512)
throw new \DomainException('Avatar content must have at most 512 kilobytes.');
if ($this->avatarContent)
{
$avatarContentMimeType = \Szurubooru\Helpers\MimeHelper::getMimeTypeFromBuffer($this->avatarContent);
if (!\Szurubooru\Helpers\MimeHelper::isImage($avatarContentMimeType))
throw new \DomainException('Avatar must be an image (detected: ' . $avatarContentMimeType . ').');
}
2014-09-10 17:42:39 +02:00
if ($this->browsingSettings !== null)
{
2014-09-10 17:42:39 +02:00
if (!is_string($this->browsingSettings))
throw new \InvalidArgumentException('Browsing settings must be stringified JSON.');
2014-09-28 16:26:44 +02:00
else if (strlen($this->browsingSettings) > 300)
throw new \InvalidArgumentException('Stringified browsing settings can have at most 300 characters.');
}
}
}