diff --git a/client_document_bulk_move_modal.php b/client_document_bulk_move_modal.php index 2fe8a524..79b37561 100644 --- a/client_document_bulk_move_modal.php +++ b/client_document_bulk_move_modal.php @@ -17,61 +17,67 @@ diff --git a/client_file_bulk_move_modal.php b/client_file_bulk_move_modal.php index 702d08cb..7a814a40 100644 --- a/client_file_bulk_move_modal.php +++ b/client_file_bulk_move_modal.php @@ -15,18 +15,69 @@
- - - + // Fetch all folders for the client + $sql_all_folders = mysqli_query($mysqli, "SELECT folder_id, folder_name, parent_folder FROM folders WHERE folder_location = 1 AND folder_client_id = $client_id ORDER BY folder_name ASC"); + $folders = array(); + + // Build an associative array of folders indexed by folder_id + while ($row = mysqli_fetch_assoc($sql_all_folders)) { + $folders[$row['folder_id']] = array( + 'folder_id' => intval($row['folder_id']), + 'folder_name' => nullable_htmlentities($row['folder_name']), + 'parent_folder' => intval($row['parent_folder']), + 'children' => array() + ); + } + + // Build the folder hierarchy + foreach ($folders as $id => &$folder) { + if ($folder['parent_folder'] != 0 && isset($folders[$folder['parent_folder']])) { + $folders[$folder['parent_folder']]['children'][] = &$folder; + } + } + unset($folder); // Break the reference + + // Prepare a list of root folders + $root_folders = array(); + foreach ($folders as $id => $folder) { + if ($folder['parent_folder'] == 0) { + $root_folders[] = $folder; + } + } + + // Display the folder options iteratively + $stack = array(); + foreach (array_reverse($root_folders) as $folder) { + $stack[] = array('folder' => $folder, 'level' => 0); + } + + while (!empty($stack)) { + $node = array_pop($stack); + $folder = $node['folder']; + $level = $node['level']; + + // Indentation for subfolders + $indentation = str_repeat(' ', $level * 4); + + // Check if this folder is selected + $selected = ''; + if ($folder['folder_id'] == $get_folder_id) { + $selected = 'selected'; + } + + echo ""; + + // Add children to the stack + if (!empty($folder['children'])) { + foreach (array_reverse($folder['children']) as $child_folder) { + $stack[] = array('folder' => $child_folder, 'level' => $level + 1); + } + } + } + ?> diff --git a/client_file_move_modal.php b/client_file_move_modal.php index e07dff64..bbfbeb13 100644 --- a/client_file_move_modal.php +++ b/client_file_move_modal.php @@ -18,16 +18,67 @@
- - - intval($row['folder_id']), + 'folder_name' => nullable_htmlentities($row['folder_name']), + 'parent_folder' => intval($row['parent_folder']), + 'children' => array() + ); + } + + // Build the folder hierarchy + foreach ($folders as $id => &$folder) { + if ($folder['parent_folder'] != 0 && isset($folders[$folder['parent_folder']])) { + $folders[$folder['parent_folder']]['children'][] = &$folder; + } + } + unset($folder); // Break the reference + + // Prepare a list of root folders + $root_folders = array(); + foreach ($folders as $id => $folder) { + if ($folder['parent_folder'] == 0) { + $root_folders[] = $folder; + } + } + + // Display the folder options iteratively + $stack = array(); + foreach (array_reverse($root_folders) as $folder) { + $stack[] = array('folder' => $folder, 'level' => 0); + } + + while (!empty($stack)) { + $node = array_pop($stack); + $folder = $node['folder']; + $level = $node['level']; + + // Indentation for subfolders + $indentation = str_repeat(' ', $level * 4); + + // Check if this folder is selected + $selected = ''; + if ($folder['folder_id'] == $file_folder_id) { + $selected = 'selected'; + } + + echo ""; + + // Add children to the stack + if (!empty($folder['children'])) { + foreach (array_reverse($folder['children']) as $child_folder) { + $stack[] = array('folder' => $child_folder, 'level' => $level + 1); + } + } } ?> diff --git a/client_file_rename_modal.php b/client_file_rename_modal.php index 57c24568..1f20c804 100644 --- a/client_file_rename_modal.php +++ b/client_file_rename_modal.php @@ -13,14 +13,17 @@ +
@@ -164,7 +220,7 @@ $num_of_files = mysqli_num_rows($sql);
- + ">
@@ -303,6 +359,7 @@ $num_of_files = mysqli_num_rows($sql); $file_icon = "file"; } $file_created_at = nullable_htmlentities($row['file_created_at']); + $file_folder_id = intval($row['file_folder_id']); // Check if shared $sql_shared = mysqli_query(