Skip to content
Snippets Groups Projects
Person.php 2.55 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     * @copyright  2021 Podlibre
     * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
     * @link       https://castopod.org/
     */
    
    namespace App\Entities;
    
    
    /**
     * @property int $id
     * @property string $full_name
     * @property string $unique_name
     * @property string|null $information_url
    
     * @property int $created_by
     * @property int $updated_by
    
    class Person extends Entity
    {
    
        protected $casts = [
            'id' => 'integer',
            'full_name' => 'string',
            'unique_name' => 'string',
            'information_url' => '?string',
    
            'podcast_id' => '?integer',
            'episode_id' => '?integer',
    
            'created_by' => 'integer',
            'updated_by' => 'integer',
        ];
    
        /**
    
         * Saves the person avatar in `public/media/persons/`
    
        public function setAvatar(?Image $avatar = null): static
    
            $avatar->saveImage(config('Images')->personAvatarSizes, 'persons', $this->attributes['unique_name']);
    
            $this->attributes['avatar_mimetype'] = $avatar->mimetype;
            $this->attributes['avatar_path'] = $avatar->path;
    
            if ($this->attributes['avatar_path'] === null) {
    
                return new Image(null, '/castopod-avatar-default.jpg', 'image/jpeg', config('Images')->personAvatarSizes);
    
            return new Image(null, $this->attributes['avatar_path'], $this->attributes['avatar_mimetype'], config(
                'Images'
            )->personAvatarSizes);
    
            if ($this->attributes['podcast_id'] === null) {
    
                throw new RuntimeException('Person must have a podcast_id before getting roles.');
    
                $this->roles = (new PersonModel())->getPersonRoles(
                    $this->id,
    
                    (int) $this->attributes['podcast_id'],
                    array_key_exists('episode_id', $this->attributes) ? (int) $this->attributes['episode_id'] : null