Просмотр файла engine/classes/files.class.php

Размер файла: 2.06Kb
  1. <?php
  2. /**
  3. * @author Tadochi aka Patsifist <Tadochi@spaces.ru>
  4. * @class Files
  5. * @version 0.1
  6. * Класс для работы с файлами и папками
  7. */
  8.  
  9. Class files
  10. {
  11. public
  12. $is_dir, // true если папка
  13. //$action, // get_data, clean_dir, delete_dir, reanme
  14. $link; // Ссылка на объект
  15. public $size = 0; // Размер файла или папки
  16. public $files = 0; // Количество файлов в папке
  17. public $dirs = 0; // Количество папок в папке
  18.  
  19. public function __construct($link, $action = false)
  20. {
  21. $this->link = $link;
  22. $this->action = $action;
  23. // $this->is_dir = is_dir($this->link);
  24. if (is_dir($link))
  25. {
  26. $this->link = $link . (substr($link, -1) != '/' ? '/' : null);
  27. $this->is_dir = true;
  28. }
  29.  
  30. if (!is_file($link) && !$this->is_dir)
  31. {
  32. trigger_error('<b>Warning</b>: '.$link . ' not found', E_USER_ERROR);
  33. }
  34.  
  35. if ($action)
  36. {
  37. $this->$action($link);
  38. }
  39. }
  40.  
  41. public function description()
  42. {
  43. if ($this->is_dir)
  44. return
  45. 'Информация о папке ' . basename($this->link) . ' (' . $this->link . ')' .
  46. '<br />Размер в байтах: ' . $this->size .
  47. '<br />Папок: ' . $this->dirs . '<br />
  48. Файлов: ' . $this->files ;
  49. else
  50. return
  51. 'Информация о файле ' . basename($this->link) . ' (' . $this->link . ')'.
  52. '<br />Размер в байтах: ' . filesize($this->link) .
  53. '<br />Расширение: '. pathinfo($this->link, PATHINFO_EXTENSION);
  54. }
  55.  
  56. public function get_data($link)
  57. {
  58. if (is_dir($link))
  59. {
  60. $dir = opendir($link);
  61. while($file = readdir($dir))
  62. {
  63. if ($file == '.' || $file == '..')
  64. {
  65. continue;
  66. }
  67.  
  68. if (is_dir($link . $file))
  69. {
  70. $this->dirs += 1;
  71. $this->get_data($link . $file . '/');
  72. }
  73. else
  74. {
  75. $this->files += 1;
  76. $this->size += filesize($link . $file);
  77. }
  78. }
  79. }
  80. }
  81. }