Список последних изменений
v0.2.0
1) Веб-установщик:
- в компоненте webinstaller.php:
- к некоторым таблицам, устанавливаемой базы данных, добавлены комментарии;
- небольшой фикс для устранения появления ошибок при установке базы данных на новые версии MySQL;
- пофиксены некоторые другие баги;
- в компонентах makeinstall.php, valconf.php и selfremove.php откорректированны заголовки;
- поправлены стили интерфейса для корректного отображения в браузере Firefox на ОС Ubuntu при использовании некоторых сторонних тем рабочего стола;
- добавлена возможность смены языка веб-интерфейса без перезагрузки страницы;
- значительно улучшены перехват и обработка ошибок.
2) В модуле plugins.php в классе Plugins:
- пофиксен баг, вызванный опечаткой при кодинге;
- пофиксен баг, проявляющийся на php7.2 в методах unpack и install;
- метод pluginData теперь просто вазвращает false и не устанавливает код ошибки, если запрашиваемый плагин не найден.
3) В модуле auth.php в классе Auth:
- пофиксен баг, из-за которого куки не сохранялись;
- добавлена возможность использовать в методе userLogin e-mail адрес наравне с юзернеймом;
- добавлена возможность создания неограниченного количества сессий для каждого пароля пользователя;
- добавлена возможность прохождения первого шага 2-факторной аутентификации через метод userLogin;
- добавлен новый метод login2FA для прохождения второго шага 2-факторной аутентификации;
- добавлена новая переменная сессии с ключом AUTH_2FA_SWAP, в которой хранятся переменные сессии пользователя до прохождения второго шага аутентификации;
- добавлен новый метод userSessions для получения информации об актуальных сессиях пользователя (доступ контролируется новой политикой 'auth_user_sessions');
- добавлен новый метод destroySession для удаления определённой сессии пользователя (доступ контролируется новой политикой 'auth_destroy_sessions');
- добавлен новый метод destroyAllSessions для удаления всех сессий пользователя (доступ также контролируется новой политикой 'auth_destroy_sessions').
4) В модуле userman.php в классе UserMan:
- добавлен новый метод enable2FA для включения 2-факторной аутентификации паролей;
- добавлен новый метод disable2FA для выключения 2-факторной аутентификации паролей.
5) В модуле discuss.php в классе Discuss:
- добавлен новый метод getAllComments для получения сразу всех комментариев к теме c указанным идентификатором.
6) В модуле share.php в классе Share:
- добавлен новый метод getMsgAllComments для получения сразу всех комментариев к сообщению c указанным идентификатором;
- в случае неудач, метод getFile теперь возвращает страницы HTTP-статусов вместо false.
7) Обновилать спецификация установочного пакета плагинов - добавлена возможность установки CSS-стилей. Версия спецификации увеличена до 0.3.
8) Новый модуль ядра __loader__.php, загружаемый вместе с файлом конфигураций conf.php, содержит:
- функция loadPHP для загрузки PHP библиотек ядра, или любого установленного плагина;
- функция loadJS для загрузки JavaScript библиотек ядра, или любого установленного плагина;
- функция loadCSS для загрузки CSS библиотек ядра, или любого установленного плагина;
- функция loadDOC для получения файлов из документов ядра, или любого установленного плагина при помощи mod_xsendfile (для Apache2) и X-Accel-Redirect (для NGINX) или X-LIGHTTPD-send-file (для lighttpd);
- функция mntc для замены запрашиваемой страницы страницей-заглушкой режима обслуживания веб-сервиса;
- функция dbLink для упрощённого получения ссылки на базу данных на основе параметров файла конфигураций conf.php.
9) Новый модуль ядра maintenance.php с классом Maintenance для управления режимом обслуживания содержит:
- метод state для получения настроек режима обслуживания;
- метод write для записи настроек режима обслуживания;
- метод enable для включения режима обслуживания;
- метод disable для выключения режима обслуживания;
- метод timeout для установки предполагаемой длительности работы режима обслуживания;
- метод startpoint для установки начальной точки отсчёта таймаута режима обслуживания;
- метод prmsg для установки основного сообщения режима обслуживания;
- метод secmsg для установки вторичного сообщения режима обслуживания;
- метод reset для сброса настроек режима обслуживания к значениям по умолчанию;
- доступ к методам класса контролируется новой политикой 'maintenance_configure'.
10) В файле конфигураций conf.php:
- добавлена новая константа MECCANO_CSS_DIR, определяющая путь к папке, в которой хранятся CSS-стили, устанавливаемых плагинов;
- добавлена новая константа MECCANO_SERVICE_PAGES, определяющая путь к папке, в которой хранятся страницы HTTP-статусов, страница-заглушка режима обслуживания и файл с настройками режима обслуживания;
- добавлена новая константа MECCANO_MNTC_IP отпределяющая список IP-адресов, на которые не распространяется режим обслуживания;
- модуль ядра loader.php загружается с самим файлом конфигураций.
11) В модуле extclass.php в классе ServiceMethods:
- в методе outputFormat добавлен новый формат 'array';
- в методе checkFuncAccess добавлен новый аргумент $userId для доступа пользователя к функциям, в обход политик доступа и снижения таким образом нагрузки на базу данных, если это касается его персональных данных.
12) В модуле langman.php в классе LangMan:
- произведено переименование следующих методов:
- getTitleSectionsXML => getTitleSectionsList;
- getTitleNamesXML => getTitleNamesList;
- getTitlesXML => getTitlesList;
- getAllTitlesXML => getAllTitlesList;
- getTextSectionsXML => getTextSectionsList;
- getTextNamesXML => getTextNamesList;
- getTextsXML => getTextsList;
- getAllTextsXML => getAllTextsList.
13) Для возможности сохранения эмоджи, в качестве кодировки таблиц базы данных используется 'utf8mb4'.
v0.1.0
1) Новый модуль discuss.php с классом Discuss для создания тем обсуждения и комментирования чего-либо;
2) Новый модуль share.php с классом Share для обмена сообщениями и файлами по типу простой социальной сети. Вместе с модулем добавлены новые политики доступа:
политика share_viewing_access относится к методам:
- getFile, getFileInfo, getMsg, msgFiles, sumUserMsgs, userMsgs, msgStripe, appendMsgStripe, updateMsgStripe, sumUserFiles, userFiles, fileStripe, appendFileStripe, updateFileStripe, getMsgComment, getMsgComments, appendMsgComments, updateMsgComments и repostMsg.
политика share_modify_msgs_files относится к методам:
- delFile, updateFile, delMsg и updateMsg.
политика share_modify_comments относится к методам:
- editMsgComment и eraseMsgComment.
3) Изменения в модуле unifunctions.php:
- новая функция pregDbName для проверки допустимости имени, создаваемой базы данных;
- в функции pregPref разрешённая длина, принимаемой строки, уменьшена до 10 символов;
- символ № исключён из числа разрешённых в паролях (pregPassw);
- при генерации соли (makeSalt) и идентификаторов (makeIdent) больше не используется функция rand, она заменена функцией mt_rand;
- новая функция genPassword для генерации случайных паролей по заданным критериям сложности;
- новая функция guid для генерации глобально уникальных идентификаторов;
- новая функция pregGuid, проверяющая получаемую строку на соответствие формату глобально уникального идентификатора.
4) Изменения в модуле auth.php:
- в метод userLogin добавлен новый аргумент blockBrute, позволяющий временно блокировать аутентификацию пользователя по паролю после нескольких введённых подряд неверных паролей;
- в файл настроек conf.php были добавлены новые константы. MECCANO_AUTH_LIMIT устанавливает количество допустимых вводов неверного пароля до временной блокировки аутентификации пользователя, а MECCANO_AUTH_BLOCK_PERIOD устанавливает период временной блокировки аутентификации пользователя;
- удалена политика auth_session.
5) Изменения в модуле langman.php:
- новый метод installLang для установки системных языков;
- в установочный пакет добавлен файл languages.xml, в котором содержится информация о системных языках, установленных из пакета. По этой причине в файле metainfo.xml версия спецификации, описывающей структуру пакета изменена на 0.2. Корректрость структуры файла languages.xml проверяется новой схемой проверки langman-language-v01.rng;
- исправлены ошибки в методе addLang.
6) Изменения в модуле userman.php:
- новый метод createPassword для генерации вторичных паролей пользователей.
7) Изменения в модуле logman.php:
- Некоторые методы были переименованы:
- delEvents -> delLogEvents;
- newRecord -> newLogRecord.
8) Изменения в модуле policy.php:
- Некоторые методы были переименованы:
- addGroup -> addPolicyToGroup;
- delGroup -> delPolicyFromGroup;
- funcAccess -> setFuncAccess;
- checkAccess -> checkFuncAccess;
- install -> installPolicy.
9) Некоторые методы были перенесены из своих классов в другие классы:
- Logman->newLogRecord в ServiceMethods->newLogRecord;
- Policy->checkFuncAccess в ServiceMethods->checkFuncAccess;
- Policy->addPolicyToGroup в UserMan->addPolicyToGroup;
- Policy->delPolicyFromGroup в UserMan->delPolicyFromGroup.
10) Изменения в модуле extclass.php:
- новый метод outputFormat, устанавливающий способ вывода данных в виде стороки json, либо объекта DOMDocument;
- во всех методах классов всех модулей ядра, где ранее вывод данных осуществлялся в виде объекта DOMDocument, обеспечен вывод в виде строки json.
- в методе setError реализована возможность вывода на страницу информации об ошибках. Для управления вывода информации об ошибке на экран в файл настроек conf.php была добавлена константа MECCANO_SHOW_ERRORS.
11) Изменения в модуле files.php:
- в методе setError реализована возможность вывода на экран информации об ошибке.
12) Изменения в модуле plugins.php:
- операции над плагинами блокируются во время выполнения методов unpack, delUnpacked, install и delInstalled.
13) Строки, сохраняемые в базе данных, больше не проходят предварительную обработку функцией htmlspecialchars.