Пример #1
3
 public static function getDefaultSiteId()
 {
     static $result = null;
     if ($result === null) {
         $res = \Bitrix\Main\SiteTable::getList(array('filter' => array('DEF' => 'Y'), 'select' => array('LID')));
         if ($item = $res->fetch()) {
             $result = $item['LID'];
         }
     }
     return $result;
 }
Пример #2
1
 public static function getParamsStructure()
 {
     $siteList = array();
     $rsSite = \Bitrix\Main\SiteTable::getList();
     while ($site = $rsSite->fetch()) {
         $siteList[$site["LID"]] = $site["NAME"] . " (" . $site["LID"] . ")";
     }
     return array("SITE_ID" => array("TYPE" => "ENUM", 'MULTIPLE' => 'Y', "DEFAULT" => SITE_ID, "LABEL" => Loc::getMessage("SALE_DLVR_RSTR_BY_SITE_SITE_ID"), "OPTIONS" => $siteList));
 }
Пример #3
1
 public static function delete($id)
 {
     //We know for sure that languages and sites can refer to the culture.
     //Other entities should place CultureOnBeforeDelete event handler.
     $result = new Entity\DeleteResult();
     $res = LanguageTable::getList(array('filter' => array('=CULTURE_ID' => $id)));
     while ($language = $res->fetch()) {
         $result->addError(new Entity\EntityError(Loc::getMessage("culture_err_del_lang", array("#LID#" => $language["LID"]))));
     }
     $res = \Bitrix\Main\SiteTable::getList(array('filter' => array('=CULTURE_ID' => $id)));
     while ($site = $res->fetch()) {
         $result->addError(new Entity\EntityError(Loc::getMessage("culture_err_del_site", array("#LID#" => $site["LID"]))));
     }
     if (!$result->isSuccess()) {
         return $result;
     }
     return parent::delete($id);
 }
Пример #4
1
 /** @internal */
 public static function getSiteId()
 {
     static $siteId = null;
     if ($siteId === null) {
         $siteId = '';
         if (defined('ADMIN_SECTION') && ADMIN_SECTION === true) {
             // In admin section SITE_ID = "ru" !!!
             if ($row = SiteTable::getList(array('select' => array('LID'), 'order' => array('DEF' => 'DESC', 'SORT' => 'ASC'), 'limit' => 1))->fetch()) {
                 $siteId = $row['LID'];
             }
         } else {
             $siteId = SITE_ID;
         }
     }
     return $siteId;
 }
Пример #5
0
 function acrit_exportpro()
 {
     require __DIR__ . '/version.php';
     $path = str_replace("\\", "/", __FILE__);
     $path = substr($path, 0, strlen($path) - strlen("/index.php"));
     include $path . "/version.php";
     if (is_array($arModuleVersion) && array_key_exists("VERSION", $arModuleVersion)) {
         $this->MODULE_VERSION = $arModuleVersion["VERSION"];
         $this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
     }
     $this->MODULE_NAME = GetMessage('ACRIT_EXPORTPRO_MODULE_NAME');
     $this->MODULE_DESCRIPTION = GetMessage('ACRIT_EXPORTPRO_MODULE_DESC');
     $this->PARTNER_NAME = GetMessage("ACRIT_EXPORTPRO_PARTNER_NAME");
     $this->PARTNER_URI = GetMessage("ACRIT_EXPORTPRO_PARTNER_URI");
     $app = \Bitrix\Main\Application::getInstance();
     $dbSite = \Bitrix\Main\SiteTable::getList();
     while ($arSite = $dbSite->Fetch()) {
         if (!$arSite['DOC_ROOT']) {
             $this->siteArray[$arSite['LID']] = $app->getDocumentRoot() . $arSite['DIR'];
         } else {
             $this->siteArray[$arSite['LID']] = $arSite['DOC_ROOT'];
         }
         $this->siteArray[$arSite['LID']] = \Bitrix\Main\IO\Path::normalize($this->siteArray[$arSite['LID']]);
     }
 }
Пример #6
0
 /**
  * @param string $dbName
  * @return array List of all sites & their params
  */
 public static function getList($dbName = false)
 {
     if (!$dbName) {
         $connection = \Bitrix\Main\Application::getConnection();
         $dbName = $connection->getDbName();
     }
     $result = array();
     $shellAdapter = new ShellAdapter();
     $execRes = $shellAdapter->syncExec("sudo -u root /opt/webdir/bin/bx-sites -o json -a list -d " . $dbName);
     $sitesData = $shellAdapter->getLastOutput();
     if ($execRes) {
         $arData = json_decode($sitesData, true);
         if (isset($arData["params"])) {
             $result = $arData["params"];
         }
         $rsSite = \Bitrix\Main\SiteTable::getList();
         while ($site = $rsSite->fetch()) {
             foreach ($result as $siteId => $siteInfo) {
                 $docRoot = strlen($site["DOC_ROOT"]) > 0 ? $site["DOC_ROOT"] : \Bitrix\Main\Application::getDocumentRoot();
                 if ($siteInfo["DocumentRoot"] == $docRoot) {
                     $result[$siteId]["NAME"] = $site["NAME"] . " (" . $site["LID"] . ") ";
                 } else {
                     $result[$siteId]["NAME"] = $siteId;
                 }
             }
         }
     }
     return $result;
 }
Пример #7
0
 public function installBitrix24MailService()
 {
     if (CModule::IncludeModule("mail")) {
         $result = \Bitrix\Main\SiteTable::getList();
         while (($site = $result->fetch()) !== false) {
             if (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite($site['LID'])) {
                 continue;
             }
             \Bitrix\Mail\MailServicesTable::add(array('SITE_ID' => $site['LID'], 'ACTIVE' => 'Y', 'NAME' => 'bitrix24', 'SERVICE_TYPE' => 'controller'));
         }
     }
 }
Пример #8
0
 protected function initializeSite()
 {
     $request = $this->getRequest();
     $currentDirectory = $request->getRequestedPageDirectory();
     $currentDomain = $request->getHttpHost(false);
     $site = SiteTable::getByDomainAndPath($currentDomain, $currentDirectory);
     if ($site === false) {
         $siteList = SiteTable::getList(array('filter' => array('ACTIVE' => 'Y'), 'order' => array('DEF' => 'DESC', 'SORT' => 'ASC'), 'select' => array('*', 'ID' => 'LID')));
         $site = $siteList->fetch();
     }
     if ($site === false) {
         throw new SystemException("Site not found");
     }
     $culture = Context\Culture::wakeUp($site["CULTURE_ID"]);
     if ($culture === null) {
         $culture = new Context\Culture();
     }
     $this->site = new Context\Site($site);
     $this->site->setCulture($culture);
     $this->setContextCulture($culture, $this->site->getLanguage());
 }
Пример #9
0
 /**
  * @return array Order's statuses & flags.
  */
 public static function getBitrixStatuses($siteId)
 {
     $result = array("CANCELED" => Loc::getMessage("SALE_EBAY_HLP_FLAG_CANCELED"), "ALLOW_DELIVERY" => Loc::getMessage("SALE_EBAY_HLP_FLAG_DELIVERY"), "PAYED" => Loc::getMessage("SALE_EBAY_HLP_FLAG_PAYED"), "DEDUCTED" => Loc::getMessage("SALE_EBAY_HLP_FLAG_DEDUCTED"));
     if (strlen($siteId) <= 0) {
         throw new ArgumentNullException("siteId");
     }
     $dbRes = SiteTable::getList(array('filter' => array('LID' => $siteId), 'select' => array("LANGUAGE_ID")));
     if ($site = $dbRes->fetch()) {
         $langId = $site["LANGUAGE_ID"];
     } else {
         throw new SystemException("Site with id: \"" . $siteId . "\" not found!");
     }
     $dbRes = StatusLangTable::getList(array('filter' => array('LID' => $langId, 'STATUS.TYPE' => 'O'), 'order' => array("STATUS.SORT" => "ASC", "NAME" => "ASC"), 'select' => array("ID" => "STATUS.ID", "NAME")));
     while ($row = $dbRes->fetch()) {
         $result[$row['ID']] = Loc::getMessage("SALE_EBAY_HLP_STATUS") . " " . $row['NAME'] . ' [' . $row['ID'] . ']';
     }
     return $result;
 }
Пример #10
0
 /**
  * Function clears entire component cache.
  *
  * <p>Note: parameters must exactly match to startResultCache call.</p>
  * @param string $componentName
  * @param string $siteId
  * @return void
  *
  */
 public static final function clearComponentCache($componentName, $siteId = "")
 {
     /** @global CCacheManager $CACHE_MANAGER */
     global $CACHE_MANAGER;
     $componentRelativePath = CComponentEngine::MakeComponentPath($componentName);
     if ($componentRelativePath != "") {
         $obCache = new CPHPCache();
         $obCache->CleanDir($componentRelativePath, "cache");
         BXClearCache(true, $componentRelativePath);
         if ($siteId == "") {
             $rsSite = \Bitrix\Main\SiteTable::getList(array('order' => array('SORT' => 'ASC')));
             while ($site = $rsSite->fetch()) {
                 $componentCachePath = "/" . $site["LID"] . $componentRelativePath;
                 $obCache = new CPHPCache();
                 $obCache->CleanDir($componentCachePath, "cache");
                 BXClearCache(true, $componentCachePath);
             }
         } else {
             $componentCachePath = "/" . $siteId . $componentRelativePath;
             $obCache = new CPHPCache();
             $obCache->CleanDir($componentCachePath, "cache");
             BXClearCache(true, $componentCachePath);
         }
         if (defined("BX_COMP_MANAGED_CACHE")) {
             $CACHE_MANAGER->ClearByTag($componentName);
         }
     }
 }
