function shareAlbum($album_id) { global $cfg, $db; authenticate('access_admin', false, true); if ($cfg['album_share_stream'] == false) { message(__FILE__, __LINE__, 'error', '[b]Error[/b][br]Share album disabled'); } $query = mysql_query('SELECT artist_alphabetic, album, year FROM album WHERE album_id = "' . mysql_real_escape_string($album_id) . '"'); $album = mysql_fetch_assoc($query); if ($album == false) { message(__FILE__, __LINE__, 'error', '[b]Error[/b][br]album_id not found in database'); } // formattedNavigator $nav = array(); $nav['name'][] = 'Media'; $nav['url'][] = 'index.php'; $nav['name'][] = $album['artist_alphabetic']; $nav['url'][] = 'index.php?action=view2&artist=' . rawurlencode($album['artist_alphabetic']); $nav['name'][] = $album['album']; $nav['url'][] = 'index.php?action=view3&album_id=' . $album_id; $nav['name'][] = 'Share stream'; require_once 'include/header.inc.php'; $expire_time = time() + $cfg['share_stream_lifetime']; $sid = randomKey(); mysql_query('INSERT INTO share_stream (sid, album_id, stream_id, expire_time) VALUES ( "' . mysql_real_escape_string($sid) . '", "' . mysql_real_escape_string($album_id) . '", ' . (int) $cfg['stream_id'] . ', ' . (int) $expire_time . ')'); $url = NJB_HOME_URL . 'stream.php?action=playlist&sid=' . $sid; $name = $album['artist_alphabetic'] . ' - '; $name .= $album['year'] ? $album['year'] . ' - ' : ''; $name .= $album['album']; // $name = encodeEscapeChar($name); $transcode = false; $exact = true; $extensions = array(); $miliseconds = 0; $query = mysql_query('SELECT track.filesize, cache.filesize AS cache_filesize, miliseconds, audio_bitrate, track_id, LOWER(SUBSTRING_INDEX(track.relative_file, ".", -1)) AS extension FROM track LEFT JOIN cache ON track.track_id = cache.id AND cache.profile = ' . (int) $cfg['stream_id'] . ' WHERE album_id = "' . mysql_real_escape_string($album_id) . '"'); while ($track = mysql_fetch_assoc($query)) { if (in_array($track['extension'], $extensions) == false) { $extensions[] = $track['extension']; } if (sourceFile($track['extension'], $track['audio_bitrate'], $cfg['stream_id']) == false) { $transcode = true; if ($track['cache_filesize'] == false) { $exact = false; } } $miliseconds += $track['miliseconds']; } sort($extensions); $source = implode($extensions, ', '); $profile_name = $transcode ? $cfg['encode_name'][$cfg['stream_id']] . ' (' . $source . ' source)' : 'Source (' . $source . ')'; if ($transcode && $exact) { $cache_txt = 'Transcoded:'; $cache_png = $cfg['img'] . 'small_check.png'; } elseif ($transcode && !$exact) { $cache_txt = 'Transcoded:'; $cache_png = $cfg['img'] . 'small_uncheck.png'; } else { $cache_txt = 'Source:'; $cache_png = $cfg['img'] . 'small_check.png'; } ?> <form action="" name="form" id="form"> <table cellspacing="0" cellpadding="0" class="border"> <tr class="header"> <td class="space"></td> <td colspan="3"><?php echo html($name); ?> </td> <td class="space"></td> </tr> <tr class="line"><td colspan="5"></td></tr> <tr class="odd"> <td></td> <td>Play time:</td> <td></td> <td><?php echo formattedTime($miliseconds); ?> </td> <td class="space"></td> </tr> <tr class="even"> <td class="space"></td> <td>Stream profile:</td> <td class="textspace"></td> <td><?php echo html($profile_name); ?> </td> <td class="space"></td> </tr> <tr class="odd"> <td></td> <td><?php echo $cache_txt; ?> </td> <td></td> <td><img src="<?php echo $cache_png; ?> " alt="" class="small"></td> <td class="space"></td> </tr> <tr class="even"> <td></td> <td>Mail:</td> <td></td> <td><a href="mailto:?SUBJECT=<?php echo rawurlencode($name); ?> &BODY=---%0APlay%20time%3A%20<?php echo rawurlencode(formattedTime($miliseconds)); ?> %0AStream%3A%20<?php echo rawurlencode($name); ?> %0A<?php echo rawurlencode(str_replace('&', '&', $url)); ?> %0A%0AThis%20stream%20will%20expire%20<?php echo rawurlencode(date($cfg['date_format'], $expire_time)); ?> %20and%20locked%20to%20the%20first%20used%20IP%20address."><img src="<?php echo $cfg['img']; ?> small_mail.png" alt="" class="small"></a></td> <td></td> </tr> <tr class="odd"> <td></td> <td>URL:</td> <td></td> <td><input type="text" value="<?php echo $url; ?> " readonly class="url" onClick="focus(this); select(this);"></td> <td></td> </tr> <tr class="even"> <td></td> <td>QR Code:</td> <td></td> <td><img src="qrcode.php?d=<?php echo rawurlencode(str_replace('&', '&', $url)); ?> &e=l&s=3" alt=""></td> <td></td> </tr> </table> </form> <?php require_once 'include/footer.inc.php'; }
function onmouseoverDownloadTrack($track_id) { global $cfg, $db; $query = mysql_query('SELECT LOWER(SUBSTRING_INDEX(relative_file, ".", -1)) AS extension, relative_file, miliseconds, filesize, audio_bitrate, audio_dataformat, audio_encoder, audio_profile, audio_bits_per_sample, audio_sample_rate, audio_channels, video_codec, video_resolution_x, video_resolution_y, video_framerate FROM track WHERE track_id = "' . mysql_real_escape_string($track_id) . '"'); $track = mysql_fetch_assoc($query); if (sourceFile($track['extension'], $track['audio_bitrate'], $cfg['download_id'])) { $transcode = false; } else { $transcode = true; } $list = ''; if ($transcode) { $query = mysql_query('SELECT filesize FROM cache WHERE id = "' . mysql_real_escape_string($track_id) . '" AND profile = "' . mysql_real_escape_string($cfg['download_id']) . '"'); if ($cache = mysql_fetch_assoc($query)) { $list .= formattedSize($cache['filesize']); $list .= '<div class="ol_line"></div>'; $list .= $cfg['encode_name'][$cfg['download_id']]; $list .= ' (' . $track['extension'] . ' source)'; $list .= '<div class="ol_line"></div>'; $list .= 'Transcoded:<img src="' . $cfg['img'] . 'tiny_check.png" alt="" class="tiny">'; } else { $list .= html_entity_decode('± ', null, NJB_DEFAULT_CHARSET) . formattedSize($cfg['encode_bitrate'][$cfg['download_id']] * $track['miliseconds'] / 8 / 1000); $list .= '<div class="ol_line"></div>'; $list .= $cfg['encode_name'][$cfg['download_id']]; $list .= ' (' . $track['extension'] . ' source)'; $list .= '<div class="ol_line"></div>'; $list .= 'Transcoded:<img src="' . $cfg['img'] . 'tiny_uncheck.png" alt="" class="tiny">'; } } else { $list .= formattedSize($track['filesize']); $list .= '<div class="ol_line"></div>'; } if ($track['video_codec'] && $transcode == false) { $list .= $track['video_codec'] . '<br>'; $list .= $track['video_resolution_x'] . 'x'; $list .= $track['video_resolution_y'] . '<br>'; $list .= $track['video_framerate'] . ' fps'; } if ($track['audio_dataformat'] && $transcode == false) { if ($track['video_codec']) { $list .= '<div class="ol_line"></div>'; } $list .= $track['audio_dataformat'] . '<br>'; $list .= $track['audio_encoder'] . '<br>'; $list .= $track['audio_profile']; if ($track['audio_channels'] == 1) { $channels = 'Mono'; } elseif ($track['audio_channels'] == 2) { $channels = 'Stereo'; } else { $channels = $track['audio_channels'] . ' Channels'; } $list .= '<div class="ol_line"></div>'; $list .= $track['audio_bits_per_sample'] . ' bit | ' . $channels . ' | ' . formattedFrequency($track['audio_sample_rate']); } if ($transcode == false) { $list .= '<div class="ol_line"></div>'; $list .= 'Source:<img src="' . $cfg['img'] . 'tiny_check.png" alt="" class="tiny">'; } if (!$track['video_codec'] && !$track['audio_dataformat'] && $transcode == false) { $list .= '-'; } return 'onMouseOver="return overlib(\'' . addslashes(html($list)) . '\', CAPTION, \'Download track:\', WIDTH, 200);" onMouseOut="return nd();"'; }