CLICK HERE TO BUY IT TODAY! OR GET IT FREE VIA TRIALPAY  

PHP Demo Application - Source Code

/Framework/Model/Libraries/File.php

<?php
/**
* Script Contents: Apeel_Framework_Model_Libraries_File Class Library
* @package Apeel_Framework_Model_Libraries
*/

/**
* Library to provide Upload File handling functionality, including reading
* files from file system / database.  

* @package      Apeel_Framework_Model_Libraries 
* @version      1.1.0
* @author       John W. King (email: contact@apeelframework.net)
* @copyright    City Business Logic Limited 2001-2011
* @license      Dual MIT / GNU Lesser General Public License Version 3
*/
class Apeel_Framework_Model_Libraries_File {

    
/**
    * Image Resize Mode parameter.   
    * Meaning: No resizing.  
    * 
    * @var integer
    */
    
public static $direct 1;
    
    
    
/**
    * Image Resize Mode parameter.  
    * Meaning: Resize to given dimensions.  
    * 
    * @var integer
    */
    
public static $resize 2;  // 
    
    
    /**
    * Image Resize Mode parameter.   
    * Meaning: Resize to fit within dimensions.  
    * 
    * @var integer
    */
    
public static $resizeConstrain 3// 
    
    
    /**
    * Image Resize Mode parameter.   
    * Meaning: Resize to fit within dimensions and pad with border.  
    * 
    * @var integer
    */
    
public static $resizeConstrainBorder 4// 
    
    
    /**
    * Outputs the selected file to the browser client with the appropriate 
    * mime header.  
    * 
    * @param string $filename
    * @return void
    */
    
public static function outputFile($filename) {
        
$fullFilename self::getFullFilePath($filename);
        if (
$fullFilename) {
            
$fileInfo self::getFileInfo(self::getFileExtension($filename));
            
$mimeType $fileInfo['mimeType'];
            
$rawFile = @fopen($fullFilename'rb');
            
header('Content-type: ' $mimeType);
            
header('Content-Disposition:attachment;filename="' $filename '"');
            
fpassthru($rawFile);
        }
    }
    
    
    
/**
    * Loads the requested file into a string and returns it, or throws an
    * exception if the file cannot be loaded.  
    * 
    * @param string $filename
    * @return string
    */
    
public static function loadFile($filename) {
        
$file "";
        try {
            
$file file_get_contents($filename);
        } 
        catch (
Exception $e) {
            throw new 
Exception('Unable to load file: ' $filename);
        }        
        return 
$file;
    }     
    
    
    
/**
    * Extracts the filename's extension by looking for the final '.' and 
    * returning the values after it.  
    * 
    * @param string $filename
    * @return string
    */
    
public static function getFileExtension($filename) {        
        return 
substr(strrchr($filename'.'), 1);
    }

    
    
/**
    * Generates a unique filename so that if two files are uploaded with the
    * same name, one cannot overwrite the other.  
    * 
    * The extension of the $originalFilename is used for the file extension, 
    * and the main part of the filename is generated randomly.  If the 
    * generated filename already exists then it generates another one until
    * it finds one that is unique.  
    * 
    * @param string $path
    * @param string $originalFilename
    * @return string
    */
    
public static function generateUniqueFilename($path$originalFilename) {
        
$isUnique false
        
$fileExtension self::getFileExtension($originalFilename);

        while (!
$isUnique) {
            
$filename md5(rand() * time()) . "." $fileExtension;
            
$isUnique = (!file_exists($path $filename));
        }

        return 
$filename;
    }
    
    
    
/**
    * Generates the full physical path to the file identified with $filename
    * by prefixing APEEL_UPLOAD_FOLDER.  
    * 
    * Before returning the fully qualified value, it checks that the file 
    * exists and is readable, otherwise it returns false instead.  
    * 
    * @param string $filename
    * return string | boolean
    */
    
public static function getFullFilePath($filename) {
        
$fullFilename APEEL_UPLOAD_FOLDER $filename;
        if 
            (
                (
$filename) && 
                (
file_exists($fullFilename)) &&
                (
is_readable($fullFilename))
            ) 
            {
                return 
$fullFilename;
            } else {
                return 
false;
            }
            
    }
    
    
    
/**
    * Attempts to upload selected file.  
    * 
    * Ensures that the extension matches the list given in $validExtensions
    * and that it does not exceed the maximum filesize limit.  
    * 
    * Whether the file is written to the filesystem or the database is 
    * identified by $storedOnFileSystem.  If it is to be written to the 
    * database then it uses the Data Object's manageBlob method to 
    * store it.  
    * 
    * @param string $field
    * @param array $validExtensions
    * @param string $targetPath
    * @param boolean $storeOnFileSystem
    * @param string $dataObjectName
    * @param string | array $primaryKeyValue
    * @param string $dbField
    * @param string $filenameField
    * @return string
    */
    
public static function processUploadRequest($field$validExtensions$targetPath$storeOnFileSystem true$dataObjectName ''$primaryKeyValue ''$dbField ''$filenameField '') {
                
        if (isset(
$_FILES[$field]['name'])) {
        
            
$uploadedFilename basename($_FILES[$field]['name']);
            
            if ((
$_FILES[$field]['error'] == 1) || ($_FILES[$field]['error'] == 2)) {
                throw new 
Exception(APEEL_MSG_FILE ': ' $uploadedFilename ' ' APEEL_MSG_FILE_TOO_BIG);
            } elseif (
$_FILES[$field]['error'] > 2) {
                throw new 
Exception(APEEL_MSG_UNABLE_UPLOAD ': ' $uploadedFilename ', ' APEEL_MSG_TRY_AGAIN);
            }
            
            
$filename $_FILES[$field]['name'];
            
$extension self::getFileExtension($filename);
            
            
$fileValid false;
            
            if (
is_array($validExtensions)) {
                if (
in_array($extension$validExtensions)) {
                    
$fileValid true;
                }
            } elseif (
$validExtensions != '') {
                if (
strpos($validExtensions$extension) !== false) {
                    
$fileValid true;
                }
            }
            
            if (
$fileValid) {
                
                if (
$storeOnFileSystem) {
                    if(!
is_dir($targetPath)) {
                        @
mkdir($targetPath0777);
                    } else {
                        @
chmod($targetPath0777);
                    }
                    
                    
$filename self::generateUniqueFilename($targetPath$uploadedFilename);
                    
                    if(
move_uploaded_file($_FILES[$field]['tmp_name'], $targetPath $filename)) {
                        @
chmod($targetPath0644);
                        return 
$filename;
                    } else{
                        throw new 
Exception (APEEL_MSG_ERROR_UPLOAD_FILE ': ' $uploadedFilename '  ,' APEEL_MSG_TRY_AGAIN);
                    }
                } else {
                    
$dataObject Apeel_Framework_Model_Libraries_Data::getDataObjectByName($dataObjectName);
                    
$dataObject->manageBlob('write'$dbField$primaryKeyValue$_FILES[$field]['tmp_name'], $filenameField$_FILES[$field]['name']);
                    unset(
$dataObject);
                    return 
$filename;
                }
            } else {
                throw new 
Exception (APEEL_MSG_INVALID_FILE_EXTENSION ': ' $extension);
            }
        }
        return 
'';
    }
    
    
    
/**
    * Looks up the mime type, default icon and whether the file type is an 
    * image or not for a given file extension.  
    * 
    * Returns: 
    * $array['mimeType'] <- string
    * $array['icon'] <- string
    * $array['isImage'] <- boolean
    * 
    * @param string $fileExtension
    * @return array
    */
    
public static function getFileInfo($fileExtension) {

        
$mimeType 'application/octet-stream'
        
$icon 'Generic';
        
$isImage false;
        
        switch (
$fileExtension) {            
            case 
'jpg':
                
$mimeType 'image/jpeg';
                
$isImage true;
                
$icon 'Image';
                break;      
            case 
'jpeg':
                
$mimeType 'image/jpeg';
                
$isImage true;
                
$icon 'Image';
                break;
            case 
'gif':
                
$mimeType 'image/gif';
                
$isImage true;
                
$icon 'Image';
                break;
            case 
'png':
                
$mimeType 'image/png';
                
$isImage true;
                
$icon 'Image';
                break;
            case 
''
                break;
            case 
'323'
                
$mimeType =  'text/h323'
                break;            
            case 
'acx'
                
$mimeType =  'application/internet-property-stream'
                break;
            case 
'ai'
                
$mimeType =  'application/postscript'
                break;
            case 
'aif'
                
$mimeType =  'audio/x-aiff'
                break;
            case 
'aifc'
                
$mimeType =  'audio/x-aiff'
                break;                
            case 
"aiff"
                
$mimeType 'audio/x-aiff'
                break;
            case 
'asf'
                
$mimeType 'video/x-ms-asf'
                break;
            case 
'asr'
                
$mimeType 'video/x-ms-asf'
                break;
            case 
'asx'
                
$mimeType 'video/x-ms-asf'
                break;
            case 
'au'
                
$mimeType 'audio/basic'
                break;
            case 
'avi'
                
$mimeType 'video/x-msvideo'
                break;
            case 
'axs'
                
$mimeType 'application/olescript'
                break;
            case 
'bas'
                
$mimeType 'text/plain'
                break;
            case 
'bcpio'
                
$mimeType 'application/x-bcpio'
                break;
            case 
'bin'
                
$mimeType 'application/octet-stream'
                break;
            case 
'bmp'
                
$mimeType 'image/bmp'
                break;
            case 
'c'
                
$mimeType 'text/plain'
                break;
            case 
'cat'
                
$mimeType 'application/vnd.ms-pkiseccat'
                break;
            case 
'cdf'
                
$mimeType 'application/x-cdf'
                break;
            case 
'cer'
                
$mimeType 'application/x-x509-ca-cert'
                break;
            case 
'class'
                
$mimeType 'application/octet-stream'
                break;
            case 
'clp'
                
$mimeType 'application/x-msclip'
                break;
            case 
'cmx'
                
$mimeType 'image/x-cmx'
                break;
            case 
'cod'
                
$mimeType 'image/cis-cod'
                break;
            case 
'cpio'
                
$mimeType 'application/x-cpio'
                break;
            case 
'crd'
                
$mimeType 'application/x-mscardfile'
                break;
            case 
'crl'
                
$mimeType 'application/pkix-crl'
                break;
            case 
'crt'
                
$mimeType 'application/x-x509-ca-cert'
                break;
            case 
'csh'
                
$mimeType 'application/x-csh'
                break;
            case 
'css'
                
$mimeType 'text/css'
                break;
            case 
'dcr'
                
$mimeType 'application/x-director'
                break;
            case 
'der'
                
$mimeType 'application/x-x509-ca-cert'
                break;
            case 
'dir'
                
$mimeType 'application/x-director';
                 break;
            case 
'dll'
                
$mimeType 'application/x-msdownload'
                break;
            case 
'dms'
                
$mimeType 'application/octet-stream'
                break;
            case 
'doc'
                
$mimeType 'application/msword';
                
$icon 'Word'
                break;
            case 
'dot'
                
$mimeType 'application/msword';
                
$icon 'Word';  
                break;
            case 
'dvi'
                
$mimeType 'application/x-dvi'
                break;
            case 
'dxr'
                
$mimeType 'application/x-director'
                break;
            case 
'eps'
                
$mimeType 'application/postscript'
                break;
            case 
'etx'
                
$mimeType 'text/x-setext'
                break;
            case 
'evy'
                
$mimeType 'application/envoy'
                break;
            case 
'exe'
                
$mimeType 'application/octet-stream'
                break;
            case 
'fif'
                
$mimeType 'application/fractals'
                break;
            case 
'flr'
                
$mimeType 'x-world/x-vrml'
                break;
            case 
'gtar'
                
$mimeType 'application/x-gtar'
                break;
            case 
'gz'
                
$mimeType 'application/x-gzip'
                break;
            case 
'h'
                
$mimeType 'text/plain'
                break;
            case 
'hdf'
                
$mimeType 'application/x-hdf'
                break;
            case 
'hlp'
                
$mimeType 'application/winhlp'
                break;
            case 
'hqx'
                
$mimeType 'application/mac-binhex40'
                break;
            case 
'hta'
                
$mimeType 'application/hta'
                break;
            case 
'htc'
                
$mimeType 'text/x-component'
                break;
            case 
'htm'
                
$mimeType 'text/html'
                break;
            case 
'html'
                
$mimeType 'text/html'
                break;
            case 
'htt'
                
$mimeType 'text/webviewhtml'
                break;
            case 
'ico'
                
$mimeType 'image/x-icon'
                break;
            case 
'ief'
                
$mimeType 'image/ief'
                break;
            case 
'iii'
                
$mimeType 'application/x-iphone'
                break;
            case 
'ins'
                
$mimeType 'application/x-internet-signup'
                break;
            case 
'isp'
                
$mimeType 'application/x-internet-signup'
                break;
            case 
'jfif'
                
$mimeType 'image/pipeg'
                break;
            case 
'js'
                
$mimeType 'application/x-javascript'
                break;
            case 
'latex'
                
$mimeType 'application/x-latex'
                break;
            case 
'lha'
                
$mimeType 'application/octet-stream'
                break;
            case 
'lsf'
                
$mimeType 'video/x-la-asf'
                break;
            case 
'lsx'
                
$mimeType 'video/x-la-asf'
                break;
            case 
'lzh'
                
$mimeType 'application/octet-stream'
                break;
            case 
'm13'
                
$mimeType 'application/x-msmediaview'
                break;
            case 
'm14'
                
$mimeType 'application/x-msmediaview'
                break;
            case 
'm3u'
                
$mimeType 'audio/x-mpegurl'
                break;
            case 
'man'
                
$mimeType 'application/x-troff-man'
                break;
            case 
'mdb'
                
$mimeType 'application/x-msaccess'
                break;
            case 
'me'
                
$mimeType 'application/x-troff-me'
                break;
            case 
'mht'
                
$mimeType 'message/rfc822'
                break;
            case 
'mhtml'
                
$mimeType 'message/rfc822'
                break;
            case 
'mid'
                
$mimeType 'audio/mid'
                break;
            case 
'mny'
                
$mimeType 'application/x-msmoney'
                break;
            case 
'mov'
                
$mimeType 'video/quicktime'
                break;
            case 
'movie'
                
$mimeType 'video/x-sgi-movie'
                break;
            case 
'mp2'
                
$mimeType 'video/mpeg'
                break;
            case 
'mp3'
                
$mimeType 'audio/mpeg'
                break;
            case 
'mpa'
                
$mimeType 'video/mpeg'
                break;
            case 
'mpe'
                
$mimeType 'video/mpeg'
                break;
            case 
'mpeg'
                
$mimeType 'video/mpeg'
                break;
            case 
'mpg'
                
$mimeType 'video/mpeg'
                break;
            case 
'mpp'
                
$mimeType 'application/vnd.ms-project'
                break;
            case 
'mpv2'
                
$mimeType 'video/mpeg'
                break;
            case 
'ms'
                
$mimeType 'application/x-troff-ms'
                break;
            case 
'mvb'
                
$mimeType 'application/x-msmediaview'
                break;
            case 
'nws'
                
$mimeType 'message/rfc822'
                break;
            case 
'oda'
                
$mimeType 'application/oda'
                break;
            case 
'p10'
                
$mimeType 'application/pkcs10'
                break;
            case 
'p12'
                
$mimeType 'application/x-pkcs12'
                break;
            case 
'p7b'
                
$mimeType 'application/x-pkcs7-certificates'
                break;
            case 
'p7c'
                
$mimeType 'application/x-pkcs7-mime'
                break;
            case 
'p7m'
                
$mimeType 'application/x-pkcs7-mime'
                break;
            case 
'p7r'
                
$mimeType 'application/x-pkcs7-certreqresp'
                break;
            case 
'p7s'
                
$mimeType 'application/x-pkcs7-signature'
                break;
            case 
'pbm'
                
$mimeType 'image/x-portable-bitmap'
                break;
            case 
'pdf'
                
$mimeType 'application/pdf';
                
$icon 'Pdf';
                break;
            case 
'pfx'
                
$mimeType 'application/x-pkcs12'
                break;
            case 
'pgm'
                
$mimeType 'image/x-portable-graymap'
                break;
            case 
'pko'
                
$mimeType 'application/ynd.ms-pkipko'
                break;
            case 
'pma'
                
$mimeType 'application/x-perfmon'
                break;
            case 
'pmc'
                
$mimeType 'application/x-perfmon'
                break;
            case 
'pml'
                
$mimeType 'application/x-perfmon'
                break;
            case 
'pmr'
                
$mimeType 'application/x-perfmon'
                break;
            case 
'pmw'
                
$mimeType 'application/x-perfmon'
                break;
            case 
'pnm'
                
$mimeType 'image/x-portable-anymap'
                break;
            case 
'pot'
                
$mimeType 'application/vnd.ms-powerpoint';
                
$icon 'PowerPoint';
                break;
            case 
'ppm'
                
$mimeType 'image/x-portable-pixmap'
                break;
            case 
'pps'
                
$mimeType 'application/vnd.ms-powerpoint';
                
$icon 'PowerPoint';
                break;
            case 
'ppt'
                
$mimeType 'application/vnd.ms-powerpoint';
                
$icon 'PowerPoint';
                break;
            case 
'prf'
                
$mimeType 'application/pics-rules'
                break;
            case 
'ps'
                
$mimeType 'application/postscript'
                break;
            case 
'pub'
                
$mimeType 'application/x-mspublisher'
                break;
            case 
'qt'
                
$mimeType 'video/quicktime'
                break;
            case 
'ra'
                
$mimeType 'audio/x-pn-realaudio'
                break;
            case 
'ram'
                
$mimeType 'audio/x-pn-realaudio'
                break;
            case 
'ras'
                
$mimeType 'image/x-cmu-raster'
                break;
            case 
'rgb'
                
$mimeType 'image/x-rgb'
                break;
            case 
'rmi'
                
$mimeType 'audio/mid'
                break;
            case 
'roff'
                
$mimeType 'application/x-troff'
                break;
            case 
'rtf'
                
$mimeType 'application/rtf';
                
$icon 'Word';  
                break;
            case 
'rtx'
                
$mimeType 'text/richtext'
                break;
            case 
'scd'
                
$mimeType 'application/x-msschedule'
                break;
            case 
'sct'
                
$mimeType 'text/scriptlet'
                break;
            case 
'setpay'
                
$mimeType 'application/set-payment-initiation'
                break;
            case 
'setreg'
                
$mimeType 'application/set-registration-initiation'
                break;
            case 
'sh'
                
$mimeType 'application/x-sh'
                break;
            case 
'shar'
                
$mimeType 'application/x-shar'
                break;
            case 
'sit'
                
$mimeType 'application/x-stuffit'
                break;
            case 
'snd'
                
$mimeType 'audio/basic'
                break;
            case 
'spc'
                
$mimeType 'application/x-pkcs7-certificates'
                break;
            case 
'spl'
                
$mimeType 'application/futuresplash'
                break;
            case 
'src'
                
$mimeType 'application/x-wais-source'
                break;
            case 
'sst'
                
$mimeType 'application/vnd.ms-pkicertstore'
                break;
            case 
'stl'
                
$mimeType 'application/vnd.ms-pkistl'
                break;
            case 
'stm'
                
$mimeType 'text/html'
                break;
            case 
'svg'
                
$mimeType 'image/svg+xml'
                break;
            case 
'sv4cpio'
                
$mimeType 'application/x-sv4cpio'
                break;
            case 
'sv4crc'
                
$mimeType 'application/x-sv4crc'
                break;
            case 
'swf'
                
$mimeType 'application/x-shockwave-flash'
                break;
            case 
't'
                
$mimeType 'application/x-troff'
                break;
            case 
'tar'
                
$mimeType 'application/x-tar'
                break;
            case 
'tcl'
                
$mimeType 'application/x-tcl'
                break;
            case 
'tex'
                
$mimeType 'application/x-tex'
                break;
            case 
'texi'
                
$mimeType 'application/x-texinfo'
                break;
            case 
'texinfo'
                
$mimeType 'application/x-texinfo'
                break;
            case 
'tgz'
                
$mimeType 'application/x-compressed'
                break;
            case 
'tif'
                
$mimeType 'image/tiff'
                break;
            case 
'tiff'
                
$mimeType 'image/tiff'
                break;
            case 
'tr'
                
$mimeType 'application/x-troff'
                break;
            case 
'trm'
                
$mimeType 'application/x-msterminal'
                break;
            case 
'tsv'
                
$mimeType 'text/tab-separated-values'
                break;
            case 
'txt'
                
$mimeType 'text/plain';
                
$icon 'Notepad';
                break;
            case 
'uls'
                
$mimeType 'text/iuls'
                break;
            case 
'ustar'
                
$mimeType 'application/x-ustar'
                break;
            case 
'vcf'
                
$mimeType 'text/x-vcard'
                break;
            case 
'vrml'
                
$mimeType 'x-world/x-vrml'
                break;
            case 
'wav'
                
$mimeType 'audio/x-wav'
                break;
            case 
'wcm'
                
$mimeType 'application/vnd.ms-works'
                break;
            case 
'wdb'
                
$mimeType 'application/vnd.ms-works'
                break;
            case 
'wks'
                
$mimeType 'application/vnd.ms-works'
                break;
            case 
'wmf'
                
$mimeType 'application/x-msmetafile'
                break;
            case 
'wps'
                
$mimeType 'application/vnd.ms-works'
                break;
            case 
'wri'
                
$mimeType 'application/x-mswrite'
                break;
            case 
'wrl'
                
$mimeType 'x-world/x-vrml'
                break;
            case 
'wrz'
                
$mimeType 'x-world/x-vrml'
                break;
            case 
'xaf'
                
$mimeType 'x-world/x-vrml'
                break;
            case 
'xbm'
                
$mimeType 'image/x-xbitmap'
                break;
            case 
'xla'
                
$mimeType 'application/vnd.ms-excel';
                
$icon 'Excel';
                break;
            case 
'xlc'
                
$mimeType 'application/vnd.ms-excel';
                
$icon 'Excel';
                break;
            case 
'xlm'
                
$mimeType 'application/vnd.ms-excel';
                
$icon 'Excel';
                break;
            case 
'xls'
                
$mimeType 'application/vnd.ms-excel'
                
$icon 'Excel'
                break;
            case 
'xlsx'
                
$mimeType 'application/vnd.ms-excel';
                
$icon 'Excel';
                break;
            case 
'xlt'
                
$mimeType 'application/vnd.ms-excel'
                
$icon 'Excel';
                break;
            case 
'xlw'
                
$mimeType 'application/vnd.ms-excel'
                
$icon 'Excel';
                break;
            case 
'xof'
                
$mimeType 'x-world/x-vrml'
                break;
            case 
'xpm'
                
$mimeType 'image/x-xpixmap'
                break;
            case 
'xwd'
                
$mimeType 'image/x-xwindowdump'
                break;
            case 
'z'
                
$mimeType 'application/x-compress'
                break;
            case 
'zip'
                
$mimeType 'application/zip';
                
$icon 'Zip'
                break;
            default: 
                
$mimeType 'application/octet-stream';
                
$icon 'Generic';
                
$isImage false;
                break;                
        }
        
        
$data['mimeType'] = $mimeType;
        
$data['icon'] = $icon;
        
$data['isImage'] = $isImage;
        
        return 
$data;
        
    }
    
    
/**
    * Used to retrieve a file from the database and store it in the temp 
    * folder for delivery to the user.  
    * 
    * $dataObjectHash is used to indentify the Data Object without giving it's
    * actual Class name in public javascript.
    * 
    * $fieldIndex is a numerical index to the database field to prevent
    * passing the actual field name around on the URL.  It can be 
    * looked up in the getBinaryObjectDefinitions(...) method of the 
    * main Data Object.  
    * 
    * $filename is used to save the file, and the $primaryKeyValue
    * string/array tells it which record to update.  
    * 
    * @param string $dataObjectHash
    * @param integer $fieldIndex
    * @param string $filename
    * @param string | array $primaryKeyValue
    * @return string | boolean
    */
    
public static function saveBlobToTemp($dataObjectHash$fieldIndex$filename$primaryKeyValue) {
        
$dataObject Apeel_Framework_Model_Libraries_Data::getDataObjectByHash($dataObjectHash);
        
$definition $dataObject->getBinaryObjectDefinitions($fieldIndex);
        
$fieldname $definition['contentField'];
        
$file $dataObject->manageBlob('read'$fieldname$primaryKeyValue);
        if (
$file) {
            
            
Apeel_Framework_Model_Libraries_File::sweepFolder(APEEL_TEMP_UPLOAD_FOLDER);
            
            
$filename Apeel_Framework_Model_Libraries_File::generateUniqueFilename(APEEL_TEMP_UPLOAD_FOLDER$filename);
            
file_put_contents(APEEL_TEMP_UPLOAD_FOLDER $filename$file);
            
$filename 'tmp/' $filename;
            return 
$filename;
        }
        return 
false;
    }
    
    
    
/**
    * Deletes files from selected folder that are older than the time period
    * specified by $filesOlderThan.  
    * 
    * Generally used for temporary folders where files are placed for the user
    * to download, to clear them out afterwards.  
    * 
    * It is good practice to call this method when uploading a file to the 
    * folder so that it never gets too full.  
    * 
    * @param string $path
    * @param integer $filesOlderThan
    * @return void
    */
    
public static function sweepFolder($path$filesOlderThan 90) {
        
$files scandir($path);
        if (
$files) {
            foreach (
$files as $num => $fname) {
                
$filename $path $fname;
                if ((
$fname != ".") && ($fname != "..") && (file_exists($filename) && ((time() - filemtime($filename)) > $filesOlderThan))) {
                    
$mod_time filemtime($filename);
                    
unlink($filename);
                }
            }
        }
    }    
}

?>

PHP Demo Source Code Index