使WordPress成为核心

变更集56069


忽略:
时间戳:
2023年6月27日下午04:06:16(11个月(之前)
作者:
米克斯色度计
消息:

文件系统API:允许在中可选包含隐藏文件列表文件()

添加新的可选$include_hidden($包含_隐藏)参数以允许包含隐藏的(前缀)文件。
向后兼容性默认为false。

Props yani.iliev、sabernhardt、costdev、rutviksavsani、zunaid321、azaozz。
修复#53659

位置:
大旅行箱
文件夹:
2已编辑

图例:

未修改
补充
远离的
  • trunk/src/wp-admin/includes/file.php

    55990兰特 56069兰特  
    128128*@自2.6.0起
    129129*@自4.9.0起添加了`$exclusions`参数。
    130  *
    131 *@param string$folder可选。文件夹的完整路径。默认为空。
    132 *@param int$levels可选。要遵循的文件夹级别,默认为100(PHP循环限制)。
    133 *@param string[]$exclusions可选。要跳过的文件夹和文件的列表。
     130*@自6.3.0起添加了`$include_hidden`参数。
     131 *
     132*@param string$folder可选。文件夹的完整路径。默认为空。
     133*@param int$levels可选。要遵循的文件夹级别,默认为100(PHP循环限制)。
     134*@param string[]$exclusions可选。要跳过的文件夹和文件列表。
     135*@param bool$include_hidden可选。是否包含隐藏(前缀为“.”)文件的详细信息。
     136*默认为false。
    134137*@return string[]| false成功时为文件数组,失败时为false。
    135138 */
    136 函数列表文件($folder='',$level=100,$exclusions=数组()){
     139函数list_files($folder='',$levels=100,$exclusions=array(),$include_hidden=false){
    137140if(空($folder)){
    138141返回false;
     
    157160
    158161//跳过隐藏和排除的文件。
    159 如果('.' === $文件[0]||in_array($file,$exclusions,true){
     162如果((!$include_hidden&&'.'===$文件[0])||in_array($file,$exclusions,true){
    160163继续;
    161164            }
    162165
    163166if(is_dir($folder.$file)){
    164 $files2=列表文件($folder.$file,$levels-1);
     167$files2=列表文件($folder.$file,$levels-1,数组(),$include_hidden);
    165168if($files2){
    166169$files=array_merge($files,$files2);
  • trunk/tests/phpunit/tests/functions/listFiles.php

    51331兰特 56069兰特  
    2020$this->assertNotContains(ABSPATH.'wp-admin/index.php',$admin_files);
    2121    }
     22
     23    /**
     24*list_files()可以选择包含隐藏文件的测试。
     25     *
     26*@门票53659
     27     *
     28*@dataProvider data_list_files_should_optionally_include_hidden_files
     29     *
     30*@param string$filename隐藏文件的名称。
     31*@param bool$include_hidden是否包含隐藏的(前缀为“.”)文件。
     32*@param string[]$exclusions要跳过的文件夹和文件列表。
     33*@param bool$应输入文件是否应包含在结果中。
     34     */
     35公共函数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$文件名;
     38
     39mkdir($test_dir);
     40触摸($hidden_file);
     41
     42$actual=列表文件($test_dir,100,$exclusions,$include_hidden);
     43
     44取消链接($hidden_file);
     45rmdir($test_dir);
     46
     47if(预期为$){
     48$this->assertContains($hidden_file,$actual,'文件未包含。');
     49}其他{
     50$this->assertNotContains($hidden_file,$actual,'文件已包含。');
     51}
     52    }
     53
     54    /**
     55*数据提供商。
     56     *
     57*@return数组[]
     58     */
     59公共函数data_list_files_should_optionally_include_hidden_files(){
     60返回数组(
     61“$include_hidden=false and no exclusions”=>数组(
     62“文件名”=>“.hidden_file”,
     63“include_hidden”=>假,
     64“排除项”=>数组(),
     65“预期”=>false,
     66            ),
     67“$include_hidden=true且无排除”=>数组(
     68“文件名”=>“.hidden_file”,
     69“include_hidden”=>true,
     70“排除项”=>数组(),
     71“预期”=>true,
     72            ),
     73“$include_hidden=true和排除的文件名”=>数组(
     74“文件名”=>“.hidden_file”,
     75“include_hidden”=>true,
     76“exclusions”=>数组(“.hidden_file”),
     77“预期”=>false,
     78            ),
     79        );
     80    }
    2281}
注:请参见TracChangeset(跟踪变更集)获取有关使用变更集查看器的帮助。