function fileError() { global $cfg, $db; authenticate('access_admin'); // formattedNavigator $nav = array(); $nav['name'][] = 'Configuration'; $nav['url'][] = 'config.php'; $nav['name'][] = 'Media statistics'; $nav['url'][] = 'statistics.php'; $nav['name'][] = 'File error'; require_once 'include/header.inc.php'; ?> <table cellspacing="0" cellpadding="0" class="border"> <tr class="header"> <td class="space"></td> <td<?php if ($cfg['access_play'] || $cfg['access_add'] || $cfg['access_stream']) { echo ' class="space"'; } ?> ></td> <td>Relative file</td> <td class="textspace"></td> <td>getID3() error message</td> <td class="textspace"></td> <td align="right">Filesize</td> <td<?php if ($cfg['delete_file']) { echo ' class="space"'; } ?> ></td> <td></td><!-- optional delete --> <td class="space"></td> </tr> <tr class="line"><td colspan="13"></td></tr> <?php $i = 0; $query = mysql_query('SELECT relative_file, filesize, error, track_id FROM track WHERE error != "" ORDER BY relative_file'); while ($track = mysql_fetch_assoc($query)) { ?> <tr class="<?php echo $i++ & 1 ? 'even' : 'odd'; ?> _error mouseover"> <td></td> <td></td> <td><?php echo html($track['relative_file']); ?> </td> <td></td> <td><?php echo html($track['error']); ?> </td> <td></td> <td align="right"><?php echo formattedSize($track['filesize']); ?> </td> <td></td> <td><?php if ($cfg['delete_file']) { echo '<a href="statistics.php?action=deleteFile&referer=statistics.php%3faction%3dfileError&relative_file=' . rawurlencode($track['relative_file']) . '&sign=' . $cfg['sign'] . '" onClick="return confirm(\'Are you sure you want to delete: ' . addslashes(html($track['relative_file'])) . '?\');" onMouseOver="return overlib(\'Delete\');" onMouseOut="return nd();"><img src="' . $cfg['img'] . 'small_delete.png" alt="" class="small"></a>'; } ?> </td> <td></td> </tr> <?php } echo '</table>' . "\n"; require_once 'include/footer.inc.php'; }
function batchTranscode() { global $cfg, $db; authenticate('access_admin'); // formattedNavigator $nav = array(); $nav['name'][] = 'Configuration'; $nav['url'][] = 'config.php'; $nav['name'][] = 'Batch transcode'; require_once 'include/header.inc.php'; ?> <table cellspacing="0" cellpadding="0" class="border"> <tr class="header"> <td class="space"></td> <td>Batch transcode</td> <td class="textspace"></td> <td align="right">Bitrate</td> <td class="textspace"></td> <td align="right">Cache size</td> <td class="textspace"></td> <td></td> <td class="space"></td> </tr> <?php $i = 0; foreach ($cfg['encode_name'] as $profile => $value) { $query = mysql_query('SELECT SUM(filesize) AS sumsize FROM cache WHERE profile = ' . (int) $profile . ' && LOWER(SUBSTRING_INDEX(relative_file, ".", -1)) != "' . mysql_real_escape_string($cfg['download_album_extension']) . '"'); $cache = mysql_fetch_assoc($query); ?> <tr class="<?php echo $i & 1 ? 'even' : 'odd'; $i++; ?> mouseover"> <td></td> <td><a href="download.php?action=batchTranscodeInit&profile=<?php echo $profile; ?> &sign=<?php echo $cfg['sign']; ?> " onClick="return confirm('Run only one instance of batch transcodig at once!\nAre you sure you want to start batch transcoding?');"><img src="<?php echo $cfg['img']; ?> small_transcode.png" alt="" class="small space"><?php echo html($value); ?> </a></td> <td></td> <td align="right"><?php if ($cfg['encode_vbr'][$profile]) { echo '± '; } echo formattedBirate($cfg['encode_bitrate'][$profile]); ?> </td> <td></td> <td align="right"><?php echo formattedSize($cache['sumsize']); ?> </td> <td></td> <td><a href="config.php?action=cacheDeleteProfile&profile=<?php echo $profile; ?> &sign=<?php echo $cfg['sign']; ?> " onClick="return confirm('Are you sure you want to delete all "<?php echo html($value); ?> " files from the cache?');" onMouseOver="return overlib('Delete');" onMouseOut="return nd();"><img src="<?php echo $cfg['img']; ?> small_delete.png" alt="" class="small space"></a></td> <td></td> </tr> <?php } $query = mysql_query('SELECT SUM(filesize) AS sumsize FROM cache WHERE profile = -2'); $cache = mysql_fetch_assoc($query); $i = 0; ?> <tr class="header"> <td></td> <td>Maintain cache</td> <td></td> <td align="right">Bitrate</td> <td></td> <td align="right">Cache size</td> <td colspan="2"></td> <td></td> </tr> <tr class="<?php echo $i & 1 ? 'even' : 'odd'; $i++; ?> mouseover"> <td></td> <td><a href="config.php?action=cacheDeleteProfile&profile=-2&sign=<?php echo $cfg['sign']; ?> " onClick="return confirm('Are you sure you want to delete all "wave" files from the cache?');"><img src="<?php echo $cfg['img']; ?> small_delete.png" alt="" class="small space">Delete wave</a></td> <td></td> <td align="right">1411.20 kbps</td> <td></td> <td align="right"><?php echo formattedSize($cache['sumsize']); ?> </td> <td colspan="2"></td> <td></td> </tr> <?php $query = mysql_query('SELECT SUM(filesize) AS sumsize FROM cache WHERE LOWER(SUBSTRING_INDEX(relative_file, ".", -1)) = "' . mysql_real_escape_string($cfg['download_album_extension']) . '"'); $cache = mysql_fetch_assoc($query); ?> <tr class="<?php echo $i & 1 ? 'even' : 'odd'; $i++; ?> mouseover"> <td></td> <td><a href="config.php?action=cacheDeleteProfile&profile=<?php echo rawurlencode($cfg['download_album_extension']); ?> &sign=<?php echo $cfg['sign']; ?> " onClick="return confirm('Are you sure you want to delete all "<?php echo html($cfg['download_album_extension']); ?> " files from the cache?');"><img src="<?php echo $cfg['img']; ?> small_delete.png" alt="" class="small space">Delete <?php echo html($cfg['download_album_extension']); ?> </a></td> <td></td> <td align="right">-</td> <td></td> <td align="right"><?php echo formattedSize($cache['sumsize']); ?> </td> <td colspan="2"></td> <td></td> </tr> <tr class="<?php echo $i & 1 ? 'even' : 'odd'; $i++; ?> mouseover"> <td></td> <td colspan="7"><a href="download.php?action=batchValidateCache&sign=<?php echo $cfg['sign']; ?> "><img src="<?php echo $cfg['img']; ?> small_update.png" alt="" class="small space">Validate cache</a></td> <td></td> </tr> </table> <?php require_once 'include/footer.inc.php'; }
function shareAlbum($album_id) { global $cfg, $db; authenticate('access_admin', false, true); if ($cfg['album_share_download'] == 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 download'; require_once 'include/header.inc.php'; $expire_time = time() + $cfg['share_download_lifetime']; $sid = randomKey(); mysql_query('INSERT INTO share_download (sid, album_id, download_id, expire_time) VALUES ( "' . mysql_real_escape_string($sid) . '", "' . mysql_real_escape_string($album_id) . '", ' . (int) $cfg['download_id'] . ', ' . (int) $expire_time . ')'); $url = NJB_HOME_URL . 'download.php?action=downloadAlbum&sid=' . $sid; $filename = $album['artist_alphabetic'] . ' - '; $filename .= $album['year'] ? $album['year'] . ' - ' : ''; $filename .= $album['album'] . '.' . $cfg['download_album_extension']; $filename = encodeEscapeChar($filename); $filesize = 0; $transcode = false; $exact = true; $extensions = array(); $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['download_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']; } $transcode_track = false; if (sourceFile($track['extension'], $track['audio_bitrate'], $cfg['download_id']) == false) { $transcode_track = true; $transcode = true; } if ($track['cache_filesize']) { $filesize += $track['cache_filesize']; } elseif ($transcode_track) { $filesize += round($cfg['encode_bitrate'][$cfg['download_id']] * $track['miliseconds'] / 8 / 1000); $exact = false; } else { $filesize += $track['filesize']; } } sort($extensions); $source = implode($extensions, ', '); if ($exact) { $size = formattedSize($filesize); } else { $size = html_entity_decode('± ', null, NJB_DEFAULT_CHARSET) . formattedSize($filesize); } $profile_name = $transcode ? $cfg['encode_name'][$cfg['download_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($filename); ?> </td> <td class="space"></td> </tr> <tr class="line"><td colspan="5"></td></tr> <tr class="odd"> <td></td> <td>File size:</td> <td></td> <td><?php echo $size; ?> </td> <td class="space"></td> </tr> <tr class="even"> <td class="space"></td> <td>Download 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($filename); ?> &BODY=---%0AFilesize%3A%20<?php echo rawurlencode($size); ?> %0ADownload%3A%20<?php echo rawurlencode($filename); ?> %0A<?php echo rawurlencode(str_replace('&', '&', $url)); ?> %0A%0AThis%20file%20will%20expire%20<?php echo rawurlencode(date($cfg['date_format'], $expire_time)); ?> %20or%20after%20one%20download%3B%20whatever%20comes%20first."><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();"'; }