Example #1
0
 /**
  * ==========================================================================
  *  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;
 }