/** * ========================================================================== * GET ALL FILE(S) RECURSIVELY * ========================================================================== * * -- CODE: ----------------------------------------------------------------- * * $files = Get::files( * 'some/path', * 'txt', * 'ASC', * 'update' * ); * * $files = Get::files( * 'some/path', * 'gif,jpg,jpeg,png', * 'ASC', * 'update' * ); * * $files = Get::files( * 'some/path', * 'txt', * 'ASC', * null, * 'key:path' // output only the `path` data * ); * * -------------------------------------------------------------------------- * * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Parameter | Type | Desription * ---------- | ------- | -------------------------------------------------- * $folder | string | Path to folder of file(s) you want to be listed * $e | string | The file extension(s) * $order | string | Ascending or descending? ASC/DESC? * $sorter | string | The key of array item as sorting reference * $filter | string | Filter the resulted array by a keyword * $recursive | boolean | Get file(s) from a folder recursively? * ---------- | ------- | -------------------------------------------------- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * */ public static function files($folder = ASSET, $e = '*', $order = 'ASC', $sorter = 'path', $filter = "", $recursive = true) { $results = array(); $folder = rtrim(File::path($folder), DS); $e = $e ? explode(',', str_replace(' ', "", $e)) : true; if ($files = File::explore($folder, $recursive, true, false)) { if (strpos($filter, 'key:') === 0) { $s = explode(' ', substr($filter, 4), 2); $output = $s[0]; $filter = isset($s[1]) ? $s[1] : ""; $sorter = null; } else { $output = null; } foreach ($files as $k => $v) { $_k = File::B($k); $_kk = DS . str_replace($folder . DS, "", $k); if (!$filter || strpos(File::N($k), $filter) !== false) { if ($v === 1) { if ($e === true || $e === array('*') || Mecha::walk($e)->has(File::E($k))) { $o = File::inspect($k, $output); if (is_null($output)) { $o['is']['hidden'] = strpos($_k, '__') === 0 || strpos($_k, '.') === 0 || strpos($_kk, DS . '__') !== false || strpos($_kk, DS . '.') !== false; } $results[] = $o; } } else { if ($e === true || $e === array('/')) { $results[] = File::inspect($k, $output); } } } } unset($files, $_k, $_kk); return !empty($results) ? Mecha::eat($results)->order($order, $sorter)->vomit() : false; } return false; }