<?php
	/*
	*by Krite (http://upcoder.net)
	*/
	defined('_IN_JOHNCMS') or die('Error: restricted access');
	if(!empty($id))
	{
		if($user_id)
		{
			$textl = 'Блоги | Загрузка файла';
			require_once('../incfiles/head.php');
			
			if ($set_blogs['load_closed']==1)
			{
				echo '<div class="rmenu">ОШИБКА! Запрещено добавлять файлы!</div>';
				require_once ('../incfiles/end.php');
				exit;
			}
			
			$res = mysql_fetch_assoc(mysql_query('SELECT * FROM `'.$set['prefblog'].'blogs` WHERE `id`=' . $id .' LIMIT 1'));
			if ($res['uid'] != $user_id)
			{
				echo '<div class="rmenu">ОШИБКА! Вы не автор статьи!</div>';
				require_once ('../incfiles/end.php');
				exit;
			}
			
			$cp = mysql_result(mysql_query('SELECT MAX(`id`) FROM `'.$set['prefblog'].'blogs` WHERE `uid`='.$user_id.';'), 0);
			if ($cp != $id)
			{
				echo '<div class="rmenu">ОШИБКА! Не верный ID прикрепляемого файла или статьи!</div>';
				require_once ('../incfiles/end.php');
				exit;
			}
			
			echo '<div class="phdr">Загрузка файла</div>';
			if(!$_POST)
			{
				echo '<div class="list1">
				Макс. вес файла ' . formatsize(1024 * $set_blogs['max_file_size']) . '<br />
				Длина названия файла не должна превышать 50 символов!</div>';
				echo '<div class="list2">
				<form action="?act=atach&amp;id='.$id.'" method="POST" enctype="multipart/form-data">
				Выберите файл:<br />
				<input type="file" name="fail"/><br />';
				echo '<input type="submit" name="submit" value="Загрузить"/></form></div>';
				echo '<div class="menu"><a href="index.php?act=view&amp;id='.$id.'">В статью</a></div>';
			}
			else
			{
				$fsize = $_FILES['fail']['size'];
				$fname = $_FILES['fail']['name'];
				$ftip = format($fname);
				$fname = str_replace(".$ftip", "", $fname);
				$fname = rus_lat(mb_strtolower($fname));
				$fname = "$fname.$ftip";
				
				$ext_win = array('exe', 'msi');
				// Файлы Java
				$ext_java = array('jar', 'jad');
				// Файлы SIS
				$ext_sis = array('sis', 'sisx');
				// Файлы документов и тексты
				$ext_doc = array('txt', 'pdf', 'doc', 'rtf', 'djvu', 'xls');
				// Файлы картинок
				$ext_pic = array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'wmf', 'ico');
				// Файлы архивов
				$ext_zip = array('zip', 'rar', '7z', 'tar', 'gz');
				// Файлы видео
				$ext_video = array('3gp', 'avi', 'flv', 'mpeg', 'mp4');
				// Звуковые файлы
				$ext_audio = array('mp3', 'amr');
				// Другие типы файлов (что не перечислены выше)
				$ext_other = array();
				
				$tok = strtok($set_blogs['blog_ext'], ",");
				while($tok)
				{
					$blog_ext[] = $tok;
					$tok = strtok(",");
				}
				$ext = explode(".", $fname);

				$error = false;
				
				if (!$id || !$user_id)
					$error = $error . '<br />';
				if ($cp != $id)
					$error = $error . '<br />';
				if ($res['uid'] != $user_id)
					$error = $error . 'Файл не загружен<br />';
				if ($set_blogs['load_closed']==1)
					$error = $error . 'Запрещено добавлять файлы!<br />';
				elseif(mysql_result(mysql_query('SELECT COUNT(*) FROM `'.$set['prefblog'].'blogs_files` WHERE `post` = ' . $id . ';'), 0) > 0)
					$error = $error . 'Файл уже загружен<br />';
				if (empty($fsize))
				$error = $error . 'Не выбран файл<br />';
				elseif (!in_array($ftip, $blog_ext))
				{
					$error = $error . 'Запрещенный тип файла!<br />Разрешены только файлы, имеющие следующее расширение:<br /> '.str_replace(',',', ',join(',', $blog_ext)).'<br />';
				}
				// Проверка на запрещенные символы
				elseif (eregi("[^a-zA-Z0-9.()+_-]", $fname))
					$error = $error . 'В названии файла присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- ).';
				if ($fsize > (1024 * $set_blogs['max_file_size']))
					$error = $error . 'Вес файла превышает ' . formatsize(1024 * $set_blogs['max_file_size']) . '<br />';
				if (count($ext) != 2)
					$error = $error . 'Неправильное имя файла!<br />К отправке разрешены только файлы имеющие имя и одно расширение (<b>name.ext</b>).<br />Запрещены файлы не имеющие имени, расширения, или с двойным расширением.';
				if (strlen($fname) > 50)
					$error = $error . 'Длина названия файла не должна превышать 50 символов!';

				// Определяем тип файла
				$ext = strtolower($ext[1]);
				if (in_array($ext, $ext_win))
				$type = 1;
				elseif (in_array($ext, $ext_java))
				$type = 2;
				elseif (in_array($ext, $ext_sis))
				$type = 3;
				elseif (in_array($ext, $ext_doc))
				$type = 4;
				elseif (in_array($ext, $ext_pic))
				$type = 5;
				elseif (in_array($ext, $ext_zip))
				$type = 6;
				elseif (in_array($ext, $ext_video))
				$type = 7;
				elseif (in_array($ext, $ext_audio))
				$type = 8;
				else
				$type = 9;
				
				if (file_exists("files/$fname"))
				{
                    $fname = $realtime . $fname;
                }
				
				if (empty($error))
				{
					if ((move_uploaded_file($_FILES["fail"]["tmp_name"], "files/".$fname)) == true)
					{
						@ chmod($fname, 0777);
						@ chmod("files/".$fname, 0777);
						mysql_query("INSERT INTO `".$set['prefblog']."blogs_files` SET
						`ref` = '" . $res['ref'] . "',
						`post` = '" . $id . "',
						`time` = '" . $res['time'] . "',
						`name` = '" . mysql_real_escape_string(check($fname)) . "',
						`type` = '" . $type . "',
						`size` = '" . $fsize . "';");
						if($set_blogs['mod']!=1)
						{
							header('Location: index.php?act=view&id='.$id);
						}
						echo '<div class="menu">Файл загружен!</div>';
						echo '<div class="menu"><a href="./">Назад</a></div>';
					}
					else
					{
						echo '<div class="rmenu">Ошибка при загрузке файла!</div>';
						echo '<div class="menu"><a href="index.php?act=view&amp;id='.$id.'">В статью</a></div>';
					}
				}
				else
				{
					echo '<div class="rmenu"><strong>ОШИБКА!</strong><br />' . $error . '</div>';
					echo '<div class="menu"><a href="?id='.$id.'">Назад</a></div>';
					echo '<div class="menu"><a href="index.php?act=view&amp;id='.$id.'">В статью</a></div>';
				}
			}
		}
		else
		{
			header("Location: ../?err");
			exit;
		}
	}
	else
	{
		header("Location: ../?err");
		exit;
	}
?>