88 lines
2.5 KiB
PHP
88 lines
2.5 KiB
PHP
<?php
|
|
$files = array();
|
|
$dir = new DirectoryIterator('.');
|
|
foreach ($dir as $fileinfo) {
|
|
$files[$fileinfo->getMTime()][] = $fileinfo->getFilename();
|
|
}
|
|
|
|
ksort($files);
|
|
|
|
|
|
?>
|
|
|
|
|
|
<?php
|
|
|
|
$it = new DirectoryIterator(__DIR__);
|
|
foreach ($it as $fileinfo) {
|
|
if (!$fileinfo->isDot())
|
|
var_dump($fileinfo->getFilename());
|
|
}
|
|
|
|
$it = new FilesystemIterator(__DIR__);
|
|
foreach ($it as $fileinfo) {
|
|
echo $fileinfo->getFilename() . "\n";
|
|
}
|
|
|
|
$iterator = new DirectoryIterator(dirname(__FILE__));
|
|
foreach ( $iterator as $fileinfo ) {
|
|
var_dump($fileinfo->current()); // would return object(DirectoryIterator)
|
|
}
|
|
|
|
$iterator = new FilesystemIterator(__DIR__, FilesystemIterator::CURRENT_AS_PATHNAME);
|
|
foreach ( $iterator as $fileinfo ) {
|
|
var_dump($iterator->current()) . "\n"; // Would return full path eg /www/examples/example.php
|
|
}
|
|
?>
|
|
|
|
<?php
|
|
|
|
// https://stackoverflow.com/questions/124958/glob-sort-array-of-files-by-last-modified-datetime-stamp
|
|
|
|
function files_attachment_list($id, $sort_by_date = false, $allowed_extensions = ['png', 'jpg', 'jpeg', 'gif', 'doc', 'docx', 'pdf', 'zip', 'rar', '7z'])
|
|
{
|
|
if (empty($id) or !is_dir(sprintf('files/%s/', $id))) {
|
|
return false;
|
|
}
|
|
$out = [];
|
|
foreach (new DirectoryIterator(sprintf('files/%s/', $id)) as $file) {
|
|
if ($file->isFile() == false || !in_array($file->getExtension(), $allowed_extensions)) {
|
|
continue;
|
|
}
|
|
|
|
$datetime = new DateTime();
|
|
$datetime->setTimestamp($file->getMTime());
|
|
$out[] = [
|
|
'title' => $file->getFilename(),
|
|
'size' => human_filesize($file->getSize()),
|
|
'modified' => $datetime->format('Y-m-d H:i:s'),
|
|
'extension' => $file->getExtension(),
|
|
'url' => $file->getPathname()
|
|
];
|
|
}
|
|
|
|
$sort_by_date && usort($out, function ($a, $b) {
|
|
return $a['modified'] > $b['modified'];
|
|
});
|
|
|
|
return $out;
|
|
}
|
|
|
|
function human_filesize($bytes, $decimals = 2)
|
|
{
|
|
$sz = 'BKMGTP';
|
|
$factor = floor((strlen($bytes) - 1) / 3);
|
|
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
|
|
}
|
|
|
|
// returns a file info array from path like '/files/123/*.extensions'
|
|
// extensions = 'png', 'jpg', 'jpeg', 'gif', 'doc', 'docx', 'pdf', 'zip', 'rar', '7z'
|
|
// OS specific sorting
|
|
print_r( files_attachment_list(123) );
|
|
|
|
// returns a file info array from the folder '/files/456/*.extensions'
|
|
// extensions = 'txt', 'zip'
|
|
// sorting by modified date (newest first)
|
|
print_r( files_attachment_list(456, true, ['txt','zip']) );
|
|
|
|
?>
|