mirror of
https://code.castopod.org/adaures/castopod
synced 2025-06-06 18:31:05 +00:00
fix(episodes-page): handle defaultQuery being null when no podcast episodes
fixes #100
This commit is contained in:
parent
14d3d1d727
commit
15183b7eab
@ -69,19 +69,21 @@ class Podcast extends BaseController
|
|||||||
$defaultQuery = (new EpisodeModel())->getDefaultQuery(
|
$defaultQuery = (new EpisodeModel())->getDefaultQuery(
|
||||||
$this->podcast->id,
|
$this->podcast->id,
|
||||||
);
|
);
|
||||||
|
if ($defaultQuery) {
|
||||||
if ($defaultQuery['type'] == 'season') {
|
if ($defaultQuery['type'] == 'season') {
|
||||||
$seasonQuery = $defaultQuery['data']['season_number'];
|
$seasonQuery = $defaultQuery['data']['season_number'];
|
||||||
} elseif ($defaultQuery['type'] == 'year') {
|
} elseif ($defaultQuery['type'] == 'year') {
|
||||||
$yearQuery = $defaultQuery['data']['year'];
|
$yearQuery = $defaultQuery['data']['year'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$cacheName = implode(
|
$cacheName = implode(
|
||||||
'_',
|
'_',
|
||||||
array_filter([
|
array_filter([
|
||||||
'page',
|
'page',
|
||||||
"podcast{$this->podcast->id}",
|
"podcast{$this->podcast->id}",
|
||||||
$yearQuery,
|
$yearQuery ? 'year' . $yearQuery : null,
|
||||||
$seasonQuery ? 'season' . $seasonQuery : null,
|
$seasonQuery ? 'season' . $seasonQuery : null,
|
||||||
service('request')->getLocale(),
|
service('request')->getLocale(),
|
||||||
]),
|
]),
|
||||||
|
@ -314,7 +314,7 @@ class EpisodeModel extends Model
|
|||||||
*
|
*
|
||||||
* @param int $podcastId
|
* @param int $podcastId
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array|null
|
||||||
*/
|
*/
|
||||||
public function getDefaultQuery(int $podcastId)
|
public function getDefaultQuery(int $podcastId)
|
||||||
{
|
{
|
||||||
@ -419,11 +419,11 @@ class EpisodeModel extends Model
|
|||||||
|
|
||||||
foreach ($years as $year) {
|
foreach ($years as $year) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"podcast{$episode->podcast_id}_{$year['year']}_episodes",
|
"podcast{$episode->podcast_id}_year{$year['year']}_episodes",
|
||||||
);
|
);
|
||||||
foreach ($supportedLocales as $locale) {
|
foreach ($supportedLocales as $locale) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$episode->podcast_id}_{$year['year']}_{$locale}",
|
"page_podcast{$episode->podcast_id}_year{$year['year']}_{$locale}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ class PageModel extends Model
|
|||||||
protected function clearCache(array $data)
|
protected function clearCache(array $data)
|
||||||
{
|
{
|
||||||
$page = (new PageModel())->find(
|
$page = (new PageModel())->find(
|
||||||
is_array($data['id']) ? $data['id'][0] : $data['id']
|
is_array($data['id']) ? $data['id'][0] : $data['id'],
|
||||||
);
|
);
|
||||||
|
|
||||||
// delete page cache
|
// delete page cache
|
||||||
@ -57,14 +57,14 @@ class PageModel extends Model
|
|||||||
foreach ($years as $year) {
|
foreach ($years as $year) {
|
||||||
foreach ($supportedLocales as $locale) {
|
foreach ($supportedLocales as $locale) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$podcast->id}_{$year['year']}_{$locale}"
|
"page_podcast{$podcast->id}_year{$year['year']}_{$locale}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($seasons as $season) {
|
foreach ($seasons as $season) {
|
||||||
foreach ($supportedLocales as $locale) {
|
foreach ($supportedLocales as $locale) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$podcast->id}_season{$season['season_number']}_{$locale}"
|
"page_podcast{$podcast->id}_season{$season['season_number']}_{$locale}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -72,7 +72,7 @@ class PageModel extends Model
|
|||||||
foreach ($podcast->episodes as $episode) {
|
foreach ($podcast->episodes as $episode) {
|
||||||
foreach ($supportedLocales as $locale) {
|
foreach ($supportedLocales as $locale) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$podcast->id}_episode{$episode->id}_{$locale}"
|
"page_podcast{$podcast->id}_episode{$episode->id}_{$locale}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ class PlatformModel extends Model
|
|||||||
if (!($found = cache('platforms'))) {
|
if (!($found = cache('platforms'))) {
|
||||||
$baseUrl = rtrim(config('app')->baseURL, '/');
|
$baseUrl = rtrim(config('app')->baseURL, '/');
|
||||||
$found = $this->select(
|
$found = $this->select(
|
||||||
"*, CONCAT('{$baseUrl}/assets/images/platforms/',`type`,'/',`slug`,'.svg') as icon"
|
"*, CONCAT('{$baseUrl}/assets/images/platforms/',`type`,'/',`slug`,'.svg') as icon",
|
||||||
)->findAll();
|
)->findAll();
|
||||||
cache()->save('platforms', $found, DECADE);
|
cache()->save('platforms', $found, DECADE);
|
||||||
}
|
}
|
||||||
@ -75,12 +75,12 @@ class PlatformModel extends Model
|
|||||||
!($found = cache("podcast{$podcastId}_platforms_{$platformType}"))
|
!($found = cache("podcast{$podcastId}_platforms_{$platformType}"))
|
||||||
) {
|
) {
|
||||||
$found = $this->select(
|
$found = $this->select(
|
||||||
'platforms.*, podcasts_platforms.link_url, podcasts_platforms.link_content, podcasts_platforms.is_visible, podcasts_platforms.is_on_embeddable_player'
|
'platforms.*, podcasts_platforms.link_url, podcasts_platforms.link_content, podcasts_platforms.is_visible, podcasts_platforms.is_on_embeddable_player',
|
||||||
)
|
)
|
||||||
->join(
|
->join(
|
||||||
'podcasts_platforms',
|
'podcasts_platforms',
|
||||||
"podcasts_platforms.platform_slug = platforms.slug AND podcasts_platforms.podcast_id = $podcastId",
|
"podcasts_platforms.platform_slug = platforms.slug AND podcasts_platforms.podcast_id = $podcastId",
|
||||||
'left'
|
'left',
|
||||||
)
|
)
|
||||||
->where('platforms.type', $platformType)
|
->where('platforms.type', $platformType)
|
||||||
->findAll();
|
->findAll();
|
||||||
@ -88,7 +88,7 @@ class PlatformModel extends Model
|
|||||||
cache()->save(
|
cache()->save(
|
||||||
"podcast{$podcastId}_platforms_{$platformType}",
|
"podcast{$podcastId}_platforms_{$platformType}",
|
||||||
$found,
|
$found,
|
||||||
DECADE
|
DECADE,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,15 +99,15 @@ class PlatformModel extends Model
|
|||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
!($found = cache(
|
!($found = cache(
|
||||||
"podcast{$podcastId}_podcastPlatforms_{$platformType}"
|
"podcast{$podcastId}_podcastPlatforms_{$platformType}",
|
||||||
))
|
))
|
||||||
) {
|
) {
|
||||||
$found = $this->select(
|
$found = $this->select(
|
||||||
'platforms.*, podcasts_platforms.link_url, podcasts_platforms.link_content, podcasts_platforms.is_visible, podcasts_platforms.is_on_embeddable_player'
|
'platforms.*, podcasts_platforms.link_url, podcasts_platforms.link_content, podcasts_platforms.is_visible, podcasts_platforms.is_on_embeddable_player',
|
||||||
)
|
)
|
||||||
->join(
|
->join(
|
||||||
'podcasts_platforms',
|
'podcasts_platforms',
|
||||||
'podcasts_platforms.platform_slug = platforms.slug'
|
'podcasts_platforms.platform_slug = platforms.slug',
|
||||||
)
|
)
|
||||||
->where('podcasts_platforms.podcast_id', $podcastId)
|
->where('podcasts_platforms.podcast_id', $podcastId)
|
||||||
->where('platforms.type', $platformType)
|
->where('platforms.type', $platformType)
|
||||||
@ -116,7 +116,7 @@ class PlatformModel extends Model
|
|||||||
cache()->save(
|
cache()->save(
|
||||||
"podcast{$podcastId}_podcastPlatforms_{$platformType}",
|
"podcast{$podcastId}_podcastPlatforms_{$platformType}",
|
||||||
$found,
|
$found,
|
||||||
DECADE
|
DECADE,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,11 +133,11 @@ class PlatformModel extends Model
|
|||||||
$podcastsPlatformsTable = $this->db->prefixTable('podcasts_platforms');
|
$podcastsPlatformsTable = $this->db->prefixTable('podcasts_platforms');
|
||||||
$platformsTable = $this->db->prefixTable('platforms');
|
$platformsTable = $this->db->prefixTable('platforms');
|
||||||
$deleteJoinQuery = <<<EOD
|
$deleteJoinQuery = <<<EOD
|
||||||
DELETE $podcastsPlatformsTable
|
DELETE $podcastsPlatformsTable
|
||||||
FROM $podcastsPlatformsTable
|
FROM $podcastsPlatformsTable
|
||||||
INNER JOIN $platformsTable ON $platformsTable.slug = $podcastsPlatformsTable.platform_slug
|
INNER JOIN $platformsTable ON $platformsTable.slug = $podcastsPlatformsTable.platform_slug
|
||||||
WHERE `podcast_id` = ? AND `type` = ?
|
WHERE `podcast_id` = ? AND `type` = ?
|
||||||
EOD;
|
EOD;
|
||||||
$this->db->query($deleteJoinQuery, [$podcastId, $platformType]);
|
$this->db->query($deleteJoinQuery, [$podcastId, $platformType]);
|
||||||
|
|
||||||
// Set podcastPlatforms
|
// Set podcastPlatforms
|
||||||
@ -173,7 +173,7 @@ EOD;
|
|||||||
foreach (['podcasting', 'social', 'funding'] as $platformType) {
|
foreach (['podcasting', 'social', 'funding'] as $platformType) {
|
||||||
cache()->delete("podcast{$podcastId}_platforms_{$platformType}");
|
cache()->delete("podcast{$podcastId}_platforms_{$platformType}");
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"podcast{$podcastId}_podcastPlatforms_{$platformType}"
|
"podcast{$podcastId}_podcastPlatforms_{$platformType}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// delete localized podcast page cache
|
// delete localized podcast page cache
|
||||||
@ -185,7 +185,7 @@ EOD;
|
|||||||
foreach ($years as $year) {
|
foreach ($years as $year) {
|
||||||
foreach ($supportedLocales as $locale) {
|
foreach ($supportedLocales as $locale) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$podcastId}_{$year['year']}_{$locale}"
|
"page_podcast{$podcastId}_year{$year['year']}_{$locale}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -193,7 +193,7 @@ EOD;
|
|||||||
foreach ($seasons as $season) {
|
foreach ($seasons as $season) {
|
||||||
foreach ($supportedLocales as $locale) {
|
foreach ($supportedLocales as $locale) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$podcastId}_season{$season['season_number']}_{$locale}"
|
"page_podcast{$podcastId}_season{$season['season_number']}_{$locale}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -202,14 +202,14 @@ EOD;
|
|||||||
foreach ($podcast->episodes as $episode) {
|
foreach ($podcast->episodes as $episode) {
|
||||||
foreach ($supportedLocales as $locale) {
|
foreach ($supportedLocales as $locale) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$podcast->id}_episode{$episode->id}_{$locale}"
|
"page_podcast{$podcast->id}_episode{$episode->id}_{$locale}",
|
||||||
);
|
);
|
||||||
foreach (
|
foreach (
|
||||||
array_keys(\App\Models\EpisodeModel::$themes)
|
array_keys(\App\Models\EpisodeModel::$themes)
|
||||||
as $themeKey
|
as $themeKey
|
||||||
) {
|
) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$podcast->id}_episode{$episode->id}_embeddable_player_{$themeKey}_{$locale}"
|
"page_podcast{$podcast->id}_episode{$episode->id}_embeddable_player_{$themeKey}_{$locale}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -241,10 +241,12 @@ class PodcastModel extends Model
|
|||||||
$seasons = $episodeModel->getSeasons($podcast->id);
|
$seasons = $episodeModel->getSeasons($podcast->id);
|
||||||
|
|
||||||
foreach ($years as $year) {
|
foreach ($years as $year) {
|
||||||
cache()->delete("podcast{$podcast->id}_{$year['year']}_episodes");
|
cache()->delete(
|
||||||
|
"podcast{$podcast->id}_year{$year['year']}_episodes",
|
||||||
|
);
|
||||||
foreach ($supportedLocales as $locale) {
|
foreach ($supportedLocales as $locale) {
|
||||||
cache()->delete(
|
cache()->delete(
|
||||||
"page_podcast{$podcast->id}_{$year['year']}_{$locale}",
|
"page_podcast{$podcast->id}_year{$year['year']}_{$locale}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user