diff --git a/app/Controllers/Admin/EpisodeController.php b/app/Controllers/Admin/EpisodeController.php index ab2e21b99cb46f72cb22a732aa9215c59a4fa617..b2f55d18192a8a24d669ef5e6b3291814728be1e 100644 --- a/app/Controllers/Admin/EpisodeController.php +++ b/app/Controllers/Admin/EpisodeController.php @@ -22,7 +22,6 @@ use App\Models\SoundbiteModel; use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\I18n\Time; -use Config\Database; class EpisodeController extends BaseController { @@ -192,10 +191,12 @@ class EpisodeController extends BaseController } // update podcast's episode_description_footer_markdown if changed - $podcastModel = new PodcastModel(); + $this->podcast->episode_description_footer_markdown = $this->request->getPost( + 'description_footer' + ) === '' ? null : $this->request->getPost('description_footer'); if ($this->podcast->hasChanged('episode_description_footer_markdown')) { - $this->podcast->episode_description_footer_markdown = $this->request->getPost('description_footer'); + $podcastModel = new PodcastModel(); if (! $podcastModel->update($this->podcast->id, $this->podcast)) { return redirect() @@ -313,9 +314,14 @@ class EpisodeController extends BaseController $this->episode->chapters_file_remote_url = $chaptersFileRemoteUrl; } + $db = db_connect(); + $db->transStart(); + $episodeModel = new EpisodeModel(); if (! $episodeModel->update($this->episode->id, $this->episode)) { + $db->transRollback(); + return redirect() ->back() ->withInput() @@ -323,11 +329,15 @@ class EpisodeController extends BaseController } // update podcast's episode_description_footer_markdown if changed - $this->podcast->episode_description_footer_markdown = $this->request->getPost('description_footer'); + $this->podcast->episode_description_footer_markdown = $this->request->getPost( + 'description_footer' + ) === '' ? null : $this->request->getPost('description_footer'); if ($this->podcast->hasChanged('episode_description_footer_markdown')) { $podcastModel = new PodcastModel(); if (! $podcastModel->update($this->podcast->id, $this->podcast)) { + $db->transRollback(); + return redirect() ->back() ->withInput() @@ -335,6 +345,8 @@ class EpisodeController extends BaseController } } + $db->transComplete(); + return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id]); } @@ -407,7 +419,7 @@ class EpisodeController extends BaseController ->with('errors', $this->validator->getErrors()); } - $db = Database::connect(); + $db = db_connect(); $db->transStart(); $newNote = new Note([ @@ -503,7 +515,7 @@ class EpisodeController extends BaseController ->with('errors', $this->validator->getErrors()); } - $db = Database::connect(); + $db = db_connect(); $db->transStart(); $publishMethod = $this->request->getPost('publication_method'); @@ -589,7 +601,7 @@ class EpisodeController extends BaseController ->with('errors', $this->validator->getErrors()); } - $db = Database::connect(); + $db = db_connect(); $db->transStart(); diff --git a/app/Controllers/Admin/PodcastController.php b/app/Controllers/Admin/PodcastController.php index 2b294778feba89c68639e119e1ef74be55b12a1b..0fe70a48bbe3d91c67cecaf1619d8f9ac1695d10 100644 --- a/app/Controllers/Admin/PodcastController.php +++ b/app/Controllers/Admin/PodcastController.php @@ -19,7 +19,6 @@ use App\Models\LanguageModel; use App\Models\PodcastModel; use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\HTTP\RedirectResponse; -use Config\Database; use Config\Services; class PodcastController extends BaseController @@ -226,7 +225,7 @@ class PodcastController extends BaseController ]); $podcastModel = new PodcastModel(); - $db = Database::connect(); + $db = db_connect(); $db->transStart(); @@ -334,7 +333,7 @@ class PodcastController extends BaseController $this->podcast->is_locked = $this->request->getPost('lock') === 'yes'; $this->podcast->updated_by = (int) user_id(); - $db = Database::connect(); + $db = db_connect(); $db->transStart(); $podcastModel = new PodcastModel(); diff --git a/app/Controllers/Admin/PodcastImportController.php b/app/Controllers/Admin/PodcastImportController.php index 908a1b4d82bee910bdbb9b84652cdb09127dd980..fbc0cca288ae9b10708aad04341145345b313d2b 100644 --- a/app/Controllers/Admin/PodcastImportController.php +++ b/app/Controllers/Admin/PodcastImportController.php @@ -23,7 +23,6 @@ use App\Models\PlatformModel; use App\Models\PodcastModel; use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\HTTP\RedirectResponse; -use Config\Database; use Config\Services; use ErrorException; use League\HTMLToMarkdown\HtmlConverter; @@ -182,7 +181,7 @@ class PodcastImportController extends BaseController } $podcastModel = new PodcastModel(); - $db = Database::connect(); + $db = db_connect(); $db->transStart(); diff --git a/app/Controllers/InstallController.php b/app/Controllers/InstallController.php index 828a6bbd928db1c81c98ac6cafe00e13ba4e2d5f..09bf9044c665d74fd6d743a3d2d75c76e57f5e33 100644 --- a/app/Controllers/InstallController.php +++ b/app/Controllers/InstallController.php @@ -303,7 +303,7 @@ class InstallController extends Controller // Activate user $user->activate(); - $db = Database::connect(); + $db = db_connect(); $db->transStart(); if (! ($userId = $userModel->insert($user, true))) { diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php index ddde24bf0f90a00bf987465a2ce2097a4c1512fc..20dd2840890ec9939e3d17ff404ecf9c87dc972c 100644 --- a/app/Entities/Podcast.php +++ b/app/Entities/Podcast.php @@ -299,20 +299,29 @@ class Podcast extends Entity public function setEpisodeDescriptionFooterMarkdown(?string $episodeDescriptionFooterMarkdown = null): static { - if ($episodeDescriptionFooterMarkdown) { - $converter = new CommonMarkConverter([ - 'html_input' => 'strip', - 'allow_unsafe_links' => false, - ]); - + if ($episodeDescriptionFooterMarkdown === null || $episodeDescriptionFooterMarkdown === '') { $this->attributes[ 'episode_description_footer_markdown' - ] = $episodeDescriptionFooterMarkdown; + ] = null; $this->attributes[ 'episode_description_footer_html' - ] = $converter->convertToHtml($episodeDescriptionFooterMarkdown); + ] = null; + + return $this; } + $converter = new CommonMarkConverter([ + 'html_input' => 'strip', + 'allow_unsafe_links' => false, + ]); + + $this->attributes[ + 'episode_description_footer_markdown' + ] = $episodeDescriptionFooterMarkdown; + $this->attributes[ + 'episode_description_footer_html' + ] = $converter->convertToHtml($episodeDescriptionFooterMarkdown); + return $this; } diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index fd2af8d7c7d34fe556823bd0e06d46116a345e55..eeb24254da1a78cd5396439e84d26a2155e4221e 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -386,9 +386,9 @@ if (! function_exists('array_to_rss')) { $childXmlNode = $xmlNode->addChild( $childArrayNode['name'], $childArrayNode['content'] ?? null, - array_key_exists('namespace', $childArrayNode) - ? current($childArrayNode['namespace']) - : null, + $childArrayNode['namespace'] === [] + ? null + : current($childArrayNode['namespace']) ); if (array_key_exists('attributes', $childArrayNode)) { foreach ( diff --git a/app/Libraries/ActivityPub/Helpers/activitypub_helper.php b/app/Libraries/ActivityPub/Helpers/activitypub_helper.php index 7902c55680e1595dc36dc7420751e28d96a60e69..697801493aeb52f52c995c86bf05afffe9d8d0dc 100644 --- a/app/Libraries/ActivityPub/Helpers/activitypub_helper.php +++ b/app/Libraries/ActivityPub/Helpers/activitypub_helper.php @@ -67,7 +67,7 @@ if (! function_exists('accept_follow')) { $acceptActivity->set('actor', $actor->uri) ->set('object', $objectId); - $db = Database::connect(); + $db = db_connect(); $db->transStart(); $activityModel = model('ActivityModel'); diff --git a/app/Libraries/Analytics/AnalyticsTrait.php b/app/Libraries/Analytics/AnalyticsTrait.php index 6aa3cd5d50e6fd3b223ff00b3f9338c6c42ac034..18fa9addd530f09c70879f761a8e4495aea59902 100644 --- a/app/Libraries/Analytics/AnalyticsTrait.php +++ b/app/Libraries/Analytics/AnalyticsTrait.php @@ -10,7 +10,6 @@ declare(strict_types=1); namespace Analytics; -use Config\Database; use Config\Services; trait AnalyticsTrait @@ -28,7 +27,7 @@ trait AnalyticsTrait $session->start(); if (! $session->get('denyListIp')) { - $db = Database::connect(); + $db = db_connect(); $referer = $session->get('referer'); $domain = diff --git a/app/Libraries/Analytics/Helpers/analytics_helper.php b/app/Libraries/Analytics/Helpers/analytics_helper.php index 726e4db7255c8a37e74fe96be155d02580891c9f..789cb4092fff09b9a4aff7aa4ac73a5847106ff2 100644 --- a/app/Libraries/Analytics/Helpers/analytics_helper.php +++ b/app/Libraries/Analytics/Helpers/analytics_helper.php @@ -159,7 +159,7 @@ if (! function_exists('set_user_session_player')) { ]); // Add to unknown list try { - $db = Database::connect(); + $db = db_connect(); $procedureNameAnalyticsUnknownUseragents = $db->prefixTable('analytics_unknown_useragents'); $db->query("CALL {$procedureNameAnalyticsUnknownUseragents}(?)", [$userAgent]); // If things go wrong the show must go on and the user must be able to download the file @@ -321,7 +321,7 @@ if (! function_exists('podcast_hit')) { // If more that 1mn was downloaded, that's a hit, we send that to the database: if ($downloadedBytes >= $bytesThreshold) { - $db = Database::connect(); + $db = db_connect(); $procedureName = $db->prefixTable('analytics_podcasts'); $age = intdiv(time() - $publicationTime, 86400);