WP_Filesystem_FTPext::dirlist( string $path = '.', bool $include_hidden = true, bool $recursive = false )

Gets details for files in a directory or a specific file.


Parameters

$path

(Optional) Path to directory or file.

Default value: '.'

$include_hidden

(Optional) Whether to include details of hidden ("." prefixed) files.<br>

Default value: true

$recursive

(Optional) Whether to recursively include file details in nested directories.<br>

Default value: false


Return

(array|false) Array of files. False if unable to list directory contents.<br>

  • 'name'
    (string) Name of the file or directory.<br>
  • 'perms'
    (string) *nix representation of permissions.<br>
  • 'permsn'
    (string) Octal representation of permissions.<br>
  • 'owner'
    (string) Owner name or ID.<br>
  • 'size'
    (int) Size of file in bytes.<br>
  • 'lastmodunix'
    (int) Last modified unix timestamp.<br>
  • 'lastmod'
    (mixed) Last modified month (3 letter) and day (without leading 0).<br>
  • 'time'
    (int) Last modified time.<br>
  • 'type'
    (string) Type of resource. 'f' for file, 'd' for directory.<br>
  • 'files'
    (mixed) If a directory and $recursive is true, contains another array of files.<br>


Source

File: wp-admin/includes/class-wp-filesystem-ftpext.php

	public function dirlist($path = '.', $include_hidden = true, $recursive = false) {
		if ( $this->is_file($path) ) {
			$limit_file = basename($path);
			$path = dirname($path) . '/';
		} else {
			$limit_file = false;
		}

		$pwd = @ftp_pwd($this->link);
		if ( ! @ftp_chdir($this->link, $path) ) // Cant change to folder = folder doesn't exist
			return false;
		$list = @ftp_rawlist($this->link, '-a', false);
		@ftp_chdir($this->link, $pwd);

		if ( empty($list) ) // Empty array = non-existent folder (real folder will show . at least)
			return false;

		$dirlist = array();
		foreach ( $list as $k => $v ) {
			$entry = $this->parselisting($v);
			if ( empty($entry) )
				continue;

			if ( '.' == $entry['name'] || '..' == $entry['name'] )
				continue;

			if ( ! $include_hidden && '.' == $entry['name'][0] )
				continue;

			if ( $limit_file && $entry['name'] != $limit_file)
				continue;

			$dirlist[ $entry['name'] ] = $entry;
		}

		$ret = array();
		foreach ( (array)$dirlist as $struc ) {
			if ( 'd' == $struc['type'] ) {
				if ( $recursive )
					$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive);
				else
					$struc['files'] = array();
			}

			$ret[ $struc['name'] ] = $struc;
		}
		return $ret;
	}


Changelog

Changelog
Version Description
2.5.0 Introduced.