1/Datalife Engine: анализ версии 17.1

Введение

21 февраля 2024 года состоялся релиз новой версии CMS Datalife Engine. О чём было объявлено на официальном сайте.

Изменения

1. Доп.поля

Для дополнительных полей типа "список" теперь доступна функция установки обязательности их заполнения, а также возможность выбирать несколько значений.

Затронутые файлы
  • /upload/engine/ajax/editnews.php
  • /upload/engine/ajax/rebuild.php
  • /upload/engine/classes/templates.class.php
  • /upload/engine/inc/xfields.php
  • /upload/engine/modules/functions.php
  • /upload/engine/modules/main.php
  • /upload/engine/modules/show.custom.php
  • /upload/engine/modules/show.full.php
  • /upload/engine/modules/show.short.php
  • /upload/engine/modules/topnews.php

2. SiteMap

В sitemap теперь можно добавлять изображения, эта функция активирована по умолчанию с момента установки.

Функция уведомления поисковых систем о обновлении файла sitemap была удалена.

Затронутые файлы
  • /upload/engine/ajax/sitemap.php
  • /upload/engine/classes/antivirus.class.php
  • /upload/engine/classes/google.class.php
  • /upload/engine/inc/googlemap.php
  • /upload/install.php

3. Уведомления DLEPush

Введена новая система PUSH-уведомлений для информирования пользователей, заменившая DLEAlert.

Затронутые файлы
  • /upload/engine/ajax/addcomments.php
  • /upload/engine/ajax/editcomments.php
  • /upload/engine/ajax/editnews.php
  • /upload/engine/ajax/pm.php
  • /upload/engine/classes/js/dle_js.js
  • /upload/engine/classes/js/jqueryui.js
  • /upload/engine/modules/addnews.php
  • /upload/engine/modules/feedback.php
  • /upload/engine/modules/pm.php
  • /upload/engine/modules/profile.php
  • /upload/engine/modules/register.php
  • /upload/engine/modules/vote.php

4. Внешние хранилища

В админпанели реализована функция сортировки подключенных внешних хранилищ.

Затронутые файлы
  • /upload/engine/ajax/adminfunction.php
  • /upload/engine/classes/filesystem.class.php
  • /upload/engine/inc/storage.php

5. Загрузка файлов

Внедрена функция обязательного добавления префикса к названию файла загруженного изображения, чтобы обеспечить отображение нового изображения пользователям вместо кешированного.

Также реализована возможность сохранения оригинального названия файла, то есть того названия, под которым файл был загружен на сервер.

Затронутые файлы
  • /upload/engine/classes/uploads/upload.class.php

6. Система плагинов

На странице плагина в админпанели добавлены функциональные кнопки: "Проверить обновления", "Загрузить обновление", "Скачать" и "удалить".

В опции плагина добавлена ссылка на страницу его редактирования в новом окне.

Затронутые файлы
  • /upload/engine/classes/uploads/upload.class.php

7. Комментарии

Теперь можно редактировать имя автора в комментариях, оставленных анонимными пользователями.

Кнопка "Пожаловаться" больше не показывается в комментариях, автором которых является пользователей.

Устранена проблема с отправкой ответов на комментарии при активированной капче reCAPTCHA v3.

Затронутые файлы
  • /upload/engine/ajax/addcomments.php
  • /upload/engine/inc/cmoderation.php
  • /upload/engine/inc/comments.php

8. Протокол IndexNow

Теперь у вас есть возможность выбора провайдера для уведомления поисковых систем.

Выбрать можно из списка: IndexNow, Yandex,Microsoft Bing, Naver, Seznam.cz.

По умолчанию при установке, IndexNow.

Затронутые файлы
  • /upload/engine/classes/seo.class.php
  • /upload/engine/inc/addnews.php
  • /upload/engine/inc/editnews.php
  • /upload/engine/inc/options.php
  • /upload/install.php

9. Адаптивный редактор

Теперь доступна опция использования адаптивного редактора с ограниченным набором кнопок при добавлении комментариев на мобильных устройствах.

Активация данной опции включена по умолчанию при установке.

Затронутые файлы
  • /upload/engine/ajax/editcomments.php
  • /upload/engine/ajax/replycomments.php
  • /upload/engine/editor/comments.php
  • /upload/engine/inc/options.php
  • /upload/engine/modules/show.full.php
  • /upload/install.php

