<?php
/*------------------------------------------------
 * Загрузчик файлов с фото в архиве
 * Copyright © FinBoss 2016 
 *
 *
 * License: Commercial open source software (COSS) 
 *------------------------------------------------
 */

@set_time_limit(0);
date_default_timezone_set('Europe/Moscow');
header('Content-Type: text/html; charset=utf-8');

/** Error reporting */
error_reporting(E_ALL);


$header ='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<title>Закачать файлы с фото в архиве</title>
</head>
<body style="font-family:Trebuchet MS; font-size: 10pt">
';

$footer = '
</body></html>
';

echo $header;

	$extensions = array('jpg', 'png', 'jpeg', 'gif');
	$msg = '';
	$msg_start = '';

	if (isset($_POST['Load'])){
		
		// загрузка файла
		if ($_FILES['file']['error'] == 0){
			
			if (is_uploaded_file($_FILES['file']['tmp_name'])) {
				
				$path_parts = pathinfo($_FILES['file']['name']);
				if ($path_parts['extension'] == 'zip'){
					$zip = new ZipArchive;
					if ($zip->open($_FILES['file']['tmp_name']) === TRUE) {
					    $zip->extractTo('tmp/');
					    $zip->close();
					    //echo 'zip-архив загружен и распакован';
					    
					    $found = false;
					    $count = 0;
						$d = dir('tmp');
						while (false !== ($entry = $d->read())) {
							if ($entry != ".")
								if ($entry != ".."){
									$path_parts = pathinfo('tmp/'.$entry);
									if (in_array(strtolower($path_parts['extension']), $extensions)){
										$found = true;
										@unlink('files/'.$entry);
										rename('tmp/'.$entry, 'files/'.$entry);
										$count++;
									}else{
										@unlink('tmp/'.$entry);
									}
								}
						}
						$d->close();
						
						if (!$found){
							$msg = "Ошибка: В zip-архиве отсутствуют файлы с расширениями '".implode("','", $extensions)."'";
						}else{
							$msg_start = "<br />Файл загружен и распакован. Всего загружено $count фото";
						}
					    
					} else {
					    $msg = "Ошибка: Не удалось распаковать zip-архив";
					}
					
				}else{
					$msg = "Ошибка: Расширение загруженного файла не 'zip'";
				}
				
			}else{
				$msg = "Ошибка: Не обнаружен загруженный файл";
			}
		
		}else{
			switch($_FILES['file']['error']) {
			case '1':
				$msg = "Ошибка: Размер загружаемого файла превышает максимальный допустимый";break;
			case '2':
				$msg = "Ошибка: Размер загружаемого файла превышает максимальный допустимый";break;
			case '3':
				$msg = "Ошибка: Загружаемый файл был получен только частично";break;
			case '4':
				$msg = "Ошибка: Файл не загружен";break;
			case '6':
				$msg = "Ошибка: На сервере отсутствует папка для временного хранения файлов";break;
			case '7':
				$msg = "Ошибка: Ошибка записи файла на диск";break;
			case '8':
				$msg = "Ошибка: Загрузка файла прекращена - недопустимое расширение файла";break;
			default:
				$msg = "Ошибка: При загрузке файла возникла неизвестная ошибка";break;
				}
		}

	}
	
?>
<table width="100%" bgcolor="#416e98">
<tr valign="middle">
<td><a href="upload_photo.php"><span style="font-size:25px; color:#FFF; font-family:Trebuchet MS; decoration:none;">Закачать файлы с фото в архиве</span></a></td>
<td align="right"><span style="font-size:15px; color:#FFF; font-family:Trebuchet MS"></span></td>
</tr>
</table>
<br /><br />
<center>

<form method="post" enctype="multipart/form-data" name="excelform">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="600">

<tr>
	<td width="200" align="right">
		<label for="file">
			Файл (zip): 
		</label>
	</td>
	<td width="400">
		<input type="file" id="file" name="file" size="45" />
	</td>
</tr>

<tr>
<td colspan="2" align="center"> <input type=submit value=Закачать name=Load /> </td>
</tr>
<?php 
	if ($msg_start != ''){
?>
<tr>
<td colspan="2" align="center"> 
<br />
<?php echo $msg_start ?>
</tr>
<?php 
	}
?>
</table></form>

<a href="view_photo.php">Просмотреть</a>

</center>
<?php 
if ($msg != ""){
	echo '<br />'.$msg;
	die;
}
		
echo $footer;


