openvk/Web/Models/Entities/Album.php

70 lines
1.7 KiB
PHP
Raw Permalink Normal View History

2020-06-07 19:04:43 +03:00
<?php declare(strict_types=1);
namespace openvk\Web\Models\Entities;
use openvk\Web\Models\Repositories\Photos;
2021-01-27 20:41:21 +03:00
class Album extends MediaCollection
2020-06-07 19:04:43 +03:00
{
const SPECIAL_AVATARS = 16;
const SPECIAL_WALL = 32;
2021-01-27 20:41:21 +03:00
protected $tableName = "albums";
protected $relTableName = "album_relations";
protected $entityTableName = "photos";
protected $entityClassName = 'openvk\Web\Models\Entities\Photo';
2020-06-07 19:04:43 +03:00
2021-01-27 20:41:21 +03:00
protected $specialNames = [
16 => "_avatar_album",
32 => "_wall_album",
64 => "_saved_photos_album",
];
2020-06-07 19:04:43 +03:00
2021-01-27 20:41:21 +03:00
function getCoverURL(): ?string
2020-06-07 19:04:43 +03:00
{
2021-01-27 20:41:21 +03:00
$coverPhoto = $this->getCoverPhoto();
if(!$coverPhoto)
return "/assets/packages/static/openvk/img/camera_200.png";
return $coverPhoto->getURL();
2020-06-07 19:04:43 +03:00
}
function getCoverPhoto(): ?Photo
{
$cover = $this->getRecord()->cover_photo;
if(!$cover) {
$photos = iterator_to_array($this->getPhotos(1, 1));
$photo = $photos[0] ?? NULL;
if(!$photo || $photo->isDeleted())
return NULL;
else
return $photo;
}
return (new Photos)->get($cover);
}
function getPhotos(int $page = 1, ?int $perPage = NULL): \Traversable
{
2021-01-27 20:41:21 +03:00
return $this->fetch($page, $perPage);
2020-06-07 19:04:43 +03:00
}
function getPhotosCount(): int
{
2021-01-27 20:41:21 +03:00
return $this->size();
2020-06-07 19:04:43 +03:00
}
function addPhoto(Photo $photo): void
{
2021-01-27 20:41:21 +03:00
$this->add($photo);
2020-06-07 19:04:43 +03:00
}
function removePhoto(Photo $photo): void
{
2021-01-27 20:41:21 +03:00
$this->remove($photo);
2020-06-07 19:04:43 +03:00
}
function hasPhoto(Photo $photo): bool
{
2021-01-27 20:41:21 +03:00
return $this->has($photo);
2020-06-07 19:04:43 +03:00
}
}