10. TinyMCE

Возвращена возможность устанавливать размеры изображения непосредственно при редактировании свойств.

WYSIWYG-редактор обновлён до актуальной версии 6.8.3, ранее была 6.7.0.

Затронутые файлы
  • /upload/engine/ajax/editcomments.php
  • /upload/engine/ajax/editnews.php
  • /upload/engine/ajax/pm.php
  • /upload/engine/ajax/replycomments.php
  • /upload/engine/editor/comments.php
  • /upload/engine/editor/newsletter.php
  • /upload/engine/editor/shortnews.php
  • /upload/engine/editor/shortsite.php
  • /upload/engine/editor/static.php

11. Fancybox

Обновлён с версии v5.0.24 до v5.0.32. Актуальная на текущий момент v5.0.33 от 3 января 2024 года почему то не задействована.

Затронутые файлы
  • /upload/engine/classes/fancybox/fancybox.css
  • /upload/engine/classes/fancybox/fancybox.js

12. jQuery

Обновлён jQuery с версии v3.7.0 до актуальной v3.7.1.

Обновлён jQuery UI с версии v1.13.1 до актуальной v1.13.2.

Затронутые файлы
  • /upload/engine/classes/js/jquery3.js
  • /upload/engine/classes/js/jqueryui3.js

13. PHPMailer

Изменено значение XMailer на "CMS DataLife Engine", ранее было "DLE CMS".

Обновлён класс для работы с почтой с версии 6.8.1 до актуальной 6.9.1.

Затронутые файлы
  • /upload/engine/classes/mail.class.php
  • /upload/engine/classes/mail/class.phpmailer.php
  • /upload/engine/classes/mail/smtp.php

14. MySQL

Исправлены некоторые ошибки в коде.

Затронутые файлы
  • /upload/engine/classes/mysql.php

Тэги

Глобальный

{lang text="LANG_PARAMETER"} отображает информацию из языкового пакета, соответствующего выбранному языку с учетом указанного параметра.

shortstory.tpl и fullstory.tpl

{edit-date=формат даты} выводит дату редактирования публикации в заданном формате.

[xfvalue_X format="Формат"] выводит дату из доп.поля в заданном формате.

profile_popup.tpl

{usertitle} логин пользователя

[banned] ... [/banned] выводит данные, находящиеся между тегами, в случае, если пользователь находится в бане.

[not-banned] ... [not-banned] выводит данные, находящиеся между тегами, в случае, если пользователь не находится в бане.

{ban-description} выводит причину по которой пользователь забанен.

{ban-date} выводит срок до которого пользователь забанен.

userinfo.tpl

[banned] ... [/banned] выводит данные, находящиеся между тегами, в случае, если пользователь находится в бане.

[not-banned] ... [not-banned] выводит данные, находящиеся между тегами, в случае, если пользователь не находится в бане.

{ban-description} выводит причину по которой пользователь забанен.

{ban-date} выводит срок до которого пользователь забанен.

Файлы

Естественно, я не могу охватить все внесенные изменения. В моем приватном GIT-репозитории я сохраняю исходное состояние кода, что помогает мне более детально отслеживать изменения в CMS с каждым релизом.

Итак, по статистике релиза 17.1: 468 изменённых файлов13155 добавлений и 5057 удалений.

Множество изменений связаны с исправлением указания года в копирайтах внутри кода, поэтому мы сразу исключаем их. Также мы игнорируем файлы не связанные с кодом напрямую, а также целиком директорию /upload/engine/classes/composer/vendor/ и ей подобные.

