Баг в phpthumbon
Здравствуйте обнаружил баг работы дополнения phpthubmon, не знаю куда написать, так что пишу сюда, может кому понадобится, а может починят быстро и выпустят заплатку.
Короче суть в том, что если путь до файла содержит дирректории с сиволом "." в названии, то некорректно определяется имя файлов в этой дирректории, в результате создаётся единственная превью для всех файлов в этой дирректории и трудно понять в чём дело.
Проблема в этой функции:
В строчках
Заменил значение
Короче суть в том, что если путь до файла содержит дирректории с сиволом "." в названии, то некорректно определяется имя файлов в этой дирректории, в результате создаётся единственная превью для всех файлов в этой дирректории и трудно понять в чём дело.
Проблема в этой функции:
public function _pathinfo($part = '')
{
$path = $this->_config['input'];
// Russian files
if (preg_match('#[а-яё\s]#im', $path)) {
$path = strtr($path, array('\\' => '/'));
preg_match("#[^/]+$#", $path, $file);
preg_match("#([^/]+)[.$]+(.*)#", $path, $file_ext);
preg_match("#(.*)[/$]+#", $path, $dirname);
$info = array(
'dirname' => $dirname[1] ?: '.',
'basename' => $file[0],
'extension' => (isset($file_ext[2]))
? $file_ext[2]
: '',
'filename' => (isset($file_ext[1]))
? $file_ext[1]
: $file[0]
);
}
else {
$info = pathinfo($path);
}
$this->_fileInfo[$part] = $info;
return !empty($part) && isset($info[$part])
? $info[$part]
: $info;
}
В строчках
'filename' => (isset($file_ext[1]))
? $file_ext[1]
: $file[0]
$file_ext[1] может содержать не имя файла, а имя дирректории в этом случаеЗаменил значение
preg_match("#([^/]+)[.$]+(.*)#", $path, $file_ext);
наpreg_match("#([^/]+)[.$]+(.*)#", $file[0], $file_ext);
Не уверен, что это лучшее решение, плохо разбираюсь в регулярных выражениях, но это пока самый простой вариант.