You are here

function webfm_searchFiles::searchFilesRecur in Web File Manager 5

Same name and namespace in other branches
  1. 5.2 webfm.module \webfm_searchFiles::searchFilesRecur()
1 call to webfm_searchFiles::searchFilesRecur()
webfm_searchFiles::webfm_searchFiles in ./webfm.module

File

./webfm.module, line 2398

Class

webfm_searchFiles
Class to search for files matching a regexp pattern

Code

function searchFilesRecur($root_dir, $dir, $searchpattern) {
  $dir = rtrim($dir, '/');

  //hide filesys root by not returning full path
  $full_dir = $root_dir . $dir;
  $handle = @opendir($full_dir);
  while ($file = @readdir($handle)) {
    if (@is_dir($full_dir . "/" . $file) && $file != "." && $file != "..") {
      $this
        ->searchFilesRecur($root_dir, $dir . "/" . $file, $searchpattern);
    }
    else {
      if (ereg(strtolower($searchpattern), strtolower($file)) && !ereg($this->hidefilepattern, $file)) {
        if ($frec = webfm_get_file_record('', $full_dir . "/" . $file)) {

          //return files in db (role level permission)
          if ($this->uid == 1 || $this->uid == $frec->uid || webfm_file_view_access($frec)) {
            $this
              ->build_file_list($file, $dir, $frec->fid);
          }
        }
        else {
          if ($this->uid == 1) {

            //admins can search files not in db
            $this
              ->build_file_list($file, $dir, 0);
          }
        }
      }
    }
  }
  @closedir($handle);
}