CHANGELOG_RU.md 16 KB

Список последних изменений

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.