Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
Files
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 1
56
0.00% covered (danger)
0.00%
0 / 1
 glob_php
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 1
56
1<?php
2/**
3 * A modules class for Jetpack.
4 *
5 * @package automattic/jetpack-status
6 */
7
8namespace Automattic\Jetpack;
9
10/**
11 * Class Automattic\Jetpack\Files
12 *
13 * Used to retrieve information about files.
14 */
15class Files {
16    /**
17     * Returns an array of all PHP files in the specified absolute path.
18     * Equivalent to glob( "$absolute_path/*.php" ).
19     *
20     * @param string $absolute_path The absolute path of the directory to search.
21     * @return array Array of absolute paths to the PHP files.
22     */
23    public function glob_php( $absolute_path ) {
24        if ( function_exists( 'glob' ) ) {
25            return glob( "$absolute_path/*.php" );
26        }
27
28        $absolute_path = untrailingslashit( $absolute_path );
29        $files         = array();
30        $dir           = @opendir( $absolute_path ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
31        if ( ! $dir ) {
32            return $files;
33        }
34
35        // phpcs:ignore Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition
36        while ( false !== $file = readdir( $dir ) ) {
37            if ( str_starts_with( $file, '.' ) || ! str_ends_with( $file, '.php' ) ) {
38                continue;
39            }
40
41            $file = "$absolute_path/$file";
42
43            if ( ! is_file( $file ) ) {
44                continue;
45            }
46
47            $files[] = $file;
48        }
49
50        closedir( $dir );
51
52        return $files;
53    }
54}