Главная » Новости » Версия 0.7.48

Версия 0.7.48 

Ядро:

  • удалена система драйверов БД

  • класс БД теперь построен на основе PDO

  • добавлена конфигурационная константа SYS_FORCE_DEBUG_MODE, позволяющая принудительно включить отладчик

  • исправлена работа с шаблонами

  • удалена поддержка категорий

  • Файлы constants.php и upgrade.php перенесены в папку include

  • исправлена ошибка в uploader.php - список разрешенных расширений файлов не работал

  • в БД, в таблице users поле user_birth теперь имеет тип DATE, чтобы обеспечить возможность ввода дат до 1.01.1970. Связанный функционал откорректирован. Обновление БД производится автоматически в модуле user.

  • После перехода на PDO, часть функционала, ранее реализованного на PHP, выполняется самим PDO. В частности теперь именно PDO заменяет символы '?' на соответствующие значения. Из-за этого в логах отладчика выводится SQL-запрос без параметров. Данное поведение теперь исправлено: дополнительно к тексту SQL-запроса в лог выводится еще и дамп массива параметров.

  • удалены неиспользуемые константы из index.php

  • константы имени кукисов и префикса таблиц БД перенесены в config.php

  • теперь ядро нормально (одинаково) обрабатывает запросы с www и без

  • исправлена ошибка в роутере: если в метод make_url() передан inner_uri домашней страницы, то роутер возвращал URL с inner_uri вместо простого URL главной страницы.

  • исправлена ошибка в роутере: если для главной страницы не задан элиас, то ссылки для нее генерируются с inner_uri, а должны быть просто ссылки на корень сайта.

  • роутер: make_url() - удален параметр $force_ssl, как неиспользуемый

  • роутер: make_url() - теперь если страница использует защищенное соединение, то все внутренние ссылки с нее генерируются через SSL

  • ядро теперь не переключает принудительно в незащищенное соединение. Фактически это означает, что однажды зайдя на сайт через SSL, пользователь дальше будет постоянно находиться в защищенном соединении до конца сеанса.

  • переименован метод ядра Tanita::redirect(...) в Tanita::_redirect(...), т.к. данный метод является служебным и не должен напрямую вызываться из модулей. Все легальные вызовы данного метода скорректированы.

  • Переделан механизм обновления модулей. Теперь если модулю требуется обновление, он блокируется, а в списке модулей (в админке) появляется соответствующее сообщение и кнопка для обновления модуля. Автоматическое обновление больше не производится.

  • Переделан механизм обновления ядра.

    Теперь если ядру требуется обновление, работа сайта блокируется с выводом сообщения "The engine needs to be upgraded!". Для выполнения обновления необходимо обратиться к странице http://site.ru/upgrade.php, на которой пройти авторизацию от имени пользователя, имеющего права администратора (только группа администраторы). После успешной авторизации будет выдано сообщение "Upgrading success!", после чего сайт перейдет в нормальный режим работы. Автоматическое обновление больше не производится.

  • исправлена проверка номера версии ядра.

  • Добавлена генерация заголовков (содержимого тэга <title>) для генерируемых страниц некоторых модулей (tags, news, user)

  • теперь мета-тэги, заданные в настройках страницы вставляются ПЕРЕД мета-тэгами, созданными модулями.

  • класс page теперь содержит дополнительное не сохраняемое поле real_uri, которое хранит реальный inner_uri обрабатываемой страницы. Актуально только для ghost-страниц, после задания страницы-образца. До этого момента значение поля равно значению поля inner_uri класса page.

  • добавилась глобальная константа SYS_ENABLE_CACHE, которая позволяет включать/отключать кэширование

    ВНИМАНИЕ!
    Для корректной работы кэширования должен быть создан и доступен для записи каталог, заданный константой DIR_CACHE (по умолчанию она содержит путь к папке 'cache' в папке временных файлов сайта).

  • Суб-контент теперь кэшируется в памяти (серьезно уменьшено количество запросов к БД)

