diff --git a/app/Controllers/Admin/PodcastImport.php b/app/Controllers/Admin/PodcastImport.php index c30ed390e5c63c0025daa900c1fbfed0a732c6c1..c4c5def8a7b274f4d59f92eb5b928b86f618ee7f 100644 --- a/app/Controllers/Admin/PodcastImport.php +++ b/app/Controllers/Admin/PodcastImport.php @@ -107,41 +107,61 @@ class PodcastImport extends BaseController $channelDescriptionHtml = $feed->channel[0]->description; - $podcast = new \App\Entities\Podcast([ - 'name' => $this->request->getPost('name'), - 'imported_feed_url' => $this->request->getPost('imported_feed_url'), - 'new_feed_url' => base_url( - route_to('podcast_feed', $this->request->getPost('name')) - ), - 'title' => $feed->channel[0]->title, - 'description_markdown' => $converter->convert( - $channelDescriptionHtml - ), - 'description_html' => $channelDescriptionHtml, - 'image' => download_file($nsItunes->image->attributes()), - 'language_code' => $this->request->getPost('language'), - 'category_id' => $this->request->getPost('category'), - 'parental_advisory' => empty($nsItunes->explicit) - ? null - : (in_array($nsItunes->explicit, ['yes', 'true']) - ? 'explicit' - : (in_array($nsItunes->explicit, ['no', 'false']) - ? 'clean' - : null)), - 'owner_name' => $nsItunes->owner->name, - 'owner_email' => $nsItunes->owner->email, - 'publisher' => $nsItunes->author, - 'type' => empty($nsItunes->type) ? 'episodic' : $nsItunes->type, - 'copyright' => $feed->channel[0]->copyright, - 'is_blocked' => empty($nsItunes->block) - ? false - : $nsItunes->block === 'yes', - 'is_completed' => empty($nsItunes->complete) - ? false - : $nsItunes->complete === 'yes', - 'created_by' => user(), - 'updated_by' => user(), - ]); + try { + $podcast = new \App\Entities\Podcast([ + 'name' => $this->request->getPost('name'), + 'imported_feed_url' => $this->request->getPost( + 'imported_feed_url' + ), + 'new_feed_url' => base_url( + route_to('podcast_feed', $this->request->getPost('name')) + ), + 'title' => $feed->channel[0]->title, + 'description_markdown' => $converter->convert( + $channelDescriptionHtml + ), + 'description_html' => $channelDescriptionHtml, + 'image' => $nsItunes->image && !empty($nsItunes->image->attributes()) + ? download_file($nsItunes->image->attributes()) + : ($feed->channel[0]->image && !empty($feed->channel[0]->image->url) + ? download_file($feed->channel[0]->image->url) + : null), + 'language_code' => $this->request->getPost('language'), + 'category_id' => $this->request->getPost('category'), + 'parental_advisory' => empty($nsItunes->explicit) + ? null + : (in_array($nsItunes->explicit, ['yes', 'true']) + ? 'explicit' + : (in_array($nsItunes->explicit, ['no', 'false']) + ? 'clean' + : null)), + 'owner_name' => $nsItunes->owner->name, + 'owner_email' => $nsItunes->owner->email, + 'publisher' => $nsItunes->author, + 'type' => empty($nsItunes->type) ? 'episodic' : $nsItunes->type, + 'copyright' => $feed->channel[0]->copyright, + 'is_blocked' => empty($nsItunes->block) + ? false + : $nsItunes->block === 'yes', + 'is_completed' => empty($nsItunes->complete) + ? false + : $nsItunes->complete === 'yes', + 'created_by' => user(), + 'updated_by' => user(), + ]); + } catch (\ErrorException $ex) { + return redirect() + ->back() + ->withInput() + ->with('errors', [ + $ex->getMessage() . + ': <a href="' . + $this->request->getPost('imported_feed_url') . + '" rel="noreferrer noopener" target="_blank">' . + $this->request->getPost('imported_feed_url') . + ' ⎋</a>', + ]); + } $podcastModel = new PodcastModel(); $db = \Config\Database::connect(); @@ -200,10 +220,12 @@ class PodcastImport extends BaseController 'is_visible' => false, ]); } - $platformModel->createPodcastPlatforms( - $newPodcastId, - $podcastsPlatformsData - ); + if (count($podcastsPlatformsData) > 1) { + $platformModel->createPodcastPlatforms( + $newPodcastId, + $podcastsPlatformsData + ); + } $numberItems = $feed->channel[0]->item->count(); $lastItem =