From ef0ef45303bc9612b78b5d91d8dda92e2cc37cb1 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 7 Oct 2024 22:35:50 +0900 Subject: [PATCH] Allow filtering file list by upload target type --- modules/editor/editor.model.php | 4 ++-- modules/file/file.model.php | 23 +++++++++++++++++++---- modules/file/queries/getFiles.xml | 1 + modules/file/queries/getFilesCount.xml | 1 + 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index 989eaf037..aba1ed1a6 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -262,7 +262,7 @@ class EditorModel extends Editor $file_config->allowed_chunk_size = 0; } - Context::set('file_config',$file_config); + Context::set('file_config', $file_config); // Configure upload status such as file size $upload_status = FileModel::getUploadStatus(); @@ -293,7 +293,7 @@ class EditorModel extends Editor // Check if the file already exists if ($upload_target_srl) { - $files_count = FileModel::getFilesCount($upload_target_srl); + $files_count = FileModel::getFilesCount($upload_target_srl, $option->upload_target_type ?? null); } } Context::set('files_count', (int)$files_count); diff --git a/modules/file/file.model.php b/modules/file/file.model.php index 4781038d0..fc725a412 100644 --- a/modules/file/file.model.php +++ b/modules/file/file.model.php @@ -81,7 +81,9 @@ class FileModel extends File } // Set file list - foreach(self::getFiles($upload_target_srl) as $file_info) + $filter_type = $_SESSION['upload_info'][$editor_sequence]->upload_target_type ?? null; + $files = self::getFiles($upload_target_srl, [], 'file_srl', false, $filter_type); + foreach ($files as $file_info) { $obj = new stdClass; $obj->file_srl = $file_info->file_srl; @@ -288,12 +290,17 @@ class FileModel extends File * Return number of attachments which belongs to a specific document * * @param int $upload_target_srl The sequence to get a number of files + * @param ?string $upload_target_type * @return int Returns a number of files */ - public static function getFilesCount($upload_target_srl) + public static function getFilesCount($upload_target_srl, $upload_target_type = null) { $args = new stdClass(); $args->upload_target_srl = $upload_target_srl; + if ($upload_target_type) + { + $args->upload_target_type = $upload_target_type; + } $output = executeQuery('file.getFilesCount', $args); return (int)$output->data->count; } @@ -430,12 +437,20 @@ class FileModel extends File * @param string $sortIndex The column that used as sort index * @return array Returns array of object that contains file information. If no result returns null. */ - public static function getFiles($upload_target_srl, $columnList = array(), $sortIndex = 'file_srl', $ckValid = false) + public static function getFiles($upload_target_srl, $columnList = array(), $sortIndex = 'file_srl', $valid_files_only = false, $upload_target_type = null) { $args = new stdClass(); $args->upload_target_srl = $upload_target_srl; $args->sort_index = $sortIndex; - if($ckValid) $args->isvalid = 'Y'; + if ($valid_files_only) + { + $args->isvalid = 'Y'; + } + if ($upload_target_type) + { + $args->upload_target_type = $upload_target_type; + } + $output = executeQueryArray('file.getFiles', $args, $columnList); if(!$output->data) { diff --git a/modules/file/queries/getFiles.xml b/modules/file/queries/getFiles.xml index d0e326fb3..a5b0877b4 100644 --- a/modules/file/queries/getFiles.xml +++ b/modules/file/queries/getFiles.xml @@ -4,6 +4,7 @@ + diff --git a/modules/file/queries/getFilesCount.xml b/modules/file/queries/getFilesCount.xml index 81a257cd1..df0f7b6a8 100644 --- a/modules/file/queries/getFilesCount.xml +++ b/modules/file/queries/getFilesCount.xml @@ -7,6 +7,7 @@ +