track.php 2.58 KB
Newer Older
jurgbohn's avatar
jurgbohn committed
1 2
<?php

3
/* GNU FM -- a free network service for sharing your music listening habits
jurgbohn's avatar
jurgbohn committed
4

5
   Copyright (C) 2009 Free Software Foundation, Inc
jurgbohn's avatar
jurgbohn committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU Affero General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU Affero General Public License for more details.

   You should have received a copy of the GNU Affero General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

22
require_once('database.php');
clint's avatar
clint committed
23 24 25 26
require_once('templating.php');
require_once('data/sanitize.php');
require_once('data/Server.php');
require_once('data/TagCloud.php');
Jonas Haraldsson's avatar
Jonas Haraldsson committed
27
require_once('track-menu.php');
jurgbohn's avatar
jurgbohn committed
28

29
$track = new Track($_GET['track'], $_GET['artist']);
elleo's avatar
elleo committed
30
$smarty->assign('track', $track);
jurgbohn's avatar
jurgbohn committed
31

32
$album = new Album($track->album_name, $track->artist_name);
elleo's avatar
elleo committed
33
$smarty->assign('album', $album);
clint's avatar
clint committed
34

Jørgen Bøhnsdalen's avatar
Jørgen Bøhnsdalen committed
35 36
try {
	$artist = new Artist($track->artist_name);
37
} catch (Exception $e) {
38
	$smarty->assign('pageheading', 'Artist not found.');
Jørgen Bøhnsdalen's avatar
Jørgen Bøhnsdalen committed
39 40 41 42 43
	$smarty->assign('details', 'The artist ' . $track->artist_name . ' was not found in the database.');
	$smarty->display('error.tpl');
	die();
}

elleo's avatar
elleo committed
44
$smarty->assign('artist', $artist);
45 46
$smarty->assign('flattr_uid', $artist->flattr_uid);
$smarty->assign('url', $track->getURL());
47 48
$smarty->assign('pagetitle', $artist->name . ' : ' . $track->name);

49
if (isset($this_user) && $this_user->manages($artist->name)) {
50 51 52
	$smarty->assign('edit_link', $track->getEditURL());
}

53
if ($track->duration) {
54 55 56
	// Give the duration in MM:SS
	$mins = floor($track->duration / 60);
	$sec = floor($track->duration % 60);
57 58 59 60
	if (strlen($sec) == 1) {
		$sec = '0' . $sec;
	}
	$duration = $mins . ':' . $sec;
61 62
	$smarty->assign('duration', $duration);
}
63

64 65
$smarty->assign('extra_head_links', array(
		array(
66 67
			'rel'   => 'meta',
			'type'  => 'application/rdf+xml',
68
			'title' => 'Track Metadata',
69
			'href'  => $base_url . '/rdf.php?fmt=xml&page=' . urlencode(str_replace($base_url, '', $track->getURL()))
70
			)
Jonas Haraldsson's avatar
Jonas Haraldsson committed
71 72 73 74 75 76 77 78 79
		));

try {
	$tagCloud = TagCloud::generateTagCloud('Tags', 'tag', 10, $track->name, 'track');
} catch ( Exception $e) {
	$tagCloud = array();
}
$smarty->assign('tagcloud', $tagCloud);

Jonas Haraldsson's avatar
Jonas Haraldsson committed
80 81
$submenu = track_menu($track, 'Overview');
$smarty->assign('submenu', $submenu);
82
$smarty->assign('headerfile', 'track-header.tpl');
elleo's avatar
elleo committed
83
$smarty->display('track.tpl');