Таким образом, если говорить по существу, вот полный список файлов, которые действительно подверглись изменениям:

  • /upload/engine/ajax/addcomments.php
  • /upload/engine/ajax/adminfunction.php
  • /upload/engine/ajax/complaint.php
  • /upload/engine/ajax/editcomments.php
  • /upload/engine/ajax/editnews.php
  • /upload/engine/ajax/favorites.php
  • /upload/engine/ajax/pm.php
  • /upload/engine/ajax/profile.php 
  • /upload/engine/ajax/rating.php
  • /upload/engine/ajax/ratingcomments.php
  • /upload/engine/ajax/rebuild.php
  • /upload/engine/ajax/replycomments.php
  • /upload/engine/ajax/sitemap.php
  • /upload/engine/ajax/upload.php
  • /upload/engine/classes/antivirus.class.php
  • /upload/engine/classes/comments.class.php
  • /upload/engine/classes/filesystem.class.php
  • /upload/engine/classes/google.class.php
  • /upload/engine/classes/htmlpurifier/HTMLPurifier.standalone.php
  • /upload/engine/classes/mail.class.php
  • /upload/engine/classes/mail/class.phpmailer.php
  • /upload/engine/classes/mail/smtp.php
  • /upload/engine/classes/mysql.php
  • /upload/engine/classes/parse.class.php
  • /upload/engine/classes/seo.class.php
  • /upload/engine/classes/templates.class.php
  • /upload/engine/classes/thumb.class.php
  • /upload/engine/classes/uploads/upload.class.php
  • /upload/engine/editor/comments.php
  • /upload/engine/editor/css/content.css
  • /upload/engine/editor/newsletter.php
  • /upload/engine/editor/shortnews.php
  • /upload/engine/editor/shortsite.php
  • /upload/engine/editor/static.php
  • /upload/engine/go.php
  • /upload/engine/inc/addnews.php
  • /upload/engine/inc/blockip.php
  • /upload/engine/inc/cmoderation.php
  • /upload/engine/inc/comments.php
  • /upload/engine/inc/complaint.php
  • /upload/engine/inc/editnews.php
  • /upload/engine/inc/editusers.php
  • /upload/engine/inc/email.php
  • /upload/engine/inc/googlemap.php
  • /upload/engine/inc/include/functions.inc.php
  • /upload/engine/inc/include/init.php
  • /upload/engine/inc/main.php
  • /upload/engine/inc/newsletter.php
  • /upload/engine/inc/options.php
  • /upload/engine/inc/plugins.php
  • /upload/engine/inc/preview.php
  • /upload/engine/inc/search.php
  • /upload/engine/inc/static.php
  • /upload/engine/inc/storage.php
  • /upload/engine/inc/tagscloud.php
  • /upload/engine/inc/upgrade.php
  • /upload/engine/inc/upgrade/17.0.php
  • /upload/engine/inc/userfields.php
  • /upload/engine/inc/usergroup.php
  • /upload/engine/inc/xfields.php
  • /upload/engine/modules/addcomments.php
  • /upload/engine/modules/addnews.php
  • /upload/engine/modules/banned.php
  • /upload/engine/modules/feedback.php
  • /upload/engine/modules/functions.php
  • /upload/engine/modules/main.php
  • /upload/engine/modules/pm.php
  • /upload/engine/modules/profile.php
  • /upload/engine/modules/profile_innews.php
  • /upload/engine/modules/register.php
  • /upload/engine/modules/search.php
  • /upload/engine/modules/show.custom.php
  • /upload/engine/modules/show.full.php
  • /upload/engine/modules/show.short.php
  • /upload/engine/modules/static.php
  • /upload/engine/modules/topnews.php
  • /upload/engine/modules/vote.php
  • /upload/engine/preview.php
  • /upload/engine/skins/default.skin.php
  • /upload/engine/skins/jаvascripts/application.js
  • /upload/install.php
  • /upload/language/English/adminpanel.lng
  • /upload/language/English/website.lng
  • /upload/language/Russian/adminpanel.lng
  • /upload/language/Russian/website.lng
  • /upload/language/Ukrainian/adminpanel.lng
  • /upload/language/Ukrainian/website.lng

Итого: 1 файл новый, 1 файл удалён и 85 были изменены.

P.S. Из причуд найденных в процессе анализа:

Только сейчас узнали о чудесной php-функции валидации email...

/upload/engine/modules/profile.php /upload/engine/modules/profile.php

false не null...

/upload/engine/classes/mysql.php upload/engine/classes/mysql.php

Оказывается пользователь noname был ранее повинен во множестве оценок выставленных гостями...

/upload/engine/ajax/rating.php /upload/engine/ajax/rating.php

Неожиданно API-файт принадлежит не SoftNewsMediaGroup, а некому IT-Security (Asafov Sergey)...

/upload/engine/api/api.class.php /upload/engine/api/api.class.php

Лучшего способа конкретизировать игнорирования первого элемента массива не нашлось...

/upload/engine/ajax/upload.phpupload/engine/ajax/upload.php

Интересные ссылки в тему

Подробная информация о релизе на официальном сайте:
https://dle-news.ru/release/1901-datalife-engine-v171-final-release.html