Переезжать ли Livestreet-у на другой фреймворк?
Какой фреймворк выбрать, можно решать отдельно. Результаты голосования не обязательно предопределят судьбу livestreet.


/**
* Бекенд xcache
*/
class ModuleCache_EntityBackendXcache extends ModuleCache_EntityBackend {
/**
* Проверяет доступность использования текущего бекенда
*
* @return mixed
*/
public function IsAvailable() {
if (extension_loaded('xcache')) {
return true;
}
return 'The xcache extension must be loaded for using this backend!';
}
/**
* Проверяет доступность использование мульти-get запросов к кешу (указывать сразу несколько ключей)
*
* @return mixed
*/
public function IsAllowMultiGet() {
return true;
}
/**
* Инициализация бекенда
*
* @param array $aParams
*
* @return mixed
*/
public function Init($aParams=array()) {
require_once(LS_DKCACHE_PATH.'Cache/Backend/TagEmuWrapper.php');
require_once(LS_DKCACHE_PATH.'Zend/Cache/Backend/Xcache.php');
$aConfig=Config::Get('xcache');
$oCahe = new Zend_Cache_Backend_Xcache(is_array($aConfig) ? $aConfig : array());
if (isset($aParams['stats_callback'])) {
$this->oCacheBackend=new Dklab_Cache_Backend_TagEmuWrapper(new Dklab_Cache_Backend_Profiler($oCahe,$aParams['stats_callback']));
} else {
$this->oCacheBackend=new Dklab_Cache_Backend_TagEmuWrapper($oCahe);
}
}
/**
* Получить значение из кеша
*
* @param string $sName Имя ключа
* @return mixed|bool
*/
public function Get($sName) {
return $this->oCacheBackend->load($sName);
}
/**
* Записать значение в кеш
*
* @param mixed $mData Данные для хранения в кеше
* @param string $sName Имя ключа
* @param array $aTags Список тегов, для возможности удалять сразу несколько кешей по тегу
* @param int|bool $iTimeLife Время жизни кеша в секундах
* @return bool
*/
public function Set($mData,$sName,$aTags=array(),$iTimeLife=false) {
return $this->oCacheBackend->save($mData,$sName,$aTags,$iTimeLife);
}
/**
* Удаляет значение из кеша по ключу(имени)
*
* @param string $sName Имя ключа
* @return bool
*/
public function Delete($sName) {
return $this->oCacheBackend->remove($sName);
}
/**
* Чистит кеши
*
* @param string $cMode Режим очистки кеша
* @param array $aTags Список тегов, актуально для режима Zend_Cache::CLEANING_MODE_MATCHING_TAG
* @return bool
*/
public function Clean($cMode=Zend_Cache::CLEANING_MODE_ALL,$aTags=array()) {
return $this->oCacheBackend->clean($cMode,$aTags);
}
}

/classes/actions/[action]/Event[Name].class.php, где [action] — это название экшена, которому принадлежит евент, [Name] — название внешнего обработчика евента.ActionBlog.class.php:
<?php
class ActionBlog extends Action {
public $oUserCurrent=null;
public function Init() {
$this->oUserCurrent=$this->User_GetUserCurrent();
$this->SetDefaultEvent('index');
}
/**
* Регистрируем евенты
*
*/
protected function RegisterEvent() {
/**
* Регистрируем внешние обработчики евентов
*/
$this->RegisterEventExternal('Topic','ActionBlog_EventTopic');
$this->AddEvent('index','EventIndex');
$this->AddEventPreg('/^topic$/i','/^(\d+)\.html$/i','/^$/i','Topic::EventShowTopic');
$this->AddEventPreg('/^topic$/i','/^list$/i','/^$/i','Topic::EventList');
}
protected function EventIndex() {
/**
* Устанавливаем шаблон для вывода
*/
$this->SetTemplateAction('index');
}
}
?>