| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Никита Козин 29.12.2005 09:32 / 29.12.2005 09:40
Есть папка, внутри которой могут быть файлы и вложенные папки с файлами. Нужно получить дату обновления последнего обновленного файла внутри указанной папки, учитывая вложенные папки, т.е. рекурсивно. Файлы могут обновляться по FTP, таким образом сделать тригер, срабатывающий при загрузке файла и попровляющий где-то (допустим в файле /mdate.log) дату последнего обновления невозможно.@get_dir_stat[path][_list;_files;_dirs;_stat]
^if(def $path){
$path[^path.trim[end;/]]
}
$_list[^file:list[$path]]
$_files[^table::create[$_list][$.limit(0)]]
$_dirs[^table::create[$_list][$.limit(0)]]
^_list.menu{
^if(-d "$path/$_list.name"){
^_dirs.append{$path/$_list.name}
}{
^_files.append{$path/$_list.name}
}
}
$result[^hash::create[]]
^if($_files){
^_files.menu{
$_stat[^file::stat[$_files.name]]
$result.[$_files.name][$_stat.mdate]
}
}
^if($_dirs){
^_dirs.menu{
^result.add[^get_dir_stat[$_dirs.name]]
}
}
# end @get_dir_stat[]И собственно метод, который вычисляет максимальную дату: @get_max_date[hash][_dt;path;dt]
^hash.foreach[path;dt]{
^if(def $_dt){
^if($dt > $_dt){
$_dt[$dt]
}
}{
$_dt[$dt]
}
}
$result[$_dt]
# end @get_max_date[]Вызов этого добра: $dt[^get_max_date[^get_dir_stat[]]]