В дополнение ко всему имеющемуся в блогах и документации. Буду записывать чтобы не потерять, а может еще кому пригодится.
[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/");
|