Changeset e6ad948 in Klonkt for src/routes/epk.js
- Timestamp:
- 06/20/2026 06:47:41 AM (3 months ago)
- Branches:
- main
- Children:
- 08cfdaa
- Parents:
- 57b1843
- File:
-
- 1 edited
-
src/routes/epk.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/epk.js
r57b1843 re6ad948 25 25 if (!site) return next(); 26 26 27 // Top 10 meest beluisterde nummers (op play_count), niet zomaar de eerste paar. 28 const tracks = db.prepare( 29 `SELECT title, artist, duration, cover_url, COALESCE(play_count, 0) AS plays 30 FROM audio_tracks 31 WHERE site_id = ? 32 ORDER BY plays DESC, position ASC, created_at ASC 33 LIMIT 10` 34 ).all(site.id); 27 // Nummers op de perskit: een door de admin GEKOZEN selectie (max 5, in eigen 28 // volgorde) als die is ingesteld; anders automatisch de top 5 meest beluisterde. 29 let chosenIds = []; 30 try { 31 const raw = JSON.parse(getSetting('epk_tracks_' + site.id, '') || '[]'); 32 if (Array.isArray(raw)) chosenIds = raw.filter((x) => typeof x === 'string').slice(0, 5); 33 } catch (e) { /* ongeldige JSON → val terug op top */ } 34 35 let tracks; 36 if (chosenIds.length) { 37 const ph = chosenIds.map(() => '?').join(','); 38 const rows = db.prepare( 39 `SELECT id, title, artist, duration, cover_url, COALESCE(play_count, 0) AS plays 40 FROM audio_tracks WHERE site_id = ? AND id IN (${ph})` 41 ).all(site.id, ...chosenIds); 42 const byId = new Map(rows.map((r) => [r.id, r])); 43 tracks = chosenIds.map((id) => byId.get(id)).filter(Boolean); // behoud gekozen volgorde 44 } else { 45 tracks = db.prepare( 46 `SELECT title, artist, duration, cover_url, COALESCE(play_count, 0) AS plays 47 FROM audio_tracks 48 WHERE site_id = ? 49 ORDER BY plays DESC, position ASC, created_at ASC 50 LIMIT 5` 51 ).all(site.id); 52 } 35 53 36 54 const posts = db.prepare(
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)