их может быть, если не ошибся, около 65000 на одного пользователя
Вы не ошиблись. Если считать точно, то конечных папок может быть 256*256=65536. Плюс сюда ещё 256 папок первого уровня (из $first_dir). Итого: при операциях сканирования или бекапа нужно проходить максимум 65792 папок у каждого пользователя.
Тут сразу есть два неприятных момента:
1. "Файлы будут размазаны ровным слоем" хоть и звучит красиво, но на самом деле такой подход выливается в то, что пока пользователь создаёт первые 65 тысяч файлов, по теории вероятности практически
каждый его файл будет лежать в своей отдельной папке, единственный в ней. Что и подтверждается практикой.
2. Эта цифра именно для каждого пользователя. Для 100 активных пользователей умножайте эту цифру на 100. А это уже значительная нагрузка на сервер каждую ночь во время служебных операций. А если пользователей тысяча? На больших реальных проектах получаются десятки тысяч файлов, каждый из которых лежит в отдельной папке — то есть, десятки тысяч папок с одним единственным файлом. Жесть… Или, как минимум, очень странно...
Ничто не мешает вам это сделать переписав лишь одну функцию под свои нужды
Абсолютно логично. Также ничто не мешает переписать под себя любую другую функцию или вообще любую часть движка. Но ведь мы же не к этому стремимся, чтобы сделать систему, ядро которой нужно переписывать под себя. Мы же хотим максимально универсальную систему, верно? Пара новых строчек кода — небольшая цена за возможность любому пользователю получить свой функционал без патчей системных файлов. Тем более, когда дефолтный вариант создаёт проблемы или хотя бы просто необоснованно увеличивает нагрузку на сервер.
Да и дело не в том, чтобы я что-то "переписал под себя". Это не проблема, я себе много так подправил и добавил. Начиная от вывода виджетов в любом месте шаблона или под/над контентом, заканчивая логинами и красивыми адресами у пользователей.
Вопрос в том, что во-первых, далеко не все вебмастера, пользующиеся InstantCMS могут это сделать.
Во-вторых, потом эту патченную систему нужно корректно обновлять несколько раз в год, учитывая все свои правки. Многие ли пользователи этой замечательной CMS так смогут и вообще на это согласятся?
В-третьих, достаточно сделать одну или несколько правок в коде, чтобы дать возможность людям без всяких патчей использовать свою систему имён папок вместо дефолтной, например, через хук или через вызов пользовательского варианта функции при её наличии. И лично мне пока не понятны причины столь категорического отказа от этого, тем более когда на форуме уже не первый раз поднимается этот проблемный момент. Такой хук или проверка наличия пользовательской функции не будут нагружать систему, так как функция вызывается редко, только при создании новых файлов.
Так что,
@IamB, Вы правильно описали работу функции. Но хочется понять, с какой целью Вы написали этот пост?