WPDK  1.5.0
WordPress Development Kit
 All Data Structures Files Functions Variables Pages
wpdk-filesystem.php
Go to the documentation of this file.
1 <?php
12 class WPDKFilesystem extends WPDKObject {
13 
21  public $__version = '1.1.2';
22 
33  public static function fileSize( $filename, $precision = 2 )
34  {
35  static $units = array(
36  'Bytes',
37  'KB',
38  'MB',
39  'G',
40  'T',
41  'P',
42  'E',
43  'Z',
44  'Y'
45  );
46 
47  if ( is_file( $filename ) ) {
48  if ( !realpath( $filename ) ) {
49  $filename = $_SERVER['DOCUMENT_ROOT'] . $filename;
50  }
51  $bytes = filesize( $filename );
52 
53  // hardcoded maximum number of units @ 9 for minor speed increase
54  $e = floor( log( $bytes ) / log( 1024 ) );
55  return sprintf( '%.' . $precision . 'f ' . $units[$e], ( $bytes / pow( 1024, floor( $e ) ) ) );
56  }
57  return false;
58  }
59 
76  public static function recursiveScan( $path, $match = '' )
77  {
78 
91  function _rglob( $path, $match = '', &$result = array() ) {
92  $files = glob( trailingslashit( $path ) . '*', GLOB_MARK );
93  if ( false !== $files ) {
94  foreach ( $files as $file ) {
95  if ( is_dir( $file ) ) {
96  $continue = apply_filters( 'wpdk_rglob_find_dir', true, $file );
97  if ( $continue ) {
98  _rglob( $file, $match, $result );
99  }
100  }
101  elseif ( !empty( $match ) ) {
102  $continue = apply_filters( 'wpdk_rglob_find_file', true, $file );
103  if ( false == $continue ) {
104  break;
105  }
106  $regexp_result = array();
107  $error = preg_match( $match, $file, $regexp_result );
108  if ( 0 !== $error || false !== $error ) {
109  $regexp_result = apply_filters( 'wpdk_rglob_matched', $regexp_result, $file, $match );
110  if ( !empty( $regexp_result ) ) {
111  $result[] = $regexp_result[0];
112  }
113  }
114  }
115  else {
116  $result[] = $file;
117  }
118  }
119  return $result;
120  }
121  }
122 
123  $result = array();
124 
125  return _rglob( $path, $match, $result );
126  }
127 
138  public static function ext( $filename )
139  {
140  return end( explode( '.', strtolower( basename( $filename ) ) ) );
141  }
142 
154  public static function filename( $filename )
155  {
156  $parts = explode( '.', strtolower( basename( $filename ) ) );
157 
158  // No dot found
159  if ( empty( $parts ) ) {
160  return $filename;
161  }
162  // Multiple dot found
163  elseif ( count( $parts ) > 2 ) {
164  unset( $parts[count( $parts ) - 1] );
165  return implode( ',', $parts );
166  }
167  // Usually
168  else {
169  return current( $parts );
170  }
171  }
172 
173 }