<?php
if(!defined('__KIMS__')) exit;

include_once $g['dir_module'].'var/var.php';

$R=getUidData($table['s_upload'],$uid);
if (!$R['uid']) getLink('','','정상적인 요청이 아닙니다.','');

if (!preg_match('/^[0-9]{4}\/[0-9]{2}\/[0-9]{2}$/', (string)$R['folder'])) exit;
$filename = str_replace(array("\r","\n",'"'), '', (string)$R['name']);
$filetmpname = basename(getUTFtoKR($R['tmpname']));

if ($R['url']==$d['upload']['ftp_urlpath'])
{
	$filepath = $d['upload']['ftp_urlpath'].$R['folder'].'/'.$filetmpname;
	$filesize = $R['size'];
}
else {
	$fileRoot = realpath($g['path_file']);
	$filepath = realpath($fileRoot.'/'.$R['folder'].'/'.$filetmpname);
	if (!$fileRoot || !$filepath || strpos($filepath, $fileRoot.DIRECTORY_SEPARATOR) !== 0 || !is_file($filepath)) exit;
	$filesize = filesize($filepath);
}

if (true)
{
	//동기화
	$cyncArr = getArrayString($R['cync']);
	$fdexp = explode(',',$cyncArr['data'][2]);

	if($fdexp[0]&&$fdexp[1]&&$cyncArr['data'][3])
	{
		if ($cyncArr['data'][0] == 'bbs' && $cyncArr['data'][1])
		{
			$AT = getUidData($table[$cyncArr['data'][0].'data'],$cyncArr['data'][1]);
			include_once $g['path_module'].$cyncArr['data'][0].'/var/var.'.$AT['bbsid'].'.php';
			$B['var'] = $d['bbs'];

			if (!$my['admin'] && $my['uid'] != $AT['mbruid'])
			{
				if ($B['var']['perm_l_down'] > $my['level'] || strstr($B['var']['perm_g_down'],'['.$my['sosok'].']'))
				{
					getLink('','','다운로드 권한이 없습니다.','-1');
				}
			}
			if ($B['var']['point3'])
			{
				if (!$my['uid']) getLink('','','다운로드 권한이 없습니다.','-1');

				$UT = getDbData($table[$cyncArr['data'][0].'xtra'],'parent='.$AT['uid'],'*');
				if (!strpos('_'.$UT['down'],'['.$my['uid'].']') && !strpos('_'.$_SESSION['module_'.$cyncArr['data'][0].'_dncheck'],'['.$AT['uid'].']'))
				{
					if ($confirm == 'Y' && $my['point'] >= $B['var']['point3'])
					{
						if (!$my['admin'] && $my['uid'] != $AT['mbruid'])
						{
							getDbInsert($table['s_point'],'my_mbruid,by_mbruid,price,content,d_regis',"'".$my['uid']."','0','-".$B['var']['point3']."','다운로드(".getStrCut($AT['subject'],15,'').")','".$date['totime']."'");
							getDbUpdate($table['s_mbrdata'],'point=point-'.$B['var']['point3'].',usepoint=usepoint+'.$B['var']['point3'],'memberuid='.$my['uid']);
							if (!$UT['parent'])
							{
								getDbInsert($table[$cyncArr['data'][0].'xtra'],'parent,site,bbs,down',"'".$AT['uid']."','".$s."','".$AT['bbs']."','[".$my['uid']."]'");
							}
							else {
								getDbUpdate($table[$cyncArr['data'][0].'xtra'],"down='".$UT['down']."[".$my['uid']."]'",'parent='.$AT['uid']);
							}
						}
						$_SESSION['module_'.$cyncArr['data'][0].'_dncheck'] = $_SESSION['module_'.$cyncArr['data'][0].'_dncheck'].'['.$AT['uid'].']';
						getLink('','','결제되었습니다. 다운로드 받으세요.','close');
					}
					else {
						getWindow($g['s'].'/?iframe=Y&r='.$r.'&m='.$cyncArr['data'][0].'&bid='.$AT['bbsid'].'&mod=down&dfile='.$uid.'&uid='.$AT['uid'],'','width=550px,height=350px,status=yes,toolbar=no,scrollbars=no',$_SERVER['HTTP_REFERER'].'#attach','');
						exit;
					}
				}
			}
		}

		$cyncQue = $fdexp[1].'='.$fdexp[1].'+1';
		getDbUpdate($cyncArr['data'][3],$cyncQue,$fdexp[0].'='.$cyncArr['data'][1]);
	}

	getDbUpdate($table['s_upload'],'down=down+1','uid='.$R['uid']);
	getDbUpdate($table['s_numinfo'],'download=download+1',"date='".$date['today']."' and site=".$s);

}

header("Content-Type: application/octet-stream"); 
header("Content-Length: " .$filesize); 
header("Content-Disposition: attachment; filename=\"download\"; filename*=UTF-8''".rawurlencode($filename)); 
header("Cache-Control: private, must-revalidate"); 
header("Pragma: no-cache");
header("Expires: 0");

if ($R['url']==$d['upload']['ftp_urlpath'])
{
	$FTP_CONNECT = ftp_connect($d['upload']['ftp_host'],$d['upload']['ftp_port']); 
	$FTP_CRESULT = ftp_login($FTP_CONNECT,$d['upload']['ftp_user'],$d['upload']['ftp_pass']); 
	if (!$FTP_CONNECT) getLink('','','FTP서버 연결에 문제가 발생했습니다.','');
	if (!$FTP_CRESULT) getLink('','','FTP서버 아이디나 패스워드가 일치하지 않습니다.','');
	if($d['upload']['ftp_pasv']) ftp_pasv($FTP_CONNECT, true);
	
	$filepath = $g['path_tmp'].'session/'.$filetmpname;
	ftp_get($FTP_CONNECT,$filepath,$d['upload']['ftp_folder'].$R['folder'].'/'.$filetmpname,FTP_BINARY);
	ftp_close($FTP_CONNECT);
	$fp = fopen($filepath, 'rb');
	if (!fpassthru($fp)) fclose($fp);
	unlink($filepath);
}
else {
	$fp = fopen($filepath, 'rb');
	if (!fpassthru($fp)) fclose($fp);
}
exit;
?>
