File "class-file.php"
Full path: /home/webcknlt/admissiontell.com/wp-content/plugins/vibes/includes/system/class-file.php
File
size: 2.21 B (2.21 KB bytes)
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
<?php
/**
* Files handling
*
* Handles all files operations and detection.
*
* @package System
* @author Pierre Lannoy <https://pierre.lannoy.fr/>.
* @since 1.0.0
*/
namespace Vibes\System;
/**
* Define the files functionality.
*
* Handles all files operations and detection.
*
* @package System
* @author Pierre Lannoy <https://pierre.lannoy.fr/>.
* @since 1.0.0
*/
class File {
/**
* Initializes the class and set its properties.
*
* @since 1.0.0
*/
public function __construct() {
}
/**
* Lists files.
*
* @param string $folder Optional. The starting folder.
* @param integer $levels Optional. Level of recursion (1 = no recursion).
* @param array $file_include Optional. Include list (regex) for file whitelist mode.
* @param array $file_exclude Optional. Exclude list (regex) for file blacklist mode.
* @param boolean $hidden Optional. List hidden files too.
* @return array The list of files.
* @since 1.0.0
*/
public static function list_files( $folder = ABSPATH, $levels = 100, $file_include = [], $file_exclude = [], $hidden = false ) {
if ( empty( $folder ) || ! $levels ) {
return [];
}
$folder = trailingslashit( $folder );
$files = [];
// phpcs:ignore
$dir = @opendir( $folder );
if ( $dir ) {
while ( false !== ( $file = readdir( $dir ) ) ) {
if ( in_array( $file, [ '.', '..' ], true ) ) {
continue;
}
if ( ! $hidden && '.' === $file[0] ) {
continue;
}
if ( is_dir( $folder . $file ) ) {
$files = array_merge( $files, self::list_files( $folder . $file, $levels - 1, $file_include, $file_exclude, $hidden ) );
} else {
if ( 0 < count( $file_include ) ) {
$continue = true;
foreach ( $file_include as $rule ) {
if ( preg_match( $rule, $folder . $file ) ) {
$continue = false;
break;
}
}
if ( $continue ) {
continue;
}
}
if ( 0 < count( $file_exclude ) ) {
foreach ( $file_exclude as $rule ) {
if ( preg_match( $rule, $folder . $file ) ) {
continue;
}
}
}
$files[] = $folder . $file;
}
}
}
// phpcs:ignore
@closedir( $dir );
return $files;
}
}