Open Ghostlyr opened 7 years ago
По длине значений полей для IPv6 - максимальная длина IPv6 с учетом IPv4-совместимого IPv6 может составлять 45 символов см, что в общем то все равно довольно ощутимо влияет на объем базы.
https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html
Функции MySQL INET6_NTOA(
ip)
| INET6_ATON(ip
)` могут распознавать так и IPv4 адресы, для эффективного, производительного и многофункционального хранения в бинарном виде, но хз что в этом плане у PHP.
Обновление минимальных системных требований в скрипте установки:
Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in \engine\l10n.class.php on line 23
, Fatal error: Using $this when not in object context in \engine\l10n.class.php on line 24
php_intl
FIXED IN DEV
И /uploads наверное стоит ограничить определенным списком расширений файлов
Пожелание от простого любителя и ценителя понятного кода, не вкуривающего суть вещей и не способного оценить практическую пользу:
Для упрощения разработки и логики пригодились бы "типобезопасные" функции для работы с HTTP запросами в духе Laravel. Типа $core->request->has('param')
, $core->request->filled('param') (boolean)
, $core->request->get('param') (trim(string) | string)
.
language
можно все так же использовать JS-локалей, переместив также туда локализации библиотек.uploads
с data
.
|-- data
|-- cache
|-- logs
|-- tmp
|-- uploads
|-- cloaks
|-- files
|-- panel-icons
|-- skins
|-- smiles
install
для установки модулей. Текущая система вынуждает создавать папку с другим именем для скрипта установки модуля. Было бы удобнее встроить в основной скрипт установки CMS роутинг к скриптам установки модулей./install/?do=reinstall
.
База данных:
uuid
,login
иemail
UNSIGNED
для всех колонок, где не требуются отрицательные значения (?)gender
таблицыmcr_users
использовать ENUM для удобства разработкиmcr_users
преобразовать в бинарный формат binary(16)firstname
,lastname
,birthday
(ненадобность, 152-ФЗ РФ)color
(ненадобность)comments
для хранения "кэша" количества комментариев, оставленных пользователем (?)ip_create
), не имеет особого смысла. Реализовать хранение изменения IP-адресов пользователей в отдельной таблице, подчищаемой от устарелых данных через CRON (?)text_bb
,text_bb_short
,text_html_short
в виду грядущих изменений CMStext_html
на TEXT | MEDIUMTEXT - с головой хватает.data
в отдельную колонкуimg
varchar(255)hidden
tinyint для скрытия новостей от пользователей (TODO CMS*)hidden
tinyint для скрытых категорий выводе главной страницы модуля (TODO CMS*)CMS:
Модули:
date_last
с текущим временем прямо в момент регистрации (необходимость знать, производился ли вход в аккаунт после регистрации)UNHEX(REPLACE(UUID(), '-', ''))
для бинарного вида), вместо использования функцииlogintouuid
COUNT(*)
, оптимизировав получение данных о количестве просмотров, лайков, дизлайков, храня "кеш" в массивеdata
(AltNews) или в собственных колонках таблицыmcr_news
(?)tmp
быстрее, чем пользователь проходит по ссылке сбросаБлоки:
Warning: Cannot modify header information - headers already sent by (output started at /modules/admin/blocks.class.php:128) in /engine/core.class.php on line 170
Ядро и API:
color
с и без двойных кавычек[color=#ff0000]123[/color]
size
с и без двойных кавычек[size=3]123[/size]
send_mail
):"[{$this->cfg['main']['s_name']}] {фраза модуля}"
msg
в одну, данные выводить переменными внутри самих фраз.$core->sp()
: проверять существование указанного файла, а при отсутствии выдавать шаблон темы по умолчанию. Текущая система загрузки HTML-шаблонов имеет серьезный недостаток - требует наличие КАЖДОГО шаблона в выбранной теме, включая админ-панель. Для верстальщика это приводит к дублированию файлов и к трудностям с поддержкой - после каждого изменения нетронутого основного шаблона он должен быть обновлен и в кастомной теме. А разработчика заставляет постоянно передавать константу MCR_THEME_PATH.HEADER
иDEF_HEADER
в новые переменные перед тегом</body>
: в<header>
должны находиться только критично важные для отображения страницы ресурсы - в данном случае только основной CSS, дабы избежать подергивания страницы при загрузке.uuid
), чтобы получить чистую строку, разбирать лучше на стороне PHP и желательно заменой регулярным выражением (производительность на стороне preg_replace против substr: https://wtools.io/php-sandbox/eE)Написание сторонних модулей:
Написание документации:
Front-End:
transform
. Костыль - лишние пробелы.short_open_tag = off
, но ИМХО рядовому юзеру удобнее использовать сокращенный вид тегов php Объем кода сокращается и синтаксис упрощается.