В дополнение ко всему имеющемуся в блогах и документации. Буду записывать чтобы не потерять, а может еще кому пригодится.
[spoiler]
Регистрация обработчиков в своих модулях
Работа с датами тип datetime
Свои обработчики в своих модулях
Кеширование
[spoiler]
Регистрация обработчиков в своих модулях
RegisterModuleDependences //забываем про него, вместо него используем новый метод для версии 1 |
//версия 1
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->registerEventHandlerCompatible("module","event","module2","class","function"); |
//версия 2 для событий в DataManager например
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->registerEventHandler("module","event","module2","class","function"); |
Работа с датами тип datetime
//тип datetime 'DATE_START' => array( 'data_type' => 'datetime', 'required' => true, ), |
//время из формата текущего сайта, в случае отсуствия время подставляет 00:00:00
\Bitrix\Main\Type\DateTime::createFromUserTime("16.08.2014 15:30:10");
//время из формата текущего сайта
$date = new \Bitrix\Main\Type\DateTime("16.08.2014 15:30:10");
$arFields = Array(
'DATE_START' => \Bitrix\Main\Type\DateTime::createFromUserTime("16.08.2014 15:30:10");
); |
//фильтр по datetime //для текущей даты $filter = array( "<DATE_START" => new \Bitrix\Main\Type\DateTime(), ">DATE_END" => new \Bitrix\Main\Type\DateTime(), ); |
//создание объекта по timestamp
\Bitrix\Main\Type\DateTime::createFromTimestamp(strtotime("+5 days")); |
/*$date = Bitrix\Main\Type\DateTime Object
( [value:protected] => DateTime Object
(
[date] => 2014-09-02 12:00:00
[timezone_type] => 3
[timezone] => Europe/Minsk
)
);*/
echo $date->toString(new \Bitrix\Main\Context\Culture(array("FORMAT_DATETIME" => "HH:MI"))); // на выходе 12:00 |
Свои обработчики в своих модулях
$arMacros["PRODUCTS"] = ""; $basketId = "10"; |
$event = new \Bitrix\Main\Event("mymodule", "OnMacrosProductCreate",array($basketId));
$event->send();
if ($event->getResults()){
foreach($event->getResults() as $evenResult){
if($evenResult->getResultType() == \Bitrix\Main\EventResult::SUCCESS){
$arMacros["PRODUCTS"] = $evenResult->getParameters();
}
}
} |
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("mymodule", "OnMacrosProductCreate", "OnMacrosProductCreate");
function OnMacrosProductCreate(\Bitrix\Main\Event $event){
$arParam = $event->getParameters();
$basketId = $arParam[0];
$result = new \Bitrix\Main\EventResult(1,$basketId);
return $result;
} |
Кеширование
public static function getService(){
$obCache = \Bitrix\Main\Data\Cache::createInstance();
$cache_time = "86400";
$cache_id = "service.".self::$profileId;
if( $obCache->initCache($cache_time,$cache_id,"/mlife/comments/service/") )
{
$vars = $obCache->GetVars();
}elseif( $obCache->startDataCache()){
$res = \Mlife\Comments\ServicesTable::getById(self::$profileId);
if($vars = $res->Fetch()){
$obCache->endDataCache($vars);
}else{
$obCache->abortDataCache();
}
}
return $vars;
}
|
$obCache = \Bitrix\Main\Data\Cache::createInstance(); $cache_id = "service.".$primary["ID"]; $obCache->clean($cache_id, "/mlife/comments/service/"); |
