diff --git a/Admin/Installer.php b/Admin/Installer.php index 496260a..eb824d2 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -14,6 +14,7 @@ declare(strict_types=1); namespace Modules\Media\Admin; +use Modules\Admin\Models\NullAccount; use Modules\Media\Models\Collection; use Modules\Media\Models\CollectionMapper; @@ -85,7 +86,7 @@ final class Installer extends InstallerAbstract $collection->setName((string) $data['name'] ?? ''); $collection->setVirtualPath((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); } diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 2da1891..2d5aa38 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -15,6 +15,7 @@ declare(strict_types=1); namespace Modules\Media\Controller; use Modules\Admin\Models\AccountPermission; +use Modules\Admin\Models\NullAccount; use Modules\Media\Models\Collection; use Modules\Media\Models\CollectionMapper; use Modules\Media\Models\Media; @@ -23,8 +24,8 @@ use Modules\Media\Models\NullCollection; use Modules\Media\Models\PathSettings; use Modules\Media\Models\PermissionState; use Modules\Media\Models\UploadFile; -use Modules\Media\Models\UploadStatus; +use Modules\Media\Models\UploadStatus; use phpOMS\Account\PermissionType; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; @@ -240,7 +241,7 @@ final class ApiController extends Controller $media->setPath(self::normalizeDbPath($status['path']) . '/' . $status['filename']); $media->setName($status['name']); $media->setSize($status['size']); - $media->setCreatedBy($account); + $media->setCreatedBy(new NullAccount($account)); $media->setExtension($status['extension']); $media->setVirtualPath($virtualPath); diff --git a/Models/Collection.php b/Models/Collection.php index ed62aab..6550b78 100644 --- a/Models/Collection.php +++ b/Models/Collection.php @@ -27,10 +27,10 @@ class Collection extends Media implements \Iterator /** * Resource id. * - * @var array + * @var Media[] * @since 1.0.0 */ - private $sources = []; + private array $sources = []; /** * Extension name. @@ -65,13 +65,13 @@ class Collection extends Media implements \Iterator /** * Set sources. * - * @param int|Media $source Source + * @param Media $source Source * * @return void * * @since 1.0.0 */ - public function addSource($source) : void + public function addSource(Media $source) : void { $this->sources[] = $source; } @@ -79,7 +79,7 @@ class Collection extends Media implements \Iterator /** * Get sources. * - * @return array + * @return Media[] * * @since 1.0.0 */ diff --git a/Models/Media.php b/Models/Media.php index 2d2083d..69127f2 100644 --- a/Models/Media.php +++ b/Models/Media.php @@ -14,6 +14,9 @@ declare(strict_types=1); namespace Modules\Media\Models; +use Modules\Admin\Models\Account; +use Modules\Admin\Models\NullAccount; + /** * Media class. * @@ -59,10 +62,10 @@ class Media implements \JsonSerializable /** * Author. * - * @var int + * @var Account * @since 1.0.0 */ - protected $createdBy = 0; + protected Account $createdBy; /** * Uploaded. @@ -151,6 +154,7 @@ class Media implements \JsonSerializable */ public function __construct() { + $this->createdBy = new NullAccount(); $this->createdAt = new \DateTime(); } @@ -297,11 +301,11 @@ class Media implements \JsonSerializable } /** - * @return int|\phpOMS\Account\Account + * @return Account * * @since 1.0.0 */ - public function getCreatedBy() + public function getCreatedBy() : Account { return $this->createdBy; } @@ -313,7 +317,7 @@ class Media implements \JsonSerializable */ 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 * * @since 1.0.0 */ - public function setCreatedBy($createdBy) : void + public function setCreatedBy(Account $createdBy) : void { $this->createdBy = $createdBy; } diff --git a/Models/MediaMapper.php b/Models/MediaMapper.php index 7642676..0ed9842 100644 --- a/Models/MediaMapper.php +++ b/Models/MediaMapper.php @@ -47,7 +47,7 @@ class MediaMapper extends DataMapperAbstract 'media_password' => ['name' => 'media_password', 'type' => 'string', 'internal' => 'password'], 'media_extension' => ['name' => 'media_extension', 'type' => 'string', 'internal' => 'extension'], '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], ]; diff --git a/Models/NullCollection.php b/Models/NullCollection.php index 1d22b9c..31a1b12 100644 --- a/Models/NullCollection.php +++ b/Models/NullCollection.php @@ -24,4 +24,15 @@ namespace Modules\Media\Models; */ final class NullCollection extends Collection { + /** + * Constructor + * + * @param int $id Model id + * + * @since 1.0.0 + */ + public function __construct(int $id = 0) + { + $this->id = $id; + } } diff --git a/Models/NullMedia.php b/Models/NullMedia.php index 80c6101..2ab29e5 100644 --- a/Models/NullMedia.php +++ b/Models/NullMedia.php @@ -24,4 +24,15 @@ namespace Modules\Media\Models; */ final class NullMedia extends Media { + /** + * Constructor + * + * @param int $id Model id + * + * @since 1.0.0 + */ + public function __construct(int $id = 0) + { + $this->id = $id; + } }