Skip to content
Derek Jones edited this page Jul 5, 2012 · 7 revisions

Category:Libraries List all files in given directory that match a given extension(s).

application/libraries/Listfiles.php

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Listfiles{
    var $dir= '.';
    var $filter = false;
    var $filetype = array();
    var $files = array();

    function Listfiles($ext=false){
        log_message('debug', 'Listfiles Class Initialized.');
        $args = $ext; //func_get_args();
        $this->filter = (count($args))?true: false;
        if($this->filter){
            foreach($args as $e){
                array_push($this->filetype, $e);
            }
        }
        return($this->filetype);
    }
    
    function setDir($dir = false){
        $this->dir = trim($dir);
        if(is_dir($this->dir)){
            return true;
        }
        return false;
    }
    
    function getFiles($dir = false){
        if($this->setDir($dir)){
            $handle = @opendir($this->dir);
            if($handle){
                while (false !== ($file = readdir($handle))) {
                    if ($file != "." && $file != "..") {
                        if(is_file($this->dir . "/" . $file)){
                            $fileinfo = pathinfo($this->dir . "/" . $file);
                            foreach($this->filetype as $type){
                                if($type == $fileinfo['extension']){
                                    $t['file']= $this->dir . "/" . $file;
                                    list($f,$e) = explode('.', $file);
                                    $t['title']= str_replace('_',' ',ucfirst($f));
                                    array_push($this->files,$t);
                                }
                            }
                        }
                    }
                }
                closedir($handle);
                return($this->files);
            }
        } else {
            log_message('error', 'Listfiles Class -> Not a valid directory resource: ' . $this->dir);
            return (false);
        }
    }
}
?>

in your controller:

$this->load->library('listfiles', array('jpg', 'jpeg', 'csv'));
$data['files'] = $this->listfiles->getFiles('dir/to/search');
Clone this wiki locally