fix(websub): add missing misc helper import

+ add checks before clearing episode cache
This commit is contained in:
Yassine Doghri 2023-04-17 11:18:02 +00:00
parent 19fcb9b0f3
commit 855aacce0b
2 changed files with 35 additions and 7 deletions

View File

@ -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);

View File

@ -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;