This is a modification of simraLIAS at mac dot com's code.
Modification dates should not be used for keys in an array when sorting by date because there is no guarantee that all files will have different dates. Collisions resulting in files missing from the list could be possible. A better way is to use the filename as the key (guaranteed to not be collisions)
<?php
foreach (glob("../downloads/*") as $path) { //configure path
$docs[$path] = filectime($path);
} asort($docs); // sort by value, preserving keys
foreach ($docs as $path => $timestamp) {
print date("d. M. Y: ", $timestamp);
print '<a href="'. $path .'">'. basename($path) .'</a><br />';
}
?>
filectime
(PHP 4, PHP 5)
filectime — Zistí čas poslednej zmeny súboru
Popis
Vráti čas poslednej zmeny súboru alebo FALSE v prípade chyby. Čas je vrátený vo formáte unixovej časovej známky (timestamp).
Výsledky tejto funkcie sú cacheované. Bližšie informácie môžete nájsť pri funkcii clearstatcache().
Pozn: Vo väčšine súborových systémoch Unix-u je súbor považovaný za zmenený, ak boli zmenené údaje v inode, teda ak boli upravené práva k súboru, jeho vlastník, skupina, či iné metadáta. Pozri tiež filemtime() (práve túto funkciu je vhodné použiť v prípadoch, ak chcete napr. na spodok stránky vypísať informáciu "Posledná úprava: ") a fileatime().
Poznamenajme, že v niektorých materiáloch o Unix-e je ctime súboru popisovaný ako čas vytvorenia súboru. Táto informácia je mylná. Vo väčšine Unixových súborových systémoch neexistuje niečo ako "čas vytvorenia".
Note: Táto funkcia nepracuje so vzdialenými súbormi; súbor, ktorý má byť preskúmaný, musí byť prístupný cez súborový systém servera.
filectime
11-Mar-2008 01:07
30-Nov-2007 03:24
This is another way to get a list of files ordered by upload time:
<?php
foreach (glob("../downloads/*") as $path) { //configure path
$docs[filectime($path)] = $path;
} ksort($docs); // sort by key (timestamp)
foreach ($docs as $timestamp => $path) {
print date("d. M. Y: ", $timestamp);
print '<a href="'. $path .'">'. basename($path) .'</a><br />';
}
?>
02-Oct-2007 09:14
filectime running on windows reading a file from a samba share, will still show the last modified date.
31-Aug-2007 10:51
Line 37 of the code above has an error.
echo "File name: $file - Date Added: $date. <br/>"";
There is an extra " after the <br/> that needs to be deleted in order for this code to work.
15-Nov-2006 06:28
This method gets all the files in a directory, and echoes them in the order of the date they were added (by ftp or whatever).
<?PHP
function dirList ($directory, $sortOrder){
//Get each file and add its details to two arrays
$results = array();
$handler = opendir($directory);
while ($file = readdir($handler)) {
if ($file != '.' && $file != '..' && $file != "robots.txt" && $file != ".htaccess"){
$currentModified = filectime($directory."/".$file);
$file_names[] = $file;
$file_dates[] = $currentModified;
}
}
closedir($handler);
//Sort the date array by preferred order
if ($sortOrder == "newestFirst"){
arsort($file_dates);
}else{
asort($file_dates);
}
//Match file_names array to file_dates array
$file_names_Array = array_keys($file_dates);
foreach ($file_names_Array as $idx => $name) $name=$file_names[$name];
$file_dates = array_merge($file_dates);
$i = 0;
//Loop through dates array and then echo the list
foreach ($file_dates as $file_dates){
$date = $file_dates;
$j = $file_names_Array[$i];
$file = $file_names[$j];
$i++;
echo "File name: $file - Date Added: $date. <br/>"";
}
}
?>
I hope this is useful to somebody.
21-Sep-2002 04:35
filectime doesn't seem to be working properly on Win32 systems (it seems to return the creation time). Try using filemtime if you have problems.
27-Sep-2001 05:01
If you use filectime with a symbolic link, you will get the change time of the file actually linked to. To get informations about the link self, use lstat.
