Commit 855aacce authored by Yassine Doghri's avatar Yassine Doghri
Browse files

fix(websub): add missing misc helper import

+ add checks before clearing episode cache
parent 19fcb9b0
Loading
Loading
Loading
Loading
Loading
+29 −3
Original line number Diff line number Diff line
@@ -395,7 +395,20 @@ class EpisodeModel extends Model
     */
    public function clearCache(array $data): array
    {
        $episode = (new self())->find(is_array($data['id']) ? $data['id'][0] : $data['id']);
        /** @var int|null $episodeId */
        $episodeId = is_array($data['id']) ? $data['id'][0] : $data['id'];

        if ($episodeId === null) {
            // Multiple episodes have been updated, do nothing
            return $data;
        }

        /** @var ?Episode $episode */
        $episode = (new self())->find($episodeId);

        if (! $episode instanceof Episode) {
            return $data;
        }

        // delete podcast cache
        cache()
@@ -430,9 +443,22 @@ class EpisodeModel extends Model
     */
    protected function writeEnclosureMetadata(array $data): array
    {
        helper('id3');
        /** @var int|null $episodeId */
        $episodeId = is_array($data['id']) ? $data['id'][0] : $data['id'];

        $episode = (new self())->find(is_array($data['id']) ? $data['id'][0] : $data['id']);
        if ($episodeId === null) {
            // Multiple episodes have been updated, do nothing
            return $data;
        }

        /** @var ?Episode $episode */
        $episode = (new self())->find($episodeId);

        if (! $episode instanceof Episode) {
            return $data;
        }

        helper('id3');

        write_audio_file_tags($episode);

+6 −4
Original line number Diff line number Diff line
@@ -24,20 +24,22 @@ class WebSubController extends Controller
            return;
        }

        helper('misc');

        // get all podcasts that haven't been published yet
        // or having a published episode that hasn't been pushed yet
        $podcastModel = new PodcastModel();
        $podcasts = $podcastModel
            ->distinct()
        $podcastModel->builder()
            ->select('podcasts.*')
            ->distinct()
            ->join('episodes', 'podcasts.id = episodes.podcast_id', 'left outer')
            ->where('podcasts.is_published_on_hubs', false)
            ->where('`' . $podcastModel->db->getPrefix() . 'podcasts`.`published_at` <= UTC_TIMESTAMP()', null, false)
            ->orGroupStart()
            ->where('episodes.is_published_on_hubs', false)
            ->where('`' . $podcastModel->db->getPrefix() . 'episodes`.`published_at` <= UTC_TIMESTAMP()', null, false)
            ->groupEnd()
            ->findAll();
            ->groupEnd();
        $podcasts = $podcastModel->findAll();

        if ($podcasts === []) {
            return;