Beispiel #1
0
 /**
  * @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;
 }
Beispiel #2
0
    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;
    }
Beispiel #3
0
	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;
	}
Beispiel #4
0
 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;
 }
Beispiel #5
0
 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;
 }
Beispiel #7
0
 /**
  * @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;
 }
Beispiel #8
0
 }
 $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;
Beispiel #9
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 != "" ? "&amp;" . 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 ? "&amp;" : "?") : '/freetrix/admin/index.php?lang=' . LANGUAGE_ID . '&amp;') . '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']) . '&nbsp;<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']) . '&nbsp;<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;
    }
Beispiel #10
0
$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();
}
Beispiel #11
0
         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);
Beispiel #12
0
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;
 }
Beispiel #14
0
			$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)
		{
Beispiel #15
0
	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"
			);
		}
	}
Beispiel #16
0
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;
    }
}
Beispiel #17
0
	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;
	}
Beispiel #18
0
$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();
Beispiel #19
0
 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;
 }
Beispiel #20
0
    } else {
        $rate['PERSON_TYPE_ID'] = $rate['~PERSON_TYPE_ID'] = '&nbsp;';
    }
    $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();
Beispiel #21
0
 /**
  * @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;
 }
Beispiel #22
0
     $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)) {
Beispiel #23
0
 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;
 }
Beispiel #24
0
}
$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;
 }
Beispiel #26
0
}
$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();
Beispiel #27
0
 /**
  * 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;
         }
     }
 }
Beispiel #28
0
    $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();
Beispiel #29
0
    $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 . '&amp;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) {
Beispiel #30
0
 /**
  * @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;
 }