<?php
/**
 * N3Download (Nesquik Download)
 *
 * Система представляет собой скрипт загруз-центра
 * Система написана на PHP, хранящая данные в БД MYSQL
 * Высокая скорость работы скрипта, устойчивость к нагрузкам
 *
 * Автор: N3squ1k (Несквик)
 * ICQ: 551-228
 *
 * Вы не имеете право продавать скрипта
 * Вы не имеете право вылаживать скрипта
 * Все права на данный скрипт пренадлежат его автору
 *
 * Все права защищены © 2010
 */

define('ROOT', str_replace(array('\\', '//'), '/', getcwd()).'/');

if (file_exists(ROOT.'__incfiles/core.php')) {
	require_once(ROOT.'__incfiles/core.php');
} else {
	exit('Немогу подключить системный файл');
}

$row = mysql_fetch_row(mysql_query("SELECT TRIM(`path`) FROM `".SQLprefixTable."files` WHERE `id`='".$id."'"));

if (file_exists($row[0])) {

	$ext = pathinfo($row[0], PATHINFO_EXTENSION);
	
	if ($ext == 'zip') {
	
		require_once(SYSTEM.'pclzip.lib.php');
		
		if (isset($_GET['view'])) {

			if (strpos($_GET['view'], './') !== false || strpos($_GET['view'], '..') !== false) {
				exit;
			}
			
			$_GET['view'] = htmlspecialchars(delete($_GET['view']));
			
			$zip = new PclZip($row[0]);
			$content = $zip->extract(PCLZIP_OPT_BY_NAME, $_GET['view'], PCLZIP_OPT_EXTRACT_AS_STRING);
			
			$content = $content[0]['content'];
			
			$letters = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л',
			'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы',
			'ь', 'э', 'ю', 'я', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К',
			'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ',
			'Ы', 'Ь', 'Э', 'Ю', 'Я');
			
			$utf = false;
			
			for ($b = 0; $b < 66; $b ++) {
				if (strstr($content, $letters[$b]) !== false) {
					$utf = true;
				}
			}
			
			$preview2 = explode("\r\n", $content);
			$count = count($preview2);
			
			$ext = pathinfo($_GET['view'], PATHINFO_EXTENSION);
			
			if ($ext == 'php' || $ext == 'html' || $ext == 'js' || $ext == 'sql' || $ext == 'htm' || $ext == 'wml' || $ext == 'dat' || $ext == 'txt' || $ext == 'log' || $ext == 'htaccess') {
				
				require_header('Просмотр файла '.basename($_GET['view']));

				echo '<div class="block">
				<b>Файл:</b> '.basename($_GET['view']).'<br/>
				<b>Строк:</b> '.$count.'</div>
				
				<div class="menu">';
				
				if ($utf) {
					echo highlight_string(trim($content), true);
				} else {
					echo highlight_string(iconv('windows-1251', 'utf-8', trim($content)));
				}
				
				echo '</div>
				
				<div class="block">
				<a href="'.SCRIPT.'/view/'.$id.'/">К файлу</a><br/>
				<a href="'.SCRIPT.'/'.$id.'.archive">Вернуться</a><br/>
				<a href="'.SCRIPT.'">Все загрузки</a>
				</div>';
				
				require_footer();
				
			} else {
				header('Location: '.SCRIPT.'/'.$id.'.archive');
			}
		
		} else {
		
			$zip = new PclZip($row[0]);

			if (!$list = $zip->listContent()) {
				error('Ошибка: '.$zip->errorInfo(true));
			}
			
			for ($i = 0; $i < count($list); $i ++) {
				for (reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
				
					$zfilesize = strstr($listcontent, '--size');
					$zfilesize = str_replace('--size:', '', $zfilesize);
					$zfilesize = str_replace($zfilesize, $zfilesize.'|', $zfilesize);
					$sizelist .= $zfilesize;
					$listcontent = "[$i]--$key:".$list[$i][$key];
					$zfile = strstr($listcontent, '--filename');
					$zfile = str_replace('--filename:', '', $zfile);
					$zfile = str_replace($zfile, $zfile.'|', $zfile);
					$savelist .= $zfile;
					
				}
			}
			
			$sizefiles2 = explode('|', $sizelist);
			
			$sizelist2 = array_sum($sizefiles2);
			
			$preview = $savelist;
			$preview = explode('|', $preview);
			
			$count = count($preview) - 1;
			
			require_header('Просмотр ZIP архива');
			
			echo '<div class="block">
			<b>Всего файлов:</b> '.$count.'<br/>
			<b>Вес распакованного архива:</b> '.size($sizelist2).'</div>';
			
			$sizefiles = explode('|', $sizelist);
			$selectfile = explode('|', $savelist);
			
			$page = isset($_GET['page']) ? abs(intval($_GET['page'])) : 1;
			
			$all = ceil($count / 10);
			
			$i = ($page * 10 - 10);
			
			if ($count < $i) {
				$i = 0;
			}
			
			$end = $i + 10;
			
			if ($count < $end) {
				$end = $count;
			}
			
			echo '<div class="menu">';
			
			for (; $i <= $end; $i ++) {
				if (empty($selectfile[$i])) {
					continue;
				}
				
				$path = $selectfile[$i];
				
				$fname = preg_replace('#.*[\\/]#', '', $path);
				$zdir = preg_replace('#[\\/]?[^\\/]*$#', '', $path);
				
				$ext = pathinfo($path, PATHINFO_EXTENSION);
				
				if ($ext == 'php' || $ext == 'html' || $ext == 'js' || $ext == 'sql' || $ext == 'htm' || $ext == 'wml' || $ext == 'dat' || $ext == 'txt' || $ext == 'log' || $ext == 'htaccess') {
					echo $zdir.'/<a href="'.SCRIPT.'/'.$id.'.archive/path,'.$path.'">'.$fname.'</a>';
				} else {
					echo $zdir.'/'.$fname;
				}
				
				if ($sizefiles[$i] != 0) {
					echo ' ['.size($sizefiles[$i]).']';
				}
				
				echo '<br/>';
			}
			
			echo '</div>';
			
			if ($all > 1) {
				navigation(SCRIPT.'/'.$id.'.archive/', $all, $page);
			}
			
			echo '<div class="block">
			<a href="'.SCRIPT.'/view/'.$id.'/">Вернуться</a><br/>
			<a href="'.SCRIPT.'">Все загрузки</a>
			</div>';
			
			require_footer();
			
		}
		
	} else {
		exit;
	}

} else {
	error('Файл не найден!');
}
?>