/** * @return array List of servers & their params */ public static function getList() { $result = array(); $shellAdapter = new ShellAdapter(); $execRes = $shellAdapter->syncExec("sudo -u root /opt/webdir/bin/wrapper_ansible_conf -o json"); $serversData = $shellAdapter->getLastOutput(); if ($execRes) { $arData = json_decode($serversData, true); //mgmt server must be first if (isset($arData["params"]) && is_array($arData["params"])) { foreach ($arData["params"] as $hostname => $server) { try { $server["BX_ENV_VER"] = static::getBxEnvVer($hostname); $bxInfo = static::getBxInfo($hostname); if (isset($bxInfo["bx_last_password_change"])) { $server["LAST_PASSWORD_CHANGE"] = $bxInfo["bx_last_password_change"]; } if (!$server["BX_ENV_VER"] || !Helper::checkBxEnvVersion($server["BX_ENV_VER"])) { $server["BX_ENV_NEED_UPDATE"] = true; } else { $server["BX_ENV_NEED_UPDATE"] = false; } } catch (ServerBxInfoException $e) { $server["BX_INFO_ERROR"] = $e->getMessage(); } $result[$hostname] = $server; } \sortByColumn($result, array("host_id" => array(SORT_NUMERIC, SORT_ASC))); } } return $result; }
public static function PrintHtml($visCountParam = 3) { sortByColumn(self::$items, "SORT"); $itemsCount = 0; $visibleCount = 0; $div = ' <div class="adm-informer" id="admin-informer" style="display: none; top:48px; left:316px;" onclick="return BX.adminInformer.OnInnerClick(event);"> <div class="adm-informer-header">' . GetMessage("MAIN_AI_NEW_NOTIF") . '</div>'; foreach (self::$items as $key => $item) { if ($itemsCount < $visCountParam || $item["ALERT"]) { $bVisible = true; $visibleCount++; } else { $bVisible = false; } $div .= self::PrintItemHtml($key, $bVisible); $itemsCount++; } $div .= ' <a href="javascript:void(0);" class="adm-informer-footer adm-informer-footer-collapsed" hidefocus="true" id="adm-informer-footer" onclick="return BX.adminInformer.ToggleExtra();" ' . ($itemsCount <= $visibleCount ? ' style="display:none;"' : '') . '>' . GetMessage('MAIN_AI_ALL_NOTIF') . ' (' . $itemsCount . ') </a> <span class="adm-informer-arrow"></span> </div> <script type="text/javascript"> BX.ready( function(){BX.adminInformer.Init(' . $visibleCount . '); } ); </script>'; return $div; }
static public function buildMenu($arParams) { if (!empty(self::$arItems)) return self::$arItems; if (isset($arParams["MENU_FILE"])) { $arMobileMenuItems = array(); require($_SERVER["DOCUMENT_ROOT"] . $arParams["MENU_FILE"]); if (!empty($arMobileMenuItems)) foreach ($arMobileMenuItems as $arItem) self::addItem($arItem); } if (isset($arParams["EVENT_NAME"])) { foreach (GetModuleEvents("mobileapp", $arParams["EVENT_NAME"], true) as $arHandler) ExecuteModuleEventEx($arHandler); } CAdminMobilePush::OnAdminMobileGetPushSettings(); sortByColumn(self::$arItems, "sort"); return self::$arItems; }
protected function getConfigStructure() { static $handlers = null; $initedHandlers = self::getRegisteredHandlers("SID"); sortByColumn($initedHandlers, array(strtoupper("NAME") => SORT_ASC)); if ($handlers === null) { $handlers = array("" => ""); foreach ($initedHandlers as $handler) { $handlers[$handler["SID"]] = $handler["NAME"] . " [" . $handler["SID"] . "]"; } } if (strlen($this->handlerInitParams["SID"]) <= 0 || $this->id <= 0) { $result = array("MAIN" => array("TITLE" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS"), "DESCRIPTION" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS_DSCR"), "ITEMS" => array("SID" => array("TYPE" => "ENUM", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_CHOOSE"), "OPTIONS" => $handlers, "ONCHANGE" => "top.BX.showWait(); if(this.form.elements['NAME'].value == '') this.form.elements['NAME'].value = this.selectedOptions[0].innerHTML.replace(/\\s*\\[.*\\]/g,''); this.form.submit();")))); } else { $handler = $this->handlerInitParams["SID"]; $result = array("MAIN" => array("TITLE" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS"), "DESCRIPTION" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS_DSCR"), "ITEMS" => array("SID" => array("TYPE" => "DELIVERY_READ_ONLY", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_CHOOSE"), "VALUE" => $handler, "VALUE_VIEW" => $handlers[$handler]), "DESCRIPTION_INNER" => array("TYPE" => "DELIVERY_READ_ONLY", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_DESCRIPTION_INNER"), "VALUE" => $this->handlerInitParams["DESCRIPTION_INNER"])))); } $serviceCurrency = $this->currency; if (\Bitrix\Main\Loader::includeModule('currency')) { $currencyList = CurrencyManager::getCurrencyList(); if (isset($currencyList[$this->currency])) { $serviceCurrency = $currencyList[$this->currency]; } unset($currencyList); } $marginTypes = array("%" => "%", "CURRENCY" => $serviceCurrency); $result["MAIN"]["ITEMS"]["MARGIN_VALUE"] = array("TYPE" => "STRING", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_MARGIN_VALUE"), "DEFAULT" => 0); $result["MAIN"]["ITEMS"]["MARGIN_TYPE"] = array("TYPE" => "ENUM", "NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_MARGIN_TYPE"), "DEFAULT" => "%", "OPTIONS" => $marginTypes); if (strlen($this->sid) > 0) { $configProfileIds = array_keys($this->handlerInitParams["PROFILES"]); } else { $configProfileIds = array(); } if (isset($this->oldConfig["CONFIG_GROUPS"])) { $groupProfileIds = array_keys($this->oldConfig["CONFIG_GROUPS"]); $intersect = array_intersect($groupProfileIds, $configProfileIds); foreach ($intersect as $pid) { unset($this->oldConfig["CONFIG_GROUPS"][$pid]); } } $oldConfig = $this->convertOldConfigToNew($this->oldConfig); if (!empty($oldConfig)) { if (isset($oldConfig["CONFIG_GROUPS"]["MAIN"])) { $oldConfig["CONFIG_GROUPS"]["MAIN_OLD"] = $oldConfig["CONFIG_GROUPS"]["MAIN"]; unset($oldConfig["CONFIG_GROUPS"]["MAIN"]); } $result = array_merge($result, $oldConfig); } return $result; }
public function __construct($arParams = false) { $this->arParams = $arParams; if (!is_array(self::$arAuthProviders)) { self::$arAuthProviders = array(); foreach (GetModuleEvents("main", "OnAuthProvidersBuildList", true) as $arEvent) { $res = ExecuteModuleEventEx($arEvent); if (is_array($res)) { if (!is_array($res[0])) { $res = array($res); } foreach ($res as $provider) { self::$arAuthProviders[$provider["ID"]] = $provider; } } } sortByColumn(self::$arAuthProviders, "SORT"); } }
public function buildMenu($arParams) { if (!empty(self::$arItems)) { return self::$arItems; } if (isset($arParams["MENU_FILE"])) { $arMobileMenuItems = array(); require $_SERVER["DOCUMENT_ROOT"] . $arParams["MENU_FILE"]; if (!empty($arMobileMenuItems)) { foreach ($arMobileMenuItems as $arItem) { self::addItem($arItem); } } } if (isset($arParams["EVENT_NAME"])) { foreach (GetModuleEvents("mobileapp", $arParams["EVENT_NAME"], true) as $arHandler) { ExecuteModuleEventEx($arHandler); } } sortByColumn(self::$arItems, "sort"); return self::$arItems; }
/** * @return array List of servers & their params */ public static function getList() { $result = array(); $shellAdapter = new ShellAdapter(); $execRes = $shellAdapter->syncExec("sudo -u root /opt/webdir/bin/wrapper_ansible_conf -o json"); $serversData = $shellAdapter->getLastOutput(); if ($execRes) { $arData = json_decode($serversData, true); //mgmt server must be first if (isset($arData["params"]) && is_array($arData["params"])) { foreach ($arData["params"] as $hostname => $server) { $server["BX_ENV_VER"] = static::getBxEnvVer($hostname); if (!$server["BX_ENV_VER"] || !Helper::checkBxEnvVersion($server["BX_ENV_VER"])) { $server["BX_ENV_NEED_UPDATE"] = true; } else { $server["BX_ENV_NEED_UPDATE"] = false; } $result[$hostname] = $server; } \sortByColumn($result, array("host_id" => array(SORT_NUMERIC, SORT_ASC))); } } return $result; }
} $sumBrutto = $arResult['SUM_BRUTTO'] = isset($orderData['PRICE']) ? $orderData['PRICE'] : 0.0; $taxSum = isset($orderData['TAX_VALUE']) ? $orderData['TAX_VALUE'] : 0.0; $sumNetto = $arResult['SUM_NETTO'] = $sumBrutto - $taxSum; if (isset($orderData['USE_VAT']) && $orderData['USE_VAT'] && $taxMode !== 'VAT') { ShowError('ERROR: TAX MODES ARE ARE MISMATCHED'); return; } $taxList = isset($orderData['TAX_LIST']) && is_array($orderData['TAX_LIST']) ? $orderData['TAX_LIST'] : array(); $taxInfo = CCrmMobileHelper::PrepareInvoiceTaxInfo($taxList, false); $arResult['TAX_INFOS'] = $taxInfo['ITEMS']; $isVATMode = $taxMode === 'VAT'; $VATName = $isVATMode && isset($taxList[0]) && isset($taxList[0]['NAME']) ? $taxList[0]['NAME'] : ''; $cartItems = isset($orderData['BASKET_ITEMS']) && isset($orderData['BASKET_ITEMS']) ? $orderData['BASKET_ITEMS'] : array(); // Recover initial row's order sortByColumn($cartItems, 'IDX'); foreach ($cartItems as &$cartItem) { $productID = isset($cartItem['PRODUCT_ID']) ? intval($cartItem['PRODUCT_ID']) : 0; if ($productID <= 0) { continue; } $productName = isset($cartItem['NAME']) ? $cartItem['NAME'] : ''; if ($productName === '') { $dbProduct = CCrmProduct::GetList(array(), array('ID' => $productID), array('NAME')); $product = $dbProduct ? $dbProduct->Fetch() : null; $productName = is_array($product) && isset($product['NAME']) ? $product['NAME'] : ''; } if ($productName === '') { continue; } $price = isset($cartItem['PRICE']) ? $cartItem['PRICE'] : 0.0;
function GetPanelHtml() { global $USER, $APPLICATION, $adminPage; if ($APPLICATION->ShowPanel === false || !$USER->IsAuthorized() && $APPLICATION->ShowPanel !== true) { return ""; } CTopPanel::InitPanelIcons(); $arPanelButtons =& $APPLICATION->arPanelButtons; $bShowPanel = false; foreach ($arPanelButtons as $arValue) { if (trim($arValue["HREF"]) != "" || is_array($arValue["MENU"]) && !empty($arValue["MENU"])) { //we have at least one button to show $bShowPanel = true; break; } } if ($bShowPanel == false) { $bShowPanel = self::IsShownForUser(); } if ($bShowPanel == false && $APPLICATION->ShowPanel !== true) { return ""; } $APPLICATION->PanelShowed = true; if (isset($_GET["back_url_admin"]) && $_GET["back_url_admin"] != "" && strpos($_GET["back_url_admin"], "/") === 0) { $_SESSION["BACK_URL_ADMIN"] = $_GET["back_url_admin"]; } $aUserOpt = CUserOptions::GetOption("admin_panel", "settings"); $aUserOptGlobal = CUserOptions::GetOption("global", "settings"); $toggleModeSet = false; if (isset($_GET["freetrix_include_areas"]) && $_GET["freetrix_include_areas"] != "") { $APPLICATION->SetShowIncludeAreas($_GET["freetrix_include_areas"] == "Y"); $toggleModeSet = true; } $params = DeleteParam(array("freetrix_include_areas", "freetrix_show_mode", "back_url_admin")); $href = $APPLICATION->GetCurPage(); $hrefEnc = htmlspecialcharsbx($href); $toggleModeDynamic = $aUserOptGlobal['panel_dynamic_mode'] == 'Y'; $toggleMode = $toggleModeDynamic && !$toggleModeSet ? $aUserOpt['edit'] == 'on' : $APPLICATION->GetShowIncludeAreas() == 'Y'; //Save if changed $old_edit = $aUserOpt['edit']; $aUserOpt['edit'] = $toggleMode ? 'on' : 'off'; if ($old_edit !== $aUserOpt['edit']) { CUserOptions::SetOption('admin_panel', 'settings', $aUserOpt); } $toggleModeLink = $hrefEnc . '?freetrix_include_areas=' . ($toggleMode ? 'N' : 'Y') . ($params != "" ? "&" . htmlspecialcharsbx($params) : ""); $result = CTopPanel::ShowPanelScripts(true); $result .= ' <!--[if lte IE 7]> <style type="text/css">#bx-panel {display:none !important;}</style> <div id="bx-panel-error">' . GetMessage("top_panel_browser") . '</div><![endif]--> <script type="text/javascript">BX.admin.dynamic_mode=' . ($toggleModeDynamic ? 'true' : 'false') . '; BX.admin.dynamic_mode_show_borders = ' . ($toggleMode ? 'true' : 'false') . ';</script> <div style="display:none; overflow:hidden;" id="bx-panel-back"></div> <div id="bx-panel"' . ($aUserOpt["collapsed"] == "on" ? ' class="bx-panel-folded"' : '') . '> <div id="bx-panel-top"> <div id="bx-panel-top-gutter"></div> <div id="bx-panel-tabs"> '; $result .= ' <a id="bx-panel-menu" href="" ' . CTopPanel::AddAttrHint(GetMessage('top_panel_start_menu_tooltip_title'), GetMessage('top_panel_start_menu_tooltip')) . '><span id="bx-panel-menu-icon"></span><span id="bx-panel-menu-text">' . GetMessage("top_panel_menu") . '</span></a><a id="bx-panel-view-tab"><span>' . GetMessage("top_panel_site") . '</span></a><a id="bx-panel-admin-tab" href="' . (isset($_SESSION["BACK_URL_ADMIN"]) && $_SESSION["BACK_URL_ADMIN"] != "" ? htmlspecialcharsbx($_SESSION["BACK_URL_ADMIN"]) . (strpos($_SESSION["BACK_URL_ADMIN"], "?") !== false ? "&" : "?") : '/freetrix/admin/index.php?lang=' . LANGUAGE_ID . '&') . 'back_url_pub=' . urlencode($href . ($params != "" ? "?" . $params : "")) . '"><span>' . GetMessage("top_panel_admin") . '</span></a>'; $back_url = CUtil::JSUrlEscape(CUtil::addslashes($href . ($params != "" ? "?" . $params : ""))); $arStartMenuParams = array('DIV' => 'bx-panel-menu', 'ACTIVE_CLASS' => 'bx-pressed', 'MENU_URL' => '/freetrix/admin/get_start_menu.php?lang=' . LANGUAGE_ID . '&back_url_pub=' . urlencode($back_url) . '&' . freetrix_sessid_get(), 'MENU_PRELOAD' => $aUserOptGlobal["start_menu_preload"] == 'Y'); $result .= '<script type="text/javascript">BX.message({MENU_ENABLE_TOOLTIP: ' . ($aUserOptGlobal['start_menu_title'] != 'N' ? 'true' : 'false') . '}); new BX.COpener(' . CUtil::PhpToJsObject($arStartMenuParams) . ');</script>'; $hkInstance = CHotKeys::getInstance(); $Execs = $hkInstance->GetCodeByClassName("top_panel_menu", GetMessage("top_panel_menu")); $result .= $hkInstance->PrintJSExecs($Execs); $Execs = $hkInstance->GetCodeByClassName("top_panel_admin", GetMessage("top_panel_admin")); $result .= $hkInstance->PrintJSExecs($Execs); if ($USER->CanDoOperation("cache_control")) { $result .= '<a id="bx-panel-clear-cache" href="" onclick="BX.clearCache(); return false;"><span id="bx-panel-clear-cache-icon"></span><span id="bx-panel-clear-cache-text">' . GetMessage("top_panel_cache_new_tooltip_title") . '</span></a>'; } $result .= ' </div> <div id="bx-panel-userinfo"> '; $bCanProfile = $USER->CanDoOperation('view_own_profile') || $USER->CanDoOperation('edit_own_profile'); $userName = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $USER->GetFirstName(), "LAST_NAME" => $USER->GetLastName(), "SECOND_NAME" => $USER->GetSecondName(), "LOGIN" => $USER->GetLogin()), $bUseLogin = true, $bHTMLSpec = true); if ($bCanProfile) { $result .= '<a href="/freetrix/admin/user_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $USER->GetID() . '" id="bx-panel-user" ' . CTopPanel::AddAttrHint(GetMessage('top_panel_profile_tooltip')) . '><span id="bx-panel-user-icon"></span><span id="bx-panel-user-text">' . $userName . '</span></a>'; } else { $result .= '<a id="bx-panel-user"><span id="bx-panel-user-icon"></span><span id="bx-panel-user-text">' . $userName . '</span></a>'; } $result .= '<a href="' . $hrefEnc . '?logout=yes' . htmlspecialcharsbx(($s = DeleteParam(array("logout"))) == "" ? "" : "&" . $s) . '" id="bx-panel-logout" ' . CTopPanel::AddAttrHint(GetMessage('top_panel_logout_tooltip') . $hkInstance->GetTitle("bx-panel-logout", true)) . '>' . GetMessage("top_panel_logout") . '</a>'; $toggleCaptionOn = '<span id="bx-panel-toggle-caption-mode-on">' . GetMessage("top_panel_on") . '</span>'; $toggleCaptionOff = '<span id="bx-panel-toggle-caption-mode-off">' . GetMessage("top_panel_off") . '</span>'; $toggleCaptions = $toggleMode ? $toggleCaptionOn . $toggleCaptionOff : $toggleCaptionOff . $toggleCaptionOn; $toogle = '<a href="' . $toggleModeLink . '" id="bx-panel-toggle" class="bx-panel-toggle' . ($toggleMode ? '-on' : '-off') . '"' . ($toggleModeDynamic ? '' : ' ' . CTopPanel::AddAttrHint(GetMessage("top_panel_edit_mode_new_tooltip_title"), GetMessage('top_panel_toggle_tooltip') . $hkInstance->GetTitle("bx-panel-small-toggle", true))) . '><span id="bx-panel-switcher-gutter-left"></span><span id="bx-panel-toggle-indicator"><span id="bx-panel-toggle-icon"></span><span id="bx-panel-toggle-icon-overlay"></span></span><span class="bx-panel-break"></span><span id="bx-panel-toggle-caption">' . GetMessage("top_panel_edit_mode_new") . '</span><span class="bx-panel-break"></span><span id="bx-panel-toggle-caption-mode">' . $toggleCaptions . '</span><span id="bx-panel-switcher-gutter-right"></span></a>'; if ($aUserOpt["collapsed"] == "on") { $result .= $toogle; } $result .= '<a href="" id="bx-panel-expander" ' . CTopPanel::AddAttrHint(GetMessage("top_panel_expand_tooltip_title"), GetMessage("top_panel_expand_tooltip") . $hkInstance->GetTitle("bx-panel-expander", true)) . '><span id="bx-panel-expander-text">' . GetMessage("top_panel_expand") . '</span><span id="bx-panel-expander-arrow"></span></a>'; if ($hkInstance->IsActive()) { $result .= '<a id="bx-panel-hotkeys" href="javascript:void(0)" onclick="BXHotKeys.ShowSettings();" ' . CTopPanel::AddAttrHint(GetMessage("HK_PANEL_TITLE") . $hkInstance->GetTitle("bx-panel-hotkeys", true)) . '></a>'; } $result .= '<a href="javascript:void(0)" id="bx-panel-pin"' . ($aUserOpt['fix'] == 'on' ? ' class="bx-panel-pin-fixed"' : '') . ' ' . CTopPanel::AddAttrHint(GetMessage('top_panel_pin_tooltip')) . '></a>'; $Execs = $hkInstance->GetCodeByClassName("bx-panel-logout", GetMessage('top_panel_logout_tooltip')); $result .= $hkInstance->PrintJSExecs($Execs); $Execs = $hkInstance->GetCodeByClassName("bx-panel-small-toggle", GetMessage("top_panel_edit_mode_new_tooltip_title"), 'location.href="' . $href . '?freetrix_include_areas=' . ($toggleMode ? 'N' : 'Y') . ($params != "" ? "&" . $params : "") . '";'); $result .= $hkInstance->PrintJSExecs($Execs); $Execs = $hkInstance->GetCodeByClassName("bx-panel-expander", GetMessage("top_panel_expand_tooltip_title") . "/" . GetMessage("top_panel_collapse_tooltip_title")); $result .= $hkInstance->PrintJSExecs($Execs); $result .= ' </div> </div> '; /* BUTTONS */ $result .= '<div id="bx-panel-site-toolbar"><div id="bx-panel-buttons-gutter"></div><div id="bx-panel-switcher">'; if ($aUserOpt["collapsed"] != "on") { $result .= $toogle; } $result .= '<a href="" id="bx-panel-hider" ' . CTopPanel::AddAttrHint(GetMessage("top_panel_collapse_tooltip_title"), GetMessage("top_panel_collapse_tooltip") . $hkInstance->GetTitle("bx-panel-expander", true)) . '>' . GetMessage("top_panel_collapse") . '<span id="bx-panel-hider-arrow"></span></a>'; $result .= '</div><div id="bx-panel-buttons"><div id="bx-panel-buttons-inner">'; $main_sort = ""; $last_btn_type = ''; $last_btn_small_cnt = 0; $groupId = -1; $result .= '<span class="bx-panel-button-group" data-group-id="' . ++$groupId . '">'; sortByColumn($arPanelButtons, array("MAIN_SORT" => SORT_ASC, "SORT" => SORT_ASC)); foreach ($arPanelButtons as $key => $arButton) { $result .= $hkInstance->PrintTPButton($arButton); if ($main_sort != $arButton["MAIN_SORT"] && $main_sort != "") { $result .= '</span><span class="bx-panel-button-separator"></span><span class="bx-panel-button-group" data-group-id="' . ++$groupId . '">'; $last_btn_small_cnt = 0; } if (!isset($arButton['TYPE']) || $arButton['TYPE'] != 'BIG') { $arButton['TYPE'] = 'SMALL'; } //very old behaviour if (is_set($arButton, "SRC_0")) { $arButton["SRC"] = $arButton["SRC_0"]; } $arButton['HREF'] = isset($arButton['HREF']) ? trim($arButton['HREF']) : ''; $bHasAction = $arButton['HREF'] != ''; if (array_key_exists("RESORT_MENU", $arButton) && $arButton["RESORT_MENU"] === true && is_array($arButton['MENU']) && !empty($arButton['MENU'])) { sortByColumn($arButton['MENU'], "SORT", '', PHP_INT_MAX); } $bHasMenu = is_array($arButton['MENU']) && count($arButton['MENU']) > 0; if ($bHasMenu && !$bHasAction) { foreach ($arButton['MENU'] as $arItem) { if (isset($arItem['DEFAULT']) && $arItem['DEFAULT']) { $arButton['HREF'] = $arItem['HREF']; $bHasAction = true; } } } if ($last_btn_type != '' && $arButton['TYPE'] != $last_btn_type && $main_sort == $arButton["MAIN_SORT"]) { $result .= '</span><span class="bx-panel-button-group" data-group-id="' . ++$groupId . '">'; $last_btn_small_cnt = 0; } if ($bHasAction && substr(strtolower($arButton['HREF']), 0, 11) == 'javascript:') { $arButton['ONCLICK'] = substr($arButton['HREF'], 11); $arButton['HREF'] = 'javascript:void(0)'; } if ($arButton['HINT']) { if (isset($arButton['HINT']['ID']) && $arButton['HINT']['ID']) { $hintOptions = CUtil::GetPopupOptions($arButton['HINT']['ID']); if ($hintOptions['display'] == 'off') { unset($arButton['HINT']); } } if ($arButton['HINT']) { unset($arButton['ALT']); } if ($bHasMenu && (!isset($arButton['HINT_MENU']) || !$arButton['HINT_MENU'])) { $arButton['HINT']['TARGET'] = 'parent'; } } $title = isset($arButton['ALT']) ? htmlspecialcharsbx($arButton['ALT']) : ''; $onClick = isset($arButton['ONCLICK']) ? htmlspecialcharsbx($arButton['ONCLICK']) : ''; $onClickJs = isset($arButton['ONCLICK']) ? CUtil::JSEscape($arButton['ONCLICK']) : ''; $hintMenu = isset($arButton['HINT_MENU']) ? CUtil::PhpToJsObject($arButton['HINT_MENU']) : ''; switch ($arButton['TYPE']) { case 'SMALL': if ($last_btn_small_cnt >= 3 && $main_sort == $arButton["MAIN_SORT"]) { $result .= '</span><span class="bx-panel-button-group" data-group-id="' . ++$groupId . '">'; $last_btn_small_cnt = 0; } elseif ($last_btn_small_cnt > 0) { $result .= '<span class="bx-panel-break"></span>'; } $result .= '<span class="bx-panel-small-button"><span class="bx-panel-small-button-inner">'; $button_icon = '<span class="bx-panel-small-button-icon' . ($arButton['ICON'] ? ' ' . $arButton['ICON'] : '') . '"' . (isset($arButton['SRC']) && $arButton['SRC'] ? ' style="background: scroll transparent url(' . htmlspecialcharsbx($arButton['SRC']) . ') no-repeat center center !important;"' : '') . '></span>'; $button_text = '<span class="bx-panel-small-button-text">' . htmlspecialcharsbx($arButton['TEXT']) . '</span>'; $button_text_js = CUtil::JSEscape($arButton['TEXT']); if ($bHasAction) { $result .= '<a href="' . htmlspecialcharsbx($arButton['HREF']) . '" onclick="' . $onClick . ';BX.removeClass(this.parentNode.parentNode, \'bx-panel-small-button' . ($bHasMenu ? '-text' : '') . '-active\')" id="bx_topmenu_btn_' . $key . '"' . ($title ? ' title="' . $title . $hkInstance->GetTitle("bx_topmenu_btn_" . $key) . '"' : '"' . $hkInstance->GetTitle("bx_topmenu_btn_" . $key) . '"') . '>' . $button_icon . $button_text . '</a>'; $result .= '<script type="text/javascript">BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_' . $key . '\', TYPE: \'SMALL\', ACTIVE_CSS: \'bx-panel-small-button' . ($bHasMenu ? '-text' : '') . '-active\', HOVER_CSS: \'bx-panel-small-button' . ($bHasMenu ? '-text' : '') . '-hover\'' . ($arButton['HINT'] ? ', HINT: ' . CUtil::PhpToJsObject($arButton['HINT']) : '') . ', GROUP_ID : ' . $groupId . ', SKIP : ' . ($bHasMenu ? "true" : "false") . ', LINK: "' . CUtil::JSEscape($arButton['HREF']) . '", ACTION : "' . $onClickJs . '",TEXT : "' . $button_text_js . '" })</script>'; if ($bHasMenu) { $result .= '<a href="javascript:void(0)" class="bx-panel-small-button-arrow" id="bx_topmenu_btn_' . $key . '_menu"><span class="bx-panel-small-button-arrow"></span></a>'; $result .= '<script type="text/javascript">BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_' . $key . '_menu\', TYPE: \'SMALL\', MENU: ' . CUtil::PhpToJsObject($arButton['MENU']) . ', ACTIVE_CSS: \'bx-panel-small-button-arrow-active\', HOVER_CSS: \'bx-panel-small-button-arrow-hover\'' . ($hintMenu ? ', HINT: ' . $hintMenu : '') . ', GROUP_ID : ' . $groupId . ', TEXT : "' . $button_text_js . '"})</script>'; } } elseif ($bHasMenu) { $result .= '<a href="javascript:void(0)" id="bx_topmenu_btn_' . $key . '"' . ($title ? ' title="' . $title . '"' : '') . '>' . $button_icon . $button_text . '<span class="bx-panel-small-single-button-arrow"></span></a>'; $result .= '<script type="text/javascript">BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_' . $key . '\', TYPE: \'SMALL\', MENU: ' . CUtil::PhpToJsObject($arButton['MENU']) . ', ACTIVE_CSS: \'bx-panel-small-button-active\', HOVER_CSS: \'bx-panel-small-button-hover\'' . ($arButton['HINT'] ? ', HINT: ' . CUtil::PhpToJsObject($arButton['HINT']) : '') . ', GROUP_ID : ' . $groupId . ', TEXT : "' . $button_text_js . '"})</script>'; } $result .= '</span></span>'; $last_btn_small_cnt++; break; case 'BIG': $last_btn_small_cnt = 0; $result .= '<span class="bx-panel-button"><span class="bx-panel-button-inner">'; $button_icon = '<span class="bx-panel-button-icon' . ($arButton['ICON'] ? ' ' . $arButton['ICON'] : '') . '"' . (isset($arButton['SRC']) && $arButton['SRC'] ? ' style="background: scroll transparent url(' . htmlspecialcharsbx($arButton['SRC']) . ') no-repeat center center !important;"' : '') . '></span>'; $button_text_js = CUtil::JSEscape(str_replace('#BR#', ' ', $arButton['TEXT'])); if ($bHasAction && $bHasMenu) { $button_text = '<span class="bx-panel-button-text">' . str_replace('#BR#', '<span class="bx-panel-break"></span>', $arButton['TEXT']) . ' <span class="bx-panel-button-arrow"></span></span>'; $result .= '<a href="' . htmlspecialcharsbx($arButton['HREF']) . '" onclick="' . $onClick . ';BX.removeClass(this.parentNode.parentNode, \'bx-panel-button-icon-active\');" id="bx_topmenu_btn_' . $key . '"' . ($title ? ' title="' . $title . '"' : '') . '>' . $button_icon . '</a><a id="bx_topmenu_btn_' . $key . '_menu" href="javascript:void(0)">' . $button_text . '</a>'; $result .= '<script type="text/javascript">BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_' . $key . '\', TYPE: \'BIG\', ACTIVE_CSS: \'bx-panel-button-icon-active\', HOVER_CSS: \'bx-panel-button-icon-hover\'' . ($arButton['HINT'] ? ', HINT: ' . CUtil::PhpToJsObject($arButton['HINT']) : '') . ', GROUP_ID : ' . $groupId . ', SKIP : true }); BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_' . $key . '_menu\', TYPE: \'BIG\', MENU: ' . CUtil::PhpToJsObject($arButton['MENU']) . ', ACTIVE_CSS: \'bx-panel-button-text-active\', HOVER_CSS: \'bx-panel-button-text-hover\'' . ($hintMenu ? ', HINT: ' . $hintMenu : '') . ', GROUP_ID : ' . $groupId . ', TEXT : "' . $button_text_js . '"})</script>'; } else { if ($bHasAction) { $button_text = '<span class="bx-panel-button-text">' . str_replace('#BR#', '<span class="bx-panel-break"></span>', $arButton['TEXT']) . '</span>'; $result .= '<a href="' . htmlspecialcharsbx($arButton['HREF']) . '" onclick="' . $onClick . ';BX.removeClass(this.parentNode.parentNode, \'bx-panel-button-active\');" id="bx_topmenu_btn_' . $key . '"' . ($title ? ' title="' . $title . '"' : '') . '>' . $button_icon . $button_text . '</a>'; $result .= '<script type="text/javascript">BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_' . $key . '\', TYPE: \'BIG\', ACTIVE_CSS: \'bx-panel-button-active\', HOVER_CSS: \'bx-panel-button-hover\'' . ($arButton['HINT'] ? ', HINT: ' . CUtil::PhpToJsObject($arButton['HINT']) : '') . ', GROUP_ID : ' . $groupId . ', LINK: "' . CUtil::JSEscape($arButton['HREF']) . '", ACTION : "' . $onClickJs . '", TEXT : "' . $button_text_js . '"});</script>'; } else { $button_text = '<span class="bx-panel-button-text">' . str_replace('#BR#', '<span class="bx-panel-break"></span>', $arButton['TEXT']) . ' <span class="bx-panel-button-arrow"></span></span>'; $result .= '<a href="javascript:void(0)" id="bx_topmenu_btn_' . $key . '_menu">' . $button_icon . $button_text . '</a>'; $result .= '<script type="text/javascript">BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_' . $key . '_menu\', TYPE: \'BIG\', MENU: ' . CUtil::PhpToJsObject($arButton['MENU']) . ', ACTIVE_CSS: \'bx-panel-button-active\', HOVER_CSS: \'bx-panel-button-hover\'' . ($arButton['HINT'] ? ', HINT: ' . CUtil::PhpToJsObject($arButton['HINT']) : '') . ', GROUP_ID : ' . $groupId . ', TEXT : "' . $button_text_js . '"});</script>'; } } $result .= '</span></span>'; break; } $main_sort = $arButton["MAIN_SORT"]; $last_btn_type = $arButton['TYPE']; } $result .= '</span>'; $result .= '</div> </div> </div>'; if ($USER->IsAdmin()) { $result .= CAdminNotify::GetHtml(); } $result .= ' </div> '; $result .= '<script type="text/javascript"> BX.admin.panel.state = { fixed: ' . ($aUserOpt["fix"] == "on" ? 'true' : 'false') . ', collapsed: ' . ($aUserOpt["collapsed"] == "on" ? 'true' : 'false') . ' } BX.admin.moreButton.init({ buttonTitle : "' . GetMessageJS("top_panel_more_button_title") . '"}); </script>'; //start menu preload // if($aUserOptGlobal["start_menu_preload"] == 'Y') // $result .= '<script type="text/javascript">BX.ready(function(){jsStartMenu.PreloadMenu(\''.CUtil::JSEscape($href.($params<>""? "?".$params:"")).'\');});</script>'; //show script to play sound $result .= $adminPage->ShowSound(); return $result; }
$arParams['NAME_FORMAT'] = isset($arParams['NAME_FORMAT']) ? $arParams['NAME_FORMAT'] : ''; $arResult['NAME_FORMAT'] = $arParams['NAME_FORMAT'] !== '' ? $arParams['NAME_FORMAT'] : \Bitrix\Crm\Format\PersonNameFormatter::getFormat(); $utils = new CComponentUtil(); $arParams['DATE_FORMAT'] = isset($arParams['DATE_FORMAT']) ? $arParams['DATE_FORMAT'] : ''; $arResult['DATE_FORMAT'] = $arParams['DATE_FORMAT'] !== '' ? $arParams['DATE_FORMAT'] : $utils->GetDateFormatDefault(true); $arParams['INTERVAL_IN_DAYS'] = isset($arParams['INTERVAL_IN_DAYS']) ? (int) $arParams['INTERVAL_IN_DAYS'] : 7; $intervalInDays = $arParams['INTERVAL_IN_DAYS'] > 0 ? $arParams['INTERVAL_IN_DAYS'] : 7; $arParams['CHECK_PERMISSIONS'] = isset($arParams['CHECK_PERMISSIONS']) ? strtoupper($arParams['CHECK_PERMISSIONS']) : 'Y'; $enablePermissionCheck = $arParams['CHECK_PERMISSIONS'] !== 'N'; $arParams['LIMIT'] = isset($arParams['LIMIT']) ? (int) $arParams['LIMIT'] : 5; $limit = $arParams['LIMIT'] > 0 ? $arParams['LIMIT'] : 5; $currentDate = ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'SHORT', SITE_ID); $items = array(); if ($canReadLead) { $items = array_merge(BirthdayReminder::getNearestEntities(\CCrmOwnerType::Lead, $currentDate, '', $intervalInDays, $enablePermissionCheck, $limit), $items); } if ($canReadContact) { $items = array_merge(BirthdayReminder::getNearestEntities(\CCrmOwnerType::Contact, $currentDate, '', $intervalInDays, $enablePermissionCheck, $limit), $items); } sortByColumn($items, 'BIRTHDAY_SORT'); if (count($items) > $limit) { $items = array_slice($items, 0, $limit); } foreach ($items as &$item) { $item['SHOW_URL'] = \CCrmOwnerType::GetShowUrl($item['ENTITY_TYPE_ID'], $item['ID'], $enablePermissionCheck); } unset($item); if (!empty($items)) { $arResult['ITEMS'] = $items; $this->IncludeComponentTemplate(); }
foreach ($reportList as $firstReport) { $engine->deleteForecastReport($firstReport["ForecastID"]); break; } } } $phraseList = $_REQUEST['phrase']; $geo = trim($_REQUEST['geo']); if (is_array($phraseList)) { $phraseList = array_values(array_unique($phraseList)); $geoList = strlen($geo) > 0 ? preg_split("/[^0-9\\-]+\\s*/", $geo) : array(); $phraseHash = md5(implode('|', $phraseList) . '|||' . $geo); if (!isset($_SESSION["SEO_FORECASTS"])) { $_SESSION["SEO_FORECASTS"] = array(); } sortByColumn($_SESSION["SEO_FORECASTS"], "TS"); foreach ($_SESSION["SEO_FORECASTS"] as $k => $report) { $lifeTime = time() - $report["TS"]; if ($lifeTime > Engine\YandexDirect::TTL_FORECAST_REPORT && $lifeTime < Engine\YandexDirect::TTL_FORECAST_REPORT_EXT || count($_SESSION["SEO_FORECASTS"]) >= Engine\YandexDirect::MAX_FORECAST_REPORTS) { $reportId = $report["REPORT_ID"]; $engine->deleteForecastReport($reportId); unset($_SESSION["SEO_FORECASTS"][$k]); } } if (!isset($_SESSION["SEO_FORECASTS"][$phraseHash])) { $reportId = $engine->createForecastReport($phraseList, $geoList); $_SESSION["SEO_FORECASTS"][$phraseHash] = array("REPORT_ID" => intval($reportId), "PHRASE" => $phraseList, "GEO" => $geoList, "TS" => time()); $res = $_SESSION["SEO_FORECASTS"][$phraseHash]; } else { $reportId = $_SESSION["SEO_FORECASTS"][$phraseHash]["REPORT_ID"]; $res = $engine->getForecastReport($reportId);
function GetFileTemplates($lang = LANG, $arTemplates = array()) { global $APPLICATION; $arDirs = array("php_interface/" . $lang . "/templates", "templates/.default/page_templates", "php_interface/templates"); foreach ($arTemplates as $val) { $arDirs[] = "templates/" . $val . "/page_templates"; } $res = array(); foreach ($arDirs as $dir) { $templDir = getLocalPath($dir, BX_PERSONAL_ROOT); if ($templDir === false) { continue; } $dirPath = $_SERVER["DOCUMENT_ROOT"] . $templDir; if (file_exists($dirPath)) { $sDescFile = $dirPath . "/.content.php"; $TEMPLATE = array(); if (file_exists($sDescFile)) { include $sDescFile; } if ($handle = @opendir($dirPath)) { while (($file = readdir($handle)) !== false) { if (is_dir($dirPath . "/" . $file)) { continue; } if (substr($file, 0, 1) == ".") { continue; } $path = $templDir . "/" . $file; if ($APPLICATION->GetFileAccessPermission($path) < "R") { continue; } $restmp = array("name" => substr($file, 0, bxstrrpos($file, ".")), "file" => $file, "sort" => 150, "path" => $path); if (array_key_exists($file, $TEMPLATE)) { if (array_key_exists("name", $TEMPLATE[$file])) { $restmp["name"] = $TEMPLATE[$file]["name"]; } if (array_key_exists("sort", $TEMPLATE[$file])) { $restmp["sort"] = $TEMPLATE[$file]["sort"]; } } $res[$file] = $restmp; } closedir($handle); } } } sortByColumn($res, "sort"); return array_values($res); }
public static function GetRecentList($arParams = array()) { global $DB, $USER; $bLoadUnreadMessage = isset($arParams['LOAD_UNREAD_MESSAGE']) && $arParams['LOAD_UNREAD_MESSAGE'] == 'Y' ? true : false; $bTimeZone = isset($arParams['USE_TIME_ZONE']) && $arParams['USE_TIME_ZONE'] == 'N' ? false : true; $bSmiles = isset($arParams['USE_SMILES']) && $arParams['USE_SMILES'] == 'N' ? false : true; $userId = isset($arParams['USER_ID']) ? $arParams['USER_ID'] : $USER->GetId(); $nameTemplate = self::GetUserNameTemplate(SITE_ID); $nameTemplateSite = CSite::GetNameFormat(false); $bIntranetEnable = IsModuleInstalled('intranet') && CModule::IncludeModule('intranet') ? true : false; $arRecent = array(); $arUsers = array(); $bColorEnabled = IM\Color::isEnabled(); $cache_ttl = 2592000; $cache_id = 'im_recent_v8_' . $userId . '_' . $bColorEnabled; $cache_dir = '/bx/imc/recent' . CIMMessenger::GetCachePath($userId); $obCache = new CPHPCache(); if ($obCache->InitCache($cache_ttl, $cache_id, $cache_dir)) { $ar = $obCache->GetVars(); $arRecent = $ar['recent']; $arUsers = $ar['users']; } else { if (!$bTimeZone) { CTimeZone::Disable(); } $strSql = "\n\t\t\t\tSELECT\n\t\t\t\t\tR.ITEM_TYPE, R.ITEM_ID,\n\t\t\t\t\tR.ITEM_MID M_ID, M.AUTHOR_ID M_AUTHOR_ID, M.ID M_ID, M.CHAT_ID M_CHAT_ID, M.MESSAGE M_MESSAGE, " . $DB->DatetimeToTimestampFunction('M.DATE_CREATE') . " M_DATE_CREATE,\n\t\t\t\t\tC.TITLE C_TITLE, C.AUTHOR_ID C_OWNER_ID, C.ENTITY_TYPE C_ENTITY_TYPE, C.AVATAR C_AVATAR, C.CALL_NUMBER C_CALL_NUMBER, C.EXTRANET CHAT_EXTRANET, C.COLOR CHAT_COLOR, C.TYPE CHAT_TYPE,\n\t\t\t\t\tU.LOGIN, U.NAME, U.LAST_NAME, U.PERSONAL_PHOTO, U.SECOND_NAME, U.PERSONAL_BIRTHDAY, U.PERSONAL_GENDER, U.EXTERNAL_AUTH_ID, U.WORK_POSITION,\n\t\t\t\t\tC1.USER_ID RID\n\t\t\t\tFROM\n\t\t\t\tb_im_recent R\n\t\t\t\tLEFT JOIN b_user U ON R.ITEM_TYPE = '" . IM_MESSAGE_PRIVATE . "' AND R.ITEM_ID = U.ID\n\t\t\t\tLEFT JOIN b_im_chat C ON R.ITEM_TYPE != '" . IM_MESSAGE_PRIVATE . "' AND R.ITEM_ID = C.ID\n\t\t\t\tLEFT JOIN b_im_message M ON R.ITEM_MID = M.ID\n\t\t\t\tLEFT JOIN b_im_relation C1 ON C1.CHAT_ID = C.ID AND C1.USER_ID = " . $userId . "\n\t\t\t\tWHERE R.USER_ID = " . $userId; if (!$bTimeZone) { CTimeZone::Enable(); } $toDelete = array(); $arMessageId = array(); $CCTP = new CTextParser(); $CCTP->MaxStringLen = 255; $CCTP->allow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => $bSmiles ? "Y" : "N", "NL2BR" => "Y", "VIDEO" => "N", "TABLE" => "N", "CUT_ANCHOR" => "N", "ALIGN" => "N"); $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); while ($arRes = $dbRes->GetNext(true, false)) { $arRes['ITEM_TYPE'] = trim($arRes['ITEM_TYPE']); if ($arRes['ITEM_TYPE'] == IM_MESSAGE_OPEN) { if (intval($arRes['RID']) <= 0 && IM\User::getInstance($userId)->isExtranet()) { continue; } } else { if ($arRes['ITEM_TYPE'] == IM_MESSAGE_CHAT) { if (intval($arRes['RID']) <= 0) { continue; } } } $arMessageId[] = $arRes['M_ID']; if ($arRes['M_DATE_CREATE'] + 2592000 < time()) { $toDelete[$arRes['ITEM_TYPE']][] = $arRes['ITEM_ID']; continue; } $itemId = $arRes['ITEM_ID']; $item = array('TYPE' => $arRes['ITEM_TYPE'], 'MESSAGE' => array('id' => $arRes['M_ID'], 'chatId' => $arRes['M_CHAT_ID'], 'senderId' => $arRes['M_AUTHOR_ID'], 'date' => $arRes['M_DATE_CREATE'], 'text' => $CCTP->convertText(preg_replace("/\\[s\\].*?\\[\\/s\\]/i", "", $arRes['M_MESSAGE'])))); $item['MESSAGE']['text'] = preg_replace('#\\-{54}.+?\\-{54}#s', " [" . GetMessage('IM_QUOTE') . "] ", strip_tags(str_replace(array("<br>", "<br/>", "<br />", "#BR#"), array(" ", " ", " ", " "), $item['MESSAGE']['text']), "<img>")); if ($arRes['ITEM_TYPE'] == IM_MESSAGE_PRIVATE) { $arUsers[] = $arRes['ITEM_ID']; $arFileTmp = CFile::ResizeImageGet($arRes["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false, false, true); $item['USER'] = array('id' => $arRes['ITEM_ID'], 'name' => CUser::FormatName($nameTemplateSite, $arRes, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arRes, true, false), 'workPosition' => $arRes['WORK_POSITION'], 'color' => self::GetUserColor($arRes["ID"], $arRes['PERSONAL_GENDER'] == 'M' ? 'M' : 'F'), 'avatar' => empty($arFileTmp['src']) ? '/bitrix/js/im/images/blank.gif' : $arFileTmp['src'], 'status' => 'offline', 'birthday' => $arRes['PERSONAL_BIRTHDAY'], 'gender' => $arRes['PERSONAL_GENDER'] == 'F' ? 'F' : 'M', 'extranet' => false, 'network' => $arRes['EXTERNAL_AUTH_ID'] == self::NETWORK_AUTH_ID, 'phoneDevice' => false, 'profile' => CIMContactList::GetUserPath($arRes["ITEM_ID"])); } else { $chatType = $arRes["ITEM_TYPE"] == IM_MESSAGE_OPEN ? 'open' : 'chat'; if ($arRes["C_ENTITY_TYPE"] == 'CALL') { $chatType = 'call'; } $itemId = 'chat' . $itemId; $item['CHAT'] = array('id' => $arRes['ITEM_ID'], 'name' => $arRes["C_TITLE"], 'color' => $arRes["CHAT_COLOR"] == "" ? IM\Color::getColorByNumber($arRes['ITEM_ID']) : IM\Color::getColor($arRes['CHAT_COLOR']), 'avatar' => CIMChat::GetAvatarImage($arRes["C_AVATAR"]), 'extranet' => $arRes["CHAT_EXTRANET"] == "" ? "" : ($arRes["CHAT_EXTRANET"] == "Y" ? true : false), 'owner' => $arRes["C_OWNER_ID"], 'type' => $chatType, 'messageType' => $arRes['CHAT_TYPE'], 'call_number' => $arRes["C_CALL_NUMBER"]); } $arRecent[$itemId] = $item; } $params = CIMMessageParam::Get($arMessageId); foreach ($arRecent as $key => $value) { if (isset($params[$value['MESSAGE']['id']])) { if (count($params[$value['MESSAGE']['id']]['FILE_ID']) > 0 && strlen(trim($arRecent[$key]['MESSAGE']['text'])) <= 0) { $arRecent[$key]['MESSAGE']['text'] = "[" . GetMessage('IM_FILE') . "]"; } $arRecent[$key]['MESSAGE']['params'] = $params[$value['MESSAGE']['id']]; } } if (!empty($toDelete)) { if (isset($toDelete[IM_MESSAGE_PRIVATE])) { self::DeleteRecent($toDelete[IM_MESSAGE_PRIVATE]); } if (isset($toDelete[IM_MESSAGE_CHAT])) { self::DeleteRecent($toDelete[IM_MESSAGE_CHAT], true); } if (isset($toDelete[IM_MESSAGE_OPEN])) { self::DeleteRecent($toDelete[IM_MESSAGE_OPEN], true); } } $bExtranetEnable = IsModuleInstalled('extranet'); $bVoximplantEnable = IsModuleInstalled('voximplant'); if ($bExtranetEnable || $bVoximplantEnable) { $arUserPhone = array(); $arUserDepartment = array(); $arSelectParams = array(); if ($bExtranetEnable) { $arSelectParams[] = 'UF_DEPARTMENT'; } if ($bVoximplantEnable) { $arSelectParams[] = 'UF_VI_PHONE'; } $dbUsers = CUser::GetList($sort_by = array('last_name' => 'asc'), $dummy = '', array('ID' => $userId . "|" . implode('|', $arUsers)), array('FIELDS' => array("ID"), 'SELECT' => $arSelectParams)); while ($arUser = $dbUsers->GetNext(true, false)) { $arUserPhone[$arUser['ID']] = $arUser['UF_VI_PHONE'] == 'Y'; $arUserDepartment[$arUser['ID']] = self::IsExtranet($arUser); } foreach ($arRecent as $key => $value) { if (isset($value['USER'])) { $arRecent[$key]['USER']['extranet'] = $arUserDepartment[$value['USER']['id']]; $arRecent[$key]['USER']['phoneDevice'] = $arUserPhone[$value['USER']['id']]; } } } if ($obCache->StartDataCache()) { $obCache->EndDataCache(array('recent' => $arRecent, 'users' => $arUsers)); } } $arOnline = CIMStatus::GetList(array('ID' => array_values($arUsers), 'GET_OFFLINE' => 'Y')); foreach ($arRecent as $key => $value) { if ($value['TYPE'] != IM_MESSAGE_PRIVATE) { continue; } $arRecent[$key]['USER']['birthday'] = $bIntranetEnable ? CIntranetUtils::IsToday($value['USER']['birthday']) : false; $arRecent[$key]['USER']['status'] = isset($arOnline['users'][$value['USER']['id']]) ? $arOnline['users'][$value['USER']['id']]['status'] : 'offline'; $arRecent[$key]['USER']['idle'] = isset($arOnline['users'][$value['USER']['id']]) ? $arOnline['users'][$value['USER']['id']]['idle'] : 0; $arRecent[$key]['USER']['mobileLastDate'] = isset($arOnline['users'][$value['USER']['id']]) ? $arOnline['users'][$value['USER']['id']]['mobileLastDate'] : 0; if ($arOnline['users'][$value['USER']['id']]['color']) { $arRecent[$key]['USER']['color'] = $arOnline['users'][$value['USER']['id']]['color']; } } if ($bLoadUnreadMessage) { $CIMMessage = new CIMMessage(false, array('HIDE_LINK' => 'Y')); $ar = $CIMMessage->GetUnreadMessage(array('LOAD_DEPARTMENT' => 'N', 'ORDER' => 'ASC', 'GROUP_BY_CHAT' => 'Y', 'USE_TIME_ZONE' => $bTimeZone ? 'Y' : 'N', 'USE_SMILES' => $bSmiles ? 'Y' : 'N')); foreach ($ar['message'] as $data) { if (!isset($arRecent[$data['senderId']])) { $arRecent[$data['senderId']] = array('TYPE' => IM_MESSAGE_PRIVATE, 'USER' => $ar['users'][$data['senderId']]); } $arRecent[$data['senderId']]['MESSAGE'] = array('id' => $data['id'], 'senderId' => $data['senderId'], 'date' => $data['date'], 'text' => preg_replace('#\\-{54}.+?\\-{54}#s', " [" . GetMessage('IM_QUOTE') . "] ", strip_tags(str_replace(array("<br>", "<br/>", "<br />", "#BR#"), array(" ", " ", " ", " "), $data['text']), "<img>"))); $arRecent[$data['senderId']]['COUNTER'] = $data['counter']; } $CIMChat = new CIMChat(false, array('HIDE_LINK' => 'Y')); $ar = $CIMChat->GetUnreadMessage(array('ORDER' => 'ASC', 'GROUP_BY_CHAT' => 'Y', 'USER_LOAD' => 'N', 'FILE_LOAD' => 'N', 'USE_SMILES' => $bSmiles ? 'Y' : 'N', 'USE_TIME_ZONE' => $bTimeZone ? 'Y' : 'N')); foreach ($ar['message'] as $data) { if (!isset($arRecent['chat' . $data['recipientId']])) { $arRecent['chat' . $data['recipientId']] = array('TYPE' => $ar['messageType'] ? $ar['messageType'] : IM_MESSAGE_CHAT, 'CHAT' => $ar['chat']); } $arRecent['chat' . $data['recipientId']]['MESSAGE'] = array('id' => $data['id'], 'senderId' => $data['senderId'], 'date' => $data['date'], 'text' => $data['text']); $arRecent['chat' . $data['recipientId']]['COUNTER'] = $data['counter']; } } if (!empty($arRecent)) { sortByColumn($arRecent, array('COUNTER' => array(SORT_NUMERIC, SORT_DESC), 'MESSAGE' => array(SORT_NUMERIC, SORT_DESC)), array('COUNTER' => array(__CLASS__, 'GetRecentListSortCounter'), 'MESSAGE' => array(__CLASS__, 'GetRecentListSortMessage')), null, true); } return $arRecent; }
$arResult["SET_ITEMS"]["DEFAULT"][] = $arItem; if ($arParams['CONVERT_CURRENCY'] == 'Y') { $arResult["SET_ITEMS"]["PRICE"] += $arItem["PRICE_DISCOUNT_VALUE"]; $arResult["SET_ITEMS"]["OLD_PRICE"] += $arItem["PRICE_VALUE"]; $arResult["SET_ITEMS"]["PRICE_DISCOUNT_DIFFERENCE"] += $arItem["PRICE_DISCOUNT_DIFFERENCE_VALUE"]; } } else { $arItem["SORT"] = $arSetItemsOtherID[$arItem["ID"]]; $arResult["SET_ITEMS"]["OTHER"][] = $arItem; } } sortByColumn($arResult["SET_ITEMS"]["DEFAULT"], array('SORT' => SORT_ASC)); sortByColumn($arResult["SET_ITEMS"]["OTHER"], array('SORT' => SORT_ASC)); if ($arParams['CONVERT_CURRENCY'] == 'N') { //convert all prices to main element currency foreach($arResult["SET_ITEMS"]["DEFAULT"] as $key=>$arItem) { $arResult["SET_ITEMS"]["DEFAULT"][$key]["PRICE_CONVERT_DISCOUNT_VALUE"] = CCurrencyRates::ConvertCurrency($arItem['PRICE_DISCOUNT_VALUE'], $arItem["PRICE_CURRENCY"] , $arResult["ELEMENT"]["PRICE_CURRENCY"]); $arResult["SET_ITEMS"]["PRICE"] += $arResult["SET_ITEMS"]["DEFAULT"][$key]["PRICE_CONVERT_DISCOUNT_VALUE"]; $arResult["SET_ITEMS"]["DEFAULT"][$key]["PRICE_CONVERT_VALUE"] = CCurrencyRates::ConvertCurrency($arItem["PRICE_VALUE"], $arItem["PRICE_CURRENCY"] , $arResult["ELEMENT"]["PRICE_CURRENCY"]); $arResult["SET_ITEMS"]["OLD_PRICE"] += $arResult["SET_ITEMS"]["DEFAULT"][$key]["PRICE_CONVERT_VALUE"]; $arResult["SET_ITEMS"]["DEFAULT"][$key]["PRICE_CONVERT_DISCOUNT_DIFFERENCE_VALUE"] = CCurrencyRates::ConvertCurrency($arItem["PRICE_DISCOUNT_DIFFERENCE_VALUE"], $arItem["PRICE_CURRENCY"] , $arResult["ELEMENT"]["PRICE_CURRENCY"]); $arResult["SET_ITEMS"]["PRICE_DISCOUNT_DIFFERENCE"] += $arResult["SET_ITEMS"]["DEFAULT"][$key]["PRICE_CONVERT_DISCOUNT_DIFFERENCE_VALUE"]; } foreach($arResult["SET_ITEMS"]["OTHER"] as $key=>$arItem) {
public static function AddPagerSettings(&$arComponentParameters, $pager_title, $bDescNumbering=true, $bShowAllParam=false) { $arHiddenTemplates = array( 'js' => true ); if (!isset($arComponentParameters['GROUPS'])) $arComponentParameters['GROUPS'] = array(); $arComponentParameters["GROUPS"]["PAGER_SETTINGS"] = array( "NAME" => GetMessage("T_IBLOCK_DESC_PAGER_SETTINGS"), ); $arTemplateInfo = CComponentUtil::GetTemplatesList('freetrix:system.pagenavigation'); if (empty($arTemplateInfo)) { $arComponentParameters["PARAMETERS"]["PAGER_TEMPLATE"] = Array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_PAGER_TEMPLATE"), "TYPE" => "STRING", "DEFAULT" => "", ); } else { sortByColumn($arTemplateInfo, array('TEMPLATE' => SORT_ASC, 'NAME' => SORT_ASC)); $arTemplateList = array(); $arSiteTemplateList = array( '.default' => GetMessage('T_IBLOCK_DESC_PAGER_TEMPLATE_SITE_DEFAULT') ); $arTemplateID = array(); foreach ($arTemplateInfo as &$template) { if ('' != $template["TEMPLATE"] && '.default' != $template["TEMPLATE"]) $arTemplateID[] = $template["TEMPLATE"]; if (!isset($template['TITLE'])) $template['TITLE'] = $template['NAME']; } unset($template); if (!empty($arTemplateID)) { $rsSiteTemplates = CSiteTemplate::GetList( array(), array("ID"=>$arTemplateID), array() ); while ($arSitetemplate = $rsSiteTemplates->Fetch()) { $arSiteTemplateList[$arSitetemplate['ID']] = $arSitetemplate['NAME']; } } foreach ($arTemplateInfo as &$template) { if (isset($arHiddenTemplates[$template['NAME']])) continue; $strDescr = $template["TITLE"].' ('.('' != $template["TEMPLATE"] && '' != $arSiteTemplateList[$template["TEMPLATE"]] ? $arSiteTemplateList[$template["TEMPLATE"]] : GetMessage("T_IBLOCK_DESC_PAGER_TEMPLATE_SYSTEM")).')'; $arTemplateList[$template['NAME']] = $strDescr; } unset($template); $arComponentParameters["PARAMETERS"]["PAGER_TEMPLATE"] = array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_PAGER_TEMPLATE_EXT"), "TYPE" => "LIST", "VALUES" => $arTemplateList, "DEFAULT" => ".default", "ADDITIONAL_VALUES" => "Y" ); } $arComponentParameters["PARAMETERS"]["DISPLAY_TOP_PAGER"] = Array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_TOP_PAGER"), "TYPE" => "CHECKBOX", "DEFAULT" => "N", ); $arComponentParameters["PARAMETERS"]["DISPLAY_BOTTOM_PAGER"] = Array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_BOTTOM_PAGER"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y", ); $arComponentParameters["PARAMETERS"]["PAGER_TITLE"] = Array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_PAGER_TITLE"), "TYPE" => "STRING", "DEFAULT" => $pager_title, ); $arComponentParameters["PARAMETERS"]["PAGER_SHOW_ALWAYS"] = Array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_PAGER_SHOW_ALWAYS"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y", ); if($bDescNumbering) { $arComponentParameters["PARAMETERS"]["PAGER_DESC_NUMBERING"] = Array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_PAGER_DESC_NUMBERING"), "TYPE" => "CHECKBOX", "DEFAULT" => "N", ); $arComponentParameters["PARAMETERS"]["PAGER_DESC_NUMBERING_CACHE_TIME"] = Array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_PAGER_DESC_NUMBERING_CACHE_TIME"), "TYPE" => "STRING", "DEFAULT" => "36000", ); } if($bShowAllParam) { $arComponentParameters["PARAMETERS"]["PAGER_SHOW_ALL"] = Array( "PARENT" => "PAGER_SETTINGS", "NAME" => GetMessage("T_IBLOCK_DESC_SHOW_ALL"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y" ); } }
function GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray = false) { global $DB, $MAIN_MODULE_EVENTS, $MAIN_MODULE_EVENTS_INIT; if ($MAIN_MODULE_EVENTS_INIT === false) { global $CACHE_MANAGER; if ($CACHE_MANAGER->Read(3600, "b_module_to_module")) { $arEvents = $CACHE_MANAGER->Get("b_module_to_module"); } else { $arEvents = array(); $rs = $DB->Query("\n\t\t\t\tSELECT\n\t\t\t\t\t*\n\t\t\t\tFROM\n\t\t\t\t\tb_module_to_module m2m\n\t\t\t\tINNER JOIN b_module m ON (m2m.TO_MODULE_ID = m.ID)\n\t\t\t\tORDER BY SORT\n\t\t\t"); while ($ar = $rs->Fetch()) { $ar['TO_NAME'] = CModule::_GetName($ar); $ar["~FROM_MODULE_ID"] = strtoupper($ar["FROM_MODULE_ID"]); $ar["~MESSAGE_ID"] = strtoupper($ar["MESSAGE_ID"]); if (strlen($ar["TO_METHOD_ARG"]) > 0) { $ar["TO_METHOD_ARG"] = unserialize($ar["TO_METHOD_ARG"]); } else { $ar["TO_METHOD_ARG"] = array(); } $arEvents[] = $ar; } $CACHE_MANAGER->Set("b_module_to_module", $arEvents); } if (!is_array($arEvents)) { $arEvents = array(); } $copy_MAIN_MODULE_EVENTS = $MAIN_MODULE_EVENTS; foreach ($arEvents as $ar) { if (intval($ar["VERSION"]) < 2) { $MAIN_MODULE_EVENTS[$ar["~FROM_MODULE_ID"]][$ar["~MESSAGE_ID"]][] = $ar; } } // need to re-sort because of AddEventHandler() calls foreach ($copy_MAIN_MODULE_EVENTS as $module => $temp1) { foreach ($copy_MAIN_MODULE_EVENTS[$module] as $message => $temp2) { sortByColumn($MAIN_MODULE_EVENTS[$module][$message], "SORT"); } } $MAIN_MODULE_EVENTS_INIT = true; } $MODULE_ID = strtoupper($MODULE_ID); $MESSAGE_ID = strtoupper($MESSAGE_ID); if (array_key_exists($MODULE_ID, $MAIN_MODULE_EVENTS) && array_key_exists($MESSAGE_ID, $MAIN_MODULE_EVENTS[$MODULE_ID])) { $arrResult = $MAIN_MODULE_EVENTS[$MODULE_ID][$MESSAGE_ID]; } else { $arrResult = array(); } if ($bReturnArray) { return $arrResult; } else { $resRS = new CDBResult(); $resRS->InitFromArray($arrResult); return $resRS; } }
public static function GetRecentList($arParams = Array()) { global $DB, $USER; $bLoadUnreadMessage = isset($arParams['LOAD_UNREAD_MESSAGE']) && $arParams['LOAD_UNREAD_MESSAGE'] == 'Y'? true: false; $bTimeZone = isset($arParams['USE_TIME_ZONE']) && $arParams['USE_TIME_ZONE'] == 'N'? false: true; $bSmiles = isset($arParams['USE_SMILES']) && $arParams['USE_SMILES'] == 'N'? false: true; $nameTemplate = COption::GetOptionString("im", "user_name_template", "#LAST_NAME# #NAME#", SITE_ID); $nameTemplateSite = CSite::GetNameFormat(false); $nameOfSite = CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser()? "ex": false; $bIntranetEnable = IsModuleInstalled('intranet') && CModule::IncludeModule('intranet')? true: false; $arRecent = Array(); $arUsers = Array(); $cache_ttl = 2592000; $cache_id = $GLOBALS['USER']->GetID(); $cache_dir = '/bx/imc/rec'.CIMMessenger::GetCachePath($cache_id); $obCache = new CPHPCache(); if($obCache->InitCache($cache_ttl, $cache_id, $cache_dir)) { $ar = $obCache->GetVars(); $arRecent = $ar['recent']; $arUsers = $ar['users']; } else { if (!$bTimeZone) CTimeZone::Disable(); $strSql = " SELECT R.ITEM_TYPE, R.ITEM_ID, R.ITEM_MID M_ID, M.AUTHOR_ID M_AUTHOR_ID, M.MESSAGE M_MESSAGE, ".$DB->DatetimeToTimestampFunction('M.DATE_CREATE')." M_DATE_CREATE, C.TITLE C_TITLE, C.AUTHOR_ID C_OWNER_ID, U.LOGIN, U.NAME, U.LAST_NAME, U.PERSONAL_PHOTO, U.SECOND_NAME, U.PERSONAL_BIRTHDAY, U.PERSONAL_GENDER FROM b_im_recent R LEFT JOIN b_user U ON R.ITEM_TYPE = '".IM_MESSAGE_PRIVATE."' AND R.ITEM_ID = U.ID LEFT JOIN b_im_chat C ON R.ITEM_TYPE = '".IM_MESSAGE_GROUP."' AND R.ITEM_ID = C.ID LEFT JOIN b_im_message M ON R.ITEM_MID = M.ID WHERE R.USER_ID = ".$USER->GetId(); if (!$bTimeZone) CTimeZone::Enable(); $toDelete = Array(); $CCTP = new CTextParser(); $CCTP->MaxStringLen = 255; $CCTP->allow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => ($bSmiles? "Y": "N"), "NL2BR" => "Y", "VIDEO" => "N", "TABLE" => "N", "CUT_ANCHOR" => "N", "ALIGN" => "N"); $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); while ($arRes = $dbRes->GetNext(true, false)) { $arRes['ITEM_TYPE'] = trim($arRes['ITEM_TYPE']); if ($arRes['M_DATE_CREATE']+2592000 < time()) { $toDelete[$arRes['ITEM_TYPE']][] = $arRes['ITEM_ID']; continue; } $itemId = $arRes['ITEM_ID']; $item = Array( 'TYPE' => $arRes['ITEM_TYPE'], 'MESSAGE' => Array( 'id' => $arRes['M_ID'], 'senderId' => $arRes['M_AUTHOR_ID'], 'date' => $arRes['M_DATE_CREATE'], 'text' => $CCTP->convertText(preg_replace("/\[s\].*?\[\/s\]/i", "", $arRes['M_MESSAGE'])) ) ); $item['MESSAGE']['text'] = preg_replace("/------------------------------------------------------(.*)------------------------------------------------------/mi", " [".GetMessage('IM_QUOTE')."] ", strip_tags(str_replace(array("<br>","<br/>","<br />", "#BR#"), Array(" "," ", " ", " "), $item['MESSAGE']['text']), "<img>")); if ($arRes['ITEM_TYPE'] == IM_MESSAGE_PRIVATE) { $arUsers[] = $arRes['ITEM_ID']; $arFileTmp = CFile::ResizeImageGet( $arRes["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false ); $item['USER'] = Array( 'id' => $arRes['ITEM_ID'], 'name' => CUser::FormatName($nameTemplateSite, $arRes, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arRes, true, false), 'avatar' => empty($arFileTmp['src'])? '/bitrix/js/im/images/blank.gif': $arFileTmp['src'], 'gender' => $arRes['PERSONAL_GENDER'] == 'F'? 'F': 'M', 'status' => 'offline', 'birthday' => $arRes['PERSONAL_BIRTHDAY'], 'profile' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('im', 'path_to_user_profile', "", $nameOfSite), array("user_id" => $arRes["ITEM_ID"])) ); } else { $itemId = 'chat'.$itemId; $item['CHAT'] = Array( 'id' => $arRes['ITEM_ID'], 'name' => $arRes["C_TITLE"], 'owner' => $arRes["C_OWNER_ID"], ); } $arRecent[$itemId] = $item; } // remove old entity if (!empty($toDelete)) { if (isset($toDelete[IM_MESSAGE_PRIVATE])) self::DeleteRecent($toDelete[IM_MESSAGE_PRIVATE]); if (isset($toDelete[IM_MESSAGE_GROUP])) self::DeleteRecent($toDelete[IM_MESSAGE_GROUP], true); } if($obCache->StartDataCache()) $obCache->EndDataCache(Array('recent' => $arRecent, 'users' => $arUsers)); } $arOnline = self::GetStatus(Array('ID' => array_values($arUsers))); foreach ($arRecent as $key => $value) { if ($value['TYPE'] != IM_MESSAGE_PRIVATE) continue; $arRecent[$key]['USER']['birthday'] = $bIntranetEnable? CIntranetUtils::IsToday($value['USER']['birthday']): false; $arRecent[$key]['USER']['status'] = isset($arOnline['users'][$value['USER']['id']])? 'online': 'offline'; } if ($bLoadUnreadMessage) { $CIMMessage = new CIMMessage(false, Array( 'hide_link' => true )); $ar = $CIMMessage->GetUnreadMessage(Array( 'LOAD_DEPARTMENT' => 'N', 'ORDER' => 'ASC', 'GROUP_BY_CHAT' => 'Y', 'USE_TIME_ZONE' => $bTimeZone? 'Y': 'N', 'USE_SMILES' => $bSmiles? 'Y': 'N' )); foreach ($ar['message'] as $data) { if (!isset($arRecent[$data['senderId']])) { $arRecent[$data['senderId']] = Array( 'TYPE' => IM_MESSAGE_PRIVATE, 'USER' => $ar['users'][$data['senderId']] ); } $arRecent[$data['senderId']]['MESSAGE'] = Array( 'id' => $data['id'], 'senderId' => $data['senderId'], 'date' => $data['date'], 'text' => preg_replace("/------------------------------------------------------(.*)------------------------------------------------------/mi", " [".GetMessage('IM_QUOTE')."] ", strip_tags(str_replace(array("<br>","<br/>","<br />", "#BR#"), Array(" ", " ", " ", " "), $data['text']), "<img>")) ); $arRecent[$data['senderId']]['COUNTER'] = $data['counter']; } $CIMChat = new CIMChat(false, Array( 'hide_link' => true )); $ar = $CIMChat->GetUnreadMessage(Array( 'ORDER' => 'ASC', 'GROUP_BY_CHAT' => 'Y', 'USER_LOAD' => 'N', 'USE_SMILES' => $bSmiles? 'Y': 'N', 'USE_TIME_ZONE' => $bTimeZone? 'Y': 'N' )); foreach ($ar['message'] as $data) { if (!isset($arRecent['chat'.$data['recipientId']])) { $arRecent['chat'.$data['recipientId']] = Array( 'TYPE' => IM_MESSAGE_GROUP, 'CHAT' => $ar['chat'] ); } $arRecent['chat'.$data['recipientId']]['MESSAGE'] = Array( 'id' => $data['id'], 'senderId' => $data['senderId'], 'date' => $data['date'], 'text' => $data['text'] ); $arRecent['chat'.$data['recipientId']]['COUNTER'] = $data['counter']; } } if (!empty($arRecent)) { sortByColumn( $arRecent, array( 'COUNTER' => array(SORT_NUMERIC, SORT_DESC), 'MESSAGE' => array(SORT_NUMERIC, SORT_DESC) ), array( 'COUNTER' => function($counter){ return !is_null($counter); }, 'MESSAGE' => function($recent){ return $recent['date']; } ), null, true ); } return $arRecent; }
$allVats = CCrmVat::GetAll(); foreach ($allVats as $k => $v) { $arVat = array(); $arVat['ID'] = $arVat['~ID'] = intval($k); // Key is Currency ID $arVat['NAME'] = $v['NAME']; $arVat['C_SORT'] = $arVat['~C_SORT'] = intval($v['C_SORT']); $arVat['ACTIVE'] = $arVat['~ACTIVE'] = $v['ACTIVE'] == 'Y' ? 'Y' : 'N'; $arVat['RATE'] = $arVat['~RATE'] = $v['RATE']; $arVat['PATH_TO_VAT_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_VAT_SHOW'], array('vat_id' => $k)); $arVat['PATH_TO_VAT_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_VAT_EDIT'], array('vat_id' => $k)); $arVat['PATH_TO_VAT_DELETE'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_VAT_LIST'], array('vat_id' => $k)), array('action_' . $arResult['GRID_ID'] => 'delete', 'ID' => $k, 'sessid' => bitrix_sessid())); $arVat['~NAME'] = htmlspecialcharsBack($arVat['NAME']); $vats[] = $arVat; } if (is_array($sort) && count($sort) > 0) { // Process only first expression reset($sort); $by = key($sort); $order = $sort[$by] == 'asc' ? SORT_ASC : SORT_DESC; if (in_array($by, array('ID', 'NAME', 'RATE', 'ACTIVE', 'C_SORT'), true)) { sortByColumn($vats, array($by => $order)); } } $arResult['VATS'] = array(); $rowCount = $arResult['ROWS_COUNT'] = count($vats); for ($i = 0; $i < $rowCount; $i++) { $arVat = $vats[$i]; $arResult['VATS'][$arVat['ID']] = $arVat; } $this->IncludeComponentTemplate();
public static function findDealsByPhone($phone) { if (strlen($phone) <= 0) { return false; } if (!CModule::IncludeModule('crm')) { return false; } $deals = array(); $entityTypeIDs = array(CCrmOwnerType::Contact, CCrmOwnerType::Company); foreach ($entityTypeIDs as $entityTypeID) { $results = CCrmDeal::FindByCommunication($entityTypeID, 'PHONE', $phone, false, array('ID', 'TITLE', 'STAGE_ID', 'ASSIGNED_BY_ID', 'COMPANY_ID', 'CONTACT_ID', 'DATE_MODIFY')); foreach ($results as $fields) { if (Bitrix\Crm\PhaseSemantics::isFinal($fields['STAGE_ID'])) { continue; } $entityID = (int) ($entityTypeID === CCrmOwnerType::Company ? $fields['COMPANY_ID'] : $fields['CONTACT_ID']); if ($entityID <= 0) { continue; } $deals[$fields['ID']] = $fields; } } sortByColumn($deals, array('DATE_MODIFY' => array(SORT_DESC))); return $deals; }
} else { $rate['PERSON_TYPE_ID'] = $rate['~PERSON_TYPE_ID'] = ' '; } $rate['VALUE'] = intval($v['VALUE']); $rate['IS_IN_PRICE'] = $rate['~IS_IN_PRICE'] = $v['IS_IN_PRICE']; $rate['APPLY_ORDER'] = intval($v['APPLY_ORDER']); $rate['PATH_TO_TAXRATE_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAXRATE_SHOW'], array('taxrate_id' => $k)); $rate['PATH_TO_TAXRATE_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAXRATE_EDIT'], array('taxrate_id' => $k)); $rate['PATH_TO_TAXRATE_DELETE'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAXRATE_LIST'], array('taxrate_id' => $k)), array('action_' . $arResult['GRID_ID'] => 'delete', 'ID' => $k, 'sessid' => bitrix_sessid(), $arResult['TAX_FORM_ID'] . '_active_tab' => 'tab_rateslist')); $rate['~VALUE'] = $v['VALUE']; $rate['~APPLY_ORDER'] = $v['APPLY_ORDER']; $rate['~NAME'] = htmlspecialcharsBack($rate['NAME']); $rate['~PERSON_TYPE_ID'] = htmlspecialcharsBack($rate['PERSON_TYPE_ID']); $arTaxRates[] = $rate; } if (is_array($arTaxRates) && is_array($sort) && count($sort) > 0) { // Process only first expression reset($sort); $by = key($sort); $order = $sort[$by] == 'asc' ? SORT_ASC : SORT_DESC; if (in_array($by, array('ID', 'NAME', 'VALUE', 'IS_IN_PRICE', 'PERSON_TYPE_ID', 'ACTIVE', 'APPLY_ORDER', 'TIMESTAMP_X'), true)) { sortByColumn($arTaxRates, array($by => $order)); } } $arResult['TAX_RATES'] = array(); $rowCount = $arResult['ROWS_COUNT'] = count($arTaxRates); for ($i = 0; $i < $rowCount; $i++) { $rate = $arTaxRates[$i]; $arResult['TAX_RATES'][$rate['ID']] = $rate; } $this->IncludeComponentTemplate();
/** * @param array $formData * @param Order $order * @param int $userId * @param bool $createUserIfNeed * @param array $files * @param \Bitrix\Sale\Result $result * @return \Bitrix\Sale\Order * @throws SystemException * @throws \Bitrix\Main\ObjectNotFoundException */ public static function editOrderByFormData(array $formData, Order $order, $userId, $createUserIfNeed = true, array $files = array(), \Bitrix\Sale\Result &$result) { /** @var \Bitrix\Sale\Result $res */ $res = self::fillSimpleFields($order, $formData, $userId); if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); } $propCollection = $order->getPropertyCollection(); $res = $propCollection->setValuesFromPost($formData, $files); if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); } $order->setFieldNoDemand("USER_ID", self::getUserId($order, $formData, $createUserIfNeed, $result)); if (isset($formData["DISCOUNTS"]) && is_array($formData["DISCOUNTS"])) { $order->getDiscount()->setApplyResult($formData["DISCOUNTS"]); } //init basket $basket = $order->getBasket(); $itemsBasketCodes = array(); $productAdded = false; if (isset($formData["PRODUCT"]) && is_array($formData["PRODUCT"])) { /* for correct discounts work */ sortByColumn($formData["PRODUCT"], array("BASE_PRICE" => SORT_DESC, "PRICE" => SORT_DESC), '', null, true); foreach ($formData["PRODUCT"] as $basketCode => $productData) { if (!isset($productData["PROPS"])) { $productData["PROPS"] = array(); } $item = $basket->getExistsItem($productData["MODULE"], $productData["OFFER_ID"], $productData["PROPS"]); if ($item == null && $basketCode != "new") { $item = $basket->getItemByBasketCode($basketCode); } if ($item && $item->isBundleChild()) { continue; } if (!$item) { continue; } $itemsBasketCodes[] = $item->getBasketCode(); } } /** @var \Bitrix\Sale\BasketItem $item */ $basketItems = $basket->getBasketItems(); $res = new \Bitrix\Sale\Result(); foreach ($basketItems as $item) { if (!in_array($item->getBasketCode(), $itemsBasketCodes)) { $res = $item->delete(); if (!$res->isSuccess()) { $errMess = ""; foreach ($res->getErrors() as $error) { $errMess .= $error->getMessage() . "\n"; } if (strlen($errMess) <= 0) { $errMess = Loc::getMessage("SALE_ORDEREDIT_BASKET_ITEM_DEL_ERROR"); } $result->addError(new Error($errMess)); } } } if (isset($formData["PRODUCT"]) && is_array($formData["PRODUCT"])) { $isStartField = $order->isStartField(); foreach ($formData["PRODUCT"] as $basketCode => $productData) { if ($productData["IS_SET_ITEM"] == "Y") { continue; } if (!isset($productData["PROPS"]) || !is_array($productData["PROPS"])) { $productData["PROPS"] = array(); } $item = $basket->getExistsItem($productData["MODULE"], $productData["OFFER_ID"], $productData["PROPS"]); if ($item == null && $basketCode != "new") { $item = $basket->getItemByBasketCode($basketCode); } if ($item && $item->isBundleChild()) { $item = null; } if (!$item) { $setBasketCode = $basketCode != "new" ? $basketCode : null; $item = $basket->createItem($productData["MODULE"], $productData["OFFER_ID"], $setBasketCode); if ($basketCode != $productData["BASKET_CODE"]) { $productData["BASKET_CODE"] = $item->getBasketCode(); } $needDataUpdate = false; if ($basketCode == "new") { $result->setData(array("NEW_ITEM_BASKET_CODE" => $productData["BASKET_CODE"])); $needDataUpdate = true; } $res = self::fillBasketItem($item, $productData, $order, $basket, $needDataUpdate); if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); } if (!$productAdded) { $productAdded = true; } } else { if ($basketCode != $productData["BASKET_CODE"]) { $productData["BASKET_CODE"] = $item->getBasketCode(); } if (isset($productData["OFFER_ID"]) || intval($productData["OFFER_ID"]) >= 0) { $productData["PRODUCT_ID"] = $productData["OFFER_ID"]; } $itemFields = array_intersect_key($productData, array_flip($item::getAvailableFields())); if (isset($itemFields["MEASURE_CODE"]) && strlen($itemFields["MEASURE_CODE"]) > 0) { $measures = OrderBasket::getCatalogMeasures(); if (isset($measures[$itemFields["MEASURE_CODE"]]) && strlen($measures[$itemFields["MEASURE_CODE"]]) > 0) { $itemFields["MEASURE_NAME"] = $measures[$itemFields["MEASURE_CODE"]]; } } //Let's extract cached provider product data from field if (!empty($productData["PROVIDER_DATA"])) { $providerData = unserialize($productData["PROVIDER_DATA"]); if (is_array($providerData) && !empty($providerData)) { self::setProviderTrustData($item, $order, $providerData); } } if (!empty($productData["SET_ITEMS_DATA"])) { $productData["SET_ITEMS"] = unserialize($productData["SET_ITEMS_DATA"]); } /** @var \Bitrix\Sale\Result $res */ $res = self::setBasketItemFields($item, $itemFields); if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); } } if (!empty($productData["PROPS"]) && is_array($productData["PROPS"])) { /** @var \Bitrix\Sale\BasketPropertiesCollection $property */ $property = $item->getPropertyCollection(); $property->setProperty($productData["PROPS"]); } } if ($isStartField) { $hasMeaningfulFields = $order->hasMeaningfulField(); /** @var Result $r */ $r = $order->doFinalAction($hasMeaningfulFields); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } } if (isset($formData["DISCOUNTS"]) && is_array($formData["DISCOUNTS"])) { $order->getDiscount()->setApplyResult($formData["DISCOUNTS"]); } } else { $result->addError(new EntityError(Loc::getMessage("SALE_ORDEREDIT_ERROR_NO_PRODUCTS"))); } if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); } if ($productAdded) { $res = $basket->refreshData(array('PRICE', 'BASE_PRICE', 'QUANTITY', 'COUPONS')); if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); } } return $order; }
$arElement["ELEMENT_ID"] = $arElement["ID"]; $arElement["SECTION_ID"] = $arElement["IBLOCK_SECTION_ID"]; $arElementSort[] = $arElement; $arIBlockSectionID[] = $arElement["IBLOCK_SECTION_ID"]; } // get additional info for updated detail URLs $dbSectionRes = CIBlockSection::GetList(array(), array("ID" => array_unique($arIBlockSectionID)), false, array("ID", "CODE")); while ($arSectionRes = $dbSectionRes->GetNext()) { foreach ($arElementSort as &$arElement) { if ($arElement["IBLOCK_SECTION_ID"] == $arSectionRes["ID"]) { $arElement["SECTION_CODE"] = $arSectionRes["CODE"]; } } unset($arElement); } sortByColumn($arElementSort, array("~DATE_VISIT" => SORT_DESC)); $currency = CSaleLang::GetLangCurrency(SITE_ID); foreach ($arElementSort as $arElements) { static $arCacheOffersIblock = array(); $priceMin = 0; $arItems = $arViewed[$arElements["ID"]]; $arItems["IBLOCK_ID"] = $arElements["IBLOCK_ID"]; $arItems["DETAIL_PICTURE"] = $arElements["DETAIL_PICTURE"]; $arItems["PREVIEW_PICTURE"] = $arElements["PREVIEW_PICTURE"]; $arElements["DETAIL_PAGE_URL"] = CIBlock::ReplaceDetailUrl($arElements["DETAIL_PAGE_URL"], $arElements, false); $arItems["DETAIL_PAGE_URL"] = $arElements["DETAIL_PAGE_URL"]; $arItems["BUY_URL"] = htmlspecialcharsex($APPLICATION->GetCurPageParam($arParams["ACTION_VARIABLE"] . "=BUY&" . $arParams["PRODUCT_ID_VARIABLE"] . "=" . $arItems["PRODUCT_ID"], array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"]))); $arItems["ADD_URL"] = htmlspecialcharsex($APPLICATION->GetCurPageParam($arParams["ACTION_VARIABLE"] . "=ADD2BASKET&" . $arParams["PRODUCT_ID_VARIABLE"] . "=" . $arItems["PRODUCT_ID"], array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"]))); if (!is_set($arCacheOffersIblock[$arElements["IBLOCK_ID"]])) { $mxResult = CCatalogSKU::GetInfoByProductIBlock($arElements["IBLOCK_ID"]); if (is_array($mxResult)) {
public static function getActions() { if (!CModule::IncludeModule('sale')) { return array(); } if (!empty(self::$arActFiles)) { return self::$arActFiles; } $arUserPSActions = array(); $arSystemPSActions = array(); $path2SystemPSFiles = "/bitrix/modules/sale/payment/"; $path2UserPSFiles = COption::GetOptionString("sale", "path2user_ps_files", BX_PERSONAL_ROOT . "/php_interface/include/sale_payment/"); CheckDirPath($_SERVER["DOCUMENT_ROOT"] . $path2UserPSFiles); $handle = @opendir($_SERVER["DOCUMENT_ROOT"] . $path2UserPSFiles); if ($handle) { while (false !== ($dir = readdir($handle))) { if ($dir == "." || $dir == "..") { continue; } $title = ""; $description = ""; if (is_dir($_SERVER["DOCUMENT_ROOT"] . $path2UserPSFiles . $dir)) { $newFormat = "Y"; list($title, $description) = self::LocalGetPSActionDescr($_SERVER["DOCUMENT_ROOT"] . $path2UserPSFiles . $dir . "/.description.php"); if (strlen($title) <= 0) { $title = $dir; } else { $title .= " (" . $dir . ")"; } } if (strlen($title) > 0) { $arUserPSActions[] = array("ID" => $dir, "PATH" => $path2UserPSFiles . $dir, "TITLE" => $title, "DESCRIPTION" => $description, "NEW_FORMAT" => $newFormat); } } @closedir($handle); } $handle = @opendir($_SERVER["DOCUMENT_ROOT"] . $path2SystemPSFiles); if ($handle) { while (false !== ($dir = readdir($handle))) { if ($dir == "." || $dir == ".." || !in_array($dir, self::$arCrmCompatibleActs)) { continue; } if (is_dir($_SERVER["DOCUMENT_ROOT"] . $path2SystemPSFiles . $dir)) { $newFormat = "Y"; list($title, $description) = self::LocalGetPSActionDescr($_SERVER["DOCUMENT_ROOT"] . $path2SystemPSFiles . $dir . "/.description.php"); if (strlen($title) <= 0) { $title = $dir; } else { $title .= " (" . $dir . ")"; } } $arSystemPSActions[] = array("ID" => $dir, "PATH" => $path2SystemPSFiles . $dir, "TITLE" => $title, "DESCRIPTION" => $description, "NEW_FORMAT" => $newFormat); } @closedir($handle); } foreach ($arUserPSActions as $val) { self::$arActFiles[$val['ID']] = $val; } foreach ($arSystemPSActions as $val) { self::$arActFiles[$val['ID']] = $val; } sortByColumn(self::$arActFiles, array("ID" => SORT_ASC)); return self::$arActFiles; }
} $allCatCount = CIBlockElement::GetList(array(), $arElementFilter, array(), false, array("ID")); //All Pages in all categories $catParams->sName = GetMessage("WIKI_CATEGORY_ALL"); $catParams->sTitle = GetMessage("WIKI_CATEGORY_ALL_TITLE"); $catParams->iItemsCount = $allCatCount; $catParams->bIsRed = 'N'; $catParams->createLinkFromTemplate(); $categories->addItem($catParams); //Anyone can add custom virtual category to the list $rsHandlers = GetModuleEvents("wiki", "OnCategoryListCreate"); while ($arHandler = $rsHandlers->Fetch()) { ExecuteModuleEventEx($arHandler, array(&$categories, $arParams['PATH_TO_CATEGORY'])); } $arResult['CATEGORIES'] = $categories->GetItems(); sortByColumn($arResult['CATEGORIES'], "NAME"); //for pagination $dbCatList = new CDBResult(); $dbCatList->InitFromArray($arResult['CATEGORIES']); $arResult['CATEGORIES'] = array(); $dbCatList->NavStart($arParams['CATEGORY_COUNT'], false); while ($arCat = $dbCatList->GetNext()) { $arResult['CATEGORIES'][strtolower($arCat["NAME"])] = $arCat; } $arResult['DB_LIST'] =& $dbCatList; $arCatName = $categories->getItemsNames(); $arCatNameExists = array(); if (!empty($arCatName)) { // checking the category on the "red link" $arFilter = array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N', 'ACTIVE' => 'Y', 'NAME' => $arCatName); if (CWikiSocnet::IsSocNet()) {
/** * Divides order items to packages. * @link http://en.wikipedia.org/wiki/Bin_packing_problem Bin packing problem * * @param array $arItems Array of order's good's demensions * array( * array("WIDTH"=>100, "HEIGHT"=>95, "LENGTH"=>80), * array("WIDTH"=>150, "HEIGHT"=>15, "LENGTH"=>800), * ... * ) * * @param array $arPacks array( * array("425", "265", "380") * ); * @param int max weight * @param float $reservedSpace * @return array pack params */ public static function getRequiredPacks(&$arItems, $arPacks, $maxWeight, $reservedSpace = 0.15) { $packCount = 1; $packVolume = 0; reset($arPacks); $FIRST_PACK = key($arPacks); $P_WIDTH_IDX = 0; $P_HEIGHT_IDX = 1; $P_LENGTH_IDX = 2; $arResultPacksParams = array(); if (isset($arPacks[$FIRST_PACK]['DIMENSIONS'][$P_WIDTH_IDX]) && isset($arPacks[$FIRST_PACK]['DIMENSIONS'][$P_HEIGHT_IDX]) && isset($arPacks[$FIRST_PACK]['DIMENSIONS'][$P_LENGTH_IDX])) { $packVolume = $arPacks[$FIRST_PACK]['DIMENSIONS'][$P_WIDTH_IDX] * $arPacks[$FIRST_PACK]['DIMENSIONS'][$P_HEIGHT_IDX] * $arPacks[$FIRST_PACK]['DIMENSIONS'][$P_LENGTH_IDX]; } if (is_array($arItems)) { $arTmpItems = array(); foreach ($arItems as $itemId => $item) { $arTmpItems[$item["PRODUCT_ID"]]["VOLUME"] = self::calcItemVolume($item); $arTmpItems[$item["PRODUCT_ID"]]["WEIGHT"] = $item["WEIGHT"]; $arTmpItems[$item["PRODUCT_ID"]]["PRICE"] = $item["PRICE"]; // set items parameters $arTmpItems[$item["PRODUCT_ID"]]["SET_PARENT_ID"] = $item["SET_PARENT_ID"]; $arTmpItems[$item["PRODUCT_ID"]]["TYPE"] = $item["TYPE"]; if ($item["QUANTITY"] > 1) { for ($i = $item["QUANTITY"]; $i > 1; $i--) { $arTmpItems[$item["PRODUCT_ID"] . "_" . $i] = $arTmpItems[$item["PRODUCT_ID"]]; } } } // calculate set parent total volume foreach ($arTmpItems as $id => $item) { if (CSaleBasketHelper::isSetItem($item)) { $arTmpItems[$item["SET_PARENT_ID"]]["VOLUME"] += $item["VOLUME"]; } } // remove set items params foreach ($arTmpItems as $id => $item) { if (CSaleBasketHelper::isSetItem($item)) { unset($arTmpItems[$id]); } } if (!empty($arTmpItems)) { sortByColumn($arTmpItems, array("VOLUME" => array(SORT_NUMERIC, SORT_DESC), "WEIGHT" => array(SORT_NUMERIC, SORT_DESC))); $tmpPackageVolume = 0; $tmpPackageWeight = 0; $tmpPackagePrice = 0; foreach ($arTmpItems as $arItem) { if ($packVolume > 0 && $arItem["VOLUME"] > $packVolume || $maxWeight > 0 && $arItem["WEIGHT"] > $maxWeight) { return array(); } $correctCoeff = $tmpPackageVolume > 0 ? 1 - $reservedSpace : 1; if (($packVolume <= 0 || $tmpPackageVolume + $arItem["VOLUME"] <= $packVolume * $correctCoeff) && ($maxWeight <= 0 || $tmpPackageWeight + $arItem["WEIGHT"] <= $maxWeight)) { $tmpPackageVolume += $arItem["VOLUME"]; $tmpPackageWeight += $arItem["WEIGHT"]; $tmpPackagePrice += $arItem["PRICE"]; } else { $arResultPacksParams[$packCount - 1] = array(); $arResultPacksParams[$packCount - 1]["VOLUME"] = $packVolume; $arResultPacksParams[$packCount - 1]["WEIGHT"] = $tmpPackageWeight; $arResultPacksParams[$packCount - 1]["PRICE"] = $tmpPackagePrice; $tmpPackageVolume = $arItem["VOLUME"]; $tmpPackageWeight = $arItem["WEIGHT"]; $tmpPackagePrice = $arItem["PRICE"]; $packCount += 1; } } $arResultPacksParams[$packCount - 1] = array(); $arResultPacksParams[$packCount - 1]["VOLUME"] = $packVolume; $arResultPacksParams[$packCount - 1]["WEIGHT"] = $tmpPackageWeight; $arResultPacksParams[$packCount - 1]["PRICE"] = $tmpPackagePrice; $arResultPacksParams[$packCount - 1]["DIMENSIONS"] = array("WIDTH" => $arPacks[$FIRST_PACK]['DIMENSIONS'][$P_WIDTH_IDX], "HEIGHT" => $arPacks[$FIRST_PACK]['DIMENSIONS'][$P_HEIGHT_IDX], "LENGTH" => $arPacks[$FIRST_PACK]['DIMENSIONS'][$P_LENGTH_IDX]); } } return $arResultPacksParams; }
} $arResult["BOOKMARKS"] = array(); $arResult["PAGE_URL"] = CHTTP::URN2URI($arParams["PAGE_URL"]); $arResult["PAGE_TITLE"] = $arParams["PAGE_TITLE"]; foreach ($arResult["HANDLERS_ALL"] as $name => $arHandler) { if (in_array($name, $arParams["HANDLERS"])) { $PageTitle = $arResult["PAGE_TITLE"]; if (array_key_exists("CHARSBACK", $arHandler) && $arHandler["CHARSBACK"]) { $PageTitleBack = htmlspecialcharsback($PageTitle); } $arHandler["ICON"] = str_replace("#PAGE_URL#", $arResult["PAGE_URL"], $arHandler["ICON"]); $arHandler["ICON"] = str_replace("#PAGE_URL_ENCODED#", urlencode($arResult["PAGE_URL"]), $arHandler["ICON"]); if (array_key_exists("CHARSBACK", $arHandler) && $arHandler["CHARSBACK"]) { $arHandler["ICON"] = str_replace("#PAGE_TITLE#", CUtil::JSEscape($PageTitleBack), $arHandler["ICON"]); $arHandler["ICON"] = str_replace("#PAGE_TITLE_ENCODED#", urlencode($PageTitleBack), $arHandler["ICON"]); $arHandler["ICON"] = str_replace("#PAGE_TITLE_ORIG#", CUtil::addslashes($PageTitle), $arHandler["ICON"]); $utfTitle = $APPLICATION->ConvertCharset($PageTitleBack, LANG_CHARSET, "UTF-8"); $arHandler["ICON"] = str_replace("#PAGE_TITLE_UTF_ENCODED#", urlencode($utfTitle), $arHandler["ICON"]); } else { $arHandler["ICON"] = str_replace("#PAGE_TITLE#", CUtil::addslashes($PageTitle), $arHandler["ICON"]); $arHandler["ICON"] = str_replace("#PAGE_TITLE_ENCODED#", urlencode($PageTitle), $arHandler["ICON"]); $utfTitle = $APPLICATION->ConvertCharset($PageTitle, LANG_CHARSET, "UTF-8"); $arHandler["ICON"] = str_replace("#PAGE_TITLE_UTF_ENCODED#", urlencode($utfTitle), $arHandler["ICON"]); } $arResult["BOOKMARKS"][$name]["ICON"] = $arHandler["ICON"]; $arResult["BOOKMARKS"][$name]["SORT"] = $arHandler["SORT"]; } } sortByColumn($arResult["BOOKMARKS"], "SORT"); CUtil::InitJSCore(); $this->IncludeComponentTemplate();
/** * Adds one more line to the body. * * @param Statement[] $updaterSteps Plain array of updater steps. * @param array &$result Nested arrays of structured code. * * @return void */ protected function makeCodeTree(array $updaterSteps, &$result) { foreach ($updaterSteps as $i => $statement) { if (empty($statement->conditions)) { $result[] = $statement->formatBodyLines(0); unset($updaterSteps[$i]); } } while ($updaterSteps) { $byPredicates = array(); foreach ($updaterSteps as $i => $statement) { /** * @var Condition $condition */ foreach ($statement->conditions as $condition) { $predicate = $condition->getPredicate(); if (!isset($byPredicates[$predicate])) { $byPredicates[$predicate] = array("predicate" => $predicate, "sort" => $this->getPredicateSort($predicate), "count" => 1); } else { $byPredicates[$predicate]["count"]++; } } } if ($byPredicates) { sortByColumn($byPredicates, array("count" => SORT_DESC, "sort" => SORT_ASC)); $mostPopular = key($byPredicates); $subSteps = array(); $ifStatement = array("if" => array($mostPopular), "body" => array()); foreach ($updaterSteps as $i => $statement) { foreach ($statement->conditions as $j => $condition) { if ($condition->getPredicate() == $mostPopular) { unset($statement->conditions[$j]); $subSteps[] = $statement; unset($updaterSteps[$i]); } } } $this->makeCodeTree($subSteps, $ifStatement["body"]); if (is_array($ifStatement["body"]) && count($ifStatement["body"]) == 1 && is_array($ifStatement["body"][0]) && isset($ifStatement["body"][0]["if"]) && isset($ifStatement["body"][0]["body"]) && strlen(implode(' && ', array_merge($ifStatement["if"], $ifStatement["body"][0]["if"]))) < 100) { $ifStatement["if"] = array_merge($ifStatement["if"], $ifStatement["body"][0]["if"]); $ifStatement["body"] = $ifStatement["body"][0]["body"]; } $result[] = $ifStatement; } } }
$dbRes = CSaleTaxRate::GetList(array(), array("TAX_ID" => $tax['ID'])); while ($dbRes->Fetch()) { $rateNum++; } if ($rateNum > 0) { $rateNumShow = "<a href=\"" . $tax['PATH_TO_TAX_SHOW_RATES'] . "\">" . $rateNum . "</a>"; } else { $rateNumShow = "0"; } $tax['STAV'] = $rateNumShow; $tax['~NAME'] = htmlspecialcharsBack($tax['NAME']); $tax['~LID'] = htmlspecialcharsBack($tax['LID']); $tax['~CODE'] = htmlspecialcharsBack($tax['CODE']); $taxies[] = $tax; } if (is_array($sort) && count($sort) > 0) { // Process only first expression reset($sort); $by = key($sort); $order = $sort[$by] == 'asc' ? SORT_ASC : SORT_DESC; if (in_array($by, array('ID', 'NAME', 'CODE', 'TIMESTAMP_X'), true)) { sortByColumn($taxies, array($by => $order)); } } $arResult['TAXIES'] = array(); $rowCount = $arResult['ROWS_COUNT'] = count($taxies); for ($i = 0; $i < $rowCount; $i++) { $tax = $taxies[$i]; $arResult['TAXIES'][$tax['ID']] = $tax; } $this->IncludeComponentTemplate();
$arHeaders[] = array("id" => "ENGINE_TYPE", "content" => GetMessage("PERFMON_TABLES_ENGINE_TYPE"), "default" => true, "sort" => "ENGINE_TYPE"); } $arHeaders[] = array("id" => "NUM_ROWS", "content" => GetMessage("PERFMON_TABLES_NUM_ROWS"), "default" => true, "align" => "right", "sort" => "NUM_ROWS"); $arHeaders[] = array("id" => "BYTES", "content" => GetMessage("PERFMON_TABLES_BYTES"), "default" => true, "align" => "right", "sort" => "BYTES"); $lAdmin->AddHeaders($arHeaders); $bShowFullInfo = $DB->type == "MYSQL" && (isset($_REQUEST["full_info"]) && $_REQUEST["full_info"] == "Y" || COption::GetOptionInt("perfmon", "tables_show_time", 0) <= 5); if ($bShowFullInfo) { session_write_close(); } $stime = time(); $arAllTables = array(); $rsData = CPerfomanceTableList::GetList($bShowFullInfo); while ($ar = $rsData->Fetch()) { $arAllTables[] = $ar; } sortByColumn($arAllTables, array($by => $order == "desc" ? SORT_DESC : SORT_ASC)); $etime = time(); if ($bShowFullInfo) { COption::SetOptionInt("perfmon", "tables_show_time", $etime - $stime); } $rsData = new CDBResult(); $rsData->InitFromArray($arAllTables); $rsData = new CAdminResult($rsData, $sTableID); while ($arRes = $rsData->GetNext()) { $row =& $lAdmin->AddRow($arRes["TABLE_NAME"], $arRes); $row->AddViewField("TABLE_NAME", '<a class="table_name" data-table-name="' . $arRes["TABLE_NAME"] . '" href="perfmon_table.php?lang=' . LANGUAGE_ID . '&table_name=' . urlencode($arRes["TABLE_NAME"]) . '">' . $arRes["TABLE_NAME"] . '</a>'); $row->AddViewField("BYTES", CFile::FormatSize($arRes["BYTES"])); $arActions = array(); if ($DB->type == "MYSQL" && $arRes["ENGINE_TYPE"] !== "VIEW") { if ($bShowFullInfo) { foreach ($arEngines as $id => $ar) {
/** * @param array $arOrder * @param array $arFilter * @param bool $arGroupBy * @param bool $arNavStartParams * @param array $arSelectFields * @return \CDBResult * @throws \Bitrix\Main\ArgumentException * @deprecated */ public static function GetList($arOrder = array("SORT" => "ASC", "NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array('*')) { if (empty($arSelectFields)) { $arSelectFields = array('*'); } $params = array('order' => self::convertFilterOldToNew($arOrder), 'filter' => self::convertFilterOldToNew($arFilter), 'group' => self::convertGroupOldToNew($arGroupBy), 'select' => self::convertSelectOldToNew($arSelectFields)); $services = array(); $params['filter']['=CLASS_NAME'] = '\\Bitrix\\Sale\\Delivery\\Services\\Configurable'; $dbRes = \Bitrix\Sale\Delivery\Services\Table::getList($params); if (isset($arFilter["WEIGHT"]) && DoubleVal($arFilter["WEIGHT"]) > 0) { if (!isset($arFilter["WEIGHT_FROM"]) || floatval($arFilter["WEIGHT"]) > floatval($arFilter["WEIGHT_FROM"])) { $arFilter["+<=WEIGHT_FROM"] = $arFilter["WEIGHT"]; } if (!isset($arFilter["WEIGHT_TO"]) || floatval($arFilter["WEIGHT"]) < floatval($arFilter["WEIGHT_TO"])) { $arFilter["+>=WEIGHT_TO"] = $arFilter["WEIGHT"]; } } if (isset($arFilter["ORDER_PRICE"]) && IntVal($arFilter["ORDER_PRICE"]) > 0) { if (!isset($arFilter["ORDER_PRICE_FROM"]) || floatval($arFilter["ORDER_PRICE"]) > floatval($arFilter["ORDER_PRICE_FROM"])) { $arFilter["+<=ORDER_PRICE_FROM"] = $arFilter["ORDER_PRICE"]; } if (!isset($arFilter["ORDER_PRICE_TO"]) || floatval($arFilter["ORDER_PRICE"]) < floatval($arFilter["ORDER_PRICE_TO"])) { $arFilter["+>=ORDER_PRICE_TO"] = $arFilter["ORDER_PRICE"]; } } while ($service = $dbRes->fetch()) { $dbRstrRes = \Bitrix\Sale\Internals\ServiceRestrictionTable::getList(array('filter' => array("=SERVICE_ID" => $service["ID"], "=SERVICE_TYPE" => \Bitrix\Sale\Services\Base\RestrictionManager::SERVICE_TYPE_SHIPMENT))); while ($restr = $dbRstrRes->fetch()) { if (!self::checkRestrictionFilter($restr, $arFilter)) { continue 2; } $service = self::getSelectedRestrictionField($service, $restr, $arSelectFields); } $selectAsterisk = in_array('*', $arSelectFields); $mofifiedFields = array("LID", "WEIGHT_FROM", "WEIGHT_TO", "ORDER_PRICE_FROM", "ORDER_PRICE_TO", "ORDER_CURRENCY"); foreach ($mofifiedFields as $field) { if (($selectAsterisk || in_array($field, $arSelectFields)) && !array_key_exists($field, $service)) { $service[$field] = ""; } } if ($selectAsterisk || in_array("PERIOD_FROM", $arSelectFields)) { $service["PERIOD_FROM"] = $service["CONFIG"]["MAIN"]["PERIOD"]["FROM"]; } if ($selectAsterisk || in_array("PERIOD_TO", $arSelectFields)) { $service["PERIOD_TO"] = $service["CONFIG"]["MAIN"]["PERIOD"]["TO"]; } if ($selectAsterisk || in_array("PERIOD_TYPE", $arSelectFields)) { $service["PERIOD_TYPE"] = $service["CONFIG"]["MAIN"]["PERIOD"]["TYPE"]; } if ($selectAsterisk || in_array("PRICE", $arSelectFields)) { $service["CLASS_NAME"] = '\\Bitrix\\Sale\\Delivery\\Services\\Configurable'; $tmpSrv = \Bitrix\Sale\Delivery\Services\Manager::createObject($service); if ($tmpSrv) { $res = $tmpSrv->calculate(); $service["PRICE"] = $res->getPrice(); } else { $service["PRICE"] = 0; } } if ($selectAsterisk || in_array("STORE", $arSelectFields)) { $stores = \Bitrix\Sale\Delivery\ExtraServices\Manager::getStoresList($service["ID"]); $service["STORE"] = count($stores) > 0 ? serialize($stores) : ""; } if (intval($service["CODE"]) > 0) { $service["ID"] = $service["CODE"]; } unset($service["CODE"], $service["CLASS_NAME"], $service["CONFIG"], $service["PARENT_ID"]); $services[] = $service; } if (!empty($arOrder)) { foreach ($arOrder as $k => $v) { if ($v == 'ASC') { $arOrder[$k] = SORT_ASC; } elseif ($v == 'DESC') { $arOrder[$k] = SORT_DESC; } } sortByColumn($services, $arOrder); } $result = new \CDBResult(); $result->InitFromArray($services); return $result; }