This commit is contained in:
Dennis Eichhorn 2020-03-05 20:35:58 +01:00
parent d6de798934
commit 4d0ddae9e6
4 changed files with 31 additions and 14 deletions

View File

@ -14,11 +14,12 @@ declare(strict_types=1);
namespace Modules\News\Controller;
use Modules\Admin\Models\NullAccount;
use Modules\News\Models\NewsArticle;
use Modules\News\Models\NewsArticleMapper;
use Modules\News\Models\NewsStatus;
use Modules\News\Models\NewsType;
use Modules\News\Models\NewsType;
use phpOMS\Account\Account;
use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Message\NotificationLevel;
@ -153,7 +154,7 @@ final class ApiController extends Controller
private function createNewsArticleFromRequest(RequestAbstract $request) : NewsArticle
{
$newsArticle = new NewsArticle();
$newsArticle->setCreatedBy($request->getHeader()->getAccount());
$newsArticle->setCreatedBy(new NullAccount($request->getHeader()->getAccount()));
$newsArticle->setPublish(new \DateTime((string) ($request->getData('publish') ?? 'now')));
$newsArticle->setTitle((string) ($request->getData('title') ?? ''));
$newsArticle->setPlain($request->getData('plain') ?? '');

View File

@ -14,6 +14,9 @@ declare(strict_types=1);
namespace Modules\News\Models;
use Modules\Admin\Models\Account;
use Modules\Admin\Models\NullAccount;
use Modules\Tag\Models\Tag;
use phpOMS\Contract\ArrayableInterface;
use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Stdlib\Base\Exception\InvalidEnumValue;
@ -95,10 +98,10 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
/**
* Creator.
*
* @var int|\Modules\Admin\Models\Account
* @var Account
* @since 1.0.0
*/
private $createdBy = 0;
private Account $createdBy;
/**
* Publish.
@ -119,7 +122,7 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
/**
* Badge.
*
* @var array
* @var Tag[]
* @since 1.0.0
*/
private array $badges = [];
@ -131,14 +134,16 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
*/
public function __construct()
{
$this->createdBy = new NullAccount();
$this->createdAt = new \DateTime('now');
$this->publish = new \DateTime('now');
$this->account = new NullAccount();
}
/**
* Get badges
*
* @return array
* @return Tag[]
*
* @since 1.0.0
*/
@ -150,13 +155,13 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
/**
* Add badge
*
* @param mixed $badge Badge to add
* @param Tag $badge Badge to add
*
* @return void
*
* @since 1.0.0
*/
public function addBadge($badge) : void
public function addBadge(Tag $badge) : void
{
$this->badges[] = $badge;
}
@ -296,11 +301,11 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
/**
* Get created by
*
* @return int|\phpOMS\Account\Account
* @return Account
*
* @since 1.0.0
*/
public function getCreatedBy()
public function getCreatedBy() : Account
{
return $this->createdBy;
}
@ -308,15 +313,15 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
/**
* Set created by
*
* @param int $id Created by
* @param Account $account Created by
*
* @return void
*
* @since 1.0.0
*/
public function setCreatedBy($id) : void
public function setCreatedBy(Account $account) : void
{
$this->createdBy = $id;
$this->createdBy = $account;
}
/**

View File

@ -35,7 +35,7 @@ final class NewsArticleMapper extends DataMapperAbstract
*/
protected static array $columns = [
'news_id' => ['name' => 'news_id', 'type' => 'int', 'internal' => 'id'],
'news_created_by' => ['name' => 'news_created_by', 'type' => 'int', 'internal' => 'createdBy'],
'news_created_by' => ['name' => 'news_created_by', 'type' => 'int', 'internal' => 'createdBy', 'readonly' => true],
'news_publish' => ['name' => 'news_publish', 'type' => 'DateTime', 'internal' => 'publish'],
'news_title' => ['name' => 'news_title', 'type' => 'string', 'internal' => 'title'],
'news_plain' => ['name' => 'news_plain', 'type' => 'string', 'internal' => 'plain'],

View File

@ -24,4 +24,15 @@ namespace Modules\News\Models;
*/
final class NullNewsArticle extends NewsArticle
{
/**
* Constructor
*
* @param int $id Model id
*
* @since 1.0.0
*/
public function __construct(int $id = 0)
{
$this->id = $id;
}
}