Пример #11
0
 function InstallDB()
 {
     global $APPLICATION;
     global $DB;
     global $errors;
     $bitrix24 = ModuleManager::isModuleInstalled('bitrix24');
     if (!$DB->Query("SELECT 'x' FROM b_catalog_group", true)) {
         $errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/catalog/install/db/" . strtolower($DB->type) . "/install.sql");
     }
     if (!empty($errors)) {
         $APPLICATION->ThrowException(implode("", $errors));
         return false;
     }
     ModuleManager::registerModule('catalog');
     $eventManager = \Bitrix\Main\EventManager::getInstance();
     $eventManager->registerEventHandler('sale', 'onBuildCouponProviders', 'catalog', '\\Bitrix\\Catalog\\DiscountCouponTable', 'couponManager');
     RegisterModuleDependences("iblock", "OnIBlockDelete", "catalog", "CCatalog", "OnIBlockDelete");
     RegisterModuleDependences("iblock", "OnIBlockElementDelete", "catalog", "CCatalogProduct", "OnIBlockElementDelete");
     RegisterModuleDependences("iblock", "OnIBlockElementDelete", "catalog", "CPrice", "OnIBlockElementDelete");
     RegisterModuleDependences("iblock", "OnIBlockElementDelete", "catalog", "CCatalogStoreProduct", "OnIBlockElementDelete");
     RegisterModuleDependences("iblock", "OnIBlockElementDelete", "catalog", "CCatalogDocs", "OnIBlockElementDelete");
     RegisterModuleDependences("iblock", "OnBeforeIBlockElementDelete", "catalog", "CCatalogDocs", "OnBeforeIBlockElementDelete");
     RegisterModuleDependences("currency", "OnCurrencyDelete", "catalog", "CPrice", "OnCurrencyDelete");
     RegisterModuleDependences("main", "OnGroupDelete", "catalog", "CCatalogProductGroups", "OnGroupDelete");
     RegisterModuleDependences("iblock", "OnAfterIBlockElementUpdate", "catalog", "CCatalogProduct", "OnAfterIBlockElementUpdate");
     RegisterModuleDependences("currency", "OnModuleUnInstall", "catalog", "", "CurrencyModuleUnInstallCatalog");
     RegisterModuleDependences("iblock", "OnBeforeIBlockDelete", "catalog", "CCatalog", "OnBeforeCatalogDelete", 300);
     RegisterModuleDependences("iblock", "OnBeforeIBlockElementDelete", "catalog", "CCatalog", "OnBeforeIBlockElementDelete", 10000);
     RegisterModuleDependences("main", "OnEventLogGetAuditTypes", "catalog", "CCatalogEvent", "GetAuditTypes");
     RegisterModuleDependences('main', 'OnBuildGlobalMenu', 'catalog', 'CCatalogAdmin', 'OnBuildGlobalMenu');
     RegisterModuleDependences('main', 'OnAdminListDisplay', 'catalog', 'CCatalogAdmin', 'OnAdminListDisplay');
     RegisterModuleDependences('main', 'OnBuildGlobalMenu', 'catalog', 'CCatalogAdmin', 'OnBuildSaleMenu');
     RegisterModuleDependences("catalog", "OnCondCatControlBuildList", "catalog", "CCatalogCondCtrlGroup", "GetControlDescr", 100);
     RegisterModuleDependences("catalog", "OnCondCatControlBuildList", "catalog", "CCatalogCondCtrlIBlockFields", "GetControlDescr", 200);
     RegisterModuleDependences("catalog", "OnCondCatControlBuildList", "catalog", "CCatalogCondCtrlIBlockProps", "GetControlDescr", 300);
     RegisterModuleDependences("catalog", "OnDocumentBarcodeDelete", "catalog", "CCatalogStoreDocsElement", "OnDocumentBarcodeDelete");
     RegisterModuleDependences("catalog", "OnBeforeDocumentDelete", "catalog", "CCatalogStoreDocsBarcode", "OnBeforeDocumentDelete");
     RegisterModuleDependences("catalog", "OnCatalogStoreDelete", "catalog", "CCatalogDocs", "OnCatalogStoreDelete");
     RegisterModuleDependences("iblock", "OnBeforeIBlockPropertyDelete", "catalog", "CCatalog", "OnBeforeIBlockPropertyDelete");
     RegisterModuleDependences("sale", "OnCondSaleControlBuildList", "catalog", "CCatalogCondCtrlBasketProductFields", "GetControlDescr", 1100);
     RegisterModuleDependences("sale", "OnCondSaleControlBuildList", "catalog", "CCatalogCondCtrlBasketProductProps", "GetControlDescr", 1200);
     RegisterModuleDependences("sale", "OnCondSaleActionsControlBuildList", "catalog", "CCatalogActionCtrlBasketProductFields", "GetControlDescr", 1200);
     RegisterModuleDependences("sale", "OnCondSaleActionsControlBuildList", "catalog", "CCatalogActionCtrlBasketProductProps", "GetControlDescr", 1300);
     RegisterModuleDependences("sale", "OnExtendBasketItems", "catalog", "CCatalogDiscount", "ExtendBasketItems", 100);
     RegisterModuleDependences('iblock', 'OnModuleUnInstall', 'catalog', 'CCatalog', 'OnIBlockModuleUnInstall');
     if (!$bitrix24) {
         CAgent::AddAgent('\\Bitrix\\Catalog\\CatalogViewedProductTable::clearAgent();', 'catalog', 'N', (int) COption::GetOptionString("catalog", "viewed_period") * 24 * 3600);
     }
     $this->InstallTasks();
     $arCount = $DB->Query("select count(ID) as COUNT from b_catalog_measure", true)->Fetch();
     if (is_array($arCount) && isset($arCount['COUNT']) && intval($arCount['COUNT']) <= 0) {
         $DB->Query("insert into b_catalog_measure (CODE, SYMBOL_INTL, SYMBOL_LETTER_INTL, IS_DEFAULT) values(6, 'm', 'MTR', 'N')", true);
         $DB->Query("insert into b_catalog_measure (CODE, SYMBOL_INTL, SYMBOL_LETTER_INTL, IS_DEFAULT) values(112, 'l', 'LTR', 'N')", true);
         $DB->Query("insert into b_catalog_measure (CODE, SYMBOL_INTL, SYMBOL_LETTER_INTL, IS_DEFAULT) values(163, 'g', 'GRM', 'N')", true);
         $DB->Query("insert into b_catalog_measure (CODE, SYMBOL_INTL, SYMBOL_LETTER_INTL, IS_DEFAULT) values(166, 'kg', 'KGM', 'N')", true);
         $DB->Query("insert into b_catalog_measure (CODE, SYMBOL_INTL, SYMBOL_LETTER_INTL, IS_DEFAULT) values(796, 'pc. 1', 'PCE. NMB', 'Y')", true);
     }
     if (!$bitrix24) {
         $languageID = '';
         $siteIterator = SiteTable::getList(array('select' => array('LID', 'LANGUAGE_ID'), 'filter' => array('=DEF' => 'Y', '=ACTIVE' => 'Y')));
         if ($site = $siteIterator->fetch()) {
             $languageID = (string) $site['LANGUAGE_ID'];
         }
         if ($languageID == '') {
             $languageID = 'en';
         }
         if ($languageID == 'ru') {
             $mess = Loc::getMessage('CATALOG_INSTALL_PROFILE_IRR2', null, 'ru');
             if ($mess == '') {
                 $mess = 'irr.ru';
             }
             $strQuery = "select COUNT(CE.ID) as CNT from b_catalog_export CE where CE.IS_EXPORT = 'Y' and CE.FILE_NAME ='yandex' and CE.NAME = '" . $DB->ForSql($mess) . "'";
             $rsProfiles = $DB->Query($strQuery, true);
             if (false !== $rsProfiles) {
                 $arProfile = $rsProfiles->Fetch();
                 if ((int) $arProfile['CNT'] == 0) {
                     $arFields = array('FILE_NAME' => 'yandex', 'NAME' => $mess, 'DEFAULT_PROFILE' => 'N', 'IN_MENU' => 'N', 'IN_AGENT' => 'N', 'IN_CRON' => 'N', 'NEED_EDIT' => 'Y', 'IS_EXPORT' => 'Y');
                     $arInsert = $DB->PrepareInsert("b_catalog_export", $arFields);
                     $strQuery = "INSERT INTO b_catalog_export(" . $arInsert[0] . ") VALUES(" . $arInsert[1] . ")";
                     $DB->Query($strQuery, true);
                 }
             }
         }
     }
     return true;
 }
