<?php
 
//Prevent page caching
 
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
 
header('Cache-Control: post-check=0, pre-check=0', false);
 
header('Pragma: no-cache');
 
 
//Gets list of file paths in all folders except for ignored folders.
 
function globRecursive($pattern){
 
    $files = Array();
 
    $files = glob($pattern, 0);
 
    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR) as $dir){
 
        $fileok = true;
 
        if ($fileok == true){
 
            $files = array_merge($files, globRecursive($dir.'/'.basename($pattern), 0));
 
        }
 
    }
 
    return $files;
 
}
 
 
//Convert bytes to friendly size description.
 
function humanFileSize($bytes, $decimals = 0){
 
    $sz = 'BKMGTP';
 
    $factor = floor((strlen($bytes) - 1) / 3);
 
    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)).' '.@$sz[$factor];
 
}
 
 
/*Create array $details:
 
    [#]["filename"] = filename
 
    [#]["date"] = modified date
 
    [#]["size"] = size in bytes
 
    [#]["old"] = 1 if older than 7 days and 0 if not */
 
$files = globRecursive("*");
 
$details = Array();
 
$aCount = -1;
 
for($i = 0; $i < count($files);$i++){
 
    $aCount++;
 
    $details[$aCount]['filename'] = str_replace('../../', '', $files[$i]);
 
    $details[$aCount]['date'] = date ('F d Y (H:i:s)', filemtime($files[$i]));
 
    $details[$aCount]['size'] = humanFileSize(filesize($files[$i]));
 
    if (filemtime($files[$i]) < (time() - (7 * 24 * 60 * 60 ))){
 
        $details[$aCount]['old'] = '1'; //Older than 7 days
 
    } else {
 
        $details[$aCount]['old'] = '0';
 
    }
 
}
 
 
//Draws a JSON string of the $details array.
 
echo json_encode($details);
 
?>
 
 |