Ресурсы

  • добавлен плагин timepicker для jQuery

База данных

  • добавлены поля archived и has_children и удалены поля hits, java_scripts и short_url, как не используемые

  • исправлен класс database, для корректной работы с PHP 5.2

  • класс БД (database) приобрел пару методов, позволяющих преобразовывать UNIX timestamp в формат SQL datetime и обратно

Базовый класс модулей

  • добавлен метод для обновления текущей страницы refresh()

  • исправлена ошибка из-за которой обработчики событий не могли использовать собственные шаблоны.

  • модули теперь имеют возможность задавать страницы-образцы. Это необходимо для генерируемых страниц. Для этого экшен (!) модуля должен вызвать метод set_sample_page($map_id). Если метод вернет TRUE, значит страница-образец нормально установлена. Если FALSE - значит шаблонная страница для данного пользователя не доступна. В этом случае экшен должен прекратить работу и вернуть управление ядру.

    ВНИМАНИЕ!!!

    • Данный метод должен вызываться ТОЛЬКО из экшенов.

    • Данный метод в случае успеха подменяет объект module_base::page, соответственно он (метод) должен быть вызван до начала манипуляций с объектом module_base::page.

  • добавились 7 дополнительных функций для работы с кэшем.

Библиотека view (Smarty)

  • переделана работа с шаблонами в памяти, т.к. Smarty использует слишком кривой механизм кэширования из-за чего имена файлов кэша превышают допустимую длину для имен файлов, что приводило к фолтам.

  • решена проблема, из-за которой не удавалось избежать постоянной принудительной компиляции шаблонов. Но кэширование все так же не доступно :(

  • при обращении к сайту с локали, смарти автоматически включает контроль изменения шаблонов, т.е. перекомпиляция будет происходить автоматически если шаблон изменился. На реальном сайте эта опция автоматически отключится.

  • Добавлена константа CLEAR_SMARTY_TPLS_DELAY (по умолчанию = 86400 секунд), задающая максимальное время жизни скомпилированного шаблона. На реальном сайте рекомендуется установить значение этой константы в ноль, что отключит функцию автоматической перекомпиляции шаблонов (для максимальной производительности). Эта константа НЕ влияет на функцию админки "Удалить скомпилированные шаблоны" - данная команда удаляет все шаблоны без исключений.

  • теперь очистка скомпилированных шаблонов производится средствами самого смарти.

Библиотека cache

  • Создана новая библиотека, реализующая механизм кэширования

Smarty-теги

  • хлебные крошки теперь не выводят лишний пункт для корневой страницы

  • smarty-тег генерации хлебных крошек теперь так же умеет корректно строить пути для ghost-страниц (страниц, генерируемых модулями, т.е. таких страниц, которые не имеют соответствующей им записи в таблице sitemap).

  • page_selector удален, т.к. он полностью замене модулем navigator

  • удален модификатор int_divider, как неиспользуемый.

  • добавился смарти-тэг {cache_stat ...}, позволяющий отображать статистику кэширования.

  • paginator: добавился новый параметр short_first_link (по-умолчанию true). Если установлен в true, то ссылка на первую страницу не будет иметь номера страницы. Это позволяет избавиться от дубликатов страниц.

Библиотека permissions

  • Добавлен метод получения данных пользователя по его адресу электронной почты: user_get_by_email($email, $with_permissions = FALSE)

  • исправлена ошибка: при создании нового пользователя библиотека в поле даты регистрации вместо UNIX timestamp пыталась записать дату в формате гггг-мм-дд, в результате чего сохранялся только номер года.

  • добавлен метод get_page_info_by_alias()

Библиотека sitemap

  • метод get_acceptable_pages теперь автоматически сортирует результаты.

  • метод get_acceptable_pages обзавелся дополнительным параметром - with_parents=FALSE. Если его установить в TRUE, то изменится формат результата - будет возвращен ассоциативный массив, ключами которого являются идентификаторы страниц, а значениями - идентификаторы их родителей.
  • исправлена ошибка из-за которой не работало сохранение контента

  • исправлена ошибка - не работало удаление страниц

  • Исправлена серьезная ошибка, из-за которой, при создании новой страницы, не устанавливалось поле has_children для родительских записей, которые до создания страницы не имели дочерних.

  • Самые "тяжелые" запросы к БД теперь кэшируются

Библиотека auth

  • Добавлен метод get_avatar(), возвращающий имя аватара пользователя.

  • добавлен метод, возвращающий все данные текущего пользователя, сохраненные в объекте Auth.

  • добавлен метод для преобразования локального времени пользователя в время на сервере

Библиотека broadcast

  • добавлен метод, позволяющий получить уникальный ключ подписки по данным подписки

  • метод, возвращающий массив подписок указанного канала теперь имеет второй параметр, позволяющий не включать в результирующий массив неактивные подписки

Админка

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

  • Решена проблема из-за которой при установке модуля выдавалась ошибка записи в БД.

  • Небольшое и практически бесполезное исправление - закрыта дырка SQL-инъекции в админке в редакторе элиасов

  • Сделан отдельный редактор суб-контента. Изменен формат таблицы #SYS__sub_content в связи с новым алгоритмом работы.

  • добавлен функционал для поддержки архивирования страниц

  • исправлена ошибка - потеря данных суб-контента при редактировании одновременно нескольких страниц.

  • в редакторе страниц из выпадающего списка исключены шаблоны, начинающиеся с символа подчеркивания. Соответственно переименованы шаблоны в теме tanita

  • исправлена ошибка из-за которой новые пользователи создавались в админке с неверными паролями

  • исправлена надпись на кнопке в редакторе прав доступа

  • добавлены надписи "Ничего не найдено" в некоторых таблицах

  • удалена отладочная информация из редакторов суб-контента

  • в админке (список страниц) кнопка просмотра страницы имела неверный URL. Так же теперь все URLы имеют завершающий слэш, а ссылка на домашнюю страницу всегда ведет на корень сайта

  • исправлена ошибка: в редакторе суб-контента список имен блоков был всегда пустым

  • Управление порядком страниц вынесено в отдельное окно.

  • исправлена ошибка - при редактировании страницы (смене родителя) не корректировалось поле has_children родительских страниц.

  • в настройках сайта добавлены кнопки полной очистки кэша и удаления скомпилированных шаблонов смарти.

  • теперь информационные сообщения (за исключением сообщений об ошибках) автоматически убираются с экрана по истечении 3-х секунд. Мелочь, но офигенно приятная ;)

