WP_Filesystem_FTPext::dirlist( string $path = '.', bool $include_hidden = true, bool $recursive = false ): array|false
Gets details for files in a directory or a specific file.
Parameters
-
$path
string Optional -
Path to directory or file.
Default:
'.'
-
$include_hidden
bool Optional -
Whether to include details of hidden ("." prefixed) files.
Default:
true
-
$recursive
bool Optional -
Whether to recursively include file details in nested directories.
Default:
false
Return
array|false Array of files. False if unable to list directory contents.
name
stringName of the file or directory.perms
string*nix representation of permissions.permsn
stringOctal representation of permissions.owner
stringOwner name or ID.size
intSize of file in bytes.lastmodunix
intLast modified unix timestamp.lastmod
mixedLast modified month (3 letter) and day (without leading 0).time
intLast modified time.type
stringType of resource.'f'
for file,'d'
for directory.files
mixedIf a directory and$recursive
is true, contains another array of files.
Source
File: wp-admin/includes/class-wp-filesystem-ftpext.php
.
View all references
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 ) ) { // Can't 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;
}
$path = trailingslashit( $path );
$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
Version | Description |
---|---|
2.5.0 | Introduced. |