Баг в 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);
Не уверен, что это лучшее решение, плохо разбираюсь в регулярных выражениях, но это пока самый простой вариант.
Ivan
23 октября 2017, 09:49
modx.pro
488
0

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0