Пример #12
0
        $postingDb = \Bitrix\Sender\PostingTable::getList(array('select' => array('*'), 'filter' => array('MAILING_CHAIN_ID' => $ID, '!DATE_SENT' => null), 'order' => array('DATE_SENT' => 'DESC'), 'limit' => 1));
        $arPosting = $postingDb->fetch();
        $str_DATE_SENT = $arPosting['DATE_SENT'];
        $attachmentFileDb = \Bitrix\Sender\MailingAttachmentTable::getList(array('select' => array('FILE_ID'), 'filter' => array('CHAIN_ID' => $ID)));
        while ($ar = $attachmentFileDb->fetch()) {
            if ($arFileFetch = CFile::GetFileArray($ar['FILE_ID'])) {
                $arMailngChainAttachment[] = $arFileFetch;
            }
        }
    }
}
$chainCharset = '';
if ($MAILING_ID > 0) {
    $mailingSiteDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('SITE_ID'), 'filter' => array('ID' => $MAILING_ID)));
    if ($mailingSite = $mailingSiteDb->fetch()) {
        $mailingSiteCharsetDb = \Bitrix\Main\SiteTable::getList(array('select' => array('CULTURE_CHARSET' => 'CULTURE.CHARSET'), 'filter' => array('LID' => $mailingSite['SITE_ID'])));
        if ($mailingSiteCharset = $mailingSiteCharsetDb->fetch()) {
            $chainCharset = $mailingSiteCharset['CULTURE_CHARSET'];
        }
    }
}
if ($bVarsFromForm) {
    $DB->InitTableVarsForEdit("b_sender_mailing_chain", "", "str_");
}
\CJSCore::Init(array("sender_admin"));
$APPLICATION->SetTitle($ID > 0 ? GetMessage("sender_chain_edit_title_edit") . $ID : GetMessage("sender_chain_edit_title_add"));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
$aMenu = array(array("TEXT" => GetMessage("sender_chain_edit_list"), "TITLE" => GetMessage("sender_chain_edit_list_title"), "LINK" => "/bitrix/admin/sender_mailing_chain_admin.php?MAILING_ID=" . $MAILING_ID . "&lang=" . LANG, "ICON" => "btn_list"));
if ($ID > 0 && $POST_RIGHT >= "W") {
    $aMenu[] = array("SEPARATOR" => "Y");
    $aMenu[] = array("TEXT" => GetMessage("sender_chain_edit_action_add"), "TITLE" => GetMessage("sender_chain_edit_action_add_title"), "LINK" => "/bitrix/admin/sender_mailing_chain_edit.php?MAILING_ID=" . $MAILING_ID . "&lang=" . LANG, "ICON" => "btn_new");
Пример #13
0
        $contextMenuItems[] = array("SEPARATOR" => "Y");
        $contextMenuItems[] = array("TEXT" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_NEW_DISCOUNT"), "LINK" => "/bitrix/admin/sale_discount_edit.php?lang=" . LANGUAGE_ID . GetFilterParams("filter_"), "ICON" => "btn_new");
        $contextMenuItems[] = array("TEXT" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_COPY_DISCOUNT"), "LINK" => '/bitrix/admin/sale_discount_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $discountID . '&action=copy&' . GetFilterParams('filter_'), "ICON" => "btn_copy");
        $contextMenuItems[] = array("TEXT" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_DELETE_DISCOUNT"), "LINK" => "javascript:if(confirm('" . GetMessageJS("BT_SALE_DISCOUNT_EDIT_MESS_DELETE_DISCOUNT_CONFIRM") . "')) window.location='/bitrix/admin/sale_discount.php?lang=" . LANGUAGE_ID . "&ID=" . $discountID . "&action=delete&" . bitrix_sessid_get() . "';", "WARNING" => "Y", "ICON" => "btn_delete");
    }
}
$contextMenu = new CAdminContextMenu($contextMenuItems);
$contextMenu->Show();
unset($contextMenu, $contextMenuItems);
if (!empty($errors)) {
    $errorMessage = new CAdminMessage(array("DETAILS" => implode('<br>', $errors), "TYPE" => "ERROR", "MESSAGE" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_SAVE_ERROR"), "HTML" => true));
    echo $errorMessage->Show();
    unset($errorMessage);
}
$arSiteList = array();
$siteIterator = Main\SiteTable::getList(array('select' => array('LID', 'NAME'), 'order' => array('SORT' => 'ASC')));
while ($site = $siteIterator->fetch()) {
    $arSiteList[$site['LID']] = '(' . $site['LID'] . ') ' . $site['NAME'];
}
unset($site, $siteIterator);
$control->BeginPrologContent();
CJSCore::Init(array('date'));
$control->EndPrologContent();
$control->BeginEpilogContent();
echo GetFilterHiddens("filter_");
?>
<input type="hidden" name="Update" value="Y">
<input type="hidden" name="lang" value="<?php 
echo LANGUAGE_ID;
?>
">
Пример #14
0
 /**
  * @param $mailingChainId
  * @param array $params
  * @return string
  * @throws \Bitrix\Main\ArgumentException
  * @throws \Bitrix\Main\DB\Exception
  */
 protected static function sendInternal($mailingChainId, array $params)
 {
     if (static::$currentMailingChainFields !== null) {
         if (static::$currentMailingChainFields['ID'] != $mailingChainId) {
             static::$currentMailingChainFields = null;
         }
     }
     if (static::$currentMailingChainFields === null) {
         $mailingChainDb = MailingChainTable::getList(array('select' => array('*', 'SITE_ID' => 'MAILING.SITE_ID'), 'filter' => array('ID' => $mailingChainId)));
         if (!($mailingChain = $mailingChainDb->fetch())) {
             return PostingRecipientTable::SEND_RESULT_ERROR;
         }
         $charset = false;
         $siteDb = \Bitrix\Main\SiteTable::getList(array('select' => array('SERVER_NAME', 'NAME', 'CULTURE_CHARSET' => 'CULTURE.CHARSET'), 'filter' => array('LID' => $mailingChain['SITE_ID'])));
         if ($site = $siteDb->fetch()) {
             $charset = $site['CULTURE_CHARSET'];
             $serverName = $site['SERVER_NAME'];
         } else {
             throw new \Bitrix\Main\DB\Exception(Loc::getMessage('SENDER_POSTING_MANAGER_ERR_SITE', array('#SITE_ID#' => $mailingChain['SITE_ID'])));
         }
         if (!$charset) {
             throw new \Bitrix\Main\DB\Exception(Loc::getMessage('SENDER_POSTING_MANAGER_ERR_CHARSET', array('#SITE_ID#' => "[" . $mailingChain['SITE_ID'] . "]" . $site['NAME'])));
         }
         $attachmentList = array();
         $attachmentDb = \Bitrix\Sender\MailingAttachmentTable::getList(array('select' => array('FILE_ID'), 'filter' => array('CHAIN_ID' => $mailingChainId)));
         while ($attachment = $attachmentDb->fetch()) {
             $attachmentList[] = $attachment['FILE_ID'];
         }
         static::$currentMailingChainFields = array();
         static::$currentMailingChainFields['EVENT'] = array('FILE' => $attachmentList);
         static::$currentMailingChainFields['ID'] = $mailingChain['ID'];
         static::$currentMailingChainFields['MESSAGE'] = array('BODY_TYPE' => 'html', 'EMAIL_FROM' => $mailingChain['EMAIL_FROM'], 'EMAIL_TO' => '#EMAIL_TO#', 'SUBJECT' => $mailingChain['SUBJECT'], 'MESSAGE' => $mailingChain['MESSAGE'], 'MESSAGE_PHP' => \Bitrix\Main\Mail\Internal\EventMessageTable::replaceTemplateToPhp($mailingChain['MESSAGE']));
         static::$currentMailingChainFields['SITE'] = array($mailingChain['SITE_ID']);
         static::$currentMailingChainFields['CHARSET'] = $charset;
         static::$currentMailingChainFields['SERVER_NAME'] = $serverName;
         static::$currentMailingChainFields['LINK_PROTOCOL'] = \Bitrix\Main\Config\Option::get("sender", "link_protocol", 'http');
     }
     $messageParams = array('EVENT' => static::$currentMailingChainFields['EVENT'], 'FIELDS' => $params['FIELDS'], 'MESSAGE' => static::$currentMailingChainFields['MESSAGE'], 'SITE' => static::$currentMailingChainFields['SITE'], 'CHARSET' => static::$currentMailingChainFields['CHARSET']);
     if (!empty($params['FIELDS']['UNSUBSCRIBE_LINK'])) {
         if (substr($params['FIELDS']['UNSUBSCRIBE_LINK'], 0, 4) !== 'http') {
             if (!empty(static::$currentMailingChainFields['SERVER_NAME'])) {
                 $serverName = static::$currentMailingChainFields['SERVER_NAME'];
             } else {
                 $serverName = \Bitrix\Main\Config\Option::get("main", "server_name", $GLOBALS["SERVER_NAME"]);
             }
             $linkProtocol = static::$currentMailingChainFields['LINK_PROTOCOL'];
             $params['FIELDS']['UNSUBSCRIBE_LINK'] = $linkProtocol . '://' . $serverName . $params['FIELDS']['UNSUBSCRIBE_LINK'];
         }
     }
     $message = Mail\EventMessageCompiler::createInstance($messageParams);
     $message->compile();
     $mailHeaders = $message->getMailHeaders();
     if (!empty($params['FIELDS']['UNSUBSCRIBE_LINK'])) {
         $unsubUrl = $params['FIELDS']['UNSUBSCRIBE_LINK'];
         $mailHeaders['List-Unsubscribe'] = '<' . $unsubUrl . '>';
     }
     // send mail
     $result = Mail\Mail::send(array('TO' => $message->getMailTo(), 'SUBJECT' => $message->getMailSubject(), 'BODY' => $message->getMailBody(), 'HEADER' => $mailHeaders, 'CHARSET' => $message->getMailCharset(), 'CONTENT_TYPE' => $message->getMailContentType(), 'MESSAGE_ID' => '', 'ATTACHMENT' => $message->getMailAttachment(), 'LINK_PROTOCOL' => static::$currentMailingChainFields['LINK_PROTOCOL'], 'LINK_DOMAIN' => static::$currentMailingChainFields['SERVER_NAME'], 'TRACK_READ' => isset($params['TRACK_READ']) ? $params['TRACK_READ'] : null, 'TRACK_CLICK' => isset($params['TRACK_CLICK']) ? $params['TRACK_CLICK'] : null));
     if ($result) {
         return PostingRecipientTable::SEND_RESULT_SUCCESS;
     } else {
         return PostingRecipientTable::SEND_RESULT_ERROR;
     }
 }
Пример #15
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
/*
	"GROUPS" => array(
		"FILTER_SETTINGS" => array(
			"NAME" => GetMessage("T_IBLOCK_DESC_FILTER_SETTINGS"),
		),
*/
$arComponentParameters = array("PARAMETERS" => array("ID" => array("NAME" => Loc::getMessage("SALE_SLS_ID_PARAMETER"), "PARENT" => "BASE", "TYPE" => "STRING", "MULTIPLE" => "N"), "CODE" => array("NAME" => Loc::getMessage("SALE_SLS_CODE_PARAMETER"), "PARENT" => "BASE", "TYPE" => "STRING", "MULTIPLE" => "N"), "INPUT_NAME" => array("NAME" => Loc::getMessage("SALE_SLS_INPUT_NAME_PARAMETER"), "PARENT" => "BASE", "TYPE" => "STRING", "DEFAULT" => "LOCATION"), "PROVIDE_LINK_BY" => array("NAME" => Loc::getMessage("SALE_SLS_PROVIDE_LINK_BY_PARAMETER"), "PARENT" => "BASE", "TYPE" => "LIST", "VALUES" => array('id' => Loc::getMessage("SALE_SLS_PROVIDE_LINK_BY_PARAMETER_ID"), 'code' => Loc::getMessage("SALE_SLS_PROVIDE_LINK_BY_PARAMETER_CODE")), "DEFAULT" => "id"), "FILTER_BY_SITE" => array("NAME" => Loc::getMessage("SALE_SLS_FILTER_BY_SITE_PARAMETER"), "PARENT" => "DATA_SOURCE", "TYPE" => "CHECKBOX", "DEFAULT" => "N", "REFRESH" => "Y"), "SHOW_DEFAULT_LOCATIONS" => array("NAME" => Loc::getMessage("SALE_SLS_SHOW_DEFAULT_LOCATIONS_PARAMETER"), "PARENT" => "DATA_SOURCE", "TYPE" => "CHECKBOX", "DEFAULT" => "N", "REFRESH" => "Y"), "JS_CONTROL_GLOBAL_ID" => array("NAME" => Loc::getMessage("SALE_SLS_JSCONTROL_GLOBAL_ID_PARAMETER"), "PARENT" => "ADDITIONAL", "TYPE" => "STRING", "MULTIPLE" => "N", "DEFAULT" => ""), "JS_CALLBACK" => array("NAME" => Loc::getMessage("SALE_SLS_JS_CALLBACK"), "PARENT" => "ADDITIONAL", "TYPE" => "STRING"), "CACHE_TIME" => array("DEFAULT" => 36000000)));
if ($arCurrentValues['FILTER_BY_SITE'] == 'Y' || $arCurrentValues['SHOW_DEFAULT_LOCATIONS'] == 'Y') {
    $res = \Bitrix\Main\SiteTable::getList(array('filter' => array('=ACTIVE' => 'Y')));
    $sites = array();
    while ($item = $res->Fetch()) {
        $sites[$item['LID']] = '[' . $item['LID'] . '] ' . $item['NAME'];
    }
    $arComponentParameters["PARAMETERS"]["FILTER_SITE_ID"] = array("NAME" => Loc::getMessage("SALE_SLS_FILTER_SITE_ID_PARAMETER"), "PARENT" => "DATA_SOURCE", "TYPE" => "LIST", "VALUES" => array_merge(array('current' => Loc::getMessage("SALE_SLS_FILTER_SITE_ID_CURRENT")), $sites));
}
Пример #16
0
 /**
  * Return currency list, create to install module.
  *
  * @return array
  */
 public static function getInstalledCurrencies()
 {
     $installedCurrencies = (string) Option::get('currency', 'installed_currencies');
     if ($installedCurrencies === '') {
         $bitrix24 = Main\ModuleManager::isModuleInstalled('bitrix24');
         $currencyList = array();
         $languageID = '';
         $siteIterator = Main\SiteTable::getList(array('select' => array('LID', 'LANGUAGE_ID'), 'filter' => array('=DEF' => 'Y', '=ACTIVE' => 'Y')));
         if ($site = $siteIterator->fetch()) {
             $languageID = (string) $site['LANGUAGE_ID'];
         }
         unset($site, $siteIterator);
         if ($languageID == '') {
             $languageID = 'en';
         }
         if (!$bitrix24 && $languageID == 'ru') {
             $searched = false;
             $languageIterator = LanguageTable::getList(array('select' => array('ID'), 'filter' => array('=ID' => 'kz')));
             if ($oneLanguage = $languageIterator->fetch()) {
                 $searched = true;
                 $languageID = 'kz';
             }
             unset($oneLanguage, $languageIterator);
             if (!$searched) {
                 $languageIterator = LanguageTable::getList(array('select' => array('ID'), 'filter' => array('=ID' => 'ua')));
                 if ($oneLanguage = $languageIterator->fetch()) {
                     $languageID = 'ua';
                 }
                 unset($oneLanguage, $languageIterator);
             }
         }
         unset($bitrix24);
         switch ($languageID) {
             case 'ua':
                 $currencyList = array('UAH', 'RUB', 'USD', 'EUR');
                 break;
             case 'kz':
                 $currencyList = array('KZT', 'RUB', 'USD', 'EUR');
                 break;
             case 'ru':
                 $currencyList = array('RUB', 'USD', 'EUR', 'UAH', 'BYR');
                 break;
             case 'de':
             case 'en':
             case 'tc':
             case 'sc':
             case 'la':
             default:
                 $currencyList = array('USD', 'EUR', 'CNY', 'BRL', 'INR');
                 break;
         }
         Option::set('currency', 'installed_currencies', implode(',', $currencyList), '');
         return $currencyList;
     } else {
         return explode(',', $installedCurrencies);
     }
 }
Пример #17
0
 case "L":
     // list
     /** @var CDatabase $DB */
     global $DB;
     foreach ($variants as $variant) {
         $lastId = $list[$variant] = CIBlockPropertyEnum::Add(array('PROPERTY_ID' => $idProperty, 'VALUE' => $variant));
         if (!$lastId) {
             throw new Exception($DB->db_Error);
         }
     }
     break;
 case "E":
     // Привязка к элементу
     $arSourceIblockData = CIBlock::GetArrayByID($idIBlock);
     $sites = array();
     $rsSites = \Bitrix\Main\SiteTable::getList();
     while ($arSite = $rsSites->fetch()) {
         $sites[] = $arSite['LID'];
     }
     $iblock = new CIBlock();
     $handbookIblockId = $iblock->Add(array("ACTIVE" => 'Y', "NAME" => $propertyData['NAME'], "SITE_ID" => $sites, "IBLOCK_TYPE_ID" => $arSourceIblockData['IBLOCK_TYPE_ID']));
     if (!$handbookIblockId) {
         throw new Exception($iblock->LAST_ERROR);
     }
     $iblockElement = new CIBlockElement();
     $arPropertyId = array();
     foreach ($variants as $variant) {
         $lastId = $list[$variant] = $iblockElement->Add(array("ACTIVE" => "Y", 'IBLOCK_ID' => $handbookIblockId, 'NAME' => $variant));
         if (!$lastId) {
             throw new Exception($iblockElement->LAST_ERROR);
         }
Пример #18
0
 /**
  * @return string
  */
 public static function handleEvent(array $arEvent)
 {
     if (!isset($arEvent['FIELDS']) && isset($arEvent['C_FIELDS'])) {
         $arEvent['FIELDS'] = $arEvent['C_FIELDS'];
     }
     if (!is_array($arEvent['FIELDS'])) {
         throw new \Bitrix\Main\ArgumentTypeException("FIELDS");
     }
     $flag = static::SEND_RESULT_TEMPLATE_NOT_FOUND;
     // no templates
     $arResult = array("Success" => false, "Fail" => false, "Was" => false);
     $trackRead = null;
     $trackClick = null;
     if (array_key_exists('TRACK_READ', $arEvent)) {
         $trackRead = $arEvent['TRACK_READ'];
     }
     if (array_key_exists('TRACK_CLICK', $arEvent)) {
         $trackClick = $arEvent['TRACK_CLICK'];
     }
     $arSites = explode(",", $arEvent["LID"]);
     if (count($arSites) <= 0) {
         return $flag;
     }
     // get charset and server name for languages of event
     $charset = false;
     $serverName = null;
     $siteDb = Main\SiteTable::getList(array('select' => array('SERVER_NAME', 'CULTURE_CHARSET' => 'CULTURE.CHARSET'), 'filter' => array('LID' => $arSites)));
     if ($arSiteDb = $siteDb->fetch()) {
         $charset = $arSiteDb['CULTURE_CHARSET'];
         $serverName = $arSiteDb['SERVER_NAME'];
     }
     if (!$charset) {
         return $flag;
     }
     // get filter for list of message templates
     $arEventMessageFilter = array();
     $MESSAGE_ID = intval($arEvent["MESSAGE_ID"]);
     if ($MESSAGE_ID > 0) {
         $eventMessageDb = MailInternal\EventMessageTable::getById($MESSAGE_ID);
         if ($eventMessageDb->Fetch()) {
             $arEventMessageFilter['ID'] = $MESSAGE_ID;
             $arEventMessageFilter['ACTIVE'] = 'Y';
         }
     }
     if (count($arEventMessageFilter) == 0) {
         $arEventMessageFilter = array('ACTIVE' => 'Y', 'EVENT_NAME' => $arEvent["EVENT_NAME"], 'EVENT_MESSAGE_SITE.SITE_ID' => $arSites);
     }
     // get list of message templates of event
     $messageDb = MailInternal\EventMessageTable::getList(array('select' => array('ID'), 'filter' => $arEventMessageFilter, 'group' => array('ID')));
     while ($arMessage = $messageDb->fetch()) {
         $eventMessage = MailInternal\EventMessageTable::getRowById($arMessage['ID']);
         $eventMessage['FILES'] = array();
         $attachmentDb = MailInternal\EventMessageAttachmentTable::getList(array('select' => array('FILE_ID'), 'filter' => array('EVENT_MESSAGE_ID' => $arMessage['ID'])));
         while ($arAttachmentDb = $attachmentDb->fetch()) {
             $eventMessage['FILE'][] = $arAttachmentDb['FILE_ID'];
         }
         $arFields = $arEvent['FIELDS'];
         foreach (GetModuleEvents("main", "OnBeforeEventSend", true) as $event) {
             if (ExecuteModuleEventEx($event, array(&$arFields, &$eventMessage)) === false) {
                 continue 2;
             }
         }
         // get message object for send mail
         $arMessageParams = array('EVENT' => $arEvent, 'FIELDS' => $arFields, 'MESSAGE' => $eventMessage, 'SITE' => $arSites, 'CHARSET' => $charset);
         $message = EventMessageCompiler::createInstance($arMessageParams);
         $message->compile();
         // send mail
         $result = Main\Mail\Mail::send(array('TO' => $message->getMailTo(), 'SUBJECT' => $message->getMailSubject(), 'BODY' => $message->getMailBody(), 'HEADER' => $message->getMailHeaders(), 'CHARSET' => $message->getMailCharset(), 'CONTENT_TYPE' => $message->getMailContentType(), 'MESSAGE_ID' => $message->getMailId(), 'ATTACHMENT' => $message->getMailAttachment(), 'TRACK_READ' => $trackRead, 'TRACK_CLICK' => $trackClick, 'LINK_PROTOCOL' => \Bitrix\Main\Config\Option::get("main", "mail_link_protocol", ''), 'LINK_DOMAIN' => $serverName));
         if ($result) {
             $arResult["Success"] = true;
         } else {
             $arResult["Fail"] = true;
         }
         $arResult["Was"] = true;
     }
     if ($arResult["Was"]) {
         if ($arResult["Success"]) {
             if ($arResult["Fail"]) {
                 $flag = static::SEND_RESULT_PARTLY;
             } else {
                 $flag = static::SEND_RESULT_SUCCESS;
             }
             // all sent
         } else {
             if ($arResult["Fail"]) {
                 $flag = static::SEND_RESULT_ERROR;
             }
             // all templates failed
         }
     }
     return $flag;
 }
Пример #19
0
}
$userOptions = CUserOptions::GetOption('conversion', 'filter', array());
// PERIOD
$from = ($d = $_GET['from'] ?: $userOptions['from']) && Date::isCorrect($d) ? new Date($d) : Date::createFromPhp(new DateTime('first day of last month'));
$to = ($d = $_GET['to'] ?: $userOptions['to']) && Date::isCorrect($d) ? new Date($d) : Date::createFromPhp(new DateTime('last day of this month'));
// RATES
if (!($rateTypes = RateManager::getTypes())) {
    die('No rates available!');
}
$rateName = $_GET['rate'] ?: $userOptions['rate'];
if (!($rateType = $rateTypes[$rateName])) {
    list($rateName, $rateType) = each($rateTypes);
}
// SITES
$sites = array();
$result = SiteTable::getList(array('select' => array('LID', 'NAME'), 'order' => array('DEF' => 'DESC', 'SORT' => 'ASC')));
while ($row = $result->fetch()) {
    $sites[$row['LID']] = $row['NAME'];
}
if (!$sites) {
    die('No sites available!');
}
$site = $_GET['site'] ?: $userOptions['site'];
if (!($siteName = $sites[$site])) {
    list($site, $siteName) = each($sites);
}
// ATTRIBUTES
if (!($attributeTypes = AttributeManager::getTypes())) {
    die('No attributes!');
}
unset($attributeTypes['conversion_site']);
Пример #20
0
	function InstallDB()
	{
		global $DB, $APPLICATION;
		global $stackCacheManager;
		global $CACHE_MANAGER;

		$this->errors = false;

		$bitrix24Path = $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/bitrix24/';
		$bitrix24 = file_exists($bitrix24Path) && is_dir($bitrix24Path);
		unset($bitrix24Path);

		if (!$DB->Query("SELECT COUNT(CURRENCY) FROM b_catalog_currency", true)):
			$this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/currency/install/db/".strtolower($DB->type)."/install.sql");
		endif;

		if ($this->errors !== false)
		{
			$APPLICATION->ThrowException(implode("", $this->errors));
			return false;
		}
		RegisterModule("currency");
		$stackCacheManager->Clear("currency_currency_lang");
		$CACHE_MANAGER->Clean("currency_currency_list", 'b_catalog_currency');
		$CACHE_MANAGER->Clean("currency_base_currency", 'b_catalog_currency');
		$stackCacheManager->Clear("currency_rate");

		if (Loader::includeModule("currency"))
		{
			$currencyIterator = CurrencyTable::getList(array(
				'select' => array('CURRENCY'),
				'limit' => 1
			));
			if (!($currency = $currencyIterator->fetch()))
			{
				$languageID = '';
				$siteIterator = SiteTable::getList(array(
					'select' => array('LID', 'LANGUAGE_ID'),
					'filter' => array('DEF' => 'Y', 'ACTIVE' => 'Y')
				));
				if ($site = $siteIterator->fetch())
				{
					$languageID = (string)$site['LANGUAGE_ID'];
				}
				if (isset($site))
					unset($site);
				unset($siteIterator);

				if ($languageID == '')
					$languageID = 'en';

				$currencyList = array();
				$currencySetID = '';
				switch ($languageID)
				{
					case 'ua':
					case 'de':
					case 'en':
						$currencySetID = $languageID;
						break;
					case 'ru':
						if (!$bitrix24)
						{
							$languageIterator = LanguageTable::getList(array(
								'select' => array('ID'),
								'filter' => array('ID' => 'kz', 'ACTIVE' => 'Y')
							));
							if ($existLanguage = $languageIterator->fetch())
							{
								$currencySetID = $existLanguage['ID'];
							}
							if ($currencySetID == '')
							{
								$languageIterator = LanguageTable::getList(array(
									'select' => array('ID'),
									'filter' => array('ID' => 'ua', 'ACTIVE' => 'Y')
								));
								if ($existLanguage = $languageIterator->fetch())
								{
									$currencySetID = $existLanguage['ID'];
								}
							}
						}
						if ($currencySetID == '')
						{
							$currencySetID = $languageID;
						}
						break;
					default:
						$currencySetID = 'en';
						break;
				}
				$datetimeEntity = new SqlExpression(Application::getConnection()->getSqlHelper()->getCurrentDateTimeFunction());
				switch ($currencySetID)
				{
					case 'kz':
						$addCurrency = array(
							array('CURRENCY' => 'KZT', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1),
							array('CURRENCY' => 'RUB', 'AMOUNT' => 1, 'AMOUNT_CNT' => 4.72, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 4.72),
							array('CURRENCY' => 'USD', 'AMOUNT' => 1, 'AMOUNT_CNT' => 154.52, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 154.52),
							array('CURRENCY' => 'EUR', 'AMOUNT' => 1, 'AMOUNT_CNT' => 212.73, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 212.73)
						);
						break;
					case 'ua':
						$addCurrency = array(
							array('CURRENCY' => 'UAH', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1),
							array('CURRENCY' => 'RUB', 'AMOUNT' => 2.54, 'AMOUNT_CNT' => 10, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.254),
							array('CURRENCY' => 'USD', 'AMOUNT' => 799.3, 'AMOUNT_CNT' => 100, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 7.993),
							array('CURRENCY' => 'EUR', 'AMOUNT' => 1083.37, 'AMOUNT_CNT' => 100, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 10.8337)
						);
						break;
					case 'ru':
						$addCurrency = array(
							array('CURRENCY' => 'RUB', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1),
							array('CURRENCY' => 'USD', 'AMOUNT' => 32.30, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 32.30),
							array('CURRENCY' => 'EUR', 'AMOUNT' => 43.80, 'AMOUNT_CNT' => 1, 'SORT' => 300, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 43.80),
							array('CURRENCY' => 'UAH', 'AMOUNT' => 39.41, 'AMOUNT_CNT' => 10, 'SORT' => 400, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 3.941),
							array('CURRENCY' => 'BYR', 'AMOUNT' => 36.72, 'AMOUNT_CNT' => 10000, 'SORT' => 500, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.003672)
						);
						break;
					case 'de':
						$addCurrency = array(
							array('CURRENCY' => 'EUR', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1),
							array('CURRENCY' => 'USD', 'AMOUNT' => 0.74, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 0.74)
						);
						break;
					default:
					case 'en':
						$addCurrency = array(
							array('CURRENCY' => 'USD', 'AMOUNT' => 1, 'AMOUNT_CNT' => 1, 'SORT' => 100, 'BASE' => 'Y', 'CURRENT_BASE_RATE' => 1),
							array('CURRENCY' => 'EUR', 'AMOUNT' => 1.36, 'AMOUNT_CNT' => 1, 'SORT' => 200, 'BASE' => 'N', 'CURRENT_BASE_RATE' => 1.36)
						);
						break;
				}
				foreach ($addCurrency as &$fields)
				{
					$fields['CREATED_BY'] = null;
					$fields['MODIFIED_BY'] = null;
					$fields['DATE_CREATE'] = $datetimeEntity;
					$fields['DATE_UPDATE'] = $datetimeEntity;
					$currencyResult = CurrencyTable::add($fields);
					if ($currencyResult->isSuccess())
						$currencyList[] = $fields['CURRENCY'];
				}
				unset($currencyResult, $fields);

				if (!empty($currencyList))
				{
					Option::set('currency', 'installed_currencies', implode(',', $currencyList), '');
					$languageIterator = LanguageTable::getList(array(
						'select' => array('ID'),
						'filter' => array('ACTIVE' => 'Y')
					));
					while ($existLanguage = $languageIterator->fetch())
					{
						$CACHE_MANAGER->Clean('currency_currency_list_'.$existLanguage['ID']);
						$messList = Loc::loadLanguageFile($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/currency/install_lang.php', $existLanguage['ID']);
						foreach($currencyList as &$oneCurrency)
						{
							$fields = array(
								'LID' => $existLanguage['ID'],
								'CURRENCY' => $oneCurrency,
								'THOUSANDS_SEP' => false,
								'DECIMALS' => 2,
								'HIDE_ZERO' => 'Y',
								'FORMAT_STRING' => $messList['CUR_INSTALL_'.$oneCurrency.'_FORMAT_STRING'],
								'FULL_NAME' => $messList['CUR_INSTALL_'.$oneCurrency.'_FULL_NAME'],
								'DEC_POINT' => $messList['CUR_INSTALL_'.$oneCurrency.'_DEC_POINT'],
								'THOUSANDS_VARIANT' => $messList['CUR_INSTALL_'.$oneCurrency.'_THOUSANDS_SEP'],
								'CREATED_BY' => null,
								'MODIFIED_BY' => null,
								'DATE_CREATE' => $datetimeEntity,
								'TIMESTAMP_X' => $datetimeEntity
							);
							$resultCurrencyLang = CurrencyLangTable::add($fields);
						}
						unset($oneCurrency);
					}
					unset($existLanguage, $languageIterator);
					if (!$bitrix24)
					{
						$checkDate = DateTime::createFromTimestamp(strtotime('tomorrow 00:01:00'));;
						CAgent::AddAgent('\Bitrix\Currency\CurrencyTable::currencyBaseRateAgent();', 'currency', 'Y', 86400, '', 'Y', $checkDate->toString(), 100, false, true);
					}
				}
			}
		}
		$stackCacheManager->Clear("currency_currency_lang");
		$CACHE_MANAGER->Clean("currency_currency_list", 'b_catalog_currency');
		$CACHE_MANAGER->Clean("currency_base_currency", 'b_catalog_currency');
		$stackCacheManager->Clear("currency_rate");

		return true;
	}
Пример #21
0
 protected static function actionAdd($name, $arFields)
 {
     if ($name == 'ADDELEMENT') {
         if (!self::checkElement($arFields)) {
             return;
         }
         // we don't have the GLOBAL_ACTIVE flag in $arFields so we should check it manually
         if (is_array($arFields['IBLOCK_SECTION']) && count($arFields['IBLOCK_SECTION']) > 0) {
             $arNewSections = array();
             $arFilter = array('ID' => $arFields['IBLOCK_SECTION'], 'IBLOCK_ID' => $arFields['IBLOCK_ID'], 'GLOBAL_ACTIVE' => 'Y');
             $dbRes = \CIBlockSection::getList(array(), $arFilter, false, array('ID'));
             while ($ar = $dbRes->fetch()) {
                 $arNewSections[] = $ar['ID'];
             }
             if (count($arNewSections) <= 0) {
                 // element is added to inactive sections
                 return;
             }
             $arFields['IBLOCK_SECTION'] = $arNewSections;
         }
     } elseif ($name == 'ADDSECTION') {
         $dbRes = \CIBlockSection::getList(array(), array('ID' => $arFields['ID'], 'GLOBAL_ACTIVE' => 'Y'), false, array('ID'));
         if (!$dbRes->fetch()) {
             // section is added to inactive branch
             return;
         }
     }
     $arSitemaps = SitemapIblockTable::getByIblock($arFields, $name == 'ADDSECTION' ? SitemapIblockTable::TYPE_SECTION : SitemapIblockTable::TYPE_ELEMENT);
     $arFields['TIMESTAMP_X'] = ConvertTimeStamp(false, "FULL");
     if (isset($arFields['IBLOCK_SECTION']) && is_array($arFields['IBLOCK_SECTION']) && count($arFields['IBLOCK_SECTION']) > 0) {
         $arFields['IBLOCK_SECTION_ID'] = min($arFields['IBLOCK_SECTION']);
     }
     if (count($arSitemaps) > 0) {
         $arSiteDirs = array();
         $dbSite = SiteTable::getList(array('select' => array('LID', 'DIR')));
         while ($arSite = $dbSite->fetch()) {
             $arSiteDirs[$arSite['LID']] = $arSite['DIR'];
         }
         foreach ($arSitemaps as $arSitemap) {
             $arFields['LANG_DIR'] = $arSiteDirs[$arSitemap['SITE_ID']];
             $rule = array('url' => $name == 'ADDSECTION' ? \CIBlock::replaceDetailUrl($arSitemaps[0]['SECTION_PAGE_URL'], $arFields, false, "S") : \CIBlock::replaceDetailUrl($arSitemaps[0]['DETAIL_PAGE_URL'], $arFields, false, "E"), 'lastmod' => MakeTimeStamp($arFields['TIMESTAMP_X']));
             $fileName = str_replace(array('#IBLOCK_ID#', '#IBLOCK_CODE#', '#IBLOCK_XML_ID#'), array($arFields['IBLOCK_ID'], $arSitemap['IBLOCK_CODE'], $arSitemap['IBLOCK_XML_ID']), $arSitemap['SITEMAP_FILE_IBLOCK']);
             $sitemapFile = new SitemapFile($fileName, $arSitemap);
             $sitemapFile->appendIblockEntry($rule['url'], $rule['lastmod']);
             $sitemapIndex = new SitemapIndex($arSitemap['SITEMAP_FILE'], $arSitemap);
             $sitemapIndex->appendIndexEntry($sitemapFile);
             if ($arSitemap['ROBOTS'] == 'Y') {
                 $robotsFile = new RobotsFile($arSitemap['SITE_ID']);
                 $robotsFile->addRule(array(RobotsFile::SITEMAP_RULE, $sitemapIndex->getUrl()));
             }
         }
     }
 }
Пример #22
0
 public static function getSites()
 {
     $sites = array();
     $res = Main\SiteTable::getList();
     while ($item = $res->fetch()) {
         $sites[] = $item['LID'];
     }
     return $sites;
 }
Пример #23
0
 function Update($ID, $arFields)
 {
     global $DB;
     if (!$this->CheckFields($arFields, $ID)) {
         return false;
     }
     if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") {
         $arFields["ACTIVE"] = "N";
     }
     $arLID = array();
     if (is_set($arFields, "LID")) {
         if (is_array($arFields["LID"])) {
             $arLID = $arFields["LID"];
         } else {
             $arLID[] = $arFields["LID"];
         }
         $arFields["LID"] = false;
         foreach ($arLID as $v) {
             $arFields["LID"] = $v;
         }
     }
     $arATTACHMENT_FILE = array();
     if (is_set($arFields, "ATTACHMENT_FILE")) {
         if (is_array($arFields["ATTACHMENT_FILE"])) {
             $arATTACHMENT_FILE = $arFields["ATTACHMENT_FILE"];
         } else {
             $arATTACHMENT_FILE[] = $arFields["ATTACHMENT_FILE"];
         }
         $arATTACHMENT_FILE_tmp = array();
         foreach ($arATTACHMENT_FILE as $v) {
             $v = intval($v);
             $arATTACHMENT_FILE_tmp[] = $v;
         }
         $arATTACHMENT_FILE = $arATTACHMENT_FILE_tmp;
         unset($arFields['ATTACHMENT_FILE']);
     }
     if (array_key_exists('NAME', $arFields)) {
         unset($arFields['NAME']);
     }
     $ID = intval($ID);
     Mail\Internal\EventMessageTable::update($ID, $arFields);
     if (count($arLID) > 0) {
         Mail\Internal\EventMessageSiteTable::delete($ID);
         $resultDb = \Bitrix\Main\SiteTable::getList(array('select' => array('LID'), 'filter' => array('LID' => $arLID)));
         while ($arResultSite = $resultDb->fetch()) {
             Mail\Internal\EventMessageSiteTable::add(array('EVENT_MESSAGE_ID' => $ID, 'SITE_ID' => $arResultSite['LID']));
         }
     }
     if (count($arATTACHMENT_FILE) > 0) {
         foreach ($arATTACHMENT_FILE as $file_id) {
             Mail\Internal\EventMessageAttachmentTable::add(array('EVENT_MESSAGE_ID' => $ID, 'FILE_ID' => $file_id));
         }
     }
     return true;
 }
Пример #24
0
 public static function copyDefaultLocations()
 {
     $sRes = Main\SiteTable::getList();
     $sites = array();
     while ($site = $sRes->fetch()) {
         $sites[] = $site['LID'];
     }
     $existed = array();
     $res = Location\DefaultSiteTable::getList();
     while ($item = $res->fetch()) {
         $existed[$item['SITE_ID']][$item['LOCATION_CODE']] = true;
     }
     $res = \CSaleLocation::GetList(array(), array('LID' => 'en', 'LOC_DEFAULT' => 'Y'), false, false, array('ID'));
     while ($item = $res->fetch()) {
         foreach ($sites as $site) {
             if (isset($existed[$site][$item['ID']])) {
                 continue;
             }
             $opRes = Location\DefaultSiteTable::add(array('SITE_ID' => $site, 'LOCATION_CODE' => $item['ID']));
             if (!$opRes->isSuccess()) {
                 throw new Main\SystemException('Cannot add default location');
             }
         }
     }
 }
Пример #25
0
 private static function checkSiteId($siteId)
 {
     $siteId = Assert::expectStringNotNull($siteId, '$siteId');
     $res = Main\SiteTable::getList(array('filter' => array('LID' => $siteId)))->fetch();
     if (!$res) {
         throw new Main\ArgumentOutOfRangeException(Loc::getMessage('SALE_LOCATION_DEFAULTSITE_ENTITY_SITE_ID_UNKNOWN_EXCEPTION'));
     }
     return $siteId;
 }
Пример #26
0
 public static function onGetAttributeTypes()
 {
     $userAgent = $_SERVER['HTTP_USER_AGENT'];
     // http://stackoverflow.com/questions/18070154/get-operating-system-info-with-php
     $operatingSystemValues = array('windows' => array('NAME' => 'Windows', 'REGEX' => '/windows|win98|win95|win16/i'), 'macos' => array('NAME' => 'Mac OS', 'REGEX' => '/macintosh|mac os x|mac_powerpc/i'), 'android' => array('NAME' => 'Android', 'REGEX' => '/android/i'), 'linux' => array('NAME' => 'Linux', 'REGEX' => '/linux|ubuntu/i'), 'ios' => array('NAME' => 'iOS', 'REGEX' => '/iphone|ipod|ipad/i'), 'blackberry' => array('NAME' => 'BlackBerry', 'REGEX' => '/blackberry/i'), 'webos' => array('NAME' => 'Web OS', 'REGEX' => '/webos/i'));
     $browser = null;
     // TODO hack
     $browserValues = array('ie' => array('NAME' => 'Internet Explorer', 'REGEX' => '/msie/i'), 'firefox' => array('NAME' => 'Firefox', 'REGEX' => '/firefox/i'), 'chrome' => array('NAME' => 'Chrome', 'REGEX' => '/chrome/i'), 'opera' => array('NAME' => 'Opera', 'REGEX' => '/opera/i'), 'safari' => array('NAME' => 'Safari', 'REGEX' => '/safari/i'), 'netscape' => array('NAME' => 'Netscape', 'REGEX' => '/netscape/i'), 'maxthon' => array('NAME' => 'Maxthon', 'REGEX' => '/maxthon/i'), 'konqueror' => array('NAME' => 'Konqueror', 'REGEX' => '/konqueror/i'), 'mobile' => array('NAME' => 'Handheld', 'REGEX' => '/mobile/i'));
     $detector = new MobileDetect();
     $searchEngineValues = array('google' => array('NAME' => 'Google', 'REGEX' => '#^https?://www\\.google\\.[a-z]{2,3}/#'), 'bing' => array('NAME' => 'Bing', 'REGEX' => '#^https?://www\\.bing\\.[a-z]{2,3}/#'), 'yahoo' => array('NAME' => 'Yahoo', 'REGEX' => '#^https?://r\\.search\\.yahoo\\.[a-z]{2,3}/#'), 'ask' => array('NAME' => 'Ask', 'REGEX' => '#^https?://www\\.ask\\.[a-z]{2,3}/#'), 'yandex' => array('NAME' => 'Yandex', 'REGEX' => '#^https?://yandex\\.[a-z]{2,3}/#'), 'mail.ru' => array('NAME' => 'Mail.ru', 'REGEX' => '#^https?://go\\.mail\\.ru/#'), 'rambler' => array('NAME' => 'Rambler', 'REGEX' => '#^https?://nova\\.rambler\\.ru/#'));
     return array('conversion_site' => array('MODULE' => 'conversion', 'NAME' => Loc::getMessage('CONVERSION_ATTRIBUTE_SITE_NAME'), 'SORT' => 1100, 'GET_VALUES' => function (array $ids) {
         $values = array();
         $result = SiteTable::getList(array('select' => array('LID', 'NAME'), 'filter' => array('LID' => $ids), 'order' => array('SORT' => 'ASC')));
         while ($row = $result->fetch()) {
             $values[$row['LID']] = array('NAME' => $row['NAME']);
         }
         return $values;
     }, 'SET_DAY_CONTEXT' => function (DayContext $dayContext) {
         if ($siteId = DayContext::getSiteId()) {
             $dayContext->setAttribute('conversion_site', $siteId);
         }
     }), 'conversion_operating_system' => array('MODULE' => 'conversion', 'NAME' => Loc::getMessage('CONVERSION_ATTRIBUTE_OPERATING_SYSTEM_NAME'), 'SORT' => 2100, 'GET_VALUES' => function (array $ids) use($operatingSystemValues) {
         $values = array();
         foreach ($ids as $id) {
             if ($value = $operatingSystemValues[$id]) {
                 $values[$id] = $value;
             }
         }
         return $values;
     }, 'SET_DAY_CONTEXT' => function (DayContext $dayContext) use($operatingSystemValues, $userAgent) {
         if ($userAgent) {
             foreach ($operatingSystemValues as $name => $type) {
                 if (preg_match($type['REGEX'], $userAgent)) {
                     $dayContext->setAttribute('conversion_operating_system', $name);
                     break;
                 }
             }
         }
     }), 'conversion_browser' => array('MODULE' => 'conversion', 'NAME' => Loc::getMessage('CONVERSION_ATTRIBUTE_BROWSER_NAME'), 'SORT' => 3100, 'GET_VALUES' => function (array $ids) use($browserValues) {
         $values = array();
         foreach ($ids as $id) {
             if ($value = $browserValues[$id]) {
                 $values[$id] = $value;
             }
         }
         return $values;
     }, 'SET_DAY_CONTEXT' => function (DayContext $dayContext) use($browserValues, $userAgent, &$browser) {
         if ($userAgent) {
             foreach ($browserValues as $name => $type) {
                 if (preg_match($type['REGEX'], $userAgent)) {
                     $dayContext->setAttribute('conversion_browser', $name);
                     $browser = $name;
                     break;
                 }
             }
         }
     }), 'conversion_device_tablet' => array('MODULE' => 'conversion', 'GROUP' => 'device', 'SORT' => 4100, 'NAME' => Loc::getMessage('CONVERSION_ATTRIBUTE_DEVICE_TABLET_NAME'), 'SPLIT_BY' => 'conversion_operating_system', 'BG_COLOR' => '#be6ac4', 'SET_DAY_CONTEXT' => function (DayContext $dayContext) use($detector) {
         if ($detector->isTablet()) {
             $dayContext->setAttribute('conversion_device_tablet');
         }
     }), 'conversion_device_mobile' => array('MODULE' => 'conversion', 'GROUP' => 'device', 'SORT' => 4200, 'NAME' => Loc::getMessage('CONVERSION_ATTRIBUTE_DEVICE_MOBILE_NAME'), 'SPLIT_BY' => 'conversion_operating_system', 'BG_COLOR' => '#4bbedb', 'SET_DAY_CONTEXT' => function (DayContext $dayContext) use($detector) {
         if ($detector->isMobile()) {
             $dayContext->setAttribute('conversion_device_mobile');
         }
     }), 'conversion_device_desktop' => array('MODULE' => 'conversion', 'GROUP' => 'device', 'SORT' => 4500, 'NAME' => Loc::getMessage('CONVERSION_ATTRIBUTE_DEVICE_DESKTOP_NAME'), 'SPLIT_BY' => 'conversion_browser', 'BG_COLOR' => '#cf4343', 'SET_DAY_CONTEXT' => function (DayContext $dayContext) use(&$browser) {
         if ($browser) {
             $dayContext->setAttribute('conversion_device_desktop');
         }
     }), 'conversion_search_engine' => array('MODULE' => 'conversion', 'GROUP' => 'source', 'SORT' => 5500, 'NAME' => Loc::getMessage('CONVERSION_ATTRIBUTE_SEARCH_ENGINE_NAME'), 'SPLIT_BY' => 'conversion_search_engine', 'BG_COLOR' => '#be6ac4', 'GET_VALUES' => function (array $ids) use($searchEngineValues) {
         $values = array();
         foreach ($ids as $id) {
             if ($value = $searchEngineValues[$id]) {
                 $values[$id] = $value;
             }
         }
         return $values;
     }, 'SET_DAY_CONTEXT' => function (DayContext $dayContext) use($searchEngineValues) {
         if ($referer = $_SERVER['HTTP_REFERER']) {
             foreach ($searchEngineValues as $name => $type) {
                 if (preg_match($type['REGEX'], $referer)) {
                     $dayContext->setAttribute('conversion_search_engine', $name);
                     break;
                 }
             }
         }
     }));
 }
Пример #27
0
 public static function reindexAll($maxExecutionTime = 0, $ns = array())
 {
     @set_time_limit(0);
     if (!is_array($ns)) {
         $ns = array();
     }
     if ($maxExecutionTime <= 0) {
         $nsOld = $ns;
         $ns = array("CLEAR" => "N", "ID" => "", "FLG" => "", "SESS_ID" => md5(uniqid("")), "max_execution_time" => $nsOld["max_execution_time"], "stepped" => $nsOld["stepped"], "max_file_size" => $nsOld["max_file_size"]);
         if ($nsOld["SITE_ID"] != "") {
             $ns["SITE_ID"] = $nsOld["SITE_ID"];
         }
     }
     $ns["CNT"] = intval($ns["CNT"]);
     $arSites = array();
     $filterRootPath = "";
     $db = SiteTable::getList(array("select" => array("LID", "DOC_ROOT", "DIR"), "filter" => array("ACTIVE" => "Y")));
     while ($ar = $db->fetch()) {
         if (empty($ar["DOC_ROOT"])) {
             $ar["DOC_ROOT"] = Application::getDocumentRoot();
         }
         $arSites[] = array("site_id" => $ar["LID"], "root" => $ar["DOC_ROOT"], "path" => IO\Path::combine($ar["DOC_ROOT"], $ar["DIR"]));
         if ($ns["SITE_ID"] != "" && $ns["SITE_ID"] == $ar["LID"]) {
             $filterRootPath = $ar["DOC_ROOT"];
         }
     }
     if ($ns["SITE_ID"] != "" && !empty($filterRootPath)) {
         $arSitesTmp = array();
         $arKeys = array_keys($arSites);
         foreach ($arKeys as $key) {
             if ($arSites[$key]["root"] == $filterRootPath) {
                 $arSitesTmp[] = $arSites[$key];
             }
         }
         $arSites = $arSitesTmp;
     }
     uasort($arSites, function ($a, $b) {
         $la = strlen($a["path"]);
         $lb = strlen($b["path"]);
         if ($la == $lb) {
             if ($a["site_id"] == $b["site_id"]) {
                 return 0;
             } else {
                 return $a["site_id"] > $b["site_id"] ? -1 : 1;
             }
         }
         return $la > $lb ? -1 : 1;
     });
     if ($ns["CLEAR"] != "Y") {
         $arAlreadyDeleted = array();
         foreach ($arSites as $site) {
             Component\ParametersTable::deleteBySiteId($site["site_id"]);
             if (!in_array($site["root"], $arAlreadyDeleted)) {
                 UrlRewriter::delete($site["site_id"], array("!ID" => ""));
                 $arAlreadyDeleted[] = $site["root"];
             }
         }
     }
     $ns["CLEAR"] = "Y";
     clearstatcache();
     $arAlreadyParsed = array();
     foreach ($arSites as $site) {
         if (in_array($site["root"], $arAlreadyParsed)) {
             continue;
         }
         $arAlreadyParsed[] = $site["root"];
         if ($maxExecutionTime > 0 && !empty($ns["FLG"]) && substr($ns["ID"] . "/", 0, strlen($site["root"] . "/")) != $site["root"] . "/") {
             continue;
         }
         UrlRewriter::recursiveReindex($site["root"], "/", $arSites, $maxExecutionTime, $ns);
         if ($maxExecutionTime > 0 && !empty($ns["FLG"])) {
             return $ns;
         }
     }
     return $ns["CNT"];
 }
Пример #28
0
 /**
  * Returns site traffic capacity
  *
  * @param string $id Site ID.
  * @return array
  */
 public static function getSiteCapacity($id)
 {
     $cache = new \CPHPCache();
     if ($cache->initCache(time() - strtotime('today'), 'abtest_site_capacity', '/abtest')) {
         $capacity = $cache->getVars();
     } else {
         if (Loader::includeModule('conversion')) {
             if ($conversionRates = Conversion\RateManager::getTypes(array('ACTIVE' => true))) {
                 $baseRate = array_slice($conversionRates, 0, 1, true);
                 $reportContext = new Conversion\ReportContext();
                 $from = new \DateTime('first day of last month');
                 $to = new \DateTime('today');
                 $capacity = array();
                 $res = \Bitrix\Main\SiteTable::getList();
                 while ($site = $res->fetch()) {
                     $lid = $site['LID'];
                     $reportContext->setAttribute('conversion_site', $lid);
                     $rateData = reset($reportContext->getRatesDeprecated($baseRate, array('>=DAY' => Type\Date::createFromPhp($from), '<=DAY' => Type\Date::createFromPhp($to)), null));
                     $reportContext->unsetAttribute('conversion_site', $lid);
                     $rate = $rateData['RATE'];
                     $hits = $rateData['DENOMINATOR'];
                     $daily = floor($hits / (date_diff($from, $to)->format('%a') + 1));
                     $min = $rate > 0 && $rate < 1 ? ceil(16 * (1 / $rate - 1) / pow(MIN_EFFECT, 2)) : 0;
                     $est = $daily ? $min / ($daily / 2) : 0;
                     $capacity[$lid] = array('daily' => $daily, 'min' => $min, 'est' => $est);
                 }
                 $cache->startDataCache(strtotime('tomorrow') - time());
                 $cache->endDataCache($capacity);
             }
         }
     }
     $result = array();
     foreach ((array) $id as $lid) {
         $result[$lid] = isset($capacity[$lid]) ? $capacity[$lid] : array('min' => 0, 'est' => 0);
     }
     return is_array($id) ? $result : reset($result);
 }
Пример #29
0
 /**
  * @return array
  * @throws \Bitrix\Main\ArgumentException
  */
 public static function getDefaultEmailFromList()
 {
     $addressFromList = array();
     $siteEmailDb = \Bitrix\Main\SiteTable::getList(array('select' => array('EMAIL')));
     while ($siteEmail = $siteEmailDb->fetch()) {
         $addressFromList[] = $siteEmail['EMAIL'];
     }
     try {
         $mainEmail = \COption::GetOptionString('main', 'email_from');
         if (!empty($mainEmail)) {
             $addressFromList[] = $mainEmail;
         }
         $saleEmail = \COption::GetOptionString('sale', 'order_email');
         if (!empty($saleEmail)) {
             $addressFromList[] = $saleEmail;
         }
         $addressFromList = array_unique($addressFromList);
         trimArr($addressFromList, true);
     } catch (\Exception $e) {
     }
     return $addressFromList;
 }
Пример #30
0
 public static function getSiteLanguages()
 {
     static $langs;
     if ($langs == null) {
         $langs = array();
         $res = \Bitrix\Main\SiteTable::getList(array('filter' => array('ACTIVE' => 'Y'), 'select' => array('LANGUAGE_ID'), 'group' => array('LANGUAGE_ID')));
         while ($item = $res->fetch()) {
             $langs[ToUpper($item['LANGUAGE_ID'])] = true;
         }
         $langs = array_unique(array_keys($langs));
         // all active sites languages
     }
     return $langs;
 }