Fix Windows media source paths for Flysystem - #92
Open
Ibochkarev wants to merge 1 commit into
Open
Conversation
Flysystem object keys always use "/", so DIRECTORY_SEPARATOR broke rename/create/move path joins on Windows. Normalize virtual paths to forward slashes and keep parent directories on rename.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
На Windows ключи объектов Flysystem используют
/, а код media source соединял и резал пути черезDIRECTORY_SEPARATOR(\). Переименование вложенной папки теряло родительский каталог и перемещало объект не туда (часто под core-путь сайта).#15440только убрал PHP-нотисы «passed by reference»; создание путей оставалось сломанным (подтверждено в комментариях к issue).Это изменение трактует пути объектов Flysystem как всегда
/:sanitizePath/postfixSlash, хелперы для root / join / rename, та же логика join для create, move, list ids и S3.Как проверить
php -l core/src/Revolution/Sources/modMediaSource.php→ exit 0php -l core/src/Revolution/Sources/modS3MediaSource.php→ exit 0composer run-script phpunit -- --filter modMediaSourceTest→ OK (4 теста, 15 assertions)Связанные
Refs modxcms#15438
Совместимость
Затрагивает локальные и S3 media source на всех платформах. Поведение на Unix не меняется (
/уже совпадал сDIRECTORY_SEPARATOR). Join путей файлового менеджера на Windows теперь должен совпадать с ключами Flysystem. Локальная OS-обработка путей вprepareSrcForThumbпо-прежнему используетDIRECTORY_SEPARATORдля проверок phpThumb/file_exists.Совместимость
Без изменения сигнатур публичных методов. Строки путей из API media source могут нормализовать разделители к
/более консистентно (Flysystem-совместимо). Безопасно для patch-потребителей, уже трактовавших пути Flysystem как/.Оригинал: modxcms#16995