RBAC - управление правами на основе ролей

В новой версии появился новый модуль Rbac — модуль управления правами на основе ролей и разрешений (RBAC).
Суть его сводится к тому, что теперь в админке можно создавать различные роли, давать ролям необходимые права (разрешения) и назначать эти роли пользователям. Роли могут наследовать от других ролей. Таким образом можно очень гибко настраивать систему управления правами.



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

Центральный крон

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



В системный cron на сервере необходимо добавить скрипт — /application/utilities/cron/main.php с периодом 1 раз в 2 минуты.
Далее в специальном интерфейсе в админке можно управлять списком задач. По умолчанию созданы две задачи — очистка старого кеша и рассылка отложенных емайл сообщений. Там же можно в ручном режиме добавить новую задачу, в качестве вызываемого метода указывается полный синтаксис вызова метода модуля.

Центральный крон может работать в двух режимах — последовательное выполнение задач и параллельное (fork). Параллельный режим пока работает в тестовом режиме, т.к. до конца не протестирован. Выставляется режим в конфиге: $config['module']['cron']['use_fork'] = false;

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

public function Activate() {
    $this->Cron_CreateTask('Тестовая задача','PluginArticle_Main_RunTest',6,$this);
    return true;
}

public function Deactivate() {
    $this->Cron_RemoveTasksByPlugin($this);
    return true;
}

Новый функционал фреймворка - поведения (behavior)

В новой версии LS 2.0 появится функционал поведений (behaviors), который очень поход на подобный в Yii.
Суть сводится к тому, что теперь определенному типу объектов (пользователи, топики, блоги и т.п.) или конкретному объекту можно назначить через поведения определенный новый функционал.
Добавить новое поведение в объект достаточно просто, можно у объекта определить свойство $aBehaviors. Например:
	protected $aBehaviors=array(
		'category'=>'ModuleCategory_BehaviorCategory',
		'property'=>array(
			'class'=>'ModuleProperty_BehaviorPropertyEntity',
	        	'target_type'=>'article'
		)
	);

В этом примере добавляются два поведения — категории и дополнительные поля. В качестве ключа используется название поведение (далее по этому ключу можно обращаться к поведению), а в качестве значения идут параметры. Параметры идут произвольным массивом имя/значение, 'class' — это служебный параметр, означающий класс поведения. Если у повеления нет параметром, то его можно записать в короткой форме (смотри 'category'). Альтернативным (скорее дополнительным) способом добавления поведения является прямой вызов метода AttachBehavior, например:
$oTopic->AttachBehavior('property','ModuleProperty_BehaviorPropertyEntity');

// далее можно убрать поведение
$oTopic->DetachBehavior('property');


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

Плагин "TrickyTitle" 2.0 - не менее хитрые ключевые слова

Привет друзья!

С неизменным удовольствием представляю вам новую версию модуля.


Что нового
  1. Новая конфигурационная опция «include_personal_blogs». Позволяет исключить названия персональных блогов (аля «Блог им. Вася») из генерируемых списков блогов. И по умолчанию делает это :).
  2. Конфигурация «по умолчанию» расширена поддержкой разделов коллективных и персональных блогов. Речь о конфигурации для акций personal_blog(раньше не было вообще) и blog(существенно расширена сравнительно с версией 1.0).
  3. Формальная поддержка LiveStreet 0.5.1. Мне известен случай успешного применения плагина для этой версии LS, поэтому в requires плагина теперь стоит 0.5.1(это и есть, собственно, формальная поддержка :) ) Однако, стандартная конфигурация не покрывает особенности этой версии. Что-то работает сразу, что-то придётся до-конфигурировать.
  4. Автоматическая генерация содержимого мета-тега keywords. Основная особенность этой версии, о ней подробно ниже.

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