function InstallDB() { global $DB, $DBType, $APPLICATION; $this->errors = false; $clearInstall = false; if (!$DB->Query("SELECT 'x' FROM b_sale_basket", true)) { $clearInstall = true; $this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/install/db/" . $DBType . "/install.sql"); } if ($this->errors !== false) { $APPLICATION->ThrowException(implode("", $this->errors)); return false; } ModuleManager::registerModule('sale'); $eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->registerEventHandlerCompatible('main', 'OnUserLogout', 'sale', '\\Bitrix\\Sale\\DiscountCouponsManager', 'logout'); RegisterModuleDependences("main", "OnUserLogin", "sale", "CSaleUser", "OnUserLogin"); RegisterModuleDependences("main", "OnUserLogout", "sale", "CSaleUser", "OnUserLogout"); RegisterModuleDependences("main", "OnBeforeLangDelete", "sale", "CSalePersonType", "OnBeforeLangDelete"); RegisterModuleDependences("main", "OnLanguageDelete", "sale", "CSaleLocation", "OnLangDelete"); RegisterModuleDependences("main", "OnLanguageDelete", "sale", "CSaleLocationGroup", "OnLangDelete"); RegisterModuleDependences("main", "OnUserDelete", "sale", "CSaleOrderUserProps", "OnUserDelete"); RegisterModuleDependences("main", "OnUserDelete", "sale", "CSaleUserAccount", "OnUserDelete"); RegisterModuleDependences("main", "OnUserDelete", "sale", "CSaleAuxiliary", "OnUserDelete"); RegisterModuleDependences("main", "OnUserDelete", "sale", "CSaleUser", "OnUserDelete"); RegisterModuleDependences("main", "OnUserDelete", "sale", "CSaleRecurring", "OnUserDelete"); RegisterModuleDependences("main", "OnUserDelete", "sale", "CSaleUserCards", "OnUserDelete"); RegisterModuleDependences("main", "OnBeforeUserDelete", "sale", "CSaleOrder", "OnBeforeUserDelete"); RegisterModuleDependences("main", "OnBeforeUserDelete", "sale", "CSaleAffiliate", "OnBeforeUserDelete"); RegisterModuleDependences("main", "OnBeforeUserDelete", "sale", "CSaleUserAccount", "OnBeforeUserDelete"); RegisterModuleDependences("main", "OnBeforeProlog", "main", "", "", 100, "/modules/sale/affiliate.php"); RegisterModuleDependences("main", "OnEventLogGetAuditTypes", "sale", "CSaleYMHandler", 'OnEventLogGetAuditTypes'); RegisterModuleDependences("main", "OnEventLogGetAuditTypes", "sale", "CSalePaySystemAction", 'OnEventLogGetAuditTypes'); RegisterModuleDependences("currency", "OnBeforeCurrencyDelete", "sale", "CSaleOrder", "OnBeforeCurrencyDelete"); RegisterModuleDependences("currency", "OnBeforeCurrencyDelete", "sale", "CSaleLang", "OnBeforeCurrencyDelete"); RegisterModuleDependences("currency", "OnModuleUnInstall", "sale", "", "CurrencyModuleUnInstallSale"); RegisterModuleDependences("catalog", "OnSaleOrderSumm", "sale", "CSaleOrder", "__SaleOrderCount"); RegisterModuleDependences("mobileapp", "OnBeforeAdminMobileMenuBuild", "sale", "CSaleMobileOrderUtils", "buildSaleAdminMobileMenu"); RegisterModuleDependences("sender", "OnConnectorList", "sale", "\\Bitrix\\Sale\\SenderEventHandler", "onConnectorListBuyer"); RegisterModuleDependences("sender", "OnTriggerList", "sale", "\\Bitrix\\Sale\\Sender\\EventHandler", "onTriggerList"); RegisterModuleDependences("sender", "OnPresetMailingList", "sale", "\\Bitrix\\Sale\\Sender\\EventHandler", "onPresetMailingList"); RegisterModuleDependences("sender", "OnPresetTemplateList", "sale", "\\Bitrix\\Sale\\Sender\\EventHandler", "onPresetTemplateList"); RegisterModuleDependences("sale", "OnCondSaleControlBuildList", "sale", "CSaleCondCtrlGroup", "GetControlDescr", 100); RegisterModuleDependences("sale", "OnCondSaleControlBuildList", "sale", "CSaleCondCtrlBasketGroup", "GetControlDescr", 200); RegisterModuleDependences("sale", "OnCondSaleControlBuildList", "sale", "CSaleCondCtrlBasketFields", "GetControlDescr", 300); RegisterModuleDependences("sale", "OnCondSaleControlBuildList", "sale", "CSaleCondCtrlOrderFields", "GetControlDescr", 1000); RegisterModuleDependences("sale", "OnCondSaleControlBuildList", "sale", "CSaleCondCtrlCommon", "GetControlDescr", 10000); RegisterModuleDependences("sale", "OnCondSaleActionsControlBuildList", "sale", "CSaleActionCtrlGroup", "GetControlDescr", 100); RegisterModuleDependences("sale", "OnCondSaleActionsControlBuildList", "sale", "CSaleActionCtrlDelivery", "GetControlDescr", 200); RegisterModuleDependences("sale", "OnCondSaleActionsControlBuildList", "sale", "CSaleActionCtrlBasketGroup", "GetControlDescr", 300); RegisterModuleDependences("sale", "OnCondSaleActionsControlBuildList", "sale", "CSaleActionCtrlSubGroup", "GetControlDescr", 1000); RegisterModuleDependences("sale", "OnCondSaleActionsControlBuildList", "sale", "CSaleActionCondCtrlBasketFields", "GetControlDescr", 1100); //pulling for mobile orders RegisterModuleDependences("sale", "OnOrderDelete", "sale", "CSaleMobileOrderPull", "onOrderDelete", 100); RegisterModuleDependences("sale", "OnOrderAdd", "sale", "CSaleMobileOrderPull", "onOrderAdd", 100); RegisterModuleDependences("sale", "OnOrderUpdate", "sale", "CSaleMobileOrderPull", "onOrderUpdate", 100); // sale product2product RegisterModuleDependences("sale", "OnBasketOrder", "sale", "\\Bitrix\\Sale\\Product2ProductTable", "onSaleOrderAdd", 100); RegisterModuleDependences("sale", "OnSaleStatusOrder", "sale", "\\Bitrix\\Sale\\Product2ProductTable", "onSaleStatusOrderHandler", 100); RegisterModuleDependences("sale", "OnSaleDeliveryOrder", "sale", "\\Bitrix\\Sale\\Product2ProductTable", "onSaleDeliveryOrderHandler", 100); RegisterModuleDependences("sale", "OnSaleDeductOrder", "sale", "\\Bitrix\\Sale\\Product2ProductTable", "onSaleDeductOrderHandler", 100); RegisterModuleDependences("sale", "OnSaleCancelOrder", "sale", "\\Bitrix\\Sale\\Product2ProductTable", "onSaleCancelOrderHandler", 100); RegisterModuleDependences("sale", "OnSalePayOrder", "sale", "\\Bitrix\\Sale\\Product2ProductTable", "onSalePayOrderHandler", 100); CAgent::AddAgent("\\Bitrix\\Sale\\Product2ProductTable::deleteOldProducts(10);", "sale", "N", 10 * 24 * 3600, "", "Y"); // conversion RegisterModuleDependences('conversion', 'OnGetCounterTypes', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onGetCounterTypes'); RegisterModuleDependences('conversion', 'OnGetRateTypes', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onGetRateTypes'); RegisterModuleDependences('conversion', 'OnGenerateInitialData', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onGenerateInitialData'); RegisterModuleDependences('sale', 'OnBeforeBasketAdd', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onBeforeBasketAdd'); RegisterModuleDependences('sale', 'OnBasketAdd', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onBasketAdd'); RegisterModuleDependences('sale', 'OnBeforeBasketUpdate', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onBeforeBasketUpdate'); RegisterModuleDependences('sale', 'OnBasketUpdate', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onBasketUpdate'); RegisterModuleDependences('sale', 'OnBeforeBasketDelete', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onBeforeBasketDelete'); RegisterModuleDependences('sale', 'OnBasketDelete', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onBasketDelete'); RegisterModuleDependences('sale', 'OnOrderAdd', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onOrderAdd'); RegisterModuleDependences('sale', 'OnSalePayOrder', 'sale', '\\Bitrix\\Sale\\Internals\\ConversionHandlers', 'onSalePayOrder'); RegisterModuleDependences("perfmon", "OnGetTableSchema", "sale", "sale", "OnGetTableSchema"); COption::SetOptionString("sale", "viewed_capability", "N"); COption::SetOptionString("sale", "viewed_count", 10); COption::SetOptionString("sale", "viewed_time", 5); COption::SetOptionString("main", "~sale_converted_15", 'Y'); COption::SetOptionString("sale", "expiration_processing_events", 'N'); COption::SetOptionString("sale", "p2p_status_list", serialize(array("N", "P", "F", "F_CANCELED", "F_DELIVERY", "F_PAY", "F_OUT"))); if ($clearInstall) { \Bitrix\Main\Config\Option::set('sale', 'basket_discount_converted', 'Y', ''); } CAgent::AddAgent("CSaleRecurring::AgentCheckRecurring();", "sale", "N", 7200, "", "Y"); CAgent::AddAgent("CSaleOrder::RemindPayment();", "sale", "N", 86400, "", "Y"); CAgent::AddAgent("CSaleViewedProduct::ClearViewed();", "sale", "N", 86400, "", "Y"); CAgent::AddAgent("CSaleOrder::ClearProductReservedQuantity();", "sale", "N", 86400, "", "Y"); COption::SetOptionString("sale", "product_reserve_clear_period", "3"); \Bitrix\Main\Config\Option::set('sale', 'sale_locationpro_import_performed', 'Y'); // install tasks + operations for statuses $operations = array(); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_view')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_cancel')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_mark')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_delivery')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_deduction')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_payment')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_to')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_update')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_delete')); $operations[] = Bitrix\Main\OperationTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_from')); Bitrix\Main\TaskTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_none', 'SYS' => 'Y', 'LETTER' => 'D')); $result = Bitrix\Main\TaskTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_all', 'SYS' => 'Y', 'LETTER' => 'X')); if ($result->isSuccess()) { $taskId = $result->getId(); foreach ($operations as $result) { if ($result->isSuccess()) { Bitrix\Main\TaskOperationTable::add(array('TASK_ID' => $taskId, 'OPERATION_ID' => $result->getId())); } } } if (Bitrix\Main\Loader::IncludeModule('sale')) { // install statuses $orderInitialStatus = Bitrix\Sale\OrderStatus::getInitialStatus(); $orderFinalStatus = Bitrix\Sale\OrderStatus::getFinalStatus(); $deliveryInitialStatus = Bitrix\Sale\DeliveryStatus::getInitialStatus(); $deliveryFinalStatus = Bitrix\Sale\DeliveryStatus::getFinalStatus(); $statusLanguages = array(); $result = Bitrix\Main\Localization\LanguageTable::getList(array('select' => array('LID'), 'filter' => array('=ACTIVE' => 'Y'))); while ($row = $result->Fetch()) { $languageId = $row['LID']; Bitrix\Main\Localization\Loc::loadLanguageFile($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/sale/lib/status.php', $languageId); foreach (array($orderInitialStatus, $orderFinalStatus, $deliveryInitialStatus, $deliveryFinalStatus) as $statusId) { if ($statusName = Bitrix\Main\Localization\Loc::getMessage("SALE_STATUS_{$statusId}")) { $statusLanguages[$statusId][] = array('LID' => $languageId, 'NAME' => $statusName, 'DESCRIPTION' => Bitrix\Main\Localization\Loc::getMessage("SALE_STATUS_{$statusId}_DESCR")); } } } Bitrix\Sale\OrderStatus::install(array('ID' => $orderInitialStatus, 'SORT' => 100, 'NOTIFY' => 'Y', 'LANG' => $statusLanguages[$orderInitialStatus])); Bitrix\Sale\OrderStatus::install(array('ID' => $orderFinalStatus, 'SORT' => 200, 'NOTIFY' => 'Y', 'LANG' => $statusLanguages[$orderFinalStatus])); Bitrix\Sale\DeliveryStatus::install(array('ID' => $deliveryInitialStatus, 'SORT' => 300, 'NOTIFY' => 'Y', 'LANG' => $statusLanguages[$deliveryInitialStatus])); Bitrix\Sale\DeliveryStatus::install(array('ID' => $deliveryFinalStatus, 'SORT' => 400, 'NOTIFY' => 'Y', 'LANG' => $statusLanguages[$deliveryFinalStatus])); // enabling location pro COption::SetOptionString("sale", "sale_locationpro_migrated", "Y"); COption::SetOptionString("sale", "sale_locationpro_enabled", "Y"); if (\Bitrix\Main\ModuleManager::isModuleInstalled('bitrix24')) { // this will create at least base types if we are at Bitrix24 include_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/sale/lib/location/migration/migrate.php"; \Bitrix\Sale\Location\Migration\CUpdaterLocationPro::createBaseTypes(); } CSaleYMHandler::install(); } return true; }
case "mark_as_unread": CMailMessage::Update($ID, array("NEW_MESSAGE" => "Y")); break; case "delete": CMailMessage::Delete($ID); break; case "refilter": CMailFilter::FilterMessage($ID, "M", $filter_id); break; } } } $nav = new Bitrix\Main\UI\AdminPageNavigation('nav-mail-message'); $messageList = Bitrix\Mail\MailMessageTable::getList(array('select' => array('ID', 'MAILBOX_ID', 'MAILBOX_NAME' => 'MAILBOX.NAME', 'NEW_MESSAGE', 'SUBJECT', 'MESSAGE_SIZE', 'SPAM', 'SPAM_RATING', 'FIELD_FROM', 'FIELD_REPLY_TO', 'FIELD_CC', 'FIELD_BCC', 'FIELD_DATE', 'DATE_INSERT', 'ATTACHMENTS', 'MSG_ID'), 'filter' => array_filter($arFilter), 'order' => array(strtoupper($by) => $order), 'offset' => $nav->getOffset(), 'limit' => $nav->getLimit(), 'count_total' => true)); $nav->setRecordCount($messageList->getCount()); $lAdmin->setNavigation($nav, Bitrix\Main\Localization\Loc::getMessage("MAIL_MSG_ADM_NAVIGATION")); $arHeaders = array(); $arHeaders[] = array("id" => "SUBJECT", "content" => GetMessage("MAIL_MSG_ADM_SUBJECT"), "default" => true, "sort" => "subject"); $arHeaders[] = array("id" => "FIELD_FROM", "content" => GetMessage("MAIL_MSG_ADM_FROM"), "default" => true, "sort" => "field_from"); $arHeaders[] = array("id" => "FIELD_REPLY_TO", "content" => GetMessage("MAIL_MSG_ADM_REPLY_TO"), "sort" => "field_reply_to"); $arHeaders[] = array("id" => "FIELD_CC", "content" => GetMessage("MAIL_MSG_ADM_CC"), "sort" => "field_cc"); $arHeaders[] = array("id" => "FIELD_BCC", "content" => GetMessage("MAIL_MSG_ADM_BCC"), "sort" => "field_bcc"); $arHeaders[] = array("id" => "FIELD_DATE", "content" => GetMessage("MAIL_MSG_ADM_DATE"), "default" => true, "sort" => "field_date"); $arHeaders[] = array("id" => "DATE_INSERT", "content" => GetMessage("MAIL_MSG_ADM_RECEIVED"), "sort" => "date_insert"); $arHeaders[] = array("id" => "MAILBOX_NAME", "content" => GetMessage("MAIL_MSG_ADM_MBOX"), "default" => true, "sort" => "mailbox_name"); $arHeaders[] = array("id" => "MESSAGE_SIZE", "content" => GetMessage("MAIL_MSG_ADM_SIZE"), "default" => true, "sort" => "size", "align" => "right"); $arHeaders[] = array("id" => "SPAM_RATING", "content" => GetMessage("MAIL_MSG_ADM_SPAM") . "<br>" . GetMessage("MAIL_MSG_ADM_SPAM_R"), "default" => true, "sort" => "size"); $arHeaders[] = array("id" => "ATTACHMENTS", "content" => GetMessage("MAIL_MSG_ADM_SPAM_ATTCH"), "default" => true, "sort" => "attachments"); $arHeaders[] = array("id" => "ID", "content" => "ID", "sort" => "id"); $arHeaders[] = array("id" => "MSG_ID", "content" => "Message-ID"); $lAdmin->AddHeaders($arHeaders);
/** * @return string * @throws Exception * @internal */ public static function createNoDeliveryServiceAgent() { $id = \Bitrix\Sale\Delivery\Services\EmptyDeliveryService::getEmptyDeliveryServiceId(); if ($id <= 0) { Bitrix\Main\Localization\Loc::loadLanguageFile($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/sale/lib/delivery/helper.php', 'ru'); $fields = array(); $fields["NAME"] = \Bitrix\Main\Localization\Loc::getMessage('SALE_DELIVERY_HELPER_NO_DELIVERY_SERVICE'); $fields["CLASS_NAME"] = '\\Bitrix\\Sale\\Delivery\\Services\\EmptyDeliveryService'; $fields["CURRENCY"] = 'RUB'; $fields["ACTIVE"] = "Y"; $fields["CONFIG"] = array('MAIN' => array('CURRENCY' => 'RUB', 'PRICE' => 0, 'PERIOD' => array('FROM' => 0, 'TO' => 0, 'TYPE' => 'D'))); $res = \Bitrix\Sale\Delivery\Services\Table::add($fields); $id = $res->getId(); $fields = array('SORT' => 100, 'DELIVERY_ID' => $id, 'PARAMS' => array('PUBLIC_SHOW' => 'N')); $rstrPM = new \Bitrix\Sale\Delivery\Restrictions\ByPublicMode(); $rstrPM->save($fields); } return ""; }
} $mgrs_data = $mgr_dsp->loadMigrations(); $db_data = new CAdminResult($mgrs_data['mgrs'], $sTableID); $db_data->NavStart(); $lAdmin->NavText($db_data->GetNavPrint(Bitrix\Main\Localization\Loc::getMessage('UM_BM_LIST_SHOWED'))); $lAdmin->AddHeaders($mgrs_data['headers']); $img_pattern = '<img hspace="4" title="%1$s" alt="%1$s" src="/bitrix/images/' . UM_BM_MODULE_NAME . '/%2$s">'; while ($item = $db_data->NavNext()) { $row =& $lAdmin->AddRow($item->getId()); $row->AddViewField('id', $item->getCode()); $pic = $item->getStatus() == 'UP' ? 'green.gif' : ($item->getStatus() == 'DOWN' ? 'red.gif' : 'grey.gif'); $img_pic = sprintf($img_pattern, Bitrix\Main\Localization\Loc::getMessage('UM_BM_STATUS_' . $item->getStatus() . '_CAPTION'), $pic); $row->AddViewField('status', $img_pic); $row->AddViewField('date_c', $item->getChangeDate()); $row->AddViewField('date_a', $item->getAddDate()); $actions = array(array("ICON" => "pack", "DEFAULT" => true, "TEXT" => Bitrix\Main\Localization\Loc::getMessage('UM_BM_MIG_UP'), "ACTION" => $lAdmin->ActionRedirect("?id=" . $item->getId() . '&do=up')), array("ICON" => "unpack", "DEFAULT" => true, "TEXT" => Bitrix\Main\Localization\Loc::getMessage('UM_BM_MIG_DOWN'), "ACTION" => $lAdmin->ActionRedirect("?id=" . $item->getId() . '&do=down'))); $row->AddActions($actions); } // альтернативный вывод $lAdmin->CheckListMode(); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; if (isset($_SESSION[$succ_session_key])) { CAdminMessage::ShowNote($_SESSION[$succ_session_key]); unset($_SESSION[$succ_session_key]); } if (isset($_SESSION[$fail_session_key])) { CAdminMessage::ShowMessage(Bitrix\Main\Localization\Loc::getMessage('UM_BM_MIG_FAIL', array('#ERRORS#' => implode('<br />', $_SESSION[$fail_session_key])))); unset($_SESSION[$fail_session_key]); } $lAdmin->DisplayList(); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";