Добавление комментария к загружаемому на сервер ZIP архиву

Добавление комментария к загружаемому на сервер ZIP архиву

Данный хак позволяет автоматически добавлять комментарий к загружаемому на сервер ZIP архиву.
 
Возможности:
- Выбор типа комментария архива.
- Добавление обычного комментария в архив.
- Добавление файла в архив, который лежит в корне сайта.
- Создание файла с комментарием.
- Возможность указать максимальный вес файла, который будем править, в Кб, чтобы ограничить нагрузку на сервер.

Требования:
PHP 5: 5.2.0+
PECL zip: 1.1.0+

Установка:
1. Открыть engine/classess/uploads/upload.class.php и найти ~471 строка:
$uploaded_filename = $this->file->saveFile(ROOT_DIR . "/uploads/files/".FOLDER_PREFIX, $filename, $this->use_prefix);

Добавить ниже:
			$ZipArchiveOpt = array (
				'type' => "1", // Тип (1 - Добавление обычного комментария в архив; 2 - Добавление файла в архив, который лежит в корне сайта; 3 - Создание файла с комментарием)
				'size' => "10240", // Максимальный вес файла в Кб, чтобы ограничить нагрузку на сервер 
				'name' => "ReadMe.txt", // ReadMe.txt - имя файла, который будет создан
				'file' => "ReadMe.txt", // ReadMe.txt - имя файла, который будет взят с папки uploads, в котором будет ваш комментарий
				'comment' => "Архив скачан с сайта dle-free.ru", // Комментарий архива
			);
			if($ZipArchiveOpt['type'] == 1) {
				if(stripos ( $filename, ".zip" ) AND ($size <= $ZipArchiveOpt['size']) AND (PHP 5 >= 5.2.0, PECL zip >= 1.1.0)) {
					$data_url = ROOT_DIR . "/uploads/files/" . FOLDER_PREFIX .$uploaded_filename;
					$zip = new ZipArchive;
					if ($zip->open($data_url) === TRUE){
						$zip->setArchiveComment($ZipArchiveOpt['comment']);
						$zip->close();
					}
				}
			} elseif ($ZipArchiveOpt['type'] == 2) {
				if(stripos ( $filename, ".zip" ) AND ($size <= $ZipArchiveOpt['size']) AND (PHP 5 >= 5.2.0, PECL zip >= 1.1.0)) {
					$data_url = ROOT_DIR . "/uploads/files/" . FOLDER_PREFIX .$uploaded_filename;
					$data_urls = ROOT_DIR . "/uploads/" .$ZipArchiveOpt['file'];
					$zip = new ZipArchive;
					if ($zip->open($data_url, ZipArchive::CREATE) === TRUE){
						$zip->addFile("{$data_urls}", "{$ZipArchiveOpt['file']}");
						$zip->close();
					}
				}
			} else {
				if(stripos ( $filename, ".zip" ) AND ($size <= $ZipArchiveOpt['size']) AND (PHP 5 >= 5.2.0, PECL zip >= 1.1.0)) {
					$data_url = ROOT_DIR . "/uploads/files/" . FOLDER_PREFIX .$uploaded_filename;
					$zip = new ZipArchive;
					if ($zip->open($data_url, ZipArchive::CREATE) === TRUE){
						$zip->addFromString("{$ZipArchiveOpt['name']}","{$ZipArchiveOpt['comment']}");
						$zip->close();
					}
				}
			}

2. У кого возникнут проблемы с кодировкой, находим:
if($ZipArchiveOpt['type'] == 1 ) {

Добавляем выше:
$ZipArchiveOpt['comment'] = iconv("WINDOWS-1251", "UTF-8", $ZipArchiveOpt['comment']);

или
$ZipArchiveOpt['comment'] = iconv("UTF-8", "WINDOWS-1251", $ZipArchiveOpt['comment']);

Готово!

 
Версия DLE: 9.x-10.2
Автор: Qnut
  • Oxigen
  • 0
  • 200
Информация
Оставлять комментарии могут только зарегистрированные посетители.
  • Рейтинг@Mail.ru
  • Яндекс.Метрика