Модуль navigator

  • Добавлен новый модуль navigator, позволяющий размещать на страницах кнопку вызова окна проводника и поддерживающий гибкие возможности по выбору пунктов.

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

  • проводник админки адаптирован для работы с навигатором

Модуль mail_form

  • добавлены новые параметры в смарти-тег {mail_form}: mode, text и extra

  • добавлена блокировка от левых попыток отправки сообщений

Модуль menu

  • выкинут старый код

  • Теперь в качестве корня по умолчанию используется текущая страница

  • добавлена парочка шаблонов

  • исправлена ошибка из-за которой меню отображало даже те пункты, к которым у пользователя нет доступа

  • исправлена ошибка: если переданные в параметрах элиасы не найдены, то отображалось текущее суб-меню

  • В смарти-тэг генерации меню добавлен параметр id_prefix. Если он задан, то модуль генерирует для каждого пункта меню идентификаторы:
    id="<id_prefix>_li_<map_id>" для <LI>
    id="<id_prefix>_a_<map_id>" для <a>.
    Это позволяет дизайнерам по разному оформлять различные пункты меню (например, добавлять к ним иконки).

  • удалена обработка параметра sub_menu, как не используемого

Модуль broadcast

  • Добавлен модуль broadcast, который полностью заменил собой модуль RSS. Модуль RSS удален за ненадобностью.

  • ведет статистику запросов к RSS

  • показывает списки е-мэйл-подписчиков на каналы. Имеет редактор подписок. Умеет делать экспорт и импорт.

  • Добавлена возможность скрывать в списке каналов (админка) каналы, созданные модулями.

  • Добавлен шаблон емэйла

  • добавлен обработчик события добавления записи в канал. Он выполняет рассылку по электропочте.

  • исправлена ошибка - не выводились сообщения об успешном добавлении сообщения

  • добавлена возможность полной очистки списка подписчиков канала новостей

  • исправлена ошибка в генераторе RSS-ссылок

  • у смарти-тэга {broadcast action="rss_link" ...} изменились параметры:

    • удалены параметры image, title и extra, как неиспользуемые

    • параметр text теперь по умолчанию использует HTML-код вставки картинки rss.png

    • добавлены параметры a_extra и div_extra, задающие дополнительные атрибуты для тэгов <a> и <div> соответственно

Модуль user

  • Создан модуль, позволяющий пользователям авторизоваться на сайте, регистрироваться, восстанавливать пароли и редактировать профиль.

  • теперь если пользователь авторизован, то для него будут заблокированы (Access Denied) страницы регистрации, активации и восстановления пароля.

Модуль TinyMCE

  • исправлена ошибка, из-за которой в менеджере файлов не отображались файлы

  • теперь пути к файлам относительные

Модуль управления блоками глобального контента

  • добавлен запрос подтверждения перед удалением секции

Модуль tags

  • немного изменено поведение. Теперь облако тэгов по умолчанию не оборачивается в div и этот div по-умолчанию не имеет класса.

  • тэги {tags action='index'...} и {tags action='list'...} объединены в один универсальный - {tags action='index'...}

  • В тэг {tags [action='index'] ...} добавлен параметр text="", задающий текст, выводимый перед списком тэгов. Изменено поведение тэга: теперь если тэгов у страницы нет, то не выводится ничего (раньше выводилась надпись "-- нет --").

  • теперь разделителем для облака тэгов по-умолчанию служит обычный одиночный пробел

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

  • теперь весь генерируемый контент кэшируется.

  • В админке добавлена страница настроек модуля, где регулируются продолжительности кэширования (по-умолчанию - 3600 секунд).

  • Теперь модуль тегов, при генерации облака, присваивает ссылкам классы наоборот, т.е. 1 - наименьший, 5 - наивысший. Корректируйте свои стили для правильного отображения.

Модуль news (новости)

  • Добавлен новый модуль, поддерживающий публикацию новостей.

  • при использовании модуля новостей в секцию <head> автоматически добавляется meta-ссылка на связанные rss-ленты

  • В разделы новостей добавлена возможность управления сортировкой (по датам возрастающая, убывающая и по заголовкам новостей)

  • Добавлена возможность задавать новостям заголовки

  • добавлена возможность управления сортировкой из смарти-тэга

  • Из редактора новостей удалена проверка на непустой контент - теперь только анонс и дата создания являются обязательными.

  • исправлена ошибка из-за которой время создания новости не корректировалось в соответствии с часовым поясом пользователя.

  • в редактор раздела добавлено полное описание всех переменных, доступных в шаблонах

  • Исправлена ссылка в списках новостей (админка)

  • Исправлена ошибка из-за которой в списке разделов (админка) не всегда отображались все созданные разделы

  • теперь, если у новости есть заголовок, то именно он является заголовком страницы. Иначе используется содержимое анонса (с вырезанными тэгами).

  • теперь ссылки на страницы списка используют элиасы

Теги: cms, изменения

Просто совет
Два месяца бесплатного использования VPS-сервера с 20Гб SSD на борту. Интересует?
Тогда жми сюда.
Твиттер-лента
Follow TanitaCMS in Twitter