Файл: engine/classes/Files.php
Строк: 55
<?php
    
   /**
    * @author Tadochi aka Patsifist <Tadochi@spaces.ru>
    * @class Files 
    * @version 0.1
    * Класс для работы с файлами и папками
    */
    Class files
    {
        public
            $is_dir, // true если папка
            //$action, // get_data, clean_dir, delete_dir, reanme
            $link; // Ссылка на объект
        public $size = 0; // Размер файла или папки
        public $files  = 0; // Количество файлов в папке
        public $dirs = 0;  // Количество папок в папке
        public function __construct($link, $action = false)
        {
            $this->link = $link;
            $this->action = $action;
            // $this->is_dir = is_dir($this->link);
            if (is_dir($link))
            {
                $this->link = $link . (substr($link, -1) != '/' ? '/' : null);
                $this->is_dir = true;
            }
            if (!is_file($link) && !$this->is_dir)
            {
                trigger_error('<b>Warning</b>: '.$link . ' not found', E_USER_ERROR);
            }
            if ($action)
            {
                $this->$action($link);
            }
        }
        public function description()
        {
            if ($this->is_dir)
                return
                    'Информация о папке ' . basename($this->link) . ' (' . $this->link . ')' . 
                    '<br />Размер в байтах: ' . $this->size . 
                    '<br />Папок: ' . $this->dirs . '<br />
                    Файлов: ' . $this->files ;
            else
                return
                    'Информация о файле ' . basename($this->link) . ' (' . $this->link . ')'.
                    '<br />Размер в байтах: ' . filesize($this->link) . 
                    '<br />Расширение: '. pathinfo($this->link, PATHINFO_EXTENSION);
        }
        public function get_data($link)
        {
            if (is_dir($link))
            {
                $dir = opendir($link);
                while($file = readdir($dir))
                {
                    if ($file == '.' || $file == '..')
                    {
                        continue;
                    }
                    if (is_dir($link . $file))
                    {
                        $this->dirs += 1;
                        $this->get_data($link . $file . '/');
                    }
                    else
                    {
                        $this->files += 1;
                        $this->size += filesize($link . $file);
                    }
                }
            }
        }
    }