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

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

Несколько простых хаков для DLE, позволяющих в автоматическом режиме добавлять комментарий к загруженному к новости файлу/ам. При этом файл должен быть упакован в архив с расширением *.zip .


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

			if ( $uploaded_filename ) {

Добавить ниже - вариант 1:
                if( $type == "zip" ) {
                    $file_path = ROOT_DIR . "/uploads/files/" . FOLDER_PREFIX . $uploaded_filename;
                    $zip = new ZipArchive;
                    
                    if( $zip->open($file_path) === TRUE ) {
                        $zip->setArchiveComment( 'Архив скачан с сайта http://...' );
                        $zip->close();
                    }
                    
                } elseif( $type == "rar" ) {
                    $file = str_replace( ".rar", "", $uploaded_filename );
                    
                    $file_path = ROOT_DIR . "/uploads/files/" . FOLDER_PREFIX . $uploaded_filename;
                    $zip = new ZipArchive;
                    
                    if( $zip->open(ROOT_DIR . "/uploads/files/" . FOLDER_PREFIX . $file . ".zip", ZipArchive::CREATE) === TRUE ) {
                        $zip->addFile( $file_path, $uploaded_filename );
                        $zip->setArchiveComment( 'Архив скачан с сайта http://...' );
                        $zip->close();
                        
                        @unlink( $file_path );
                        
                        $uploaded_filename = $file . ".zip";
                        $filename = $uploaded_filename;

                    }
                }

Добавить ниже - вариант 2:
//Настройка хака
            $ZipArchiveOpt = array (
                'type' => "1", // Тип (1 - Добавление обычного комментария в архив; 2 - Добавление файла в архив, который лежит в корне сайта; 3 - Создание файла с комментарием)
                'size' => "10240", // Максимальный вес файла в Кб, чтобы ограничить нагрузку на сервер 
                'name' => "ReadMe.txt", // ReadMe.txt - имя файла, который будет создан
                'file' => "ReadMe.txt", // ReadMe.txt - имя файла, который будет взят с папки uploads, в котором будет ваш комментарий
                'comment' => "Архив скачан с сайта http://...", // Комментарий архива
            );
            if($ZipArchiveOpt['type'] == 1 ) {
                if(stripos ( $filename, ".zip" ) AND ($size <= $ZipArchiveOpt['size'])) {
                    $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'])) {
                    $data_url = ROOT_DIR . "/uploads/files/" . FOLDER_PREFIX .$uploaded_filename;
                    $data_name = ROOT_DIR . "/uploads/files/" . FOLDER_PREFIX .$uploaded_filename;
                    $zip = new ZipArchive;
                    if ($zip->open($data_url, ZipArchive::CREATE) === TRUE){
                        $zip->addFile("{$data_name}", "{$ZipArchiveOpt['comment']}");
                        $zip->close();
                    }
                }
            } else {
                if(stripos ( $filename, ".zip" ) AND ($size <= $ZipArchiveOpt['size'])) {
                    $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();
                    }
                }
            }
 
Версия DLE: 13.x-14.x
Автор: coderlaba + vitnet
Источник
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.

Комментариев 4

stimul 12 апреля 2023 12:56
DarkLane, проверил работает)
DarkLane 11 апреля 2023 19:17
botaniq, в файле engine/classes/uploads/upload.class.php найдите
if ( !$uploaded_filename ){
				return $this->msg_error( $lang['images_uperr_3'] );
			}

и вставьте приведенный код.
stimul 11 апреля 2023 14:05
botaniq, нужно искать это:
			$uploaded_filename = $this->file->saveFile($this->upload_path . FOLDER_PREFIX, $filename, $auto_prefix, $force_prefix);

			if ( DLEFiles::$error ){
				return $this->msg_error( DLEFiles::$error );
			}
			
			if ( !$uploaded_filename ){
botaniq 5 апреля 2023 20:00
Обновить бы статейку если кто может, на 16.0 не работает интересный хак)