Релиз LiveStreet 0.4.1

Вышел релиз LiveStreet 0.4.1, который содержит в основном фиксы багов относительно версии 0.4. Но есть и существенные изменения. Скачать здесь.

Список основных изменений:

  • Исправленный и доработанный плагин «Page», теперь страницы можно сортировать и выводить в главное меню
  • Новый шаблон «developer», теперь он более простой и легкий. Говорим спасибо deniart'у :)
  • Новая форма наименования классов в движке, подробнее
  • Поддержка наследования классов, подробнее
  • Шаблоны могут иметь свой собственный конфиг и языковые файлы (каталог шаблон/settings/[config|language])
  • Отказ от использования custom классов, теперь они не поддерживаются
  • Английская локализация
  • Фикс багов

Обновление с 0.4

  1. Обновить структуру БД, выполнив SQL из файла /install/convert_0.4_to_0.4.1.sql
  2. Удалить старые файлы и залить новые, либо вручную внести все изменения. Основную часть изменений составляет шаблон «developer», поэтому не пугайтесь большому листингу
  3. Обязательно сбросить кеш. Файловый — удалить содержимое каталога с кешем (кроме файла .htaccess), если стоит memcache, то перезапустить его

Обновление плагинов от 0.4

Плагины требуют адаптации (наименование классов) к версии 0.4.1, более подробно здесь.

Новые возможности по переопределению/наследованию классов LiveStreet

В LS появилась новая возможность для разработчиков плагинов — наследование классов. Идея была высказана еще avadim'ом здесь.
Эта возможность позволит удобно переопределять различные методы одного класса (модуля, экшена, сущности, маппера) разными плагинами без конфликтов.
Главное отличие от делегирование — не происходит блокировки переопределения класса для других плагинов. Также есть возможность переопределения одного метода разными плагинами, но здесь разработчикам нужно быть очень осторожными и делать так, чтоб свести вероятность конфликта к минимуму.

Как использовать.
Например, нужно переопределить метод получения пути до аватара у сущности пользователя в плагине Test. В плагине необходимо объявить те классы, которые будут наследоваться. Объявление происходит в свойстве $aInherits:
<?php
class PluginTest extends Plugin {
    
    protected $aInherits=array(
       'entity'  =>array('ModuleUser_EntityUser'=>'_ModuleSide_EntityUser')
    );

    public function Activate() {        
        return true;
    }
    
    public function Init() {        
    }
}
?>

Читать дальше →