/** * Removes all composite cache * Be careful with this method * @return void */ public static function deleteAllCache() { $users = UserTable::getList(array("select" => array("ID"))); while ($user = $users->fetch()) { self::deleteUserCache($user["ID"]); } }
public function filter() { $daysDontAuth = $this->getFieldValue('DAYS_DONT_AUTH'); if (!is_numeric($daysDontAuth)) { $daysDontAuth = 90; } $dateFrom = new \Bitrix\Main\Type\DateTime(); $dateTo = new \Bitrix\Main\Type\DateTime(); $dateFrom->setTime(0, 0, 0)->add('-' . $daysDontAuth . ' days'); $dateTo->setTime(0, 0, 0)->add('1 days')->add('-' . $daysDontAuth . ' days'); if ($this->isRunForOldData()) { $filter = array('!LAST_LOGIN' => null, '<LAST_LOGIN' => $dateTo); } else { $filter = array('>LAST_LOGIN' => $dateFrom, '<LAST_LOGIN' => $dateTo); } $filter['=ACTIVE'] = true; $userListDb = \Bitrix\Main\UserTable::getList(array('select' => array('EMAIL', 'ID', 'NAME'), 'filter' => $filter, 'order' => array('ID' => 'ASC'))); if ($userListDb->getSelectedRowsCount() > 0) { $userListDb->addFetchDataModifier(array($this, 'getFetchDataModifier')); $this->recipient = $userListDb; return true; } else { return false; } }
public static function SynchronizeUserPhones() { $offset = intval(COption::GetOptionInt("voximplant", "sync_offset", 0)); $result = \Bitrix\Main\UserTable::getList(array('select' => array('ID', 'WORK_PHONE', 'PERSONAL_PHONE', 'PERSONAL_MOBILE', 'UF_PHONE_INNER'), 'filter' => array('=Bitrix\\Voximplant\\Phone:USER.USER_ID' => 0), 'limit' => 100, 'offset' => $offset, 'order' => 'ID')); $count = 0; while ($user = $result->fetch()) { $user["WORK_PHONE"] = CVoxImplantPhone::Normalize($user["WORK_PHONE"]); if ($user["WORK_PHONE"]) { VI\PhoneTable::add(array('USER_ID' => intval($user['ID']), 'PHONE_NUMBER' => $user["WORK_PHONE"], 'PHONE_MNEMONIC' => "WORK_PHONE")); } $user["PERSONAL_PHONE"] = CVoxImplantPhone::Normalize($user["PERSONAL_PHONE"]); if ($user["PERSONAL_PHONE"]) { VI\PhoneTable::add(array('USER_ID' => intval($user['ID']), 'PHONE_NUMBER' => $user["PERSONAL_PHONE"], 'PHONE_MNEMONIC' => "PERSONAL_PHONE")); } $user["PERSONAL_MOBILE"] = CVoxImplantPhone::Normalize($user["PERSONAL_MOBILE"]); if ($user["PERSONAL_MOBILE"]) { VI\PhoneTable::add(array('USER_ID' => intval($user['ID']), 'PHONE_NUMBER' => $user["PERSONAL_MOBILE"], 'PHONE_MNEMONIC' => "PERSONAL_MOBILE")); } $user["UF_PHONE_INNER"] = intval(preg_replace("/[^0-9]/i", "", $user["UF_PHONE_INNER"])); if ($user["UF_PHONE_INNER"] > 0 && $user["UF_PHONE_INNER"] < 10000) { VI\PhoneTable::add(array('USER_ID' => intval($user['ID']), 'PHONE_NUMBER' => $user["UF_PHONE_INNER"], 'PHONE_MNEMONIC' => "UF_PHONE_INNER")); } $count++; } if ($count > 0) { $offset = $offset + 100; COption::SetOptionInt("voximplant", "sync_offset", $offset); return "CVoxImplantPhone::SynchronizeUserPhones();"; } else { return false; } }
/** * @param array $networkIds * * @return array|null */ public static function getUsersId($networkIds) { if (!is_array($networkIds)) { return null; } $searchArray = array(); foreach ($networkIds as $networkId) { $searchArray[] = substr($networkId, 0, 1) . intval(substr($networkId, 1)) . "|%"; } $result = \Bitrix\Main\UserTable::getList(array('select' => array('ID', 'WORK_PHONE', 'PERSONAL_PHONE', 'PERSONAL_MOBILE', 'UF_PHONE_INNER', 'XML_ID'), 'filter' => array('=%XML_ID' => $searchArray, '=EXTERNAL_AUTH_ID' => self::EXTERNAL_AUTH_ID), 'order' => 'ID')); $users = array(); while ($user = $result->fetch()) { list($networkId, ) = explode("|", $user['XML_ID']); $users[$networkId] = $user['ID']; } if (empty($users)) { $users = null; } return $users; }
public static function SearchUsers($search, $nameTemplate = "", $bSelf = true, $bEmployeesOnly = false, $bExtranetOnly = false, $departmentId = false) { CUtil::JSPostUnescape(); $arUsers = array(); $search = trim($search); if (strlen($search) <= 0 || !GetFilterQuery("TEST", $search)) { return $arUsers; } $bIntranetEnable = IsModuleInstalled('intranet'); $bExtranetEnable = CModule::IncludeModule('extranet'); $bBitrix24Enable = IsModuleInstalled('bitrix24'); $bExtranetUser = $bExtranetEnable && !CExtranet::IsIntranetUser(); $current_user_id = intval($GLOBALS["USER"]->GetID()); if ($bExtranetEnable) { CSocNetTools::InitGlobalExtranetArrays(); } $arSearchValue = preg_split('/\\s+/', trim($search)); array_walk($arSearchValue, array('CSocNetLogDestination', '__percent_walk')); $arFilter = array(array('LOGIC' => 'OR', '%=NAME' => $arSearchValue, '%=LAST_NAME' => $arSearchValue, '%=EMAIL' => $search, '%=LOGIN' => $search), 'ACTIVE' => 'Y'); if ($bIntranetEnable || COption::GetOptionString("main", "new_user_registration_email_confirmation", "N") == "Y") { $arFilter["CONFIRM_CODE"] = false; } if ($bEmployeesOnly || $bBitrix24Enable && !$bExtranetEnable) { $arFilter["!UF_DEPARTMENT"] = false; } elseif ($bExtranetOnly) { $arFilter["UF_DEPARTMENT"] = false; } if ($bIntranetEnable && $bExtranetEnable && ($bExtranetUser || !$bEmployeesOnly)) { $arFilteredUserIDs = CExtranet::GetMyGroupsUsersSimple(CExtranet::GetExtranetSiteID()); if ($bExtranetUser) { $arFilter["ID"] = array_merge(array($current_user_id), $arFilteredUserIDs); } else { $arFilter[] = array('LOGIC' => 'OR', '!UF_DEPARTMENT' => false, 'ID' => array_merge(array($current_user_id), $arFilteredUserIDs)); } } $arSelect = array("ID", "NAME", "LAST_NAME", "SECOND_NAME", "EMAIL", "LOGIN", "WORK_POSITION", "PERSONAL_PROFESSION", "PERSONAL_PHOTO", "PERSONAL_GENDER"); if ($bIntranetEnable) { $arSelect[] = 'UF_DEPARTMENT'; } if (intval($departmentId) > 0) { $acc = new CAccess(); } $rsUser = \Bitrix\Main\UserTable::getList(array('order' => array('LAST_NAME' => 'ASC'), 'filter' => $arFilter, 'select' => $arSelect, 'limit' => 20, 'data_doubling' => false)); while ($arUser = $rsUser->fetch()) { if (!$bSelf && $current_user_id == $arUser['ID']) { continue; } if (is_object($acc)) { $acc->UpdateCodes(array("USER_ID" => $arUser["ID"])); $arUserGroupCode = CAccess::GetUserCodesArray($arUser["ID"], array("PROVIDER_ID" => "intranet")); if (!in_array("DR" . intval($departmentId), $arUserGroupCode)) { continue; } } $sName = CUser::FormatName(empty($nameTemplate) ? CSite::GetNameFormat(false) : $nameTemplate, $arUser, true, true); $arFileTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 32, 'height' => 32), BX_RESIZE_IMAGE_EXACT, false); $arUsers['U' . $arUser["ID"]] = array('id' => 'U' . $arUser["ID"], 'entityId' => $arUser["ID"], 'name' => $sName, 'avatar' => empty($arFileTmp['src']) ? '' : $arFileTmp['src'], 'desc' => $arUser['WORK_POSITION'] ? $arUser['WORK_POSITION'] : ($arUser['PERSONAL_PROFESSION'] ? $arUser['PERSONAL_PROFESSION'] : ' '), 'isExtranet' => isset($GLOBALS["arExtranetUserID"]) && is_array($GLOBALS["arExtranetUserID"]) && in_array($arUser["ID"], $GLOBALS["arExtranetUserID"]) ? "Y" : "N"); $checksum = md5(serialize($arUsers['U' . $arUser["ID"]])); $arUsers['U' . $arUser["ID"]]['checksum'] = $checksum; } return $arUsers; }
public static function SearchUsers($searchText) { $searchText = trim($searchText); if (strlen($searchText) < 3) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_CL_SEARCH_EMPTY"), "ERROR_SEARCH_EMPTY"); return false; } $nameTemplate = self::GetUserNameTemplate(SITE_ID); $nameTemplateSite = CSite::GetNameFormat(false); $arFilter = array("ACTIVE" => "Y", "CONFIRM_CODE" => false, "NAME" => $searchText); $bIntranetEnable = IsModuleInstalled('intranet'); $bVoximplantEnable = IsModuleInstalled('voximplant'); if (!$bIntranetEnable) { $arSettings = CIMSettings::GetDefaultSettings(CIMSettings::SETTINGS); if ($arSettings[CIMSettings::PRIVACY_SEARCH] == CIMSettings::PRIVACY_RESULT_ALL) { $arFilter['!=UF_IM_SEARCH'] = CIMSettings::PRIVACY_RESULT_CONTACT; } else { $arFilter['UF_IM_SEARCH'] = CIMSettings::PRIVACY_RESULT_ALL; } } $arExtParams = array('FIELDS' => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "PERSONAL_BIRTHDAY", "WORK_POSITION", "PERSONAL_GENDER", "EXTERNAL_AUTH_ID"), 'SELECT' => array('UF_IM_SEARCH')); if ($bIntranetEnable) { $arExtParams['SELECT'][] = 'UF_DEPARTMENT'; } if ($bVoximplantEnable) { $arExtParams['SELECT'][] = 'UF_VI_PHONE'; } $arUsers = array(); $dbUsers = CUser::GetList($sort_by = array('last_name' => 'asc'), $dummy = '', $arFilter, $arExtParams); while ($arUser = $dbUsers->GetNext(true, false)) { $arFileTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false, false, true); $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' => self::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F'), 'avatar' => empty($arFileTmp['src']) ? '/bitrix/js/im/images/blank.gif' : $arFileTmp['src'], 'status' => 'offline', 'birthday' => $bIntranetEnable ? CIntranetUtils::IsToday($arUser['PERSONAL_BIRTHDAY']) : false, '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"]), 'searchMark' => $searchText); } if (!empty($arUsers)) { $arOnline = CIMStatus::GetList(array('ID' => array_keys($arUsers), 'GET_OFFLINE' => 'Y')); foreach ($arUsers as $userId => $value) { $arUsers[$userId]['status'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['status'] : 'offline'; $arUsers[$userId]['idle'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['idle'] : 0; $arUsers[$userId]['mobileLastDate'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['mobileLastDate'] : 0; if ($arOnline['users'][$userId]['color']) { $arUsers[$userId]['color'] = $arOnline['users'][$userId]['color']; } } } if (CModule::IncludeModule('socialservices')) { $network = new \Bitrix\Socialservices\Network(); if ($network->isEnabled()) { $result = $network->searchUser($searchText); if ($result) { $arUserIds = array_keys($arUsers); $arIntersectUserIds = array(); foreach ($result as $arUser) { $id = 'network' . $arUser["NETWORK_ID"]; $arUsers[$id] = array('id' => $id, 'name' => CUser::FormatName($nameTemplateSite, $arUser, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arUser, true, false), 'workPosition' => $arUser['CLIENT_DOMAIN'], 'color' => IM\Color::getColor('GRAY'), 'avatar' => empty($arUser['PERSONAL_PHOTO']) ? '/bitrix/js/im/images/blank.gif' : $arUser['PERSONAL_PHOTO'], 'status' => 'guest', 'birthday' => false, 'gender' => $arUser['PERSONAL_GENDER'] == 'F' ? 'F' : 'M', 'phoneDevice' => false, 'extranet' => true, 'network' => true, 'profile' => CIMContactList::GetUserPath($arUser["ID"]), 'select' => 'Y', 'networkId' => $arUser['NETWORK_ID'], 'searchMark' => $searchText); $arIntersectUserIds[$arUser['XML_ID']] = $id; } if (!empty($arUserIds)) { $result = \Bitrix\Main\UserTable::getList(array('select' => array('XML_ID'), 'filter' => array('=XML_ID' => array_keys($arIntersectUserIds), '=EXTERNAL_AUTH_ID' => \Bitrix\Socialservices\Network::EXTERNAL_AUTH_ID))); while ($user = $result->fetch()) { unset($arUsers[$arIntersectUserIds[$user['XML_ID']]]); } } } } } return array('users' => $arUsers); }
public function prepareUser($arGoogleUser, $short = false) { $first_name = ""; $last_name = ""; if (is_array($arGoogleUser['name'])) { $first_name = $arGoogleUser['name']['givenName']; $last_name = $arGoogleUser['name']['familyName']; } elseif ($arGoogleUser['name'] != '') { $aName = explode(" ", $arGoogleUser['name']); if ($arGoogleUser['given_name'] != '') { $first_name = $arGoogleUser['given_name']; } else { $first_name = $aName[0]; } if ($arGoogleUser['family_name'] != '') { $last_name = $arGoogleUser['family_name']; } elseif (isset($aName[1])) { $last_name = $aName[1]; } } $id = $arGoogleUser['id']; $email = $arGoogleUser['email']; if (strlen($arGoogleUser['email']) > 0) { $dbRes = \Bitrix\Main\UserTable::getList(array('filter' => array('=EXTERNAL_AUTH_ID' => 'socservices', '=XML_ID' => $email), 'select' => array('ID'), 'limit' => 1)); if ($dbRes->fetch()) { $id = $email; } } $arFields = array('EXTERNAL_AUTH_ID' => static::ID, 'XML_ID' => $id, 'LOGIN' => static::LOGIN_PREFIX . $id, 'EMAIL' => $email, 'NAME' => $first_name, 'LAST_NAME' => $last_name, 'OATOKEN' => $this->entityOAuth->getToken(), 'OATOKEN_EXPIRES' => $this->entityOAuth->getAccessTokenExpires(), 'REFRESH_TOKEN' => $this->entityOAuth->getRefreshToken()); if ($arGoogleUser['gender'] != '') { if ($arGoogleUser['gender'] == 'male') { $arFields["PERSONAL_GENDER"] = 'M'; } elseif ($arGoogleUser['gender'] == 'female') { $arFields["PERSONAL_GENDER"] = 'F'; } } if (!$short && isset($arGoogleUser['picture']) && static::CheckPhotoURI($arGoogleUser['picture'])) { $arGoogleUser['picture'] = preg_replace("/\\?.*\$/", '', $arGoogleUser['picture']); $arPic = CFile::MakeFileArray($arGoogleUser['picture']); if ($arPic) { $arFields["PERSONAL_PHOTO"] = $arPic; } } $arFields["PERSONAL_WWW"] = isset($arGoogleUser['link']) ? $arGoogleUser['link'] : $arGoogleUser['url']; if (strlen(SITE_ID) > 0) { $arFields["SITE_ID"] = SITE_ID; } return $arFields; }
$arIds[$index] = $arHistoryRecord["ID"]; } array_multisort($arData, SORT_DESC, $arIds, SORT_DESC, $arHistoryData); } $dbRecords = new CDBResult(); $dbRecords->InitFromArray($arHistoryData); $arResult["STATUSES"] = array(); $dbStatusList = CSaleStatus::GetList(array("SORT" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "NAME")); while ($arStatusList = $dbStatusList->Fetch()) { $arResult["STATUSES"][htmlspecialcharsbx($arStatusList["ID"])] = htmlspecialcharsbx($arStatusList["NAME"]); } $arResult["PAY_SYSTEMS"] = array(); $dbPaySystemList = CSalePaySystem::GetList(array("SORT" => "ASC"), array()); while ($arPaySystemList = $dbPaySystemList->Fetch()) { $arResult["PAY_SYSTEMS"][$arPaySystemList["ID"]] = htmlspecialcharsbx($arPaySystemList["NAME"]); } $userCache = array(); $deliveryCache = array(); $usersList = array(); $dbUser = \Bitrix\Main\UserTable::getList(array('filter' => array('ID' => $usersIds), 'select' => array("ID", "LOGIN", "NAME", "LAST_NAME"))); while ($user = $dbUser->fetch()) { $usersList[$user["ID"]] = $user; } while ($arHistory = $dbRecords->Fetch()) { $arHistory["USER"]["LOGIN"] = $usersList[$arHistory["USER_ID"]]["LOGIN"]; $arHistory["USER"]["NAME"] = $usersList[$arHistory["USER_ID"]]["NAME"]; $arHistory["USER"]["LAST_NAME"] = $usersList[$arHistory["USER_ID"]]["LAST_NAME"]; $arHistory = array_merge($arHistory, CSaleOrderChange::GetRecordDescription($arHistory["TYPE"], $arHistory["DATA"])); $arResult["HISTORY"][] = $arHistory; } $this->IncludeComponentTemplate();
'TEXT' => Loc::getMessage('BT_SALE_DISCOUNT_COUPON_LIST_CONTEXT_DELETE'), 'ACTION' => "if(confirm('".Loc::getMessage('BT_SALE_DISCOUNT_COUPON_LIST_CONTEXT_DELETE_CONFIRM')."')) ".$adminList->ActionDoGroup($coupon['ID'], 'delete') ); } $row->AddActions($actions); unset($actions); } if (isset($row)) unset($row); if ($selectFieldsMap['CREATED_BY'] || $selectFieldsMap['MODIFIED_BY'] || $selectFieldsMap['USER_ID']) { if (!empty($userIDs)) { $userIterator = UserTable::getList(array( 'select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL'), 'filter' => array('ID' => array_keys($userIDs)), )); while ($oneUser = $userIterator->fetch()) { $oneUser['ID'] = (int)$oneUser['ID']; if ($canViewUserList) $userList[$oneUser['ID']] = '<a href="/bitrix/admin/user_edit.php?lang='.LANGUAGE_ID.'&ID='.$oneUser['ID'].'">'.CUser::FormatName($nameFormat, $oneUser).'</a>'; else $userList[$oneUser['ID']] = CUser::FormatName($nameFormat, $oneUser); } unset($oneUser, $userIterator); } foreach ($rowList as &$row) { if ($selectFieldsMap['CREATED_BY'])
public static function ValidateAtoms($arValues, $arParams, $arControl, $boolShow) { static $userNameFormat = null; $boolShow = ($boolShow === true); $boolError = false; $arMsg = array(); $arResult = array( 'values' => array(), 'labels' => array(), 'titles' => array() ); if (!isset($arControl['ATOMS']) || empty($arControl['ATOMS']) || !is_array($arControl['ATOMS'])) { $boolError = true; $arMsg[] = Loc::getMessage('BT_GLOBAL_COND_ERR_ATOMS_ABSENT'); } if (!$boolError) { if ($boolShow) { foreach ($arControl['ATOMS'] as &$arOneAtom) { $strID = $arOneAtom['ATOM']['ID']; if (!isset($arOneAtom['ATOM']['VALIDATE']) || empty($arOneAtom['ATOM']['VALIDATE'])) { $arResult['values'][$strID] = $arValues[$strID]; continue; } switch ($arOneAtom['ATOM']['VALIDATE']) { case 'list': if (isset($arOneAtom['JS']) && isset($arOneAtom['JS']['values']) && !empty($arOneAtom['JS']['values'])) { if (is_array($arValues[$strID])) { $arCheckResult = array(); foreach ($arValues[$strID] as &$strValue) { if (isset($arOneAtom['JS']['values'][$strValue])) $arCheckResult[] = $strValue; } if (isset($strValue)) unset($strValue); if (!empty($arCheckResult)) { $arResult['values'][$strID] = $arCheckResult; } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_LIST_ABSENT_MULTI'); } } else { if (isset($arOneAtom['JS']['values'][$arValues[$strID]])) { $arResult['values'][$strID] = $arValues[$strID]; } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_LIST_ABSENT'); } } } else { $boolError = true; } break; case 'element': $rsItems = CIBlockElement::GetList(array(), array('ID' => $arValues[$strID]), false, false, array('ID', 'NAME')); if (is_array($arValues[$strID])) { $arCheckResult = array(); while ($arItem = $rsItems->Fetch()) { $arCheckResult[(int)$arItem['ID']] = $arItem['NAME']; } if (!empty($arCheckResult)) { $arResult['values'][$strID] = array_keys($arCheckResult); $arResult['labels'][$strID] = array_values($arCheckResult); } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_ELEMENT_ABSENT_MULTI'); } } else { if ($arItem = $rsItems->Fetch()) { $arResult['values'][$strID] = (int)$arItem['ID']; $arResult['labels'][$strID] = $arItem['NAME']; } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_ELEMENT_ABSENT'); } } break; case 'section': $rsSections = CIBlockSection::GetList(array(), array('ID' => $arValues[$strID]), false, array('ID', 'NAME')); if (is_array($arValues[$strID])) { $arCheckResult = array(); while ($arSection = $rsSections->Fetch()) { $arCheckResult[(int)$arSection['ID']] = $arSection['NAME']; } if (!empty($arCheckResult)) { $arResult['values'][$strID] = array_keys($arCheckResult); $arResult['labels'][$strID] = array_values($arCheckResult); } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_SECTION_ABSENT_MULTI'); } } else { if ($arSection = $rsSections->Fetch()) { $arResult['values'][$strID] = (int)$arSection['ID']; $arResult['labels'][$strID] = $arSection['NAME']; } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_SECTION_ABSENT'); } } break; case 'iblock': if (is_array($arValues[$strID])) { $arCheckResult = array(); foreach ($arValues[$strID] as &$intIBlockID) { $strName = CIBlock::GetArrayByID($intIBlockID, 'NAME'); if ($strName !== false && $strName !== null) { $arCheckResult[$intIBlockID] = $strName; } } if (isset($intIBlockID)) unset($intIBlockID); if (!empty($arCheckResult)) { $arResult['values'][$strID] = array_keys($arCheckResult); $arResult['labels'][$strID] = array_values($arCheckResult); } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_IBLOCK_ABSENT_MULTI'); } } else { $strName = CIBlock::GetArrayByID($arValues[$strID], 'NAME'); if ($strName !== false && $strName !== null) { $arResult['values'][$strID] = $arValues[$strID]; $arResult['labels'][$strID] = $strName; } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_IBLOCK_ABSENT'); } } break; case 'user': if ($userNameFormat === null) $userNameFormat = CSite::GetNameFormat(true); if (is_array($arValues[$strID])) { $arCheckResult = array(); $userIterator = UserTable::getList(array( 'select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL'), 'filter' => array('ID' => $arValues[$strID]) )); while ($user = $userIterator->fetch()) { $user['ID'] = (int)$user['ID']; $arCheckResult[$user['ID']] = CUser::FormatName($userNameFormat, $user); } if (!empty($arCheckResult)) { $arResult['values'][$strID] = array_keys($arCheckResult); $arResult['labels'][$strID] = array_values($arCheckResult); } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_USER_ABSENT_MULTI'); } } else { $userIterator = UserTable::getList(array( 'select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL'), 'filter' => array('ID' => $arValues[$strID]) )); if ($user = $userIterator->fetch()) { $arResult['values'] = (int)$user['ID']; $arResult['labels'] = CUser::FormatName($userNameFormat, $user); } else { $boolError = true; $arMsg[] = Loc::getMessage('BT_MOD_COND_ERR_CHECK_DATA_USER_ABSENT'); } } break; } } if (isset($arOneAtom)) unset($arOneAtom); } else { foreach ($arControl['ATOMS'] as &$arOneAtom) { $strID = $arOneAtom['ATOM']['ID']; if (!isset($arOneAtom['ATOM']['VALIDATE']) || empty($arOneAtom['ATOM']['VALIDATE'])) { $arResult['values'][$strID] = $arValues[$strID]; continue; } switch ($arOneAtom['ATOM']['VALIDATE']) { case 'list': if (isset($arOneAtom['JS']) && isset($arOneAtom['JS']['values']) && !empty($arOneAtom['JS']['values'])) { if (is_array($arValues[$strID])) { $arCheckResult = array(); foreach ($arValues[$strID] as &$strValue) { if (isset($arOneAtom['JS']['values'][$strValue])) $arCheckResult[] = $strValue; } if (isset($strValue)) unset($strValue); if (!empty($arCheckResult)) { $arResult['values'][$strID] = $arCheckResult; } else { $boolError = true; } } else { if (isset($arOneAtom['JS']['values'][$arValues[$strID]])) { $arResult['values'][$strID] = $arValues[$strID]; } else { $boolError = true; } } } else { $boolError = true; } break; case 'element': $rsItems = CIBlockElement::GetList(array(), array('ID' => $arValues[$strID]), false, false, array('ID')); if (is_array($arValues[$strID])) { $arCheckResult = array(); while ($arItem = $rsItems->Fetch()) { $arCheckResult[] = (int)$arItem['ID']; } if (!empty($arCheckResult)) { $arResult['values'][$strID] = $arCheckResult; } else { $boolError = true; } } else { if ($arItem = $rsItems->Fetch()) { $arResult['values'][$strID] = (int)$arItem['ID']; } else { $boolError = true; } } break; case 'section': $rsSections = CIBlockSection::GetList(array(), array('ID' => $arValues[$strID]), false, array('ID')); if (is_array($arValues[$strID])) { $arCheckResult = array(); while ($arSection = $rsSections->Fetch()) { $arCheckResult[] = (int)$arSection['ID']; } if (!empty($arCheckResult)) { $arResult['values'][$strID] = $arCheckResult; } else { $boolError = true; } } else { if ($arSection = $rsSections->Fetch()) { $arResult['values'][$strID] = (int)$arSection['ID']; } else { $boolError = true; } } break; case 'iblock': if (is_array($arValues[$strID])) { $arCheckResult = array(); foreach ($arValues[$strID] as &$intIBlockID) { $strName = CIBlock::GetArrayByID($intIBlockID, 'NAME'); if ($strName !== false && $strName !== null) { $arCheckResult[] = $intIBlockID; } } if (isset($intIBlockID)) unset($intIBlockID); if (!empty($arCheckResult)) { $arResult['values'][$strID] = $arCheckResult; } else { $boolError = true; } } else { $strName = CIBlock::GetArrayByID($arValues[$strID], 'NAME'); if ($strName !== false && $strName !== null) { $arResult['values'][$strID] = $arValues[$strID]; } else { $boolError = true; } } break; case 'user': if (is_array($arValues[$strID])) { $arCheckResult = array(); $userIterator = UserTable::getList(array( 'select' => array('ID'), 'filter' => array('ID' => $arValues[$strID]) )); while ($user = $userIterator->fetch()) { $arCheckResult[] = (int)$user['ID']; } if (!empty($arCheckResult)) { $arResult['values'][$strID] = $arCheckResult; } else { $boolError = true; } } else { $userIterator = UserTable::getList(array( 'select' => array('ID'), 'filter' => array('ID' => $arValues[$strID]) )); if ($user = $userIterator->fetch()) { $arCheckResult[] = (int)$user['ID']; } else { $boolError = true; } } break; } } if (isset($arOneAtom)) unset($arOneAtom); } } if ($boolShow) { if ($boolError) { $arResult['err_cond'] = 'Y'; $arResult['err_cond_mess'] = $arMsg; } return $arResult; } else { return (!$boolError ? $arResult : false); } }
public function OnBeforeUserUpdate(&$arFields) { if ($arFields["ID"] > 0) { $arPhones = array(); $arCorrectPhones = array(); $dbViPhone = VI\PhoneTable::getList(array('select' => array('ID', 'PHONE_MNEMONIC', 'PHONE_NUMBER'), 'filter' => array('=USER_ID' => intval($arFields['ID'])))); while ($phone = $dbViPhone->fetch()) { if (strlen($phone['PHONE_MNEMONIC']) > 0) { $arPhones[$phone['PHONE_MNEMONIC']] = $phone; } } global $APPLICATION; $error = false; if (is_set($arFields, "WORK_PHONE")) { if (strlen($arFields["WORK_PHONE"]) > 0) { $arCorrectPhones["WORK_PHONE"] = CVoxImplantPhone::Normalize($arFields["WORK_PHONE"]); if (!$arCorrectPhones["WORK_PHONE"]) { $APPLICATION->throwException(GetMessage('ERROR_WORK_PHONE') . ' ' . GetMessage('ERROR_NUMBER')); $error = true; } } else { $arCorrectPhones["WORK_PHONE"] = ''; } } if (is_set($arFields, "PERSONAL_PHONE")) { if (strlen($arFields["PERSONAL_PHONE"]) > 0) { $arCorrectPhones["PERSONAL_PHONE"] = CVoxImplantPhone::Normalize($arFields["PERSONAL_PHONE"]); if (!$arCorrectPhones["PERSONAL_PHONE"]) { $APPLICATION->throwException(GetMessage('ERROR_PERSONAL_PHONE') . ' ' . GetMessage('ERROR_NUMBER')); $error = true; } } else { $arCorrectPhones["PERSONAL_PHONE"] = ''; } } if (is_set($arFields, "PERSONAL_MOBILE")) { if (strlen($arFields["PERSONAL_MOBILE"]) > 0) { $arCorrectPhones["PERSONAL_MOBILE"] = CVoxImplantPhone::Normalize($arFields["PERSONAL_MOBILE"]); if (!$arCorrectPhones["PERSONAL_MOBILE"]) { $APPLICATION->throwException(GetMessage('ERROR_PERSONAL_MOBILE') . ' ' . GetMessage('ERROR_NUMBER')); $error = true; } } else { $arCorrectPhones["PERSONAL_MOBILE"] = ''; } } if (is_set($arFields, "UF_PHONE_INNER")) { if (strlen($arFields["UF_PHONE_INNER"]) > 0) { $phoneInner = intval(preg_replace("/[^0-9]/i", "", $arFields["UF_PHONE_INNER"])); if ($phoneInner > 0 && $phoneInner < 10000) { $result = \Bitrix\Main\UserTable::getList(array('select' => array('COUNT'), 'filter' => array('!=ID' => intval($arFields['ID']), '=UF_PHONE_INNER' => $phoneInner, '=ACTIVE' => 'Y'), 'runtime' => array('COUNT' => array('data_type' => 'integer', 'expression' => array('COUNT(1)'))))); $data = $result->fetch(); if ($data['COUNT'] > 0) { $APPLICATION->throwException(GetMessage('ERROR_PHONE_INNER')); $error = true; } else { $arFields["UF_PHONE_INNER"] = $phoneInner; $arCorrectPhones["UF_PHONE_INNER"] = $phoneInner; } } else { $APPLICATION->throwException(GetMessage('ERROR_PHONE_INNER_2')); $error = true; } } else { $arCorrectPhones["UF_PHONE_INNER"] = ''; } } if ($arFields["ACTIVE"] == 'N' && CVoximplantUser::GetPhoneActive($arFields['ID'])) { $viUser = new CVoximplantUser(); $viUser->UpdateUserPassword($arFields['ID'], CVoxImplantUser::MODE_PHONE); $viUser->SetPhoneActive($arFields['ID'], false); } if (!$error) { foreach ($arCorrectPhones as $mnemonic => $phone) { if (isset($arPhones[$mnemonic])) { if ($phone != $arPhones[$mnemonic]['PHONE_NUMBER']) { if (strlen($phone) == 0) { VI\PhoneTable::delete($arPhones[$mnemonic]['ID']); } else { VI\PhoneTable::update($arPhones[$mnemonic]['ID'], array('PHONE_NUMBER' => $phone)); } } } else { if (strlen($phone) > 0) { VI\PhoneTable::add(array('USER_ID' => intval($arFields['ID']), 'PHONE_NUMBER' => $phone, 'PHONE_MNEMONIC' => $mnemonic)); } } } } else { return false; } } }
/** * @internal * @param $id * * @return bool|mixed|string * @throws \Bitrix\Main\ArgumentException */ public static function getOrderResponsibleName($id = null) { if (intval($id) < 0) { return false; } static $orderResponsibleList = array(); if (isset($orderResponsibleList[$id])) { return $orderResponsibleList[$id]; } $userIterator = \Bitrix\Main\UserTable::getList(array('select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL'), 'filter' => array('=ID' => intval($id)))); $userName = false; if ($userData = $userIterator->fetch()) { $userName = \CUser::FormatName(\CSite::GetNameFormat(true), $userData, true); $orderResponsibleList[$id] = $userName; } return $userName; }
/** * Returns list users who have sharing on this object. * @return array * @throws \Bitrix\Main\ArgumentException * @throws \Bitrix\Main\LoaderException */ public function getMembersOfSharing() { $sharings = $this->getRealObject()->getSharingsAsReal(); $members = array(); $membersToSharing = array(); foreach ($sharings as $sharing) { if ($sharing->isToDepartmentChild()) { continue; } list($type, $id) = Sharing::parseEntityValue($sharing->getToEntity()); $members[$type][] = $id; $membersToSharing[$type . '|' . $id] = $sharing; } unset($sharing); $enabledSocialnetwork = Loader::includeModule('socialnetwork'); $entityList = array(); foreach (SharingTable::getListOfTypeValues() as $type) { if (empty($members[$type])) { continue; } if ($type == SharingTable::TYPE_TO_USER) { $query = \Bitrix\Main\UserTable::getList(array('select' => array('ID', 'PERSONAL_PHOTO', 'NAME', 'LOGIN', 'LAST_NAME', 'SECOND_NAME'), 'filter' => array('ID' => array_values($members[$type])))); while ($userRow = $query->fetch()) { /** @var Sharing $sharing */ $sharing = $membersToSharing[$type . '|' . $userRow['ID']]; $entityList[] = array('entityId' => Sharing::CODE_USER . $userRow['ID'], 'name' => \CUser::formatName('#NAME# #LAST_NAME#', array("NAME" => $userRow['NAME'], "LAST_NAME" => $userRow['LAST_NAME'], "SECOND_NAME" => $userRow['SECOND_NAME'], "LOGIN" => $userRow['LOGIN']), false), 'right' => $sharing->getTaskName(), 'avatar' => Avatar::getPerson($userRow['PERSONAL_PHOTO']), 'type' => 'users'); } } elseif ($type == SharingTable::TYPE_TO_GROUP && $enabledSocialnetwork) { $query = \CSocNetGroup::getList(array(), array('ID' => array_values($members[$type])), false, false, array('ID', 'IMAGE_ID', 'NAME')); while ($query && ($groupRow = $query->fetch())) { /** @var Sharing $sharing */ $sharing = $membersToSharing[$type . '|' . $groupRow['ID']]; $entityList[] = array('entityId' => Sharing::CODE_SOCNET_GROUP . $groupRow['ID'], 'name' => $groupRow['NAME'], 'right' => $sharing->getTaskName(), 'avatar' => Avatar::getGroup($groupRow['IMAGE_ID']), 'type' => 'groups'); } } elseif ($type == SharingTable::TYPE_TO_DEPARTMENT && $enabledSocialnetwork) { // intranet structure $structure = \CSocNetLogDestination::getStucture(); foreach (array_values($members[$type]) as $departmentId) { if (empty($structure['department']['DR' . $departmentId])) { continue; } /** @var Sharing $sharing */ $sharing = $membersToSharing[$type . '|' . $departmentId]; $entityList[] = array('entityId' => Sharing::CODE_DEPARTMENT . $departmentId, 'name' => $structure['department']['DR' . $departmentId]['name'], 'right' => $sharing->getTaskName(), 'avatar' => Avatar::getDefaultGroup(), 'type' => 'department'); } unset($departmentId); } } unset($type); return $entityList; }
$arFilter["!UF_DEPARTMENT"] = false; } elseif (IsModuleInstalled("extranet") && $showExtranetUsers != SHOW_ALL) { if ($showExtranetUsers == SHOW_FROM_MY_GROUPS && CModule::IncludeModule("extranet")) { $arFilteredUserIDs = CExtranet::GetMyGroupsUsersSimple(CExtranet::GetExtranetSiteID()); } elseif ($showExtranetUsers == SHOW_FROM_EXACT_GROUP) { $arFilteredUserIDs = array(); if (CModule::IncludeModule("socialnetwork")) { $dbUsers = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => array($exGroupID), "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("ID", "USER_ID")); if ($dbUsers) { while ($arUser = $dbUsers->GetNext()) { $arFilteredUserIDs[] = $arUser["USER_ID"]; } } } } if (is_array($arFilteredUserIDs) && empty($arFilteredUserIDs)) { $arFilter["!UF_DEPARTMENT"] = false; } elseif (is_array($arFilteredUserIDs)) { $arFilter[] = array('LOGIC' => 'OR', '!UF_DEPARTMENT' => false, 'ID' => $arFilteredUserIDs); } } $arFilter["CONFIRM_CODE"] = false; $dbRes = \Bitrix\Main\UserTable::getList(array('order' => array('SORT_WEIGHT' => 'DESC', 'LAST_NAME' => 'ASC', 'NAME' => 'ASC'), 'filter' => $arFilter, 'select' => array("ID", "NAME", "LAST_NAME", "SECOND_NAME", "EMAIL", "LOGIN", "WORK_POSITION", "PERSONAL_PROFESSION", "PERSONAL_PHOTO", "PERSONAL_GENDER", "UF_DEPARTMENT", $sortWeight), 'limit' => 10, 'data_doubling' => false)); while ($arRes = $dbRes->fetch()) { $arUsers[] = array('ID' => $arRes['ID'], 'NAME' => CUser::FormatName($nameTemplate, $arRes, $bUseLogin, false), 'LOGIN' => $arRes['LOGIN'], 'EMAIL' => $arRes['EMAIL'], 'WORK_POSITION' => $arRes['WORK_POSITION'] ? $arRes['WORK_POSITION'] : $arRes['PERSONAL_PROFESSION'], 'PHOTO' => (string) CIntranetUtils::createAvatar($arRes, array()), 'HEAD' => false, 'UF_DEPARTMENT' => $arRes['UF_DEPARTMENT'], 'SUBORDINATE' => is_array($arSubDeps) && is_array($arRes['UF_DEPARTMENT']) && array_intersect($arRes['UF_DEPARTMENT'], $arSubDeps) ? 'Y' : 'N', 'SUPERORDINATE' => in_array($arRes["ID"], $arManagers) ? 'Y' : 'N'); } } Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); echo CUtil::PhpToJsObject(array_values(array_filter($arUsers, array('CIntranetUserSelectorHelper', 'filterViewableUsers')))); die; }
public static function SearchUsers($search, $nameTemplate = "", $bSelf = true, $bEmployeesOnly = false, $bExtranetOnly = false, $departmentId = false) { CUtil::JSPostUnescape(); $arUsers = array(); $search = trim($search); if (strlen($search) <= 0 || !GetFilterQuery("TEST", $search)) { return $arUsers; } $bIntranetEnable = IsModuleInstalled('intranet'); $bExtranetEnable = CModule::IncludeModule('extranet'); $bBitrix24Enable = IsModuleInstalled('bitrix24'); $bExtranetUser = $bExtranetEnable && !CExtranet::IsIntranetUser(); $current_user_id = intval($GLOBALS["USER"]->GetID()); if ($bExtranetEnable) { CSocNetTools::InitGlobalExtranetArrays(); } $arSearchValue = preg_split('/\\s+/', trim(ToUpper($search))); array_walk($arSearchValue, array('CSocNetLogDestination', '__percent_walk')); $arFilter = array(array('LOGIC' => 'OR', 'NAME' => $arSearchValue, 'LAST_NAME' => $arSearchValue, '%=EMAIL' => $search, '%=LOGIN' => $search), 'ACTIVE' => 'Y'); if ($bIntranetEnable || COption::GetOptionString("main", "new_user_registration_email_confirmation", "N") == "Y") { $arFilter["CONFIRM_CODE"] = false; } if ($bEmployeesOnly || $bBitrix24Enable && !$bExtranetEnable) { $arFilter["!UF_DEPARTMENT"] = false; } elseif ($bExtranetOnly) { $arFilter["UF_DEPARTMENT"] = false; } if ($bIntranetEnable && $bExtranetEnable && ($bExtranetUser || !$bEmployeesOnly)) { $arFilteredUserIDs = CExtranet::GetMyGroupsUsersSimple(CExtranet::GetExtranetSiteID()); if ($bExtranetUser) { $arFilter["ID"] = array_merge(array($current_user_id), $arFilteredUserIDs); } else { $arFilter[] = array('LOGIC' => 'OR', '!UF_DEPARTMENT' => false, 'ID' => array_merge(array($current_user_id), $arFilteredUserIDs)); } } $arSelect = array("ID", "NAME", "LAST_NAME", "SECOND_NAME", "EMAIL", "LOGIN", "WORK_POSITION", "PERSONAL_PROFESSION", "PERSONAL_PHOTO", "PERSONAL_GENDER", new \Bitrix\Main\Entity\ExpressionField('MAX_LAST_USE_DATE', 'MAX(%s)', array('\\Bitrix\\Main\\FinderDest:CODE_USER_CURRENT.LAST_USE_DATE'))); // $arFilter["\Bitrix\Main\FinderDest:CODE_USER_CURRENT.USER_ID"] = array(false, intval($GLOBALS["USER"]->GetID())); $helper = \Bitrix\Main\Application::getConnection()->getSqlHelper(); $connection = \Bitrix\Main\Application::getConnection(); $castType = $connection instanceof \Bitrix\Main\DB\MysqlCommonConnection ? 'UNSIGNED' : 'INT'; $arFilter["@ID"] = new \Bitrix\Main\DB\SqlExpression(' (SELECT CAST(' . $helper->quote("MAIN_USER_TMP20258") . '.' . $helper->quote("ID") . ' AS ' . $castType . ') AS ' . $helper->quote("ID") . ' FROM b_user ' . $helper->quote("MAIN_USER_TMP20258") . ' LEFT JOIN b_finder_dest ' . $helper->quote("TALIAS_1_TMP20258") . ' ON ' . $helper->quote("TALIAS_1_TMP20258") . '.' . $helper->quote("CODE_USER_ID") . ' = ' . $helper->quote("MAIN_USER_TMP20258") . '.' . $helper->quote("ID") . ' AND ' . $helper->quote("TALIAS_1_TMP20258") . '.' . $helper->quote("USER_ID") . ' = ' . intval($GLOBALS["USER"]->GetID()) . ' WHERE ( ' . $helper->quote("TALIAS_1_TMP20258") . '.' . $helper->quote("USER_ID") . ' IS NULL or ' . $helper->quote("TALIAS_1_TMP20258") . '.' . $helper->quote("USER_ID") . ' in (0, ' . intval($GLOBALS["USER"]->GetID()) . ') ) )'); $rsUser = \Bitrix\Main\UserTable::getList(array('order' => array("\\Bitrix\\Main\\FinderDest:CODE_USER_CURRENT.LAST_USE_DATE" => 'DESC', 'LAST_NAME' => 'ASC'), 'filter' => $arFilter, 'select' => $arSelect, 'limit' => 50, 'data_doubling' => false)); while ($arUser = $rsUser->fetch()) { if (!$bSelf && $current_user_id == $arUser['ID']) { continue; } if (intval($departmentId) > 0) { $arUserGroupCode = CAccess::GetUserCodesArray($arUser["ID"]); if (!in_array("DR" . intval($departmentId), $arUserGroupCode)) { continue; } } $sName = CUser::FormatName(empty($nameTemplate) ? CSite::GetNameFormat(false) : $nameTemplate, $arUser, true, true); $arFileTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 32, 'height' => 32), BX_RESIZE_IMAGE_EXACT, false); $arUsers['U' . $arUser["ID"]] = array('id' => 'U' . $arUser["ID"], 'entityId' => $arUser["ID"], 'name' => $sName, 'avatar' => empty($arFileTmp['src']) ? '' : $arFileTmp['src'], 'desc' => $arUser['WORK_POSITION'] ? $arUser['WORK_POSITION'] : ($arUser['PERSONAL_PROFESSION'] ? $arUser['PERSONAL_PROFESSION'] : ' '), 'isExtranet' => isset($GLOBALS["arExtranetUserID"]) && is_array($GLOBALS["arExtranetUserID"]) && in_array($arUser["ID"], $GLOBALS["arExtranetUserID"]) ? "Y" : "N"); $checksum = md5(serialize($arUsers['U' . $arUser["ID"]])); $arUsers['U' . $arUser["ID"]]['checksum'] = $checksum; } return $arUsers; }
function GetFormatedUserName($userId, $bEnableId = true, $createEditLink = true) { static $formattedUsersName = array(); static $siteNameFormat = ''; $result = !is_array($userId) ? '' : array(); $newUsers = array(); if (is_array($userId)) { foreach ($userId as $id) { if (!isset($formattedUsersName[$id])) { $newUsers[] = $id; } } } else { if (!isset($formattedUsersName[$userId])) { $newUsers[] = $userId; } } if (count($newUsers) > 0) { $resUsers = \Bitrix\Main\UserTable::getList(array('select' => array('ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'EMAIL'), 'filter' => array('ID' => $newUsers))); while ($arUser = $resUsers->Fetch()) { if (strlen($siteNameFormat) == 0) { $siteNameFormat = CSite::GetNameFormat(false); } $formattedUsersName[$arUser['ID']] = CUser::FormatName($siteNameFormat, $arUser, true, true); } } if (is_array($userId)) { foreach ($userId as $uId) { $formatted = ''; if ($bEnableId) { $formatted = '[<a href="/bitrix/admin/user_edit.php?ID=' . $uId . '&lang=' . LANGUAGE_ID . '">' . $uId . '</a>] '; } if (CBXFeatures::IsFeatureEnabled('SaleAccounts') && !$createEditLink) { $formatted .= '<a href="/bitrix/admin/sale_buyers_profile.php?USER_ID=' . $uId . '&lang=' . LANGUAGE_ID . '">'; } else { $formatted .= '<a href="/bitrix/admin/user_edit.php?ID=' . $uId . '&lang=' . LANGUAGE_ID . '">'; } $formatted .= $formattedUsersName[$uId]; $formatted .= '</a>'; $result[$uId] = $formatted; } } else { if ($bEnableId) { $result .= '[<a href="/bitrix/admin/user_edit.php?ID=' . $userId . '&lang=' . LANGUAGE_ID . '">' . $userId . '</a>] '; } if (CBXFeatures::IsFeatureEnabled('SaleAccounts') && !$createEditLink) { $result .= '<a href="/bitrix/admin/sale_buyers_profile.php?USER_ID=' . $userId . '&lang=' . LANGUAGE_ID . '">'; } else { $result .= '<a href="/bitrix/admin/user_edit.php?ID=' . $userId . '&lang=' . LANGUAGE_ID . '">'; } $result .= $formattedUsersName[$userId]; $result .= '</a>'; } return $result; }
protected static function getUserGroups($userId) { $userId = (int) $userId; if ($userId < 0) { return false; } if (!isset(self::$userCache[$userId])) { if ($userId == 0) { self::$userCache[$userId] = array(2); } else { self::$userCache[$userId] = false; $userIterator = Main\UserTable::getList(array('select' => array('ID'), 'filter' => array('=ID' => $userId))); if ($user = $userIterator->fetch()) { $user['ID'] = (int) $user['ID']; self::$userCache[$user['ID']] = CUser::GetUserGroup($user['ID']); } unset($user, $userIterator); } } return self::$userCache[$userId]; }
//load order $boolLocked = \Bitrix\Sale\Order::isLocked($ID); if ($boolLocked) { $r = \Bitrix\Sale\Order::getLockedStatus($ID); if ($r->isSuccess()) { $lockResult = $r->getData(); if (array_key_exists('LOCKED_BY', $lockResult) && intval($lockResult['LOCKED_BY']) > 0) { $intLockUserID = intval($lockResult['LOCKED_BY']); } if (array_key_exists('DATE_LOCK', $lockResult) && $lockResult['DATE_LOCK'] instanceof \Bitrix\Main\Type\DateTime) { $strLockTime = $lockResult['DATE_LOCK']->toString(); } } $strLockUser = $intLockUserID; $strLockUserInfo = $intLockUserID; $userIterator = \Bitrix\Main\UserTable::getList(array('select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL'), 'filter' => array('=ID' => $intLockUserID))); if ($arOneUser = $userIterator->fetch()) { $strLockUser = CUser::FormatName($strNameFormat, $arOneUser); $strLockUserInfo = '<a href="/bitrix/admin/user_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $intLockUserID . '">' . $strLockUser . '</a>'; } unset($arOneUser, $userIterator); $result->addError(new \Bitrix\Main\Entity\EntityError(GetMessage('SOE_ORDER_LOCKED2', array('#ID#' => $strLockUserInfo, '#DATE#' => $strLockTime)))); } $allowedStatusesView = array(); $order = Bitrix\Sale\Order::load($_REQUEST["ID"]); if ($order) { $allowedStatusesView = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($USER->GetID(), array('view')); } if (!$order || !in_array($order->getField("STATUS_ID"), $allowedStatusesView)) { LocalRedirect("/bitrix/admin/sale_order.php?lang=" . LANGUAGE_ID . GetFilterParams("filter_", false)); }
$clearStoreUser = (int) Option::get('catalog', 'clear_store_user'); if ($clearStoreUser < 0) { $clearStoreUser = 0; } $userListID[$clearStoreUser] = true; if (isset($userListID[0])) { unset($userListID[0]); } if (!empty($userListID)) { $strClearQuantityDate = Option::get('catalog', 'clear_quantity_date'); $strClearQuantityReservedDate = Option::get('catalog', 'clear_reserved_quantity_date'); $strClearStoreDate = Option::get('catalog', 'clear_store_date'); $arUserList = array(); $strNameFormat = CSite::GetNameFormat(true); $canViewUserList = $USER->CanDoOperation('view_subordinate_users') || $USER->CanDoOperation('view_all_users') || $USER->CanDoOperation('edit_all_users') || $USER->CanDoOperation('edit_subordinate_users'); $userIterator = Main\UserTable::getList(array('select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME'), 'filter' => array('ID' => array_keys($userListID)))); while ($arOneUser = $userIterator->fetch()) { $arOneUser['ID'] = (int) $arOneUser['ID']; if ($canViewUserList) { $arUserList[$arOneUser['ID']] = '<a href="/bitrix/admin/user_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $arOneUser['ID'] . '">' . CUser::FormatName($strNameFormat, $arOneUser) . '</a>'; } else { $arUserList[$arOneUser['ID']] = CUser::FormatName($strNameFormat, $arOneUser); } } unset($arOneUser, $userIterator, $canViewUserList); if (isset($arUserList[$clearQuantityUser])) { $strQuantityUser = $arUserList[$clearQuantityUser]; } if (isset($arUserList[$clearQuantityReservedUser])) { $strQuantityReservedUser = $arUserList[$clearQuantityReservedUser]; }
$rsPosts = CBlogPost::GetList(array(), array('ID' => $postID, 'BLOG_ID' => $arResult['BLOG_DATA']['BLOG_ID']), false, false, array('ID', 'BLOG_ID', 'NUM_COMMENTS')); if ($postInfo = $rsPosts->Fetch()) { $postInfo['NUM_COMMENTS'] = (int) $postInfo['NUM_COMMENTS']; if ($postInfo['NUM_COMMENTS'] >= 0 && $postInfo['NUM_COMMENTS'] != $commentsCount) { CIBlockElement::SetPropertyValues($arResult['ELEMENT']['ID'], $arResult['ELEMENT']['IBLOCK_ID'], $postInfo['NUM_COMMENTS'], $arResult['BLOG_DATA']['BLOG_COMMENTS_COUNT_PROP']); $commentsCount = $postInfo['NUM_COMMENTS']; } } else { $postID = 0; } unset($rsPosts); } if ($postID == 0 && $arParams['BLOG_FROM_AJAX'] === 'N') { $ownerID = 1; if (!empty($arResult['ELEMENT']['CREATED_BY'])) { $ownersIterator = Main\UserTable::getList(array('select' => array('ID'), 'filter' => array('=ID' => $arResult['ELEMENT']['CREATED_BY']))); if ($owner = $ownersIterator->fetch()) { $ownerID = $owner['ID']; } unset($owner, $ownersIterator); } $arFields = array('TITLE' => $arResult['ELEMENT']['~NAME'], 'DETAIL_TEXT' => "[URL=http://" . $_SERVER['HTTP_HOST'] . $arResult["ELEMENT"]["~DETAIL_PAGE_URL"] . "]" . $arResult["ELEMENT"]["~NAME"] . "[/URL]\n" . ($arResult["ELEMENT"]["~PREVIEW_TEXT"] != '' ? $arResult["ELEMENT"]["~PREVIEW_TEXT"] : '') . "\n", 'PUBLISH_STATUS' => BLOG_PUBLISH_STATUS_PUBLISH, "PERMS_POST" => array(), "PERMS_COMMENT" => array(), "=DATE_CREATE" => $DB->GetNowFunction(), "=DATE_PUBLISH" => $DB->GetNowFunction(), "AUTHOR_ID" => $ownerID, "BLOG_ID" => $arResult['BLOG_DATA']['BLOG_ID'], "ENABLE_TRACKBACK" => "N"); $postID = (int) CBlogPost::Add($arFields); if ($postID > 0) { CIBlockElement::SetPropertyValues($arResult['ELEMENT']['ID'], $arResult['ELEMENT']['IBLOCK_ID'], $postID, $arResult['BLOG_DATA']['BLOG_POST_ID_PROP']); } } $arResult['BLOG_DATA']['BLOG_POST_ID'] = $postID; $arResult['COMMENT_ID'] = $postID; } $protocol = CMain::IsHTTPS() ? 'https://' : 'http://';
public function Authorize() { global $APPLICATION; $APPLICATION->RestartBuffer(); $bSuccess = false; $authError = SOCSERV_AUTHORISATION_ERROR; if (isset($_REQUEST["code"]) && $_REQUEST["code"] != '' && CSocServAuthManager::CheckUniqueKey()) { if (IsModuleInstalled('bitrix24') && defined('BX24_HOST_NAME')) { $redirect_uri = static::CONTROLLER_URL . "/redirect.php"; } else { $redirect_uri = CSocServUtil::ServerName() . "/bitrix/tools/oauth/google.php"; } $this->entityOAuth = $this->getEntityOAuth($_REQUEST['code']); if ($this->entityOAuth->GetAccessToken($redirect_uri) !== false) { $arGoogleUser = $this->entityOAuth->GetCurrentUser(); if (is_array($arGoogleUser)) { $first_name = ""; $last_name = ""; if (is_array($arGoogleUser['name'])) { $first_name = $arGoogleUser['name']['givenName']; $last_name = $arGoogleUser['name']['familyName']; } elseif ($arGoogleUser['name'] != '') { $aName = explode(" ", $arGoogleUser['name']); if ($arGoogleUser['given_name'] != '') { $first_name = $arGoogleUser['given_name']; } else { $first_name = $aName[0]; } if ($arGoogleUser['family_name'] != '') { $last_name = $arGoogleUser['family_name']; } elseif (isset($aName[1])) { $last_name = $aName[1]; } } $id = $arGoogleUser['id']; $email = $arGoogleUser['email']; if (strlen($arGoogleUser['email']) > 0) { $dbRes = \Bitrix\Main\UserTable::getList(array('filter' => array('=EXTERNAL_AUTH_ID' => 'socservices', '=XML_ID' => $email), 'select' => array('ID'), 'limit' => 1)); if ($dbRes->fetch()) { $id = $email; } } $arFields = array('EXTERNAL_AUTH_ID' => static::ID, 'XML_ID' => $id, 'LOGIN' => static::LOGIN_PREFIX . $id, 'EMAIL' => $email, 'NAME' => $first_name, 'LAST_NAME' => $last_name, 'OATOKEN' => $this->entityOAuth->getToken(), 'OATOKEN_EXPIRES' => $this->entityOAuth->getAccessTokenExpires(), 'REFRESH_TOKEN' => $this->entityOAuth->getRefreshToken()); if ($arGoogleUser['gender'] != '') { if ($arGoogleUser['gender'] == 'male') { $arFields["PERSONAL_GENDER"] = 'M'; } elseif ($arGoogleUser['gender'] == 'female') { $arFields["PERSONAL_GENDER"] = 'F'; } } if (isset($arGoogleUser['picture']) && static::CheckPhotoURI($arGoogleUser['picture'])) { $arGoogleUser['picture'] = preg_replace("/\\?.*\$/", '', $arGoogleUser['picture']); $arPic = CFile::MakeFileArray($arGoogleUser['picture']); if ($arPic) { $arFields["PERSONAL_PHOTO"] = $arPic; } } $arFields["PERSONAL_WWW"] = isset($arGoogleUser['link']) ? $arGoogleUser['link'] : $arGoogleUser['url']; if (strlen(SITE_ID) > 0) { $arFields["SITE_ID"] = SITE_ID; } $authError = $this->AuthorizeUser($arFields); $bSuccess = $authError === true; } } } $url = $APPLICATION->GetCurDir() == "/login/" ? "" : $APPLICATION->GetCurDir(); $aRemove = array("logout", "auth_service_error", "auth_service_id", "code", "error_reason", "error", "error_description", "check_key", "current_fieldset"); $mode = 'opener'; if (isset($_REQUEST["state"])) { $arState = array(); parse_str($_REQUEST["state"], $arState); if (isset($arState['backurl']) || isset($arState['redirect_url'])) { $parseUrl = parse_url(!empty($arState['redirect_url']) ? $arState['redirect_url'] : $arState['backurl']); $urlPath = $parseUrl["path"]; $arUrlQuery = explode('&', $parseUrl["query"]); foreach ($arUrlQuery as $key => $value) { foreach ($aRemove as $param) { if (strpos($value, $param . "=") === 0) { unset($arUrlQuery[$key]); break; } } } $url = !empty($arUrlQuery) ? $urlPath . '?' . implode("&", $arUrlQuery) : $urlPath; } if (isset($arState['mode'])) { $mode = $arState['mode']; } } if ($authError === SOCSERV_REGISTRATION_DENY) { $url = preg_match("/\\?/", $url) ? $url . '&' : $url . '?'; $url .= 'auth_service_id=' . static::ID . '&auth_service_error=' . SOCSERV_REGISTRATION_DENY; } elseif ($bSuccess !== true) { $url = isset($urlPath) ? $urlPath . '?auth_service_id=' . static::ID . '&auth_service_error=' . $authError : $APPLICATION->GetCurPageParam('auth_service_id=' . static::ID . '&auth_service_error=' . $authError, $aRemove); } if (CModule::IncludeModule("socialnetwork") && strpos($url, "current_fieldset=") === false) { $url = preg_match("/\\?/", $url) ? $url . "¤t_fieldset=SOCSERV" : $url . "?current_fieldset=SOCSERV"; } $url = CUtil::JSEscape($url); $location = $mode == "opener" ? 'if(window.opener) window.opener.location = \'' . $url . '\'; window.close();' : ' window.location = \'' . $url . '\';'; $JSScript = ' <script type="text/javascript"> ' . $location . ' </script> '; echo $JSScript; die; }
public static function collectUFValues($rows, $columnInfo, $total) { // uf columns $fileColumns = array(); $diskFileColumns = array(); $employeeColumns = array(); $crmColumns = array(); $crmStatusColumns = array(); $iblockElementColumns = array(); $iblockSectionColumns = array(); if (is_array($columnInfo)) { foreach ($columnInfo as $k => $cInfo) { if ($cInfo['isUF'] && is_array($cInfo['ufInfo']) && isset($cInfo['ufInfo']['USER_TYPE_ID'])) { switch ($cInfo['ufInfo']['USER_TYPE_ID']) { case 'file': $fileColumns[$k] = true; break; case 'disk_file': $diskFileColumns[$k] = true; break; case 'employee': $employeeColumns[$k] = true; break; case 'crm': $crmColumns[$k] = true; break; case 'crm_status': $crmStatusColumns[$k] = true; break; case 'iblock_element': $iblockElementColumns[$k] = true; break; case 'iblock_section': $iblockSectionColumns[$k] = true; break; } } } } $arFileID = array(); $arDiskFileID = array(); $arEmployeeID = array(); $arCrmID = array(); $arCrmStatusID = array(); $arCrmStatusEntityType = array(); $arIblockElementID = array(); $arIblockSectionID = array(); if (count($fileColumns) > 0 || count($diskFileColumns) > 0 || count($employeeColumns) > 0 || count($crmColumns) > 0 || count($crmStatusColumns) > 0 || count($iblockElementColumns) > 0 || count($iblockSectionColumns) > 0) { foreach ($rows as $row) { foreach ($row as $k => $v) { // file if (isset($fileColumns[$k])) { if (is_array($v)) { foreach ($v as $subv) { $value = intval($subv); if ($value > 0) { $arFileID[] = $value; } } } else { $value = intval($v); if ($value > 0) { $arFileID[] = $value; } } } // disk file if (isset($diskFileColumns[$k])) { if (is_array($v)) { foreach ($v as $subv) { $value = intval($subv); if ($value > 0) { $arDiskFileID[] = $value; } } } else { $value = intval($v); if ($value > 0) { $arDiskFileID[] = $value; } } } // employee if (isset($employeeColumns[$k])) { if (is_array($v)) { foreach ($v as $subv) { $value = intval($subv); if ($value > 0) { $arEmployeeID[] = $value; } } } else { $value = intval($v); if ($value > 0) { $arEmployeeID[] = $value; } } } // crm if (isset($crmColumns[$k])) { $prefixByType = array('lead' => 'L', 'contact' => 'C', 'company' => 'CO', 'deal' => 'D', 'quote' => 'Q'); $maxPrefixLength = 2; // 'CO' $singleTypePrefix = ''; if (is_array($columnInfo[$k]['ufInfo']['SETTINGS'])) { $supportedTypes = array(); foreach ($columnInfo[$k]['ufInfo']['SETTINGS'] as $type => $supported) { if ($supported === 'Y') { $supportedTypes[$type] = true; } } $supportedTypes = array_keys($supportedTypes); if (count($supportedTypes) === 1) { if (isset($prefixByType[strtolower($supportedTypes[0])])) { $singleTypePrefix = $prefixByType[strtolower($supportedTypes[0])]; } } unset($supportedTypes, $type, $supported); } if (is_array($v)) { foreach ($v as $subv) { if (strlen($subv) > 0) { $prefix = ''; if (($pos = strpos(substr($subv, 0, $maxPrefixLength + 1), '_')) !== false && $pos > 0) { $prefix = substr($subv, 0, $pos); } if (empty($prefix)) { $subv = $singleTypePrefix . '_' . $subv; } unset($prefix, $pos); $value = explode('_', trim(strval($subv))); if (strlen($value[0]) > 0 && strlen($value[1]) > 0) { if (!is_array($arCrmID[$value[0]])) { $arCrmID[$value[0]] = array(); } $arCrmID[$value[0]][] = $value[1]; } } } } else { if (strlen($v) > 0) { $prefix = ''; if (($pos = strpos(substr($v, 0, $maxPrefixLength + 1), '_')) !== false && $pos > 0) { $prefix = substr($v, 0, $pos); } if (empty($prefix)) { $v = $singleTypePrefix . '_' . $v; } unset($prefix, $pos); $value = explode('_', trim(strval($v))); if (strlen($value[0]) > 0 && strlen($value[1]) > 0) { if (!is_array($arCrmID[$value[0]])) { $arCrmID[$value[0]] = array(); } $arCrmID[$value[0]][] = $value[1]; } } } unset($maxPrefixLength); } // crm_status if (isset($crmStatusColumns[$k])) { if (!isset($arCrmStatusEntityType[$k])) { if (isset($columnInfo[$k]['ufInfo']['SETTINGS']['ENTITY_TYPE'])) { $arCrmStatusEntityType[$k] = strval($columnInfo[$k]['ufInfo']['SETTINGS']['ENTITY_TYPE']); } } if (!empty($arCrmStatusEntityType[$k])) { if (is_array($v)) { foreach ($v as $subv) { if (strlen($subv) > 0) { if (!is_array($arCrmStatusID[$arCrmStatusEntityType[$k]])) { $arCrmStatusID[$arCrmStatusEntityType[$k]] = array(); } $arCrmStatusID[$arCrmStatusEntityType[$k]][] = $subv; } } } else { if (strlen($v) > 0) { if (!is_array($arCrmStatusID[$arCrmStatusEntityType[$k]])) { $arCrmStatusID[$arCrmStatusEntityType[$k]] = array(); } $arCrmStatusID[$arCrmStatusEntityType[$k]][] = $v; } } } } // iblock_element if (isset($iblockElementColumns[$k])) { if (is_array($v)) { foreach ($v as $subv) { $value = intval($subv); if ($value > 0) { $arIblockElementID[] = $value; } } } else { $value = intval($v); if ($value > 0) { $arIblockElementID[] = $value; } } } // iblock_section if (isset($iblockSectionColumns[$k])) { if (is_array($v)) { foreach ($v as $subv) { $value = intval($subv); if ($value > 0) { $arIblockSectionID[] = $value; } } } else { $value = intval($v); if ($value > 0) { $arIblockSectionID[] = $value; } } } } } } // collect files if (count($fileColumns) > 0) { if (count($arFileID) > 0) { $arFileID = array_unique($arFileID); } $i = 0; $cnt = 0; $stepCnt = 500; $nIDs = count($arFileID); $arID = array(); $file = new CFile(); foreach ($arFileID as $fileID) { $arID[$cnt++] = $fileID; $i++; if ($cnt === $stepCnt || $i === $nIDs) { $res = $file->GetList(array(), array('@ID' => implode(',', $arID))); if (is_object($res)) { while ($arFile = $res->Fetch()) { if ($arFile) { if (array_key_exists("~src", $arFile)) { if ($arFile["~src"]) { $arFile["SRC"] = $arFile["~src"]; } else { $arFile["SRC"] = $file->GetFileSRC($arFile, false, false); } } else { $arFile["SRC"] = $file->GetFileSRC($arFile, false); } self::$ufFiles[intval($arFile['ID'])] = $arFile; } } } $cnt = 0; $arID = array(); } } } // collect disk files if (count($diskFileColumns) > 0) { if (count($arDiskFileID) > 0) { $arDiskFileID = array_unique($arDiskFileID); } $i = 0; $cnt = 0; $stepCnt = 500; $nIDs = count($arDiskFileID); $arID = array(); foreach ($arDiskFileID as $diskFileID) { $arID[$cnt++] = $diskFileID; $i++; if ($cnt === $stepCnt || $i === $nIDs) { $res = \Bitrix\Disk\AttachedObject::getList(array('filter' => array('ID' => $arID), 'select' => array('ID', 'NAME' => 'OBJECT.NAME', 'SIZE' => 'OBJECT.SIZE'))); $urlManager = \Bitrix\Disk\Driver::getInstance()->getUrlManager(); if (is_object($res)) { while ($arDiskFile = $res->Fetch()) { if ($arDiskFile) { $arDiskFile['DOWNLOAD_URL'] = $urlManager->getUrlUfController('download', array('attachedId' => $arDiskFile['ID'])); self::$ufDiskFiles[intval($arDiskFile['ID'])] = $arDiskFile; } } } $cnt = 0; $arID = array(); } } } // collect employees if (count($employeeColumns) > 0) { if (count($arEmployeeID) > 0) { $arEmployeeID = array_unique($arEmployeeID); } $i = 0; $cnt = 0; $stepCnt = 500; $nIDs = count($arEmployeeID); $arID = array(); foreach ($arEmployeeID as $employeeID) { $arID[$cnt++] = $employeeID; $i++; if ($cnt === $stepCnt || $i === $nIDs) { $res = \Bitrix\Main\UserTable::getList(array('filter' => array('ID' => $arID), 'select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'TITLE'))); if (is_object($res)) { while ($arUser = $res->fetch()) { self::$ufEmployees[intval($arUser['ID'])] = $arUser; } } $cnt = 0; $arID = array(); } } } // collect crm elements if (count($crmColumns) > 0 && CModule::IncludeModule('crm')) { foreach ($arCrmID as $typeIndex => $arSubID) { if (count($arSubID) > 0) { $arCrmID[$typeIndex] = array_unique($arSubID); } $i = 0; $cnt = 0; $stepCnt = 500; $nIDs = count($arSubID); $arID = array(); foreach ($arSubID as $crmID) { $arID[$cnt++] = $crmID; $i++; if ($cnt === $stepCnt || $i === $nIDs) { $res = null; switch ($typeIndex) { case 'L': $res = CCrmLead::GetList(array('ID' => 'DESC'), array('ID' => $arID), array('ID', 'TITLE', 'FULL_NAME', 'STATUS_ID')); break; case 'C': $res = CCrmContact::GetList(array('ID' => 'DESC'), array('ID' => $arID), array('ID', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'FULL_NAME', 'COMPANY_TITLE', 'PHOTO')); break; case 'CO': $res = CCrmCompany::GetList(array('ID' => 'DESC'), array('ID' => $arID), array('ID', 'TITLE', 'COMPANY_TYPE', 'INDUSTRY', 'LOGO')); break; case 'D': $res = CCrmDeal::GetList(array('ID' => 'DESC'), array('ID' => $arID), array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')); break; } if (is_object($res)) { while ($arCrmElement = $res->Fetch()) { self::$ufCrmElements[$typeIndex . '_' . $arCrmElement['ID']] = $arCrmElement; } } $cnt = 0; $arID = array(); } } } } // collect crm statuses if (count($crmStatusColumns) > 0 && CModule::IncludeModule('crm')) { foreach ($arCrmStatusID as $entityType => $arSubID) { if (count($arSubID) > 0) { $arCrmID[$entityType] = array_unique($arSubID); } $res = null; $res = CCrmStatus::GetStatusList($entityType); if (is_array($res) && count($res) > 0) { foreach ($arSubID as $crmStatusID) { if (isset($res[$crmStatusID])) { if (!isset(self::$ufCrmStatuses[$entityType])) { self::$ufCrmStatuses[$entityType] = array(); } } self::$ufCrmStatuses[$entityType][$crmStatusID] = $res[$crmStatusID]; } } } } // collect iblock elements if (count($iblockElementColumns) > 0 && CModule::IncludeModule('iblock')) { if (count($arIblockElementID) > 0) { $arIblockElementID = array_unique($arIblockElementID); } $i = 0; $cnt = 0; $stepCnt = 500; $nIDs = count($arIblockElementID); $arID = array(); foreach ($arIblockElementID as $iblockElementID) { $arID[$cnt++] = $iblockElementID; $i++; if ($cnt === $stepCnt || $i === $nIDs) { $res = CIBlockElement::GetList(array('SORT' => 'ASC'), array('=ID' => $arID)); if (is_object($res)) { while ($arIblockElement = $res->GetNext()) { self::$ufIblockElements[intval($arIblockElement['ID'])] = $arIblockElement; } } $cnt = 0; $arID = array(); } } } // collect iblock sections if (count($iblockSectionColumns) > 0 && CModule::IncludeModule('iblock')) { if (count($arIblockSectionID) > 0) { $arIblockSectionID = array_unique($arIblockSectionID); } $i = 0; $cnt = 0; $stepCnt = 500; $nIDs = count($arIblockSectionID); $arID = array(); foreach ($arIblockSectionID as $iblockSectionID) { $arID[$cnt++] = $iblockSectionID; $i++; if ($cnt === $stepCnt || $i === $nIDs) { $res = CIBlockSection::GetList(array('left_margin' => 'asc'), array('ID' => $arID), false, array('ID', 'NAME', 'SECTION_PAGE_URL')); if (is_object($res)) { while ($arIblockSection = $res->GetNext()) { self::$ufIblockSections[intval($arIblockSection['ID'])] = $arIblockSection; } } $cnt = 0; $arID = array(); } } } }