<? \Bitrix\Main\EventManager::getInstance()->addEventHandler("logictim.balls", "BeforeGetBonusItem", "LogictimCustomDateBonus"); function LogictimCustomDateBonus(\Bitrix\Main\Event $event) { global $USER; $arBonus = $event->getParameters(); //Если есть бонусы на категорию if($arBonus["IBLOCK_SECTION"]["PROPERTY_BONUS"] > 0 && $arBonus["IBLOCK_SECTION"]["PROPERTY_BONUS_NO"] != 1) { $arCategoryTree = GetCategoriesTreeCustom('UF_LOGICTIM_BONUS'); $dateBegin = $arCategoryTree["CATEGORY_LIST"][$arBonus["IBLOCK_SECTION"]["ID"]]["UF_BONUS_BEGIN"]; $dateEnd = $arCategoryTree["CATEGORY_LIST"][$arBonus["IBLOCK_SECTION"]["ID"]]["UF_BONUS_END"]; //Если дата начла не наступило, то запрещаем начисление if($dateBegin != '') { $dateBeginUnix = MakeTimeStamp($dateBegin, CSite::GetDateFormat()); $nowTime = getmicrotime(); if($dateBeginUnix > $nowTime) $arBonus["IBLOCK_SECTION"]["PROPERTY_BONUS_NO"] = 1; } //Если дата окончания наступила, то запрещаем начисление if($dateEnd != '') { $dateEndUnix = MakeTimeStamp($dateEnd, CSite::GetDateFormat()); $nowTime = getmicrotime(); if($nowTime > $dateEndUnix) $arBonus["IBLOCK_SECTION"]["PROPERTY_BONUS_NO"] = 1; } } //echo '<pre>'; print_r($arBonus); echo '</pre>'; $result = new Bitrix\Main\EventResult($event->getEventType(), $arBonus); return $result; } //Функция для получения дерева категорий с кастомными свойствами дат function GetCategoriesTreeCustom($bonusCatProp = 'UF_LOGICTIM_BONUS') { CModule::IncludeModule('iblock'); CModule::IncludeModule("catalog"); //take id of catalogs, and offers $dbCatalogs = CIBlock::GetList( Array(), Array( 'ACTIVE'=>'Y', ), false ); //take only torgoviy catalog while($arCatalog = $dbCatalogs->Fetch()) { $catDb = CCatalog::GetByID($arCatalog["ID"]); if($catDb) { $catalogsId[] = $catDb["ID"]; } } $category_tree = array(); $category_list = array(); $arrCat = Array(); foreach($catalogsId as $iblock_id): $res = CIBlockSection::GetList(Array(),Array('IBLOCK_ID'=>$iblock_id,'ACTIVE'=>'Y'),false,Array('ID','NAME','CODE','DEPTH_LEVEL','IBLOCK_SECTION_ID',$bonusCatProp,'UF_LOGICTIM_BONUS_NO', 'UF_LOGICTIM_BONUS_NP', "UF_BONUS_BEGIN","UF_BONUS_END")); while ($arr = $res->fetch()) { $arrCat[$arr['ID']] = $arr; } endforeach; $category_list = $arrCat; foreach($arrCat as $id=>&$node): if($node['IBLOCK_SECTION_ID'] == '') { // root node $category_tree[$id] = &$node; } else { // sub node if(!isset($arrCat[$node['IBLOCK_SECTION_ID']]['CHILD'])) { $arrCat[$node['IBLOCK_SECTION_ID']]['CHILD'] = array(); } $node['TEST'] = $node[$bonusCatProp]; if($node[$bonusCatProp] == '') { $node['UF_BONUS_BEGIN'] = $arrCat[$node['IBLOCK_SECTION_ID']]["UF_BONUS_BEGIN"]; $category_list[$id]['UF_BONUS_BEGIN'] = $arrCat[$node['IBLOCK_SECTION_ID']]["UF_BONUS_BEGIN"]; } if($node[$bonusCatProp] == '') { $node['UF_BONUS_END'] = $arrCat[$node['IBLOCK_SECTION_ID']]["UF_BONUS_END"]; $category_list[$id]['UF_BONUS_END'] = $arrCat[$node['IBLOCK_SECTION_ID']]["UF_BONUS_END"]; } if($node[$bonusCatProp] == '') { $node[$bonusCatProp] = $arrCat[$node['IBLOCK_SECTION_ID']][$bonusCatProp]; $category_list[$id][$bonusCatProp] = $arrCat[$node['IBLOCK_SECTION_ID']][$bonusCatProp]; } if($node['UF_LOGICTIM_BONUS_NO'] == '' || $node['UF_LOGICTIM_BONUS_NO'] == 0) { $node['UF_LOGICTIM_BONUS_NO'] = $arrCat[$node['IBLOCK_SECTION_ID']]["UF_LOGICTIM_BONUS_NO"]; $category_list[$id]['UF_LOGICTIM_BONUS_NO'] = $arrCat[$node['IBLOCK_SECTION_ID']]["UF_LOGICTIM_BONUS_NO"]; } if($node['UF_LOGICTIM_BONUS_NP'] == '' || $node['UF_LOGICTIM_BONUS_NP'] == 0) { $node['UF_LOGICTIM_BONUS_NP'] = $arrCat[$node['IBLOCK_SECTION_ID']]["UF_LOGICTIM_BONUS_NP"]; $category_list[$id]['UF_LOGICTIM_BONUS_NP'] = $arrCat[$node['IBLOCK_SECTION_ID']]["UF_LOGICTIM_BONUS_NP"]; } $arrCat[$node['IBLOCK_SECTION_ID']]['CHILD'][$id] = &$node; } endforeach; $arCategoriesTree = array("CATEGORY_TREE" => $category_tree, "CATEGORY_LIST" => $category_list); return $arCategoriesTree; } ?>
//Доработки для модуля бонусной систему logictim.balls include($_SERVER["DOCUMENT_ROOT"].'/bitrix/php_interface/include/logictim_balls/custom.php');
Logictim - официальный сертифицированный партнер 1С-Битрикс, AMO CRM, Rusonyx
Вы можете связаться с нами любым из перечисленных способов:
Телефон: +7 (843) 212-62-17
Email: info@logictim.ru
Адрес: г. Казань, ул. Дубравная 38, офис 4
Режим работы: пн-пт с 10:00 до 18:00
Наши несколько основных принципов:
- Открытый и честный подход
- Стоимость пропорциональна объему работ
- Качественное исполнение
Наш менеджер свяжется с Вами в ближайшее время!