Allow filtering file list by upload target type

This commit is contained in:
Kijin Sung 2024-10-07 22:35:50 +09:00
parent c0ddc46f46
commit ef0ef45303
4 changed files with 23 additions and 6 deletions

View file

@ -293,7 +293,7 @@ class EditorModel extends Editor
// Check if the file already exists // Check if the file already exists
if ($upload_target_srl) 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); Context::set('files_count', (int)$files_count);

View file

@ -81,7 +81,9 @@ class FileModel extends File
} }
// Set file list // 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 = new stdClass;
$obj->file_srl = $file_info->file_srl; $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 * Return number of attachments which belongs to a specific document
* *
* @param int $upload_target_srl The sequence to get a number of files * @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 * @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 = new stdClass();
$args->upload_target_srl = $upload_target_srl; $args->upload_target_srl = $upload_target_srl;
if ($upload_target_type)
{
$args->upload_target_type = $upload_target_type;
}
$output = executeQuery('file.getFilesCount', $args); $output = executeQuery('file.getFilesCount', $args);
return (int)$output->data->count; return (int)$output->data->count;
} }
@ -430,12 +437,20 @@ class FileModel extends File
* @param string $sortIndex The column that used as sort index * @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. * @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 = new stdClass();
$args->upload_target_srl = $upload_target_srl; $args->upload_target_srl = $upload_target_srl;
$args->sort_index = $sortIndex; $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); $output = executeQueryArray('file.getFiles', $args, $columnList);
if(!$output->data) if(!$output->data)
{ {

View file

@ -4,6 +4,7 @@
</tables> </tables>
<conditions> <conditions>
<condition operation="equal" column="upload_target_srl" var="upload_target_srl" filter="number" notnull="notnull" /> <condition operation="equal" column="upload_target_srl" var="upload_target_srl" filter="number" notnull="notnull" />
<condition operation="equal" column="upload_target_type" var="upload_target_type" pipe="and" />
<condition operation="equal" column="isvalid" var="isvalid" pipe="and" /> <condition operation="equal" column="isvalid" var="isvalid" pipe="and" />
</conditions> </conditions>
<navigation> <navigation>

View file

@ -7,6 +7,7 @@
</columns> </columns>
<conditions> <conditions>
<condition operation="equal" column="upload_target_srl" var="upload_target_srl" filter="number" /> <condition operation="equal" column="upload_target_srl" var="upload_target_srl" filter="number" />
<condition operation="equal" column="upload_target_type" var="upload_target_type" pipe="and" />
<condition operation="like_prefix" column="regdate" var="regDate" pipe="and" /> <condition operation="like_prefix" column="regdate" var="regDate" pipe="and" />
</conditions> </conditions>
</query> </query>