Есть неплохая фотогалерея для drupal gallerix. Вроде бы. Пока не столкнешься с таким. Функция перепостроения разных типоразмеров изображений из оригинальных:
$picture = gallerix_load_picture($pid);
// Build derivatives.
if (in_array('derivatives', $operations)) {
$sizes = gallerix_sizes();
$album_path = file_directory_path() . '/gallerix/albums/' . $picture->uid . '/' . $picture->nid;
// Delete old derivatives.
$directory = dir($album_path);
while (FALSE !== ($entry = $directory->read())) {
if ($entry == '.' || $entry == '..' || isset($sizes[$entry]) || $entry == 'original') {
continue;
}
gallerix_delete_directory($album_path . '/' . $entry);
}
...
Функция gallerix_load_picture($pid) при некорректном $pid (если нет такой картинки) возвращает объект с пустыми путями (!). Теперь внимательно посмотрим и видим, что при передаче некорректного $pid в функцию она просто удалит все фотоальбомы ($album_path = /gallerix/albums//).
Вполне вероятно, что при штатной работе некорректного $pid в функцию передаться не может, но мне пришлось её использовать при написании собственной обвязки перепостроения типоразмеров, т.к. штатная при моем количестве не справлялась. И малейшая опечатка может привести к печальным последствиям.
Я к чему. Всегда проверяйте сторонний код
Добавил такую проверку:
if ($picture->uid == 0 or $picture->nid == 0) return false;
Комментарии
Вы патч отправили в Issues?
[deleted]
По своему опыту знаю, что патч ускоряет фикс на два порядка