function zipData($source, $destination) { if (extension_loaded('zip')) { if (file_exists($source)) { $zip = new ZipArchive(); if ($zip->open($destination, ZIPARCHIVE::CREATE)) { $source = realpath($source); if (is_dir($source)) { $iterator = new RecursiveDirectoryIterator($source); // skip dot files while iterating $iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS); $files = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST); foreach ($files as $file) { $file = realpath($file); if (is_dir($file)) { $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); } else { if (is_file($file)) { $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); } } } } else { if (is_file($source)) { $zip->addFromString(basename($source), file_get_contents($source)); } } } echo $destination . ' zip: successfully...'; echo "\n"; return $zip->close(); } } return false; }
public function listPosts() { $path = null; $timestamp = null; $dirname = $this->settings->posts_dir; $dir = new \RecursiveDirectoryIterator($dirname); $dir->setFlags(\RecursiveDirectoryIterator::SKIP_DOTS); ob_start(); ?> <div class="row"> <table class="post-table"> <tr> <th>Name</th> <th>Date created</th> </tr> <?php foreach ($dir as $fileinfo) { if ($fileinfo->getMTime() > $timestamp) { // current file has been modified more recently // than any other file we've checked until now $path = $fileinfo->getFilename(); $modified = $fileinfo->getMTime(); $created = $fileinfo->getCTime(); $linkUrl = preg_replace('/\\.[^.\\s]{1,4}$/', '', $path); echo "<tr><td><a href='?action=edit&post=" . $linkUrl . "'>" . $path . "</a></td>"; echo "<td>" . date("F d Y H:i:s.", $created) . "</td></tr>"; } } ?> </table> </div> <style> .post-table { width: 80%; margin: 50px auto; text-align: center; border: solid 1px #ddd; } .post-table th { font-weight: bold; } .post-table th, .post-table td { text-align: left; padding: 5px; border: solid 1px #ddd; } </style> <?php return ob_get_clean(); }
function routesInDirectory($app = '') { $routeDir = app_path('Http/Routes/' . $app . ($app !== '' ? '/' : NULL)); $iterator = new RecursiveDirectoryIterator($routeDir); $iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS); foreach ($iterator as $route) { $isDotFile = strpos($route->getFilename(), '.') === 0; if (!$isDotFile && !$route->isDir()) { require $routeDir . $route->getFilename(); } } }
/** * Retrieves old CSS files and list them * * @param $ttl int * @return array */ protected function getOutdatedFiles($ttl) { $outdated = array(); $time = time(); $dir = new RecursiveDirectoryIterator($this->configuration->getUploadDir()); $dir->setFlags(RecursiveDirectoryIterator::SKIP_DOTS); /* * Collecting CSS files */ $files = new RegexIterator(new RecursiveIteratorIterator($dir), '#.css#U', RecursiveRegexIterator::ALL_MATCHES); /* * Checking expiry */ foreach ($files as $filepath => $match) { filemtime($filepath) + $ttl < $time ? array_push($outdated, $filepath) : null; } return $outdated; }
public function zipData($source, $destination) { global $Language; $archiveName = 'backup-' . time() . '.zip'; // Archive name if (extension_loaded('zip')) { if (file_exists($source)) { $zip = new ZipArchive(); if ($zip->open($destination, ZIPARCHIVE::CREATE)) { $source = realpath($source); if (is_dir($source)) { $iterator = new RecursiveDirectoryIterator($source); // skip dot files while iterating $iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS); $files = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST); foreach ($files as $file) { $file = realpath($file); if (is_dir($file)) { $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); } else { if (is_file($file)) { $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); } } } } else { if (is_file($source)) { $zip->addFromString(basename($source), file_get_contents($source)); } } } if (!$zip->close()) { Alert::set($Language->get("There was a problem writing the ZIP archive.")); Redirect::page('admin', 'configure-plugin/pluginBackup'); } else { Alert::set($Language->get("Successfully created the ZIP Archive!")); Redirect::page('admin', 'configure-plugin/pluginBackup'); } // close the zip file $zip->close(); } } return false; }
/** * @param string $dir * @return FileIndex */ public static function make($dir) { $dirIterator = new \RecursiveDirectoryIterator($dir); $dirIterator->setFlags(\RecursiveDirectoryIterator::SKIP_DOTS); $recursiveIterator = new \RecursiveIteratorIterator($dirIterator, \RecursiveIteratorIterator::SELF_FIRST); $results = array(); foreach ($recursiveIterator as $file) { /** @var \SplFileInfo $file */ // ignore non files if (!$file->isFile()) { continue; } // ignore non php files $ext = strtolower($file->getExtension()); if ($ext !== 'php') { continue; } $results[] = $file->getPathname(); } return new self($results); }
public function cmd_artifact(array $params = array()) { \System\Directory::check(BASE_DIR . static::DIR_PACKAGES); $target = BASE_DIR . static::DIR_PACKAGES . '/artifact.tar'; $result = $target . '.gz'; if (isset($params[0])) { $target = $params[0]; } if (file_exists($target)) { unlink($target); } if (file_exists($result)) { unlink($result); } $iter = new \RecursiveDirectoryIterator(BASE_DIR); $iter->setFlags(\FileSystemIterator::SKIP_DOTS); $iter = new ProjectDirectoryRecursiveIterator($iter); $iter = new \RecursiveIteratorIterator($iter); $archive = new \PharData($target); $archive->buildFromIterator($iter, BASE_DIR); $archive->compress(\Phar::GZ); unlink($target); }
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>RecursiveDirectoryIterator</title> </head> <body> <pre> <?php $files = new RecursiveDirectoryIterator('../images'); $files->setFlags(RecursiveDirectoryIterator::SKIP_DOTS); $files = new RecursiveIteratorIterator($files); foreach ($files as $file) { echo $file->getRealPath() . '<br>'; } ?> </pre> </body> </html>
private static function buildFileList() { self::log(); self::log('reading MPQdata from ' . self::$srcDir . ' to list for first time use...'); $setupDirs = glob('setup/*'); foreach ($setupDirs as $sd) { if (mb_substr(self::$srcDir, -1) == '/') { self::$srcDir = mb_substr(self::$srcDir, 0, -1); } if (mb_substr($sd, -1) == '/') { $sd = mb_substr($sd, 0, -1); } if (Util::lower($sd) == Util::lower(self::$srcDir)) { self::$srcDir = $sd . '/'; break; } } try { $iterator = new RecursiveDirectoryIterator(self::$srcDir); $iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS); foreach (new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST) as $path) { $_ = str_replace('\\', '/', $path->getPathname()); self::$mpqFiles[strtolower($_)] = $_; } self::log('done'); self::log(); } catch (UnexpectedValueException $e) { self::log('- mpqData dir ' . self::$srcDir . ' does not exist', self::LOG_ERROR); return false; } return true; }
<?php namespace App\Modules\mod_slider; $files = new \RecursiveDirectoryIterator("./public/images/slider/"); $files->setFlags(\FilesystemIterator::UNIX_PATHS | \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::SKIP_DOTS); $files = new \RecursiveIteratorIterator($files, \RecursiveIteratorIterator::SELF_FIRST); $files->setMaxDepth(2); $extension = array('jpg', 'png', 'jpeg'); ?> <div class="wrapper"> <div class="slider-wrapper theme-default"> <div class="ribbon"></div> <div id="slider" class="nivoSlider"> <?php foreach ($files as $key => $file) { if (in_array($file->getExtension(), $extension)) { echo "<img src='{$file}' />"; } } ?> </div><!-- END of slider-wrapper --> </div><!-- END of nivoSlider --> </div><!-- END of WRAPPER --> <link rel="stylesheet" href="./public/js/nivo-slider/nivo-slider.css" type="text/css" /> <link rel="stylesheet" href="./public/js/nivo-slider/themes/default/default.css" type="text/css" /> <script type="text/javascript" src="./public/js/nivo-slider/jquery.nivo.slider.pack.js"></script>
} echo '<br>', I18N::plural('%1$s file was extracted in %2$s seconds.', '%1$s files were extracted in %2$s seconds.', count($res), count($res), I18N::number($end_time - $start_time, 2)), $icon_success; } else { echo '<br>', I18N::translate('An error occurred when unzipping the file.'), $icon_failure; echo '<pre>', $archive->errorInfo(true), '</pre>'; echo '</li></ul></form>'; return; } echo '</li>'; //////////////////////////////////////////////////////////////////////////////// // This is it - take the site offline first //////////////////////////////////////////////////////////////////////////////// echo '<li>', I18N::translate('Check file permissions…'); reset_timeout(); $iterator = new \RecursiveDirectoryIterator($zip_dir); $iterator->setFlags(\RecursiveDirectoryIterator::SKIP_DOTS); foreach (new \RecursiveIteratorIterator($iterator) as $file) { $file = WT_ROOT . substr($file, strlen($zip_dir) + 1); if (file_exists($file) && (!is_readable($file) || !is_writable($file))) { echo '<br>', I18N::translate('The file %s could not be updated.', Html::filename($file)), $icon_failure; echo '</li></ul>'; echo '<p class="error">', I18N::translate('To complete the upgrade, you should install the files manually.'), '</p>'; echo '<p>', I18N::translate('The new files are currently located in the folder %s.', Html::filename($zip_dir)), '</p>'; echo '<p>', I18N::translate('Copy these files to the folder %s, replacing any that have the same name.', Html::filename(WT_ROOT)), '</p>'; echo '<p>', I18N::translate('To prevent visitors from accessing the website while you are in the middle of copying files, you can temporarily create a file %s on the server. If it contains a message, it will be displayed to visitors.', Html::filename($lock_file)), '</p>'; return; } } echo '<br>', I18N::translate('All files have read and write permission.'), $icon_success; echo '</li>'; ////////////////////////////////////////////////////////////////////////////////
protected function _refreshLocal($myrole, $drivers) { $job = $this->_out->jobStart("traversing file system starting at {$this->_baseDir}"); /* @var $compare Compare_Sqlite */ $compare = $drivers[Core_Engine::ROLE_COMPARE]; $stat = $this->_fileStat; $it = new RecursiveDirectoryIterator($this->_baseDir); $it->setFlags(RecursiveDirectoryIterator::SKIP_DOTS); //$it = new DirnameFilter($it, "/informa/i"); if (isset($this->_options['filter'])) { $this->_out->logNotice(">>>applying filter " . $this->_options['filterType']); $filterConf = $this->_options['filter'][$this->_options['filterType']]; /** @var $filter Filter_Interface */ $filter = new $filterConf['class']($filterConf); $filter->setIterator($it); $it = $filter->applyFilters(); } $itemCount = 0; $this->_trimFromBegin = strlen($this->_baseDir); $compare->updateFromLocalStart(); foreach (new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST) as $file) { /** @var $file SplFileObject */ //we don't need make entry for not empty folder if ($file->isDir() && !Storage_Filesystem_FileStat::isEmptyDir((string) $file)) { continue; } $file = (string) $file; $obj = Core_FsObject::factoryFromStat($this->_makePath($file), $stat->getStat($file)); $compare->updateFromLocal($obj); $itemCount++; } $compare->updateFromLocalEnd(); $this->_out->jobEnd($job, "updated info about {$itemCount} files"); }
/** * @param ContainerInterface $dic * * @return array */ private function getFilteredEveApiSubscriberList(ContainerInterface $dic) : array { $flags = \FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::KEY_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS; $rdi = new \RecursiveDirectoryIterator($dic['Yapeal.EveApi.dir']); $rdi->setFlags($flags); /** @noinspection SpellCheckingInspection */ $rcfi = new \RecursiveCallbackFilterIterator($rdi, function (\SplFileInfo $current, $key, \RecursiveDirectoryIterator $rdi) { if ($rdi->hasChildren()) { return true; } $dirs = ['Account', 'Api', 'Char', 'Corp', 'Eve', 'Map', 'Server']; $dirExists = in_array(basename(dirname($key)), $dirs, true); return $dirExists && $current->isFile() && 'php' === $current->getExtension(); }); /** @noinspection SpellCheckingInspection */ $rii = new \RecursiveIteratorIterator($rcfi, \RecursiveIteratorIterator::LEAVES_ONLY, \RecursiveIteratorIterator::CATCH_GET_CHILD); $rii->setMaxDepth(3); $fpn = $this->getFpn(); $files = []; foreach ($rii as $file) { $files[] = $fpn->normalizeFile($file->getPathname()); } return $files; }
/** * Recursive listing of directory, files and dirs. If a set of extensions is * passed only matching files will be returned (do not pass the dot in the extensions) * * @param string $path Directory where you want to start parsing. * @param array $valid_extensions List of accepted extensions in the list, empty array for no filtering. * @return * ratorIterator of RecursiveDirectoryIterator */ public function getRecursiveList($path, $accept_directories = true, $valid_extensions = array()) { $mode = $this->_getIteratorMode($accept_directories); $recursive_dir_iterator = new \RecursiveDirectoryIterator($path); $recursive_dir_iterator->setFlags(\RecursiveDirectoryIterator::SKIP_DOTS); if (!empty($valid_extensions)) { return new FilterFilesByExtensionIterator(new \RecursiveIteratorIterator($recursive_dir_iterator, $mode, \RecursiveIteratorIterator::CATCH_GET_CHILD), $valid_extensions); } else { return new \RecursiveIteratorIterator($recursive_dir_iterator, $mode, \RecursiveIteratorIterator::CATCH_GET_CHILD); } }
<?php $watchFolders = $_POST['foldersToWatch']; $extensions = $_POST['extensions']; $extensions = implode('|', $extensions); $dir = array(); foreach ($watchFolders as $folder) { $dirIter = new RecursiveDirectoryIterator($folder); $dirIter->setFlags(FilesystemIterator::SKIP_DOTS); $recursiveIter = new RecursiveIteratorIterator($dirIter); $regexpIter = new RegexIterator($recursiveIter, '/^.*\\.(' . $extensions . ')$/'); foreach ($regexpIter as $path) { $dir[] = $path->getPathName(); } } $files = []; foreach ($dir as $path) { $files[] = filemtime($path); } $last = max($files); header('Content-Type: application/json'); echo json_encode(array('last' => $last));