This commit is contained in:
Dennis Eichhorn 2020-03-05 20:35:58 +01:00
parent 8682dca742
commit c9fc4568ad
7 changed files with 44 additions and 16 deletions

View File

@ -14,6 +14,7 @@ declare(strict_types=1);
namespace Modules\Media\Admin; namespace Modules\Media\Admin;
use Modules\Admin\Models\NullAccount;
use Modules\Media\Models\Collection; use Modules\Media\Models\Collection;
use Modules\Media\Models\CollectionMapper; use Modules\Media\Models\CollectionMapper;
@ -85,7 +86,7 @@ final class Installer extends InstallerAbstract
$collection->setName((string) $data['name'] ?? ''); $collection->setName((string) $data['name'] ?? '');
$collection->setVirtualPath((string) $data['virtualPath'] ?? '/'); $collection->setVirtualPath((string) $data['virtualPath'] ?? '/');
$collection->setPath((string) $data['virtualPath'] ?? '/'); $collection->setPath((string) $data['virtualPath'] ?? '/');
$collection->setCreatedBy((int) $data['user'] ?? 1); $collection->setCreatedBy(new NullAccount((int) $data['user'] ?? 1));
CollectionMapper::create($collection); CollectionMapper::create($collection);
} }

View File

@ -15,6 +15,7 @@ declare(strict_types=1);
namespace Modules\Media\Controller; namespace Modules\Media\Controller;
use Modules\Admin\Models\AccountPermission; use Modules\Admin\Models\AccountPermission;
use Modules\Admin\Models\NullAccount;
use Modules\Media\Models\Collection; use Modules\Media\Models\Collection;
use Modules\Media\Models\CollectionMapper; use Modules\Media\Models\CollectionMapper;
use Modules\Media\Models\Media; use Modules\Media\Models\Media;
@ -23,8 +24,8 @@ use Modules\Media\Models\NullCollection;
use Modules\Media\Models\PathSettings; use Modules\Media\Models\PathSettings;
use Modules\Media\Models\PermissionState; use Modules\Media\Models\PermissionState;
use Modules\Media\Models\UploadFile; use Modules\Media\Models\UploadFile;
use Modules\Media\Models\UploadStatus;
use Modules\Media\Models\UploadStatus;
use phpOMS\Account\PermissionType; use phpOMS\Account\PermissionType;
use phpOMS\Message\NotificationLevel; use phpOMS\Message\NotificationLevel;
use phpOMS\Message\RequestAbstract; use phpOMS\Message\RequestAbstract;
@ -240,7 +241,7 @@ final class ApiController extends Controller
$media->setPath(self::normalizeDbPath($status['path']) . '/' . $status['filename']); $media->setPath(self::normalizeDbPath($status['path']) . '/' . $status['filename']);
$media->setName($status['name']); $media->setName($status['name']);
$media->setSize($status['size']); $media->setSize($status['size']);
$media->setCreatedBy($account); $media->setCreatedBy(new NullAccount($account));
$media->setExtension($status['extension']); $media->setExtension($status['extension']);
$media->setVirtualPath($virtualPath); $media->setVirtualPath($virtualPath);

View File

@ -27,10 +27,10 @@ class Collection extends Media implements \Iterator
/** /**
* Resource id. * Resource id.
* *
* @var array<int, int|Media> * @var Media[]
* @since 1.0.0 * @since 1.0.0
*/ */
private $sources = []; private array $sources = [];
/** /**
* Extension name. * Extension name.
@ -65,13 +65,13 @@ class Collection extends Media implements \Iterator
/** /**
* Set sources. * Set sources.
* *
* @param int|Media $source Source * @param Media $source Source
* *
* @return void * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function addSource($source) : void public function addSource(Media $source) : void
{ {
$this->sources[] = $source; $this->sources[] = $source;
} }
@ -79,7 +79,7 @@ class Collection extends Media implements \Iterator
/** /**
* Get sources. * Get sources.
* *
* @return array * @return Media[]
* *
* @since 1.0.0 * @since 1.0.0
*/ */

View File

@ -14,6 +14,9 @@ declare(strict_types=1);
namespace Modules\Media\Models; namespace Modules\Media\Models;
use Modules\Admin\Models\Account;
use Modules\Admin\Models\NullAccount;
/** /**
* Media class. * Media class.
* *
@ -59,10 +62,10 @@ class Media implements \JsonSerializable
/** /**
* Author. * Author.
* *
* @var int * @var Account
* @since 1.0.0 * @since 1.0.0
*/ */
protected $createdBy = 0; protected Account $createdBy;
/** /**
* Uploaded. * Uploaded.
@ -151,6 +154,7 @@ class Media implements \JsonSerializable
*/ */
public function __construct() public function __construct()
{ {
$this->createdBy = new NullAccount();
$this->createdAt = new \DateTime(); $this->createdAt = new \DateTime();
} }
@ -297,11 +301,11 @@ class Media implements \JsonSerializable
} }
/** /**
* @return int|\phpOMS\Account\Account * @return Account
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function getCreatedBy() public function getCreatedBy() : Account
{ {
return $this->createdBy; return $this->createdBy;
} }
@ -313,7 +317,7 @@ class Media implements \JsonSerializable
*/ */
public function getCreatedAt() : \DateTime public function getCreatedAt() : \DateTime
{ {
return $this->createdAt ?? new \DateTime('now'); return $this->createdAt;
} }
/** /**
@ -397,13 +401,13 @@ class Media implements \JsonSerializable
} }
/** /**
* @param mixed $createdBy Creator * @param Account $createdBy Creator
* *
* @return void * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function setCreatedBy($createdBy) : void public function setCreatedBy(Account $createdBy) : void
{ {
$this->createdBy = $createdBy; $this->createdBy = $createdBy;
} }

View File

@ -47,7 +47,7 @@ class MediaMapper extends DataMapperAbstract
'media_password' => ['name' => 'media_password', 'type' => 'string', 'internal' => 'password'], 'media_password' => ['name' => 'media_password', 'type' => 'string', 'internal' => 'password'],
'media_extension' => ['name' => 'media_extension', 'type' => 'string', 'internal' => 'extension'], 'media_extension' => ['name' => 'media_extension', 'type' => 'string', 'internal' => 'extension'],
'media_size' => ['name' => 'media_size', 'type' => 'int', 'internal' => 'size'], 'media_size' => ['name' => 'media_size', 'type' => 'int', 'internal' => 'size'],
'media_created_by' => ['name' => 'media_created_by', 'type' => 'int', 'internal' => 'createdBy'], 'media_created_by' => ['name' => 'media_created_by', 'type' => 'int', 'internal' => 'createdBy', 'readonly' => true],
'media_created_at' => ['name' => 'media_created_at', 'type' => 'DateTime', 'internal' => 'createdAt', 'readonly' => true], 'media_created_at' => ['name' => 'media_created_at', 'type' => 'DateTime', 'internal' => 'createdAt', 'readonly' => true],
]; ];

View File

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

View File

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