β Обращаем ваше внимание, система находится на этапе бета-тестирования. Что это значит?

Сентябрьский выпуск системы – Bagira.CMS v1.1.6 beta

Выпустить эту версию мы планировали в конце лета, но не успели, на дворе уже первое сентября! Неожиданно выплыло очень много багов при работе с ORM-подсистемой. Пришлось в срочном порядке все исправлять. Основное нововведение – подсистема кеширования. Так же многих порадует, что мы исправили косяки с отображением админки в Firefox.

1 сентября 2011, Сидоров Андрей

О главном

В Багире появилась полноценная система кеширования. Сейчас поддерживается два способа кеширования: файловый кеш и memcache. Включить кеширование на сайте можно в файле «./config-cache.php». В ближайшее время обновится документация, в ней будет подробно рассказано, как настраивать кеш. Но разобраться можно и сейчас, общая логика работы стандартна.

В системе поддерживается два подхода к кешированию:

  • Временный кеш. Все как обычно, устанавливается время жизни объектов кеша в секундах (константа CACHE_DEFAULT_TTL  > 0). Объект удаляется по истечению этого времени, потом создается снова.
  • Долгий кеш. Объекты в кеше используются до тех пор, пока они не будут обновлены через адмику или через сайт (константа CACHE_DEFAULT_TTL  =  0). Так как практически невозможно реализовать с отслеживание взаимосвязей объектов, кеш очищается полностью. Т.е. если на сайте 1000 страниц,  очистится кеш для 1000 страниц. После чего будет всплеск нагрузки, т.к. все запрашиваемые страницы будут генерироваться заново. Естественно на больших сайтах это использовать нельзя. Этот вид кеша идеален для сайтов визиток с небольшим количеством страниц и сравнительно редким обновлением контента. Сделал и забыл, а пользовать фактически работает со статическими страницами.

На данный момент весь функционал системы поддерживает работу с кешем. Исключением является макрос %structure.filter()%. Как с ним быть, пока не придумали.

 

Новый макрос %core.rus_weekday()%

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

%core.rus_weekday(2011-09-07 21:06:48, 1)%                    Вернет «Чт»

%core.rus_weekday(2011-09-07 21:06:48, 2)%                    Вернет «Четверг»

%core.rus_weekday(2011-09-07 21:06:48, 3)%                    Вернет «четверг»

 

 

Сортировка выборки объектов по нескольким полям сразу

Теперь метод orderBy() класса ormSelect поддерживает сортировку по нескольким полям. Используется SQL-синтаксис. В качестве примера выведем список новостей, отсортированный по дате публикации в обратном порядке и по названию в прямом порядке.

$sel = new ormSelect('news');
$sel->orderBy('publ_date desc, name asc');
while($obj = $sel->getObject())
        echo $obj->name;

 

Выбор объектов различных классов

При работе с классом ormSelect появилась возможность явно указывать список классов данных, объекты которых необходимо получить в выборке. Необходимо просто перечислить названия классов данных, которые вы хотите использовать, разделив их вертикальной чертой «|».

Пример использования. Вывод всех новостей и товаров:

$sel = new ormSelect('news|goods');
while($obj = $sel->getObject())
        echo $obj->name;

 

Аналогичная возможность появилась в макросе %structure.objList()%. Перечисление нужных нам классов можно выполнять в любых селекторах.

Например, нам нужно получить список новостных лент и фотоальбомов, находящихся в разделе с ID равным 543:

%structure.objList(543 gallery|news_feed)%

 

Полный список изменений

Добавлено:

  • Реализована подсистема кеширования страниц. На данный момент реализовано два способа кеширования: файловый кеш и memcache.  Настройки кеша лежат в файле «./config-cache.php».
  • Добавлен макрос %core.rus_weekday()%
  • В классе ormSelect в метод orderBy() добавлена возможность сортировать сразу по нескольким полям.
  • При работе с классом ormSelect появилась возможность явно указывать список классов данных, объекты которых необходимо получить в выборке. Аналогичная возможность появилась у макроса %structure.objList()%.
  • Обновлена версия редактора CKEditor до 3.6.1.

 

Исправлено:

  • Макрос %core.rus_month()% переименован в %core.rus_mounth()% )))
  • Файл настроек «./configdb.php» переименован в «./config-db.php».
  • Корректно обработана ситуация с физическим отсутствием файла на диске при работе с методом ui::loadFiles().
  • Теперь в качестве справочников для полей типа «Справочник – Выпадающий список» и «Справочник – Множественный выбор» можно использовать страницы наследники класса данных «section».
  • Устранена ошибка версии 1.1.5, в которой при сохранении страниц удалялись все параграфы и таблицы из контента. В библиотеку Jevix добавлены правила для обработки тегов table, th, tr, td, p, div, span.
  • Исправлена ошибка в классе ormSelect с определением прав доступа к странице при формировании выборки объектов.
  • Исправлена ошибка в методе page::getFields(). Метод в определенных ситуациях не распознавал наличием макроса %structure.getProperty()% в шаблонах.
  • Исправлено некорректное отображение вкладок в панели администрирования в Firefox.
  • Теперь мультиформы поддерживают и корректно отображают практически все типы ORM-полей. Исключением являются поля «Подчиненный справочник» и «Список файлов».
  • При нативном добавлении справочника обработана ситуация, когда добавляется справочник с занятым именем.
 

Комментарии (6)

  • Рьудуч 02.09.2011 22:13 Ответить #
    Огромное спасибо Вам за новый релиз.Хотя мне система и показалась немного тяжела для понимания — буду стараться полностью в ней разобраться.
    • Сидоров Андрей 07.09.2011 11:04 Ответить #
      Спасибо! Будем стараться и дальше.
  • BeZaAa 07.09.2011 05:20 Ответить #
    Вообще хотелось бы уже какой-то полноценный релиз, с инсталом, чтобы было от чего отталкиваться
    • Сидоров Андрей 07.09.2011 11:07 Ответить #
      Реализуем автоматическую установку обязательно. Просто на данный момент нам кажется более важным уделить внимание другим вещам.
  • BeZrespeKTA 07.09.2011 21:06 Ответить #
    я не именно установку имел ввиду, я имел ввиду уже какой-то конечный готовый релиз.
    • Сидоров Андрей 08.09.2011 08:16 Ответить #
      А, понятно. Мы конечно и сейчас можем убрать буковку b, но не думаю, что это изменит ситуацию. Нами запланировано еще достаточно большое количество функционала, да и не хватает рук, чтобы как следует протестировать то, что есть на данный момент.Учитывая нашу загруженность по основной работе, первая стабильная версия выйдет не раньше нового года. Но мы и сами очень хотим выпустить что-то логически завершенное.

captcha