private function listFiles($filter_callback, $location = '')
{
if ($location == '') {
$location = $this->app->getSourceLocation();
}
$files = array();
$items = glob($location . '/*');
if (is_array($items) && count($items) > 0) {
foreach ($items as $item) {
$relative_path = ltrim(str_replace(realpath($location), '', realpath($item)), DIRECTORY_SEPARATOR);
if (strpos($relative_path, '_') !== 0) {
if (is_dir($item)) {
$files = array_merge($files, $this->listFiles($filter_callback, $item));
} else {
$filter_callback_result = $filter_callback($item);
if ($filter_callback_result !== false && !$this->isBlacklisted($item)) {
$files[] = $filter_callback_result;
}
}
}
}
}
return $files;
}