Skip to content
Snippets Groups Projects
StatusModel.php 1.8 KiB
Newer Older
  • Learn to ignore specific revisions
  •  * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
     * @link       https://castopod.org/
     */
    
    namespace App\Models;
    
    
    use ActivityPub\Models\StatusModel as ActivityPubStatusModel;
    use App\Entities\Status;
    
    class StatusModel extends ActivityPubStatusModel
    
        protected $returnType = Status::class;
    
        protected $allowedFields = [
            'id',
            'uri',
            'actor_id',
            'in_reply_to_id',
            'reblog_of_id',
            'episode_id',
            'message',
            'message_html',
            'favourites_count',
            'reblogs_count',
            'replies_count',
            'created_by',
            'published_at',
        ];
    
        /**
    
         * Retrieves all published statuses for a given episode ordered by publication date
    
        public function getEpisodeStatuses(int $episodeId): array
    
        {
            return $this->where([
                'episode_id' => $episodeId,
            ])
                ->where('`published_at` <= NOW()', null, false)
                ->orderBy('published_at', 'DESC')
                ->findAll();
        }
    
    
        /**
         * Retrieves all published statuses for a given episode ordered by publication date
         *
         * @return Status[]
         */
        public function getEpisodeComments(int $episodeId): array
        {
            return $this->whereIn('in_reply_to_id', function (BaseBuilder $builder) use (&$episodeId): BaseBuilder {
                return $builder->select('id')
                    ->from('activitypub_statuses')
                    ->where('episode_id', $episodeId);
            })
                ->where('`published_at` <= NOW()', null, false)
                ->orderBy('published_at', 'ASC')
                ->findAll();
        }