[MODX] Сниппет для вывода размера и расширения файла

Использование:

  • [[!FileSize? &input=`assets/files/myfile.zip`]] — Будет автоматически выбрана единица измерения
  • [[*file_catalog:FileSize]] — Вывод размера файла из TV-параметра
  • [[!FileSize? &input=`assets/files/myfile.zip` &unit=`b`]] — Явно указываем единицу измерения
  • [[!FileSize? &input=`assets/files/myfile.zip` &get_ext=`1`]] — Получить расширение файла, а не размер
  • [[*file_catalog:FileSize?&get_ext=`1`]] — расширение файла из TV-параметра
  • {'!FileSize' | snippet : ['input' => 'assets/files/myfile.zip']} — Fenom

Сниппет FileSize

if(!empty($get_ext)){
  //Получить расширение файла в нижнер регистре
  $ext = mb_strtolower(pathinfo($input, PATHINFO_EXTENSION));
  return $ext;
}else{
  //Получить размер файла
  $units = array(
    'gb' => array('size' => 1073741824, 'label' => 'ГБ'),
    'mb' => array('size' => 1048576,    'label' => 'МБ'),
    'kb' => array('size' => 1024,       'label' => 'КБ'),
    'b'  => array('size' => 0,          'label' => 'байт')
  );
  $input = MODX_BASE_PATH . $input;
  $size = is_file($input) ? filesize($input) : 0;
  $unit = (isset($unit) && isset($units[$unit])) ? $unit : false;
  
  if ($size > 0) {
    if ($unit === false) {
      foreach ($units as $key => $properties) {
        if ($size >= $properties['size']) {
          $unit = $key;
          break;
        }
      }
    }
    if ($unit != 'b'){
      $size = $size / $units[$unit]['size'];
    }
  }
  else {
    if ($unit === false) $unit = 'b';
  }
  return round($size, 2) . ' ' . $units[$unit]['label'];
}

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Наш сайт использует куки, нажмите «ОК» если вы не против
OK