function OnProductCatalogHandler($ID, $arFields) { Bitrix\Main\Loader::includeModule('iblock'); Bitrix\Main\Loader::includeModule('catalog'); define('IBLOCK_ID_PRODUCTS', 2); define('IBLOCK_ID_OFFERS', 3); $query = new \Bitrix\Main\Entity\Query(Bitrix\Iblock\ElementTable::getEntity()); $query->setSelect(array("ID", "IBLOCK_ID"))->setFilter(array("ID" => $ID))->setOrder(array("ID" => "ASC")); $resElement = $query->exec()->fetch(); if ($resElement['IBLOCK_ID'] == IBLOCK_ID_PRODUCTS) { CIBlockElement::SetPropertyValuesEx($ID, $resElement['IBLOCK_ID'], array("AVAILABLE_QUANTITY_CATALOG" => $arFields['QUANTITY'])); } elseif ($resElement['IBLOCK_ID'] == IBLOCK_ID_OFFERS) { //1 $rsElementOffer = CIBlockElement::GetList(array(), array("ID" => $ID), false, false, array("ID", "IBLOCK_ID", 'NAME', "PROPERTY_CML2_LINK"))->fetch(); $resElemOfferProduct = (int) $rsElementOffer['PROPERTY_CML2_LINK_VALUE']; //2 $resOffersCML2 = CIBlockElement::GetList(array(), array("PROPERTY_CML2_LINK" => $resElemOfferProduct, 'IBLOCK_ID' => IBLOCK_ID_OFFERS), false, false, array("ID", "IBLOCK_ID", 'NAME')); //3 $arrOffersIDs = array(); while ($res = $resOffersCML2->fetch()) { $arrOffersIDs[] = $res['ID']; } //4 $availQuant = array(); foreach ($arrOffersIDs as $k => $v) { $ar_res_cat = CCatalogProduct::GetList(array("ID" => "DESC"), array("ID" => (int) $v), false, false, array("ID", "QUANTITY", 'ELEMENT_IBLOCK_ID', 'ELEMENT_NAME'))->fetch(); $availQuant[] = $ar_res_cat['QUANTITY']; } //5 $minAvailQuant = (int) min($availQuant); //6 $resUpdateSCU = CIBlockElement::SetPropertyValuesEx($resElemOfferProduct, IBLOCK_ID_PRODUCTS, array("AVAILABLE_QUANTITY_CATALOG" => $minAvailQuant)); } }
public static function GetCityList() { $arResult = array(); $rsData = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter'=>array('NAME'=>CITY_LIST_HLB))); if ( !($arData = $rsData->fetch()) ){ echo 'Инфоблок не найден'; } else { $Entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($arData); $Query = new \Bitrix\Main\Entity\Query($Entity); $Query->setSelect(array('*')); $result = $Query->exec(); $result = new CDBResult($result); while ($row = $result->Fetch()){ $arResult[$row['UF_CITY_CODE']] = $row['UF_CITY_NAME']; } } return $arResult; }
/** * @return \Bitrix\Sale\Result * @throws Exception * @throws \Bitrix\Main\ArgumentException * @internal */ public static function convertPSRelations() { $result = new \Bitrix\Sale\Result(); $con = \Bitrix\Main\Application::getConnection(); if (!$con->isTableExists("b_sale_delivery2paysystem")) { return $result; } $query = new \Bitrix\Main\Entity\Query(DeliveryPaySystemTable::getEntity()); $query->setSelect(array('DELIVERY_ID')); $query->addFilter('LINK_DIRECTION', NULL); $query->setLimit(1); $res = $query->exec(); if (!$res->fetch()) { return $result; } $con->queryExecute('UPDATE b_sale_delivery2paysystem SET LINK_DIRECTION=\'' . DeliveryPaySystemTable::LINK_DIRECTION_DELIVERY_PAYSYSTEM . '\''); $res = DeliveryPaySystemTable::getList(array()); while ($rec = $res->fetch()) { unset($rec["ID"]); $rec["LINK_DIRECTION"] = DeliveryPaySystemTable::LINK_DIRECTION_PAYSYSTEM_DELIVERY; DeliveryPaySystemTable::Add($rec); } return $result; }
static function GetUserData($arParams = array()) { $getDepartment = $arParams['DEPARTMENT'] == 'N' ? false : true; $getHrPhoto = $arParams['HR_PHOTO'] == 'Y' ? true : false; $getPhones = $arParams['PHONES'] == 'Y' ? true : false; $useCache = !$getPhones && $arParams['USE_CACHE'] == 'Y' ? true : false; $showOnline = $arParams['SHOW_ONLINE'] == 'N' ? false : true; $arFilter = array(); if (isset($arParams['ID']) && is_array($arParams['ID']) && !empty($arParams['ID'])) { foreach ($arParams['ID'] as $key => $value) { if (intval($value) > 0) { $arParams['ID'][$key] = intval($value); } } $arFilter['=ID'] = $arParams['ID']; } else { if (isset($arParams['ID']) && intval($arParams['ID']) > 0) { $arFilter['=ID'] = array(intval($arParams['ID'])); } } if (empty($arFilter)) { return false; } $nameTemplate = self::GetUserNameTemplate(SITE_ID); $nameTemplateSite = CSite::GetNameFormat(false); $bIntranetEnable = false; if (IsModuleInstalled('intranet') && CModule::IncludeModule('intranet')) { $bIntranetEnable = true; } $bVoximplantEnable = IsModuleInstalled('voximplant'); $bColorEnabled = IM\Color::isEnabled(); if ($useCache) { global $USER; $obCache = new CPHPCache(); $cache_ttl = intval($arParams['CACHE_TTL']); if ($cache_ttl <= 0) { $cache_ttl = defined("BX_COMP_MANAGED_CACHE") ? 18144000 : 1800; } $cache_id = 'user_data_v8_' . (is_object($USER) ? $USER->GetID() : 'AGENT') . '_' . implode('|', $arFilter['=ID']) . '_' . $nameTemplate . '_' . $nameTemplateSite . '_' . $getPhones . '_' . $getDepartment . '_' . $bIntranetEnable . '_' . $bVoximplantEnable . '_' . LANGUAGE_ID . '_' . $bColorEnabled; $cache_dir = '/bx/imc/userdata'; if ($obCache->InitCache($cache_ttl, $cache_id, $cache_dir)) { $arCacheResult = $obCache->GetVars(); if ($showOnline) { $arOnline = CIMStatus::GetList(array('ID' => array_keys($arCacheResult['users']), 'GET_OFFLINE' => 'Y')); } foreach ($arCacheResult['users'] as $userId => $value) { $arCacheResult['users'][$userId]['birthday'] = $bIntranetEnable ? CIntranetUtils::IsToday($arCacheResult['users'][$userId]['birthday']) : false; if ($showOnline) { $arCacheResult['users'][$userId]['status'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['status'] : 'offline'; $arCacheResult['users'][$userId]['idle'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['idle'] : 0; $arCacheResult['users'][$userId]['mobileLastDate'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['mobileLastDate'] : 0; if ($arOnline['users'][$userId]) { $arCacheResult['users'][$userId]['color'] = $arOnline['users'][$userId]['color']; } } if ($getHrPhoto && !isset($arCacheResult['hrphoto'])) { $arPhotoHrTmp = CFile::ResizeImageGet($arCacheResult['source'][$userId]["PERSONAL_PHOTO"], array('width' => 200, 'height' => 200), BX_RESIZE_IMAGE_EXACT, false, false, true); $arCacheResult['hrphoto'][$userId] = empty($arPhotoHrTmp['src']) ? '/bitrix/js/im/images/hidef-avatar-v3.png' : $arPhotoHrTmp['src']; // TODO REMOVE DEFAULT } } return $arCacheResult; } } $arSelect = array("ID", "LAST_NAME", "NAME", "LOGIN", "PERSONAL_PHOTO", "SECOND_NAME", "PERSONAL_BIRTHDAY", "WORK_POSITION", "PERSONAL_GENDER", "EXTERNAL_AUTH_ID"); if ($getPhones) { $arSelect[] = 'WORK_PHONE'; $arSelect[] = 'PERSONAL_PHONE'; $arSelect[] = 'PERSONAL_MOBILE'; } if ($bIntranetEnable) { $arSelect[] = 'UF_PHONE_INNER'; $arSelect[] = 'UF_DEPARTMENT'; } if ($bVoximplantEnable) { $arSelect[] = 'UF_VI_PHONE'; $arSelect[] = 'UF_PHONE_INNER'; } $arUsers = array(); $arUserInGroup = array(); $arPhones = array(); $arWoUserInGroup = array(); $arHrPhoto = array(); $arSource = array(); $query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity()); $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('ref', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID'))); $query->addSelect('ref.COLOR', 'COLOR')->addSelect('ref.STATUS', 'STATUS')->addSelect('ref.IDLE', 'IDLE')->addSelect('ref.MOBILE_LAST_DATE', 'MOBILE_LAST_DATE'); $sago = Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180'); $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN LAST_ACTIVITY_DATE > ' . $sago . ' THEN \'Y\' ELSE \'N\' END')); $query->addSelect('IS_ONLINE_CUSTOM'); foreach ($arSelect as $value) { $query->addSelect($value); } foreach ($arFilter as $key => $value) { $query->addFilter($key, $value); } $resultQuery = $query->exec(); global $USER; $arExtraUser = array(); while ($arUser = $resultQuery->fetch()) { foreach ($arUser as $key => $value) { $arUser[$key] = !is_array($value) && !is_object($value) ? htmlspecialcharsEx($value) : $value; } $arExtraUser[$arUser["ID"]] = $arUser; $arSource[$arUser["ID"]]["PERSONAL_PHOTO"] = $arUser["PERSONAL_PHOTO"]; $arPhotoTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false, false, true); $color = self::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F'); if (isset($arUser['COLOR']) && strlen($arUser['COLOR']) > 0) { $color = IM\Color::getColor($arUser['COLOR']); } if (!$color) { $color = self::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F'); } $arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'name' => CUser::FormatName($nameTemplateSite, $arUser, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arUser, true, false), 'workPosition' => $arUser['WORK_POSITION'], 'color' => $color, 'avatar' => empty($arPhotoTmp['src']) ? '/bitrix/js/im/images/blank.gif' : $arPhotoTmp['src'], 'status' => 'offline', 'birthday' => $arUser['PERSONAL_BIRTHDAY'], 'gender' => $arUser['PERSONAL_GENDER'] == 'F' ? 'F' : 'M', 'phoneDevice' => $bVoximplantEnable && $arUser['UF_VI_PHONE'] == 'Y', 'extranet' => self::IsExtranet($arUser), 'network' => $arUser['EXTERNAL_AUTH_ID'] == self::NETWORK_AUTH_ID, 'profile' => CIMContactList::GetUserPath($arUser["ID"])); if ($getDepartment && is_array($arUser["UF_DEPARTMENT"]) && !empty($arUser["UF_DEPARTMENT"])) { foreach ($arUser["UF_DEPARTMENT"] as $dep_id) { if (isset($arUserInGroup[$dep_id])) { $arUserInGroup[$dep_id]['users'][] = $arUser["ID"]; } else { $arUserInGroup[$dep_id] = array('id' => $dep_id, 'users' => array($arUser["ID"])); } } if (isset($arWoUserInGroup['all'])) { $arWoUserInGroup['all']['users'][] = $arUser["ID"]; } else { $arWoUserInGroup['all'] = array('id' => 'all', 'users' => array($arUser["ID"])); } } if ($getHrPhoto) { $arPhotoHrTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 200, 'height' => 200), BX_RESIZE_IMAGE_EXACT, false, false, true); $arHrPhoto[$arUser["ID"]] = empty($arPhotoHrTmp['src']) ? '/bitrix/js/im/images/hidef-avatar-v3.png' : $arPhotoHrTmp['src']; // TODO REMOVE DEFAULT } if ($getPhones) { if (CModule::IncludeModule('voximplant')) { $result = CVoxImplantPhone::Normalize($arUser["WORK_PHONE"]); if ($result) { $arPhones[$arUser["ID"]]['WORK_PHONE'] = $arUser['WORK_PHONE']; } $result = CVoxImplantPhone::Normalize($arUser["PERSONAL_MOBILE"]); if ($result) { $arPhones[$arUser["ID"]]['PERSONAL_MOBILE'] = $arUser['PERSONAL_MOBILE']; } $result = CVoxImplantPhone::Normalize($arUser["PERSONAL_PHONE"]); if ($result) { $arPhones[$arUser["ID"]]['PERSONAL_PHONE'] = $arUser['PERSONAL_PHONE']; } $result = preg_replace("/[^0-9\\#\\*]/i", "", $arUser["UF_PHONE_INNER"]); if ($result) { $arPhones[$arUser["ID"]]['INNER_PHONE'] = $result; } } else { $arPhones[$arUser["ID"]]['WORK_PHONE'] = $arUser['WORK_PHONE']; $arPhones[$arUser["ID"]]['PERSONAL_MOBILE'] = $arUser['PERSONAL_MOBILE']; $arPhones[$arUser["ID"]]['PERSONAL_PHONE'] = $arUser['PERSONAL_PHONE']; } } } foreach ($arUsers as $userId => $arUser) { $arUsers[$userId]['birthday'] = $bIntranetEnable ? CIntranetUtils::IsToday($arUsers[$userId]['birthday']) : false; $arUsers[$userId]['status'] = $arExtraUser[$userId]['IS_ONLINE_CUSTOM'] == 'Y' ? $arExtraUser[$userId]['STATUS'] : 'offline'; $arUsers[$userId]['idle'] = $arExtraUser[$userId]['IS_ONLINE_CUSTOM'] == 'Y' && is_object($arExtraUser[$userId]['IDLE']) ? $arExtraUser[$userId]['IDLE']->getTimestamp() : 0; $arUsers[$userId]['mobileLastDate'] = $arExtraUser[$userId]['IS_ONLINE_CUSTOM'] == 'Y' && is_object($arExtraUser[$userId]['MOBILE_LAST_DATE']) ? $arExtraUser[$userId]['MOBILE_LAST_DATE']->getTimestamp() : 0; } $result = array('users' => $arUsers, 'hrphoto' => $arHrPhoto, 'userInGroup' => $arUserInGroup, 'woUserInGroup' => $arWoUserInGroup, 'phones' => $arPhones, 'source' => $arSource); if ($useCache) { $cacheTag = array(); if ($obCache->StartDataCache()) { if (defined("BX_COMP_MANAGED_CACHE")) { global $CACHE_MANAGER; $CACHE_MANAGER->StartTagCache($cache_dir); $CACHE_MANAGER->RegisterTag("IM_CONTACT_LIST"); if (is_array($arParams['ID'])) { foreach ($arParams['ID'] as $id) { $tag = 'USER_NAME_' . intval($id); if (!in_array($tag, $cacheTag)) { $cacheTag[] = $tag; $CACHE_MANAGER->RegisterTag($tag); } } } elseif (isset($arParams['ID']) && intval($arParams['ID']) > 0) { $tag = 'USER_NAME_' . intval($arParams['ID']); $CACHE_MANAGER->RegisterTag($tag); } $CACHE_MANAGER->EndTagCache(); } $obCache->EndDataCache($result); unset($cacheTag); } } unset($result['source']); return $result; }
public static function GetDeviceInfo($userId, $appId = 'Bitrix24') { $result = array(); if (is_array($userId)) { foreach ($userId as $key => $id) { $id = intval($id); if ($id > 0) { $result[$id] = array('mode' => self::RECORD_NOT_FOUND, 'device' => array()); } } } else { if (intval($userId) > 0) { $result[intval($userId)] = array('mode' => self::RECORD_NOT_FOUND, 'device' => array()); } } if (empty($result)) { return false; } $imInclude = false; if (CModule::IncludeModule('im')) { $imInclude = true; } $query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity()); $sago = Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180'); $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN LAST_ACTIVITY_DATE > ' . $sago . ' THEN \'Y\' ELSE \'N\' END')); $query->addSelect('ID')->addSelect('EMAIL')->addSelect('IS_ONLINE_CUSTOM'); if ($imInclude) { $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('im', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID'))); $query->addSelect('im.IDLE', 'IDLE')->addSelect('im.MOBILE_LAST_DATE', 'MOBILE_LAST_DATE'); } $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('push', 'Bitrix\\Pull\\PushTable', array('=this.ID' => 'ref.USER_ID'))); $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('HAS_MOBILE', 'CASE WHEN main_user_push.USER_ID > 0 THEN \'Y\' ELSE \'N\' END')); $query->addSelect('HAS_MOBILE')->addSelect('push.APP_ID', 'APP_ID')->addSelect('push.UNIQUE_HASH', 'UNIQUE_HASH')->addSelect('push.DEVICE_TYPE', 'DEVICE_TYPE')->addSelect('push.DEVICE_TOKEN', 'DEVICE_TOKEN'); $query->addFilter('=ID', array_keys($result)); $queryResult = $query->exec(); while ($user = $queryResult->fetch()) { $uniqueHashes[] = CPullPush::getUniqueHash($user["ID"], $appId); $uniqueHashes[] = CPullPush::getUniqueHash($user["ID"], $appId . "_bxdev"); if (in_array($user['UNIQUE_HASH'], $uniqueHashes)) { $result[$user['ID']]['device'][] = array('APP_ID' => $user['APP_ID'], 'USER_ID' => $user['ID'], 'DEVICE_TYPE' => $user['DEVICE_TYPE'], 'DEVICE_TOKEN' => $user['DEVICE_TOKEN']); //$result[$user['ID']]['email'] = $user['EMAIL']; } else { continue; } if ($result[$user['ID']]['mode'] != self::RECORD_NOT_FOUND) { continue; } $isMobile = false; $isOnline = false; $isDesktop = false; $isDesktopIdle = false; if ($user['HAS_MOBILE'] == 'N') { $result[$user['ID']]['mode'] = self::RECORD_NOT_FOUND; $result[$user['ID']]['device'] = array(); continue; } if ($user['IS_ONLINE_CUSTOM'] == 'Y') { $isOnline = true; } if ($imInclude) { $mobileLastDate = 0; if (is_object($user['MOBILE_LAST_DATE'])) { $mobileLastDate = $user['MOBILE_LAST_DATE']->getTimestamp(); } if ($mobileLastDate > 0 && $mobileLastDate + 180 > time()) { $isMobile = true; } $isDesktop = CIMMessenger::CheckDesktopStatusOnline($user['ID']); if ($isDesktop && $isOnline && is_object($user['IDLE'])) { if ($user['IDLE']->getTimestamp() > 0) { $isDesktopIdle = true; } } } $status = self::SEND_IMMEDIATELY; if ($isMobile) { $status = self::SEND_IMMEDIATELY; } else { if ($isOnline) { $status = self::SEND_DEFERRED; if ($isDesktop) { $status = self::SEND_SKIP; if ($isDesktopIdle) { $status = self::SEND_IMMEDIATELY; } else { $result[$user['ID']]['device'] = array(); } } else { $result[$user['ID']]['device'] = array(); } } } $result[$user['ID']]['mode'] = $status; } return $result; }
public static function GetList($arParams = array()) { if (!is_array($arParams)) { $arParams = array(); } $arID = array(); if (isset($arParams['ID']) && is_array($arParams['ID']) && !empty($arParams['ID'])) { foreach ($arParams['ID'] as $key => $value) { $arID[] = intval($value); } } else { if (isset($arParams['ID']) && intval($arParams['ID']) > 0) { $arID[] = intval($arParams['ID']); } } global $USER; if (!isset($arParams['ID']) && !IsModuleInstalled('intranet') && is_object($USER)) { $arID[] = $USER->GetID(); if (CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed()) { $dbFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $USER->GetID(), "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID")); if ($dbFriends) { while ($arFriends = $dbFriends->GetNext(true, false)) { $friendId = $pref = IntVal($USER->GetID()) == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"]; $arID[] = $friendId; } } } } $enable = self::Enable(); $arUsers = array(); $query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity()); if ($enable) { $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('ref', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID'))); } $query->addSelect('ID'); if ($enable) { $query->addSelect('ref.STATUS', 'STATUS')->addSelect('ref.IDLE', 'IDLE'); } $query->addFilter('>LAST_ACTIVITY_DATE', new \Bitrix\Main\DB\SqlExpression(Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180'))); $result = $query->exec(); while ($arUser = $result->fetch()) { if (!empty($arID) && !in_array($arUser["ID"], $arID)) { continue; } $arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'status' => $enable && in_array($arUser['STATUS'], self::$AVAILABLE_STATUSES) ? $arUser['STATUS'] : 'online', 'idle' => $enable && is_object($arUser['IDLE']) ? $arUser['IDLE']->getTimestamp() : 0); } return array('users' => $arUsers); }
CAdminMessage::ShowNote($viewedMessage); CAdminMessage::ShowMessage($viewedError); $newFilter = array(); foreach ($arFilter as $key => $value) { if ($key == "DATE_FROM") { $newFilter['>=DATE_VISIT'] = $value; } elseif ($key == "DATE_TO") { $newFilter['<DATE_VISIT'] = $value; } else { $newFilter[$key] = $value; } } if (\Bitrix\Main\Loader::includeModule("catalog")) { $viewedQuery = new \Bitrix\Main\Entity\Query(\Bitrix\Catalog\CatalogViewedProductTable::getEntity()); $viewedQuery->setSelect(array("PRODUCT_ID", "DATE_VISIT", "SITE_ID", "VIEW_COUNT", "NAME" => "ELEMENT.NAME", "PRICE" => "PRODUCT.PRICE", "QUANTITY" => "PRODUCT.QUANTITY", "CURRENCY" => "PRODUCT.CURRENCY", "RATE" => "PRODUCT.CURRENT_CURRENCY_RATE", "CURRENCY_RATE" => "PRODUCT.CURRENT_CURRENCY_RATE_CNT"))->setfilter($newFilter); $viewedIterator = $viewedQuery->exec(); } else { $viewedIterator = new CDBResult(); } $dbViewsList = new CAdminResult($viewedIterator, $sTableID_tab5); $dbViewsList->NavStart(); $lAdmin_tab5->NavText($dbViewsList->GetNavPrint(GetMessage('BUYER_PRODUCT_LIST'))); $viewedHeader = array(array("id" => "DATE_VISIT", "content" => GetMessage("BUYER_V_DATE_INSERT"), "sort" => "DATE_VISIT", "default" => true), array("id" => "NAME", "content" => GetMessage("BUYER_V_NAME"), "sort" => "NAME", "default" => true), array("id" => "PRICE", "content" => GetMessage("BUYER_V_PRICE"), "sort" => "PRICE", "default" => true), array("id" => "QUANTITY", "content" => GetMessage("BUYER_V_QUANTITY"), "sort" => "", "default" => true)); if (count($arSites) > 1) { $viewedHeader[] = array("id" => "SITE_ID", "content" => GetMessage("BUYER_V_LID"), "sort" => "SITE_ID", "default" => true); } $lAdmin_tab5->AddHeaders($viewedHeader); $arProductId = array(); $arCatalogProductId = array(); $arViewsData = array(); $mapViewByProduct = array();
function getNumberCabinet($idCabinet, $relativePath) { $numberCabinet = ''; $obCache = new CPHPCache(); $cache_id = SITE_ID . '|tickets|numbersCabinets|' . $idCabinet; $cache_path = '/' . SITE_ID . $relativePath; if ($obCache->StartDataCache(36000, $cache_id, $cache_path)) { $rsCabinetData = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('NAME' => 'Cabinet'))); if ($arCabinetData = $rsCabinetData->fetch()) { $EntityCabinet = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($arCabinetData); $QueryCabinet = new \Bitrix\Main\Entity\Query($EntityCabinet); $QueryCabinet->setSelect(array('UF_NUMBER')); $QueryCabinet->setFilter(array('ID' => $idCabinet)); $resultCabinet = $QueryCabinet->exec(); $resultCabinet = new CDBResult($resultCabinet); $rowCabinet = $resultCabinet->Fetch(); $numberCabinet = $rowCabinet['UF_NUMBER']; } $obCache->EndDataCache(array("numberCabinet" => $numberCabinet)); } else { $arVars = $obCache->GetVars(); $numberCabinet = $arVars["numberCabinet"]; } return $numberCabinet; }
public static function GetList($arParams = array()) { if (!is_array($arParams)) { $arParams = array(); } $arID = array(); if (isset($arParams['ID']) && is_array($arParams['ID']) && !empty($arParams['ID'])) { foreach ($arParams['ID'] as $key => $value) { $arID[] = intval($value); } } else { if (isset($arParams['ID']) && intval($arParams['ID']) > 0) { $arID[] = intval($arParams['ID']); } } $arParams['GET_OFFLINE'] = !empty($arID) && isset($arParams['GET_OFFLINE']) && $arParams['GET_OFFLINE'] == 'Y' ? 'Y' : 'N'; global $USER; $userId = is_object($USER) ? intval($USER->GetID()) : 0; $bBusShowAll = !IsModuleInstalled('intranet') && COption::GetOptionInt('im', 'contact_list_show_all_bus'); if (!$bBusShowAll && !isset($arParams['ID']) && $userId > 0 && !isset($arParams['SKIP_CHECK'])) { if (isset(self::$FRIENDS_USERS[$userId])) { $arID = self::$FRIENDS_USERS[$userId]; } else { if (CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed()) { $arID = array($userId); $dbFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $userId, "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID")); if ($dbFriends) { while ($arFriends = $dbFriends->Fetch()) { $arID[] = $userId == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"]; } } self::$FRIENDS_USERS[$userId] = $arID; } } } $arUsers = array(); if (self::$ONLINE_USERS && $arParams['GET_OFFLINE'] == 'N') { $arUsers = self::$ONLINE_USERS; } else { if (!self::$ONLINE_USERS || $arParams['GET_OFFLINE'] == 'Y') { $enable = self::Enable(); $arUsers = array(); $query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity()); $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('ref', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID'))); $query->addSelect('ID')->addSelect('ref.COLOR', 'COLOR')->addSelect('PERSONAL_GENDER'); if ($enable) { $query->addSelect('ref.STATUS', 'STATUS')->addSelect('ref.IDLE', 'IDLE')->addSelect('ref.MOBILE_LAST_DATE', 'MOBILE_LAST_DATE'); } if ($arParams['GET_OFFLINE'] == 'N') { $query->addFilter('>LAST_ACTIVITY_DATE', new \Bitrix\Main\DB\SqlExpression(Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180'))); } else { $sago = Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180'); $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN LAST_ACTIVITY_DATE > ' . $sago . ' THEN \'Y\' ELSE \'N\' END')); $query->addSelect('IS_ONLINE_CUSTOM'); $query->addFilter('=ID', $arID); } $result = $query->exec(); while ($arUser = $result->fetch()) { $color = null; if (isset($arUser['COLOR']) && strlen($arUser['COLOR']) > 0) { $color = IM\Color::getColor($arUser['COLOR']); } if (!$color) { $color = \CIMContactList::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F'); } $arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'status' => $enable && in_array($arUser['STATUS'], self::$AVAILABLE_STATUSES) ? $arUser['STATUS'] : 'online', 'color' => $color, 'idle' => $enable && is_object($arUser['IDLE']) ? $arUser['IDLE']->getTimestamp() : 0, 'mobileLastDate' => $enable && is_object($arUser['MOBILE_LAST_DATE']) ? $arUser['MOBILE_LAST_DATE']->getTimestamp() : 0); if ($arParams['GET_OFFLINE'] == 'Y' && $arUser['IS_ONLINE_CUSTOM'] == 'N') { $arUsers[$arUser["ID"]]['status'] = 'offline'; $arUsers[$arUser["ID"]]['idle'] = 0; $arUsers[$arUser["ID"]]['mobileLastDate'] = 0; } } if ($arParams['GET_OFFLINE'] == 'N') { self::$ONLINE_USERS = $arUsers; } } } $arResult = array(); if (empty($arID)) { $arResult = $arUsers; } else { foreach ($arID as $userId) { if (isset($arUsers[$userId])) { $arResult[$userId] = $arUsers[$userId]; } } } return array('users' => $arResult); }
private static function getSelectedTypeIds($type, $siteId) { static $index; // this function is called hell number of times outside, so a little cache is provided if ($index == null) { $index = array(); } if (!isset($index[$type][$siteId])) { $result = array(); $class = self::CONN_ENTITY_NAME . 'Table'; $index[$type][$siteId] = array(); // check if link even used if (!$class::checkLinkUsageAny($siteId)) { $index[$type][$siteId] = array(''); } else { $types = \CSaleLocation::getTypes(); $query = new \Bitrix\Main\Entity\Query(self::LOCATION_ENTITY_NAME); $query->registerRuntimeField('L', array('data_type' => self::LOCATION_ENTITY_NAME, 'reference' => array('=ref.TYPE_ID' => array('?', $types[$type]), '>=ref.LEFT_MARGIN' => 'this.LEFT_MARGIN', '<=ref.RIGHT_MARGIN' => 'this.RIGHT_MARGIN'), 'join_type' => 'inner')); $query->setSelect(array('ID__' => 'L.ID')); // get all connection points of interested types (if any) $sql = $class::getConnectedLocationsQuery($siteId, array('select' => array('ID')), array('GET_LINKED_THROUGH_GROUPS' => true)); if ($sql) { $query->setFilter(array('@ID' => new \Bitrix\Main\DB\SqlExpression($sql))); } $res = $query->exec(); while ($item = $res->fetch()) { $index[$type][$siteId][] = $item['ID__']; } $res = Location\LocationTable::getList(array('filter' => array('TYPE_ID' => $types[$type]), 'runtime' => array('CNT' => array('data_type' => 'integer', 'expression' => array('COUNT(*)'))), 'select' => array('CNT')))->fetch(); if ($res['CNT'] == count($index[$type][$siteId])) { $index[$type][$siteId][] = ''; } } } return $index[$type][$siteId]; }
public static function QueuedGetList($params) { $query = new \Bitrix\Main\Entity\Query(Bitrix\Voximplant\QueueTable::getEntity()); $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN %s > ' . CVoxImplantUser::GetLastActivityDateAgo() . ' THEN \'Y\' ELSE \'N\' END', array('USER.LAST_ACTIVITY_DATE'))); if (isset($params['select'])) { $query->setSelect($params['select']); } else { $query->addSelect('ID')->addSelect('IS_ONLINE_CUSTOM'); } if (isset($params['filter'])) { $query->setFilter($params['filter']); } if (isset($params['order'])) { $query->setOrder($params['order']); } return $query->exec(); }
// test_dump($arProps); //} ?> <?php CModule::IncludeModule('highloadblock'); $rsData = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('ID' => '5'))); if (!($arData = $rsData->fetch())) { echo 'Инфоблок не найден'; } $Entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($arData); $Query = new \Bitrix\Main\Entity\Query($Entity); //Зададим параметры запроса, любой параметр можно опустить $Query->setSelect(array('*')); //Выполним запрос $result = $Query->exec(); //Получаем результат по привычной схеме $result = new CDBResult($result); $arLang = array(); ?> <div class="container_brands"> <div class="slideshow_brands"> <ul class="slides_brands"> <?php while ($row = $result->Fetch()) { $resized_src = GetResizedImage($row["UF_FILE"], 250, 100)["src"]; ?> <li class="slide_brands"> <a href="/brands/<?php echo $row["UF_LINK"];