refactor: optimize query usage in SyncSpotifyMusicProductions and SyncYoutubeReleases commands, enhance MusicProductionController by removing unused header logic, and update view structure for improved maintainability
This commit is contained in:
@@ -4,10 +4,9 @@ namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\MusicProduction;
|
||||
use App\Models\Setting;
|
||||
use App\Models\HeaderTemplate;
|
||||
use App\Models\FooterTemplate;
|
||||
use App\Services\TemplateService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class MusicProductionController extends Controller
|
||||
{
|
||||
@@ -15,7 +14,7 @@ class MusicProductionController extends Controller
|
||||
{
|
||||
// Get Settings
|
||||
$settings = new \stdClass();
|
||||
$allSettings = Setting::where('is_active', '=', true, 'and')->get();
|
||||
$allSettings = Setting::query()->where('is_active', true)->get();
|
||||
foreach ($allSettings as $setting) {
|
||||
$settings->{$setting->key} = $setting->value;
|
||||
}
|
||||
@@ -25,30 +24,12 @@ class MusicProductionController extends Controller
|
||||
->ordered()
|
||||
->paginate(9); // Using 9 for nice grid layout (3 per row)
|
||||
|
||||
// --- Header Logic ---
|
||||
$renderedHeader = null;
|
||||
$defaultHeaderId = $settings->default_header ?? null;
|
||||
|
||||
if ($defaultHeaderId) {
|
||||
$headerTemplate = HeaderTemplate::find($defaultHeaderId);
|
||||
if ($headerTemplate) {
|
||||
$templateDefaults = $headerTemplate->default_data ?? [];
|
||||
$mergedHeaderData = array_merge($templateDefaults, []);
|
||||
|
||||
$renderedHeader = TemplateService::replacePlaceholders(
|
||||
$headerTemplate->html_content,
|
||||
$mergedHeaderData,
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Footer Logic ---
|
||||
$renderedFooter = null;
|
||||
$defaultFooterId = $settings->default_footer ?? null;
|
||||
|
||||
if ($defaultFooterId) {
|
||||
$footerTemplate = FooterTemplate::find($defaultFooterId);
|
||||
$footerTemplate = FooterTemplate::query()->find($defaultFooterId);
|
||||
if ($footerTemplate) {
|
||||
$templateDefaults = $footerTemplate->default_data ?? [];
|
||||
$mergedFooterData = array_merge($templateDefaults, []);
|
||||
@@ -64,10 +45,16 @@ class MusicProductionController extends Controller
|
||||
$meta = [
|
||||
'title' => __('music_productions.nav-music-productions'),
|
||||
'description' => __('music_productions.meta-index-description'),
|
||||
'image' => asset('assets/img/photos/about28.jpg'),
|
||||
'image' => asset('assets/music-production.png'),
|
||||
];
|
||||
|
||||
return view('front.music-productions.index', compact('productions', 'settings', 'renderedHeader', 'renderedFooter', 'meta'));
|
||||
return view('front.music-productions.index', [
|
||||
'productions' => $productions,
|
||||
'settings' => $settings,
|
||||
'header' => 'partials.header-center-nav',
|
||||
'renderedFooter' => $renderedFooter,
|
||||
'meta' => $meta,
|
||||
]);
|
||||
}
|
||||
|
||||
public function show($slug)
|
||||
@@ -78,7 +65,7 @@ class MusicProductionController extends Controller
|
||||
|
||||
// Get Settings
|
||||
$settings = new \stdClass();
|
||||
$allSettings = Setting::where('is_active', '=', true, 'and')->get();
|
||||
$allSettings = Setting::query()->where('is_active', true)->get();
|
||||
foreach ($allSettings as $setting) {
|
||||
$settings->{$setting->key} = $setting->value;
|
||||
}
|
||||
@@ -108,30 +95,12 @@ class MusicProductionController extends Controller
|
||||
->orderBy('id', 'asc')
|
||||
->first();
|
||||
|
||||
// --- Header Logic ---
|
||||
$renderedHeader = null;
|
||||
$defaultHeaderId = $settings->default_header ?? null;
|
||||
|
||||
if ($defaultHeaderId) {
|
||||
$headerTemplate = HeaderTemplate::find($defaultHeaderId);
|
||||
if ($headerTemplate) {
|
||||
$templateDefaults = $headerTemplate->default_data ?? [];
|
||||
$mergedHeaderData = array_merge($templateDefaults, []);
|
||||
|
||||
$renderedHeader = TemplateService::replacePlaceholders(
|
||||
$headerTemplate->html_content,
|
||||
$mergedHeaderData,
|
||||
$production
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Footer Logic ---
|
||||
$renderedFooter = null;
|
||||
$defaultFooterId = $settings->default_footer ?? null;
|
||||
|
||||
if ($defaultFooterId) {
|
||||
$footerTemplate = FooterTemplate::find($defaultFooterId);
|
||||
$footerTemplate = FooterTemplate::query()->find($defaultFooterId);
|
||||
if ($footerTemplate) {
|
||||
$templateDefaults = $footerTemplate->default_data ?? [];
|
||||
$mergedFooterData = array_merge($templateDefaults, []);
|
||||
@@ -146,10 +115,18 @@ class MusicProductionController extends Controller
|
||||
|
||||
$meta = [
|
||||
'title' => $production->translate('title'),
|
||||
'description' => \Str::limit(strip_tags($production->translate('content')), 160),
|
||||
'description' => Str::limit(strip_tags($production->translate('content')), 160),
|
||||
'image' => $production->cover_image_url,
|
||||
];
|
||||
|
||||
return view('front.music-productions.show', compact('production', 'prev', 'next', 'settings', 'renderedHeader', 'renderedFooter', 'meta'));
|
||||
return view('front.music-productions.show', [
|
||||
'production' => $production,
|
||||
'prev' => $prev,
|
||||
'next' => $next,
|
||||
'settings' => $settings,
|
||||
'header' => 'partials.header-center-nav',
|
||||
'renderedFooter' => $renderedFooter,
|
||||
'meta' => $meta,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user