Changeset 56069
- Timestamp:
- 06/27/2023 04:06:16 PM (16 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/file.php
r55990 r56069 128 128 * @since 2.6.0 129 129 * @since 4.9.0 Added the `$exclusions` parameter. 130 * 131 * @param string $folder Optional. Full path to folder. Default empty. 132 * @param int $levels Optional. Levels of folders to follow, Default 100 (PHP Loop limit). 133 * @param string[] $exclusions Optional. List of folders and files to skip. 130 * @since 6.3.0 Added the `$include_hidden` parameter. 131 * 132 * @param string $folder Optional. Full path to folder. Default empty. 133 * @param int $levels Optional. Levels of folders to follow, Default 100 (PHP Loop limit). 134 * @param string[] $exclusions Optional. List of folders and files to skip. 135 * @param bool $include_hidden Optional. Whether to include details of hidden ("." prefixed) files. 136 * Default false. 134 137 * @return string[]|false Array of files on success, false on failure. 135 138 */ 136 function list_files( $folder = '', $levels = 100, $exclusions = array() ) {139 function list_files( $folder = '', $levels = 100, $exclusions = array(), $include_hidden = false ) { 137 140 if ( empty( $folder ) ) { 138 141 return false; … … 157 160 158 161 // Skip hidden and excluded files. 159 if ( '.' === $file[0]|| in_array( $file, $exclusions, true ) ) {162 if ( ( ! $include_hidden && '.' === $file[0] ) || in_array( $file, $exclusions, true ) ) { 160 163 continue; 161 164 } 162 165 163 166 if ( is_dir( $folder . $file ) ) { 164 $files2 = list_files( $folder . $file, $levels - 1 );167 $files2 = list_files( $folder . $file, $levels - 1, array(), $include_hidden ); 165 168 if ( $files2 ) { 166 169 $files = array_merge( $files, $files2 ); -
trunk/tests/phpunit/tests/functions/listFiles.php
r51331 r56069 20 20 $this->assertNotContains( ABSPATH . 'wp-admin/index.php', $admin_files ); 21 21 } 22 23 /** 24 * Tests that list_files() optionally includes hidden files. 25 * 26 * @ticket 53659 27 * 28 * @dataProvider data_list_files_should_optionally_include_hidden_files 29 * 30 * @param string $filename The name of the hidden file. 31 * @param bool $include_hidden Whether to include hidden ("." prefixed) files. 32 * @param string[] $exclusions List of folders and files to skip. 33 * @param bool $expected Whether the file should be included in the results. 34 */ 35 public function test_list_files_should_optionally_include_hidden_files( $filename, $include_hidden, $exclusions, $expected ) { 36 $test_dir = get_temp_dir() . 'test-list-files/'; 37 $hidden_file = $test_dir . $filename; 38 39 mkdir( $test_dir ); 40 touch( $hidden_file ); 41 42 $actual = list_files( $test_dir, 100, $exclusions, $include_hidden ); 43 44 unlink( $hidden_file ); 45 rmdir( $test_dir ); 46 47 if ( $expected ) { 48 $this->assertContains( $hidden_file, $actual, 'The file was not included.' ); 49 } else { 50 $this->assertNotContains( $hidden_file, $actual, 'The file was included.' ); 51 } 52 } 53 54 /** 55 * Data provider. 56 * 57 * @return array[] 58 */ 59 public function data_list_files_should_optionally_include_hidden_files() { 60 return array( 61 '$include_hidden = false and no exclusions' => array( 62 'filename' => '.hidden_file', 63 'include_hidden' => false, 64 'exclusions' => array(), 65 'expected' => false, 66 ), 67 '$include_hidden = true and no exclusions' => array( 68 'filename' => '.hidden_file', 69 'include_hidden' => true, 70 'exclusions' => array(), 71 'expected' => true, 72 ), 73 '$include_hidden = true and an excluded filename' => array( 74 'filename' => '.hidden_file', 75 'include_hidden' => true, 76 'exclusions' => array( '.hidden_file' ), 77 'expected' => false, 78 ), 79 ); 80 } 22 81 }
Note: See TracChangeset
for help on using the changeset viewer.