{{-- ============================================================================ PAGE CONTENT — Kenyataan Media & Siaran Media Site : nres · Page slug: media-statement · Page ID: 34 Sumber: modul content-media · content_media → jenis, sumber, tarikh, imej, fail, pautan, status · content_media_translations → tajuk, ringkasan (BM/EN) Konsep: https://www.nres.gov.my/ms-my/PustakaMedia/Pages/KenyataanMedia.aspx (senarai jadual: Tarikh | Nama/Dokumen) Parameter URL: jenis KENYATAAN_MEDIA | SIARAN_MEDIA (kosong = semua) sumber kod MEDIA_SOURCE (cth NRES, JMG, FRIM) tahun tahun media_date (cth 2026) id id rekod → papar butiran penuh Nota: · SEMUA logik + markup + CSS ada dalam fail ini — tiada komponen, tiada partial. · Hanya media_status = PUBLISHED dipaparkan. · Senarai jenis dalam $medTypes — tambah 'KERATAN_AKHBAR' / 'INFOGRAFIK' jika perlu. · Fail disimpan pada disk 'public' (content-media/files) → URL = asset('storage/'.$path). · Warna guna CSS variable tema (--teal/--green/--fade/--line/--ink) → sokong dark mode. ============================================================================ --}} @php /* -------------------------------------------------------------------- | 1. Parameter & konteks -------------------------------------------------------------------- */ $medBase = url()->current(); $medQuery = request()->query(); $medLang = ($lang ?? session('locale', 'ms')) === 'en' ? 'en' : 'ms'; // Jenis media yang dipaparkan di halaman ini (mengikut menu "Kenyataan Media & Siaran Media") $medTypes = ['KENYATAAN_MEDIA', 'SIARAN_MEDIA']; $medTab = strtoupper((string) ($medQuery['jenis'] ?? '')); $medTab = in_array($medTab, $medTypes, true) ? $medTab : ''; $medSumber = (string) ($medQuery['sumber'] ?? ''); $medTahun = (string) ($medQuery['tahun'] ?? ''); $medTahun = preg_match('/^\d{4}$/', $medTahun) ? $medTahun : ''; $medId = (int) ($medQuery['id'] ?? 0); $medTabUrl = fn (string $key) => url()->current().'?'.http_build_query(array_filter(['jenis' => $key])); $medUrl = function (array $params = []) use ($medBase, $medTab, $medSumber, $medTahun, $medId) { $query = array_filter([ 'jenis' => array_key_exists('jenis', $params) ? $params['jenis'] : $medTab, 'sumber' => array_key_exists('sumber', $params) ? $params['sumber'] : $medSumber, 'tahun' => array_key_exists('tahun', $params) ? $params['tahun'] : $medTahun, 'id' => array_key_exists('id', $params) ? $params['id'] : ($medId ?: null), ], fn ($v) => $v !== null && $v !== ''); return $query ? $medBase.'?'.http_build_query($query) : $medBase; }; // Fail pada disk 'public' → URL awam $medFile = function ($path) { $path = trim((string) $path); if ($path === '') { return ''; } if (str_starts_with($path, 'http://') || str_starts_with($path, 'https://')) { return $path; } if (str_starts_with($path, 'dynaweb4/')) { return asset($path); } return asset('storage/'.ltrim($path, '/')); }; /* -------------------------------------------------------------------- | 2. Rujukan jenis & sumber -------------------------------------------------------------------- */ $medTypeLabel = []; $medTypeRefs = DB::table('ref')->where('cat', 'MEDIA_TYPE')->orderBy('sort')->get(); foreach ($medTypeRefs as $medRef) { $medTypeLabel[(string) $medRef->code] = $medLang === 'en' ? ((string) ($medRef->descr_en ?: $medRef->descr)) : ((string) $medRef->descr ?: $medRef->descr_en); } $medSourceLabel = []; foreach (DB::table('ref')->where('cat', 'MEDIA_SOURCE')->orderBy('sort')->get() as $medRef) { $medSourceLabel[(string) $medRef->code] = $medLang === 'en' ? ((string) ($medRef->descr_en ?: $medRef->descr)) : ((string) $medRef->descr ?: $medRef->descr_en); } $medTypeName = fn ($code) => $medTypeLabel[(string) $code] ?? (string) $code; $medSourceName = fn ($code) => $medSourceLabel[(string) $code] ?? (string) $code; // Label pendek untuk chip/jadual (nama panjang → guna kod, cth NRES, JMG) $medSourceShort = function ($code) use ($medSourceName) { $label = $medSourceName($code); return mb_strlen($label) > 24 ? str_replace('_', ' ', (string) $code) : $label; }; // Tarikh paparan (dd/mm/yyyy seperti laman rujukan) $medDate = function ($value) { if (blank($value)) { return ''; } try { return \Carbon\Carbon::parse($value)->format('d/m/Y'); } catch (\Throwable $e) { return (string) $value; } }; $medDateLong = function ($value) use ($medLang) { if (blank($value)) { return ''; } $months = $medLang === 'en' ? [1 => 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] : [1 => 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', 'November', 'Disember']; try { $date = \Carbon\Carbon::parse($value); return $date->day.' '.$months[(int) $date->month].' '.$date->year; } catch (\Throwable $e) { return (string) $value; } }; /* -------------------------------------------------------------------- | 3. Senarai media PUBLISHED + terjemahan -------------------------------------------------------------------- */ $medRows = DB::table('content_media') ->where('media_status', 'PUBLISHED') ->whereIn('media_type', $medTypes) ->orderByDesc('media_date') ->orderByDesc('media_id') ->get(); $medIds = $medRows->pluck('media_id')->all(); $medTr = $medIds ? DB::table('content_media_translations') ->whereIn('media_translation_parent_id', $medIds) ->get() ->groupBy('media_translation_parent_id') : collect(); $medItems = []; foreach ($medRows as $medRow) { $medTrRows = $medTr[$medRow->media_id] ?? collect(); $medTrRow = $medTrRows->firstWhere('media_translation_language', $medLang) ?? $medTrRows->firstWhere('media_translation_main', 1) ?? $medTrRows->first(); $medItems[] = [ 'id' => (int) $medRow->media_id, 'type' => (string) $medRow->media_type, 'source' => (string) ($medRow->media_source ?? ''), 'date' => $medRow->media_date, 'title' => (string) ($medTrRow->media_translation_title ?? ''), 'summary' => (string) ($medTrRow->media_translation_summary ?? ''), 'url' => (string) ($medRow->media_url ?? ''), 'img' => $medFile($medRow->media_img), 'file' => $medFile($medRow->media_file), 'file_name' => $medRow->media_file ? basename((string) $medRow->media_file) : '', 'year' => $medRow->media_date ? substr((string) $medRow->media_date, 0, 4) : '', ]; } /* -------------------------------------------------------------------- | 4. Penapis (jenis / sumber / tahun) -------------------------------------------------------------------- */ $medTypeCounts = []; foreach ($medTypes as $medTypeKey) { $medTypeCounts[$medTypeKey] = count(array_filter($medItems, fn ($medItem) => $medItem['type'] === $medTypeKey)); } $medSourceOptions = []; foreach ($medItems as $medItem) { if ($medItem['source'] !== '') { $medSourceOptions[$medItem['source']] = ($medSourceOptions[$medItem['source']] ?? 0) + 1; } } arsort($medSourceOptions); $medYearOptions = []; foreach ($medItems as $medItem) { if ($medItem['year'] !== '') { $medYearOptions[$medItem['year']] = ($medYearOptions[$medItem['year']] ?? 0) + 1; } } krsort($medYearOptions); // Buang penapis yang tidak sah (nilai tiada dalam data) if ($medSumber !== '' && ! isset($medSourceOptions[$medSumber])) { $medSumber = ''; } if ($medTahun !== '' && ! isset($medYearOptions[$medTahun])) { $medTahun = ''; } $medFiltered = array_values(array_filter($medItems, function ($medItem) use ($medTab, $medSumber, $medTahun) { if ($medTab !== '' && $medItem['type'] !== $medTab) { return false; } if ($medSumber !== '' && $medItem['source'] !== $medSumber) { return false; } return ! ($medTahun !== '' && $medItem['year'] !== $medTahun); })); $medIsFiltered = $medTab !== '' || $medSumber !== '' || $medTahun !== ''; /* -------------------------------------------------------------------- | 5. Butiran penuh (id) -------------------------------------------------------------------- */ $medDetail = null; if ($medId) { foreach ($medItems as $medItem) { if ($medItem['id'] === $medId) { $medDetail = $medItem; break; } } } $medTotal = count($medItems); @endphp
{{-- ============================ BREADCRUMB ============================ --}} {{-- ============================== TAJUK ============================== --}}
{{ $medLang === 'en' ? 'Media' : 'Media' }}

{{ $medLang === 'en' ? 'Media Statements & Media Releases' : 'Kenyataan Media & Siaran Media' }}

@if ($medLang === 'en') Official media statements and media releases issued by the Ministry of Natural Resources and Environmental Sustainability and its agencies. Read the summary or download the full document. @else Kumpulan kenyataan media dan siaran media rasmi Kementerian Sumber Asli dan Kelestarian Alam serta jabatan di bawahnya. Baca ringkasan atau muat turun dokumen penuh setiap kenyataan. @endif

{{-- =============================== TAB =============================== --}} {{-- ============================= PENAPIS ============================= --}} @if (count($medSourceOptions) > 0 || count($medYearOptions) > 1)
@if (count($medSourceOptions) > 1)
{{ $medLang === 'en' ? 'Source' : 'Sumber' }} {{ $medLang === 'en' ? 'All' : 'Semua' }} @foreach ($medSourceOptions as $medSourceKey => $medSourceCount) {{ $medSourceShort($medSourceKey) }} ({{ $medSourceCount }}) @endforeach
@endif @if (count($medYearOptions) > 1)
{{ $medLang === 'en' ? 'Year' : 'Tahun' }} {{ $medLang === 'en' ? 'All' : 'Semua' }} @foreach ($medYearOptions as $medYearKey => $medYearCount) {{ $medYearKey }} ({{ $medYearCount }}) @endforeach
@endif
@endif {{-- ============================= BUTIRAN ============================= --}} @if ($medDetail)
{{ $medTypeName($medDetail['type']) }} @if ($medDetail['source'] !== '') {{ $medSourceName($medDetail['source']) }} @endif

{{ $medDetail['title'] !== '' ? $medDetail['title'] : ($medLang === 'en' ? '(Statement without title)' : '(Kenyataan tanpa tajuk)') }}

{{ $medLang === 'en' ? 'Date' : 'Tarikh' }}: {{ $medDateLong($medDetail['date']) }} {{ $medLang === 'en' ? 'Source' : 'Sumber' }}: {{ $medDetail['source'] !== '' ? $medSourceName($medDetail['source']) : ($medLang === 'en' ? 'Not stated' : 'Tiada') }}
@if ($medDetail['img']) {{ $medDetail['title'] }} @endif @if ($medDetail['summary'] !== '')

{{ $medDetail['summary'] }}

@else

{{ $medLang === 'en' ? 'No summary is available for this statement. Please refer to the attached document.' : 'Tiada ringkasan disediakan untuk kenyataan ini. Sila rujuk dokumen yang dilampirkan.' }}

@endif @if ($medDetail['file'] !== '') @endif
@else {{-- --------------------------- kiraan --------------------------- --}}
@if ($medIsFiltered) {{ $medLang === 'en' ? 'Showing' : 'Menunjukkan' }} {{ count($medFiltered) }} {{ $medLang === 'en' ? 'of' : 'daripada' }} {{ $medTotal }} {{ $medLang === 'en' ? 'statements' : 'kenyataan' }} @else {{ $medLang === 'en' ? 'Total' : 'Jumlah' }} {{ $medTotal }} {{ $medLang === 'en' ? 'statements' : 'kenyataan' }} @endif @if ($medTab !== '') {{ $medTypeName($medTab) }} @endif @if ($medSumber !== '') {{ $medSourceShort($medSumber) }} @endif @if ($medTahun !== '') {{ $medTahun }} @endif
{{-- --------------------------- senarai --------------------------- --}} @if (count($medFiltered) > 0)
@if ($medTab === '') @endif @foreach ($medFiltered as $medIndex => $medItem) @if ($medTab === '') @endif @endforeach
# {{ $medLang === 'en' ? 'Date' : 'Tarikh' }} {{ $medLang === 'en' ? 'Title' : 'Tajuk' }}{{ $medLang === 'en' ? 'Type' : 'Jenis' }}{{ $medLang === 'en' ? 'Source' : 'Sumber' }} {{ $medLang === 'en' ? 'Document' : 'Dokumen' }}
{{ $medIndex + 1 }} {{ $medDate($medItem['date']) }}

{{ $medItem['title'] !== '' ? $medItem['title'] : ($medLang === 'en' ? '(Statement without title)' : '(Kenyataan tanpa tajuk)') }}

{{ $medTypeName($medItem['type']) }} {{ $medItem['source'] !== '' ? $medSourceShort($medItem['source']) : '—' }}
@if ($medItem['file'] !== '') {{ $medLang === 'en' ? 'Download' : 'Muat turun' }} @elseif ($medItem['url'] !== '') {{ $medLang === 'en' ? 'Open link' : 'Buka pautan' }} @else — @endif
@else
{{ $medLang === 'en' ? 'No statements found' : 'Tiada kenyataan ditemui' }}

{{ $medLang === 'en' ? 'There are no published media statements or media releases for this selection yet.' : 'Belum ada kenyataan media atau siaran media diterbitkan untuk pilihan ini.' }}

@if ($medIsFiltered) {{ $medLang === 'en' ? 'Reset filters' : 'Set semula penapis' }} @endif
@endif @endif {{-- =============================== NOTA ============================== --}}
{{ $medLang === 'en' ? 'Media enquiries' : 'Pertanyaan media' }}: @if ($medLang === 'en') Media enquiries may be directed to the Corporate Communications Division, Ministry of Natural Resources and Environmental Sustainability at +603 8091 7000. @else Sebarang pertanyaan pihak media boleh dikemukakan kepada Bahagian Komunikasi Korporat, Kementerian Sumber Asli dan Kelestarian Alam di talian +603 8091 7000. @endif