View file admin/design/import.php

File size: 2.26Kb
<?php
    include '../../engine/includes/start.php';
    if (!$creator)
        Core::stop();

	$set['title'] = 'Импорт дизайна';
    include incDir.'head.php';

	empty($_POST['url']) && !empty($_GET['url']) ? $_POST['url'] = $_GET['url'] : null;

    if (!empty($_POST['url']))
    {
		if ($_POST['url'] == 'http://')
		{
			$error = 'Не введен адрес';
		}
		else
		{
			$headers = @get_headers($_POST['url'], 1);

			if (!$headers)
				$error = 'Не удалось получить заголовки по указанному адресу';
		
			elseif (empty($_GET['url']) && !empty($headers['Content-Length']) && $headers['Content-Length'] >= 2097152)
				$error = 'Размер архива превышает 2 мб, <a href="?url='.htmlspecialchars($_POST['url']).'">продолжить?</a>';

			elseif ($headers['Content-Type'] != 'application/zip')
				$error = 'Только zip архивы';

			else
			{
				$design = pathinfo($_POST['url'], PATHINFO_FILENAME);

				if (is_dir(H . 'style/themes/' . $design))
					$error = 'Такая тема уже установлена';
				else
				{
					file_put_contents(tmpDir . $design, file_get_contents($_POST['url']));
					Core::get('zip');
					$zip = new Pclzip(tmpDir . $design);
					$contents = $zip->listContent();
            
					if ($contents == 0)
						$error = 'Архив поврежден или пуст';
					elseif (!array_key_exists('theme.ini', $contents))
						$error = 'theme.ini не найден';

					if (!isset($error))
					{
						$dir_install = H . 'style/themes/'.$design;
						if (is_dir($dir_install) || mkdir($dir_install))
							$zip->extract(PCLZIP_OPT_SUBSTITUE_FILE, $dir_install);
						unlink(tmpDir . $design);
						Core::msg_show('Тема установлена', 'menu_razd');
					}
					unset($zip, $config, $headers);
				}
			}
		}
		if (isset($error))
			Core::msg_show($error);
	}

    ?>
    <form method = "post">
        Путь к zip архиву:<br />
        <input type="text" name="url" value="http://"/><br />
        <input value = "Импорт" type="submit" />
    </form>
	<a href='/admin/?act=design'><div class="link">Дизайн</div></a>
    <a href='/admin/'><div class="link">Админка</div></a>
    <?php
    include incDir.'foot.php';