MODULE_VERSION = SM_VERSION; $this->MODULE_VERSION_DATE = SM_VERSION_DATE; $this->MODULE_NAME = GetMessage("MAIN_MODULE_NAME"); $this->MODULE_DESCRIPTION = GetMessage("MAIN_MODULE_DESC"); } function InstallDB() { global $DB, $APPLICATION; if (!is_object($APPLICATION)) { $APPLICATION = new CMain; } $application = \Bitrix\Main\HttpApplication::getInstance(); $connectionType = $application->getConnection()->getType(); $DB->DebugToFile = false; $DB->debug = true; try { $application->getConnectionPool()->useMasterOnly(true); $res = ModuleTable::getById('main')->fetch(); $application->getConnectionPool()->useMasterOnly(false); if ($res) { return true; } } catch (SqlQueryException) { } if (defined("MYSQL_TABLE_TYPE") && MYSQL_TABLE_TYPE <> '') { $DB->Query("SET storage_engine = '" . MYSQL_TABLE_TYPE . "'", true); } $errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/" . $connectionType . "/install.sql"); if ($errors !== false) { $APPLICATION->ThrowException(implode("", $errors)); return false; } if (file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/" . $connectionType . "/install_add.sql")) { $errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/" . $connectionType . "/install_add.sql"); if ($errors !== false) { $APPLICATION->ThrowException(implode("", $errors)); return false; } } if (\Bitrix\Main\ORM\Fields\CryptoField::cryptoAvailable()) { \Bitrix\Main\UserPhoneAuthTable::enableCrypto("OTP_SECRET"); \Bitrix\Main\Authentication\Internal\UserAuthCodeTable::enableCrypto("OTP_SECRET"); } $this->InstallTasks(); if ($this->InstallGroups() === false) { return false; } self::InstallRatings(); if ($this->InstallLanguages() === false) { return false; } if ($this->InstallSites() === false) { return false; } RegisterModule("main"); RegisterModuleDependences('iblock', 'OnIBlockPropertyBuildList', 'main', 'CIBlockPropertyUserID', 'GetUserTypeDescription', 100, '/modules/main/tools/prop_userid.php'); RegisterModuleDependences('main', 'OnUserDelete', 'main', 'CUserOptions', 'OnUserDelete'); RegisterModuleDependences('main', 'OnChangeFile', 'main', 'CMain', 'OnChangeFileComponent'); RegisterModuleDependences('main', 'OnUserTypeRightsCheck', 'main', 'CUser', 'UserTypeRightsCheck'); RegisterModuleDependences('main', 'OnUserLogin', 'main', 'UpdateTools', 'CheckUpdates'); RegisterModuleDependences('main', 'OnModuleUpdate', 'main', 'UpdateTools', 'SetUpdateResult'); RegisterModuleDependences('main', 'OnUpdateCheck', 'main', 'UpdateTools', 'SetUpdateError'); RegisterModuleDependences('main', 'OnPanelCreate', 'main', 'CUndo', 'CheckNotifyMessage'); RegisterModuleDependences('main', 'OnAfterAddRating', 'main', 'CRatingsComponentsMain', 'OnAfterAddRating'); RegisterModuleDependences('main', 'OnAfterUpdateRating', 'main', 'CRatingsComponentsMain', 'OnAfterUpdateRating'); RegisterModuleDependences('main', 'OnSetRatingsConfigs', 'main', 'CRatingsComponentsMain', 'OnSetRatingConfigs'); RegisterModuleDependences('main', 'OnGetRatingsConfigs', 'main', 'CRatingsComponentsMain', 'OnGetRatingConfigs'); RegisterModuleDependences('main', 'OnGetRatingsObjects', 'main', 'CRatingsComponentsMain', 'OnGetRatingObject'); RegisterModuleDependences('main', 'OnGetRatingContentOwner', 'main', 'CRatingsComponentsMain', 'OnGetRatingContentOwner'); RegisterModuleDependences('main', 'OnAfterAddRatingRule', 'main', 'CRatingRulesMain', 'OnAfterAddRatingRule'); RegisterModuleDependences('main', 'OnAfterUpdateRatingRule', 'main', 'CRatingRulesMain', 'OnAfterUpdateRatingRule'); RegisterModuleDependences('main', 'OnGetRatingRuleObjects', 'main', 'CRatingRulesMain', 'OnGetRatingRuleObjects'); RegisterModuleDependences('main', 'OnGetRatingRuleConfigs', 'main', 'CRatingRulesMain', 'OnGetRatingRuleConfigs'); RegisterModuleDependences('main', 'OnAfterUserAdd', 'main', 'CRatings', 'OnAfterUserRegister'); RegisterModuleDependences('main', 'OnUserDelete', 'main', 'CRatings', 'OnUserDelete'); RegisterModuleDependences("main", "OnEventLogGetAuditTypes", "main", "CEventMain", "GetAuditTypes"); RegisterModuleDependences("main", "OnEventLogGetAuditHandlers", "main", "CEventMain", "MakeMainObject"); RegisterModuleDependences("perfmon", "OnGetTableSchema", "main", "CTableSchema", "OnGetTableSchema"); RegisterModuleDependences("sender", "OnConnectorList", "main", "\\Bitrix\\Main\\SenderEventHandler", "onConnectorListUser"); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeString", "GetUserTypeDescription", 110); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeInteger", "GetUserTypeDescription", 120); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeDouble", "GetUserTypeDescription", 130); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeDateTime", "GetUserTypeDescription", 140); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeDate", "GetUserTypeDescription", 145); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeBoolean", "GetUserTypeDescription", 150); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeUrl", "GetUserTypeDescription", 155); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeFile", "GetUserTypeDescription", 160); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeEnum", "GetUserTypeDescription", 170); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeIBlockSection", "GetUserTypeDescription", 180); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeIBlockElement", "GetUserTypeDescription", 190); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeStringFormatted", "GetUserTypeDescription", 200); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "\\Bitrix\\Main\\UrlPreview\\UrlPreviewUserType", "getUserTypeDescription", 210); RegisterModuleDependences("main", "OnFileDelete", "main", "\\Bitrix\\Main\\UI\\Viewer\\FilePreviewTable", "onFileDelete"); RegisterModuleDependences("socialnetwork", "OnSocNetLogDelete", "main", "CUserCounter", "OnSocNetLogDelete"); RegisterModuleDependences("socialnetwork", "OnSocNetLogCommentDelete", "main", "CUserCounter", "OnSocNetLogCommentDelete"); RegisterModuleDependences("main", "OnAdminInformerInsertItems", "main", "CMpNotifications", "OnAdminInformerInsertItemsHandlerMP"); RegisterModuleDependences("rest", "OnRestServiceBuildDescription", "main", '\Bitrix\Main\Rest\Handlers', "onRestServiceBuildDescription"); RegisterModuleDependences("main", "OnBeforeUserTypeAdd", "main", '\Bitrix\Main\UserField\Internal\UserFieldHelper', "OnBeforeUserTypeAdd"); RegisterModuleDependences("main", "OnAfterUserTypeAdd", "main", '\Bitrix\Main\UserField\Internal\UserFieldHelper', "onAfterUserTypeAdd"); RegisterModuleDependences("main", "OnBeforeUserTypeDelete", "main", '\Bitrix\Main\UserField\Internal\UserFieldHelper', "OnBeforeUserTypeDelete"); RegisterModuleDependences("main", "OnAfterUserTypeDelete", "main", '\Bitrix\Main\UserField\Internal\UserFieldHelper', "OnAfterUserTypeDelete"); RegisterModuleDependences("main", "OnAuthProvidersBuildList", "main", "\\Bitrix\\Main\\Access\\Auth\\AccessAuthProvider", "getProviders"); RegisterModuleDependences("iblock", "OnBeforeIBlockSectionUpdate", "main", "\\Bitrix\\Main\\Access\\Auth\\AccessEventHandler", "onBeforeIBlockSectionUpdate"); RegisterModuleDependences("iblock", "OnBeforeIBlockSectionAdd", "main", "\\Bitrix\\Main\\Access\\Auth\\AccessEventHandler", "onBeforeIBlockSectionAdd"); RegisterModuleDependences("iblock", "OnBeforeIBlockSectionDelete", "main", "\\Bitrix\\Main\\Access\\Auth\\AccessEventHandler", "onBeforeIBlockSectionDelete"); $eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->registerEventHandler("humanresources", "OnMemberUpdated", "main", "\\Bitrix\\Main\\Access\\Auth\\HrAccessEventHandler", "onMemberUpdated"); $eventManager->registerEventHandler("humanresources", "OnMemberDeleted", "main", "\\Bitrix\\Main\\Access\\Auth\\HrAccessEventHandler", "onMemberDeleted"); $eventManager->registerEventHandler("humanresources", "OnMemberAdded", "main", "\\Bitrix\\Main\\Access\\Auth\\HrAccessEventHandler", "onMemberAdded"); $eventManager->registerEventHandler("sale", "OnSaleBasketItemSaved", "main", "\\Bitrix\\Main\\Analytics\\Catalog", "catchCatalogBasket"); $eventManager->registerEventHandler("sale", "OnSaleOrderSaved", "main", "\\Bitrix\\Main\\Analytics\\Catalog", "catchCatalogOrder"); $eventManager->registerEventHandler("sale", "OnSaleOrderPaid", "main", "\\Bitrix\\Main\\Analytics\\Catalog", "catchCatalogOrderPayment"); $eventManager->registerEventHandlerCompatible("sale", "onBuildDiscountConditionInterfaceControls", "main", "\\Bitrix\\Main\\Discount\\UserConditionControl", "onBuildDiscountConditionInterfaceControls", 1000); $eventManager->registerEventHandler('main', 'OnBeforePhpMail', 'main', '\Bitrix\Main\Mail\Sender', 'applyCustomSmtp'); $eventManager->registerEventHandler('main', 'OnBuildFilterFactoryMethods', 'main', '\Bitrix\Main\Filter\FactoryMain', 'onBuildFilterFactoryMethods'); $eventManager->registerEventHandler('main', 'onGetUserFieldValues', 'main', '\Bitrix\Main\UserField\Internal\UserFieldHelper', 'onGetUserFieldValues'); $eventManager->registerEventHandler('main', 'onUpdateUserFieldValues', 'main', '\Bitrix\Main\UserField\Internal\UserFieldHelper', 'onUpdateUserFieldValues'); $eventManager->registerEventHandler('main', 'onDeleteUserFieldValues', 'main', '\Bitrix\Main\UserField\Internal\UserFieldHelper', 'onDeleteUserFieldValues'); $eventManager->registerEventHandler('main', 'OnAfterUserTypeAdd', 'main', '\Bitrix\Main\ORM\Entity', 'onUserTypeChange'); $eventManager->registerEventHandler('main', 'OnAfterUserTypeUpdate', 'main', '\Bitrix\Main\ORM\Entity', 'onUserTypeChange'); $eventManager->registerEventHandler('main', 'OnAfterUserTypeDelete', 'main', '\Bitrix\Main\ORM\Entity', 'onUserTypeChange'); if (LANGUAGE_ID == "ru") { COption::SetOptionString("main", "~new_license18_0_sign", "Y"); COption::SetOptionString("main", "vendor", "1c_bitrix"); COption::SetOptionString("main", "update_site", "www.1c-bitrix.ru"); } else { COption::SetOptionString("main", "~new_license17_5_sign", "Y"); COption::SetOptionString("main", "vendor", "bitrix"); COption::SetOptionString("main", "update_site", "www.bitrixsoft.com"); } COption::SetOptionString("main", "PARAM_MAX_SITES", "2"); COption::SetOptionString("main", "PARAM_MAX_USERS", "0"); COption::SetOptionString("main", "GROUP_DEFAULT_TASK", "1"); COption::SetOptionString("main", "admin_lid", LANGUAGE_ID); COption::SetOptionString("main", "update_site_ns", "Y"); COption::SetOptionString("main", "update_use_https", "Y"); COption::SetOptionString("main", "optimize_css_files", "Y"); COption::SetOptionString("main", "optimize_js_files", "Y"); COption::SetOptionString("main", "control_file_duplicates", "Y"); COption::SetOptionString("main", "secure_logout", "Y"); $nextDay = time() + 86400; CAgent::AddAgent("CCaptchaAgent::DeleteOldCaptcha(3600);", "main", "N", 3600); if (!file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/bitrix24')) { CAgent::AddAgent("CSiteCheckerTest::CommonTest();", "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 03:00:00', $nextDay)), 'FULL')); } CAgent::AddAgent("CEvent::CleanUpAgent();", "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 03:10:00', $nextDay)), 'FULL')); CAgent::AddAgent("CUser::CleanUpHitAuthAgent();", "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 03:15:00', $nextDay)), 'FULL')); CAgent::AddAgent("CUndo::CleanUpOld();", "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 03:20:00', $nextDay)), 'FULL')); CAgent::AddAgent('CUserCounter::DeleteOld();', "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 03:25:00', $nextDay)), 'FULL')); CAgent::AddAgent('\\Bitrix\\Main\\UI\\Viewer\\FilePreviewTable::deleteOldAgent();', 'main', "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 03:30:00', $nextDay)), 'FULL')); CAgent::AddAgent("CUser::AuthActionsCleanUpAgent();", "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 04:15:00', $nextDay)), 'FULL')); CAgent::AddAgent("CUser::CleanUpAgent();", "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 04:20:00', $nextDay)), 'FULL')); CAgent::AddAgent("CUser::DeactivateAgent();", "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 04:25:00', $nextDay)), 'FULL')); CAgent::AddAgent("CEventLog::CleanUpAgent();", "main", "N", 86400, "", "Y", ConvertTimeStamp(strtotime(date('Y-m-d 04:30:00', $nextDay)), 'FULL')); self::InstallDesktop(); CSmileGallery::installGallery(); /* geolocation handlers */ GeoIp\HandlerTable::add(['SORT' => 100, 'ACTIVE' => 'Y', 'CLASS_NAME' => '\\Bitrix\\Main\\Service\\GeoIp\\GeoIP2']); GeoIp\HandlerTable::add(['SORT' => 110, 'ACTIVE' => 'N', 'CLASS_NAME' => '\\Bitrix\\Main\\Service\\GeoIp\\MaxMind']); GeoIp\HandlerTable::add(['SORT' => 120, 'ACTIVE' => 'N', 'CLASS_NAME' => '\\Bitrix\\Main\\Service\\GeoIp\\SypexGeo']); return true; } protected function InstallGroups() { global $APPLICATION; $group = new CGroup; $arGroups = [ [ "~ID" => 1, "ACTIVE" => "Y", "C_SORT" => 1, "NAME" => GetMessage("MAIN_ADMIN_GROUP_NAME"), "ANONYMOUS" => "N", "DESCRIPTION" => GetMessage("MAIN_ADMIN_GROUP_DESC"), ], [ "~ID" => 2, "ACTIVE" => "Y", "C_SORT" => 2, "NAME" => GetMessage("MAIN_EVERYONE_GROUP_NAME"), "ANONYMOUS" => "Y", "DESCRIPTION" => GetMessage("MAIN_EVERYONE_GROUP_DESC"), ], [ "~ID" => 3, "ACTIVE" => "Y", "C_SORT" => 3, "NAME" => GetMessage("MAIN_VOTE_RATING_GROUP_NAME"), "ANONYMOUS" => "N", "DESCRIPTION" => GetMessage("MAIN_VOTE_RATING_GROUP_DESC"), "STRING_ID" => "RATING_VOTE", ], [ "~ID" => 4, "ACTIVE" => "Y", "C_SORT" => 4, "NAME" => GetMessage("MAIN_VOTE_AUTHORITY_GROUP_NAME"), "ANONYMOUS" => "N", "DESCRIPTION" => GetMessage("MAIN_VOTE_AUTHORITY_GROUP_DESC"), "STRING_ID" => "RATING_VOTE_AUTHORITY", ], ]; foreach ($arGroups as $arGroup) { $rsGroup = CGroup::GetByID($arGroup["~ID"]); if ($rsGroup->Fetch()) { continue; } $success = (bool)$group->Add($arGroup); if (!$success) { $APPLICATION->ThrowException($group->LAST_ERROR); return false; } } return true; } protected function InstallLanguages() { global $APPLICATION; $addResult = CultureTable::add([ "NAME" => LANGUAGE_ID, "CODE" => LANGUAGE_ID, "FORMAT_DATE" => GetMessage("MAIN_DEFAULT_LANGUAGE_FORMAT_DATE"), "FORMAT_DATETIME" => GetMessage("MAIN_DEFAULT_LANGUAGE_FORMAT_DATETIME"), "FORMAT_NAME" => GetMessage("MAIN_DEFAULT_LANGUAGE_FORMAT_NAME"), "WEEK_START" => (LANGUAGE_ID == 'en' ? 0 : 1), "CHARSET" => "UTF-8", "SHORT_DATE_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_SHORT_DATE_FORMAT"), "MEDIUM_DATE_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_MEDIUM_DATE_FORMAT"), "LONG_DATE_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_LONG_DATE_FORMAT"), "FULL_DATE_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_FULL_DATE_FORMAT"), "DAY_MONTH_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_DAY_MONTH_FORMAT"), "DAY_SHORT_MONTH_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_DAY_SHORT_MONTH_FORMAT"), "DAY_OF_WEEK_MONTH_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_DAY_OF_WEEK_MONTH_FORMAT"), "SHORT_DAY_OF_WEEK_MONTH_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_SHORT_DAY_OF_WEEK_MONTH_FORMAT"), "SHORT_DAY_OF_WEEK_SHORT_MONTH_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_SHORT_DAY_OF_WEEK_SHORT_MONTH_FORMAT"), "SHORT_TIME_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_SHORT_TIME_FORMAT"), "LONG_TIME_FORMAT" => GetMessage("MAIN_DEFAULT_LANGUAGE_LONG_TIME_FORMAT"), "AM_VALUE" => GetMessage("MAIN_DEFAULT_LANGUAGE_AM_VALUE"), "PM_VALUE" => GetMessage("MAIN_DEFAULT_LANGUAGE_PM_VALUE"), "NUMBER_THOUSANDS_SEPARATOR" => GetMessage("MAIN_DEFAULT_LANGUAGE_NUMBER_THOUSANDS_SEPARATOR"), "NUMBER_DECIMAL_SEPARATOR" => GetMessage("MAIN_DEFAULT_LANGUAGE_NUMBER_DECIMAL_SEPARATOR"), "NUMBER_DECIMALS" => 2, ]); $cultureId = $addResult->getId(); $arLanguages = [ [ "LID" => LANGUAGE_ID, "CODE" => GetMessage("MAIN_DEFAULT_LANGUAGE_CODE"), "ACTIVE" => "Y", "SORT" => 1, "DEF" => "Y", "NAME" => GetMessage("MAIN_DEFAULT_LANGUAGE_NAME"), "CULTURE_ID" => $cultureId, ], ]; if (LANGUAGE_ID <> "en" && file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/lang/en/install/index.php')) { $addResult = CultureTable::add([ "NAME" => "en", "CODE" => "en", "FORMAT_DATE" => "MM/DD/YYYY", "FORMAT_DATETIME" => "MM/DD/YYYY H:MI:SS T", "FORMAT_NAME" => "#NAME# #LAST_NAME#", "WEEK_START" => 0, "CHARSET" => "UTF-8", "SHORT_DATE_FORMAT" => "n/j/Y", "MEDIUM_DATE_FORMAT" => "M j, Y", "LONG_DATE_FORMAT" => "F j, Y", "FULL_DATE_FORMAT" => "l, F j, Y", "DAY_MONTH_FORMAT" => "F j", "DAY_SHORT_MONTH_FORMAT" => "M j", "DAY_OF_WEEK_MONTH_FORMAT" => "l, F j", "SHORT_DAY_OF_WEEK_MONTH_FORMAT" => "D, F j", "SHORT_DAY_OF_WEEK_SHORT_MONTH_FORMAT" => "D, M j", "SHORT_TIME_FORMAT" => "g:i a", "LONG_TIME_FORMAT" => "g:i:s a", "AM_VALUE" => "am", "PM_VALUE" => "pm", "NUMBER_THOUSANDS_SEPARATOR" => ",", "NUMBER_DECIMAL_SEPARATOR" => ".", "NUMBER_DECIMALS" => "2", ]); $cultureId = $addResult->getId(); $arLanguages[] = [ "LID" => "en", "CODE" => "en", "ACTIVE" => "Y", "SORT" => 2, "DEF" => "N", "NAME" => "English", "CULTURE_ID" => $cultureId, ]; } if (LANGUAGE_ID <> "de" && file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/lang/de/install/index.php')) { $addResult = CultureTable::add([ "NAME" => "de", "CODE" => "de", "FORMAT_DATE" => "DD.MM.YYYY", "FORMAT_DATETIME" => "DD.MM.YYYY HH:MI:SS", "FORMAT_NAME" => "#NAME# #LAST_NAME#", "WEEK_START" => 1, "CHARSET" => "UTF-8", "SHORT_DATE_FORMAT" => "d.m.Y", "MEDIUM_DATE_FORMAT" => "j. M Y", "LONG_DATE_FORMAT" => "j. F Y", "FULL_DATE_FORMAT" => "l, j. F Y", "DAY_MONTH_FORMAT" => "j. F", "DAY_SHORT_MONTH_FORMAT" => "j. M", "DAY_OF_WEEK_MONTH_FORMAT" => "l, j. F", "SHORT_DAY_OF_WEEK_MONTH_FORMAT" => "D, j. F", "SHORT_DAY_OF_WEEK_SHORT_MONTH_FORMAT" => "D, j. M", "SHORT_TIME_FORMAT" => "H:i", "LONG_TIME_FORMAT" => "H:i:s", "AM_VALUE" => "am", "PM_VALUE" => "pm", "NUMBER_THOUSANDS_SEPARATOR" => ".", "NUMBER_DECIMAL_SEPARATOR" => ",", "NUMBER_DECIMALS" => "2", ]); $cultureId = $addResult->getId(); $arLanguages[] = [ "LID" => "de", "CODE" => "de", "ACTIVE" => "Y", "SORT" => 3, "DEF" => "N", "NAME" => "German", "CULTURE_ID" => $cultureId, ]; } if (LANGUAGE_ID <> "ru" && file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/lang/ru/install/index.php')) { $addResult = CultureTable::add([ "NAME" => "ru", "CODE" => "ru", "FORMAT_DATE" => "DD.MM.YYYY", "FORMAT_DATETIME" => "DD.MM.YYYY HH:MI:SS", "FORMAT_NAME" => "#NAME# #LAST_NAME#", "WEEK_START" => 1, "CHARSET" => "UTF-8", "SHORT_DATE_FORMAT" => "d.m.Y", "MEDIUM_DATE_FORMAT" => "j M Y", "LONG_DATE_FORMAT" => "j F Y", "FULL_DATE_FORMAT" => "l, j F Y", "DAY_MONTH_FORMAT" => "j F", "DAY_SHORT_MONTH_FORMAT" => "j M", "DAY_OF_WEEK_MONTH_FORMAT" => "l, j F", "SHORT_DAY_OF_WEEK_MONTH_FORMAT" => "D, j F", "SHORT_DAY_OF_WEEK_SHORT_MONTH_FORMAT" => "D, j M", "SHORT_TIME_FORMAT" => "H:i", "LONG_TIME_FORMAT" => "H:i:s", "AM_VALUE" => "am", "PM_VALUE" => "pm", "NUMBER_THOUSANDS_SEPARATOR" => " ", "NUMBER_DECIMAL_SEPARATOR" => ",", "NUMBER_DECIMALS" => "2", ]); $cultureId = $addResult->getId(); $arLanguages[] = [ "LID" => "ru", "CODE" => "ru", "ACTIVE" => "Y", "SORT" => 3, "DEF" => "N", "NAME" => "Russian", "CULTURE_ID" => $cultureId, ]; } $lang = new CLanguage; foreach ($arLanguages as $arLanguage) { $rsLang = CLanguage::GetByID($arLanguage["LID"]); if ($rsLang->Fetch()) { continue; } $success = (bool)$lang->Add($arLanguage); if (!$success) { $APPLICATION->ThrowException($lang->LAST_ERROR); return false; } } return true; } protected function InstallSites() { global $APPLICATION; $culture = CultureTable::getRow(['filter' => [ "=FORMAT_DATE" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_DATE"), "=FORMAT_DATETIME" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_DATETIME"), "=FORMAT_NAME" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_NAME"), "=CHARSET" => "UTF-8", ]]); if ($culture) { $cultureId = $culture["ID"]; } else { $addResult = CultureTable::add([ "NAME" => "s1", "CODE" => "s1", "FORMAT_DATE" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_DATE"), "FORMAT_DATETIME" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_DATETIME"), "FORMAT_NAME" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_NAME"), "CHARSET" => "UTF-8", ]); $cultureId = $addResult->getId(); } $arSite = [ "LID" => "s1", "ACTIVE" => "Y", "SORT" => 1, "DEF" => "Y", "NAME" => GetMessage("MAIN_DEFAULT_SITE_NAME"), "DIR" => "/", "LANGUAGE_ID" => LANGUAGE_ID, "CULTURE_ID" => $cultureId, ]; $rsSites = CSite::GetByID($arSite["LID"]); if (!$rsSites->Fetch()) { $site = new CSite; $success = (bool)$site->Add($arSite); if (!$success) { $APPLICATION->ThrowException($site->LAST_ERROR); return false; } } return true; } function GetModuleTasks() { return [ '' => [ "OPERATIONS" => [ "edit_php", ], ], 'main_denied' => [ "LETTER" => "D", "BINDING" => "module", "OPERATIONS" => [ ], ], 'main_change_profile' => [ "LETTER" => "P", "BINDING" => "module", "OPERATIONS" => [ "view_own_profile", "edit_own_profile", ], ], 'main_view_all_settings' => [ "LETTER" => "R", "BINDING" => "module", "OPERATIONS" => [ "view_own_profile", "view_all_users", "view_groups", "view_tasks", "view_other_settings", ], ], 'main_view_all_settings_change_profile' => [ "LETTER" => "T", "BINDING" => "module", "OPERATIONS" => [ "view_own_profile", "view_all_users", "view_groups", "view_tasks", "view_other_settings", "edit_own_profile", ], ], 'main_edit_subordinate_users' => [ "LETTER" => "V", "BINDING" => "module", "OPERATIONS" => [ "view_own_profile", "view_subordinate_users", "view_groups", "view_tasks", "view_other_settings", "edit_own_profile", "edit_subordinate_users", ], ], 'main_full_access' => [ "LETTER" => "W", "BINDING" => "module", "OPERATIONS" => [ "view_own_profile", "view_all_users", "view_groups", "view_tasks", "view_other_settings", "edit_own_profile", "edit_all_users", "edit_groups", "edit_tasks", "edit_other_settings", "cache_control", "lpa_template_edit", "view_event_log", "edit_ratings", "manage_short_uri", ], ], 'fm_folder_access_denied' => [ "LETTER" => "D", "BINDING" => "file", "OPERATIONS" => [ ], ], 'fm_folder_access_read' => [ "LETTER" => "R", "BINDING" => "file", "OPERATIONS" => [ "fm_view_permission", "fm_view_file", "fm_view_listing", ], ], 'fm_folder_access_write' => [ "LETTER" => "W", "BINDING" => "file", "OPERATIONS" => [ "fm_view_permission", "fm_edit_existent_folder", "fm_create_new_file", "fm_edit_existent_file", "fm_create_new_folder", "fm_delete_file", "fm_delete_folder", "fm_view_file", "fm_view_listing", "fm_edit_in_workflow", "fm_rename_file", "fm_rename_folder", "fm_upload_file", "fm_add_to_menu", "fm_download_file", "fm_lpa", ], ], 'fm_folder_access_full' => [ "LETTER" => "X", "BINDING" => "file", "OPERATIONS" => [ "fm_view_permission", "fm_edit_permission", "fm_edit_existent_folder", "fm_create_new_file", "fm_edit_existent_file", "fm_create_new_folder", "fm_delete_file", "fm_delete_folder", "fm_view_file", "fm_view_listing", "fm_edit_in_workflow", "fm_rename_file", "fm_rename_folder", "fm_upload_file", "fm_add_to_menu", "fm_download_file", "fm_lpa", ], ], 'fm_folder_access_workflow' => [ "LETTER" => "U", "BINDING" => "file", "OPERATIONS" => [ "fm_view_permission", "fm_edit_existent_file", "fm_view_file", "fm_view_listing", "fm_edit_in_workflow", ], ], ]; } private static function InstallRatings() { global $DB; // add ratings $arFields = [ 'ACTIVE' => 'N', 'NAME' => GetMessage("MAIN_RATING_NAME"), 'ENTITY_ID' => 'USER', 'CALCULATION_METHOD' => 'SUM', '~CREATED' => $DB->GetNowFunction(), 'CALCULATED' => 'N', 'POSITION' => 'Y', 'AUTHORITY' => 'N', 'CONFIGS' => 'a:3:{s:4:"MAIN";a:2:{s:4:"VOTE";a:1:{s:4:"USER";a:2:{s:11:"COEFFICIENT";s:1:"1";s:5:"LIMIT";s:2:"30";}}s:6:"RATING";a:1:{s:5:"BONUS";a:2:{s:6:"ACTIVE";s:1:"Y";s:11:"COEFFICIENT";s:1:"1";}}}s:5:"FORUM";a:2:{s:4:"VOTE";a:2:{s:5:"TOPIC";a:3:{s:6:"ACTIVE";s:1:"Y";s:11:"COEFFICIENT";s:3:"0.5";s:5:"LIMIT";s:2:"30";}s:4:"POST";a:3:{s:6:"ACTIVE";s:1:"Y";s:11:"COEFFICIENT";s:3:"0.1";s:5:"LIMIT";s:2:"30";}}s:6:"RATING";a:1:{s:8:"ACTIVITY";a:9:{s:6:"ACTIVE";s:1:"Y";s:16:"TODAY_TOPIC_COEF";s:3:"0.4";s:15:"WEEK_TOPIC_COEF";s:3:"0.2";s:16:"MONTH_TOPIC_COEF";s:3:"0.1";s:14:"ALL_TOPIC_COEF";s:1:"0";s:15:"TODAY_POST_COEF";s:3:"0.2";s:14:"WEEK_POST_COEF";s:3:"0.1";s:15:"MONTH_POST_COEF";s:4:"0.05";s:13:"ALL_POST_COEF";s:1:"0";}}}s:4:"BLOG";a:2:{s:4:"VOTE";a:2:{s:4:"POST";a:3:{s:6:"ACTIVE";s:1:"Y";s:11:"COEFFICIENT";s:3:"0.5";s:5:"LIMIT";s:2:"30";}s:7:"COMMENT";a:3:{s:6:"ACTIVE";s:1:"Y";s:11:"COEFFICIENT";s:3:"0.1";s:5:"LIMIT";s:2:"30";}}s:6:"RATING";a:1:{s:8:"ACTIVITY";a:9:{s:6:"ACTIVE";s:1:"Y";s:15:"TODAY_POST_COEF";s:3:"0.4";s:14:"WEEK_POST_COEF";s:3:"0.2";s:15:"MONTH_POST_COEF";s:3:"0.1";s:13:"ALL_POST_COEF";s:1:"0";s:18:"TODAY_COMMENT_COEF";s:3:"0.2";s:17:"WEEK_COMMENT_COEF";s:3:"0.1";s:18:"MONTH_COMMENT_COEF";s:4:"0.05";s:16:"ALL_COMMENT_COEF";s:1:"0";}}}}', ]; $DB->Add("b_rating", $arFields, ["CONFIGS"]); // add authority ratings $arFields = [ 'ACTIVE' => 'N', 'NAME' => GetMessage("MAIN_RATING_AUTHORITY_NAME"), 'ENTITY_ID' => 'USER', 'CALCULATION_METHOD' => 'SUM', '~CREATED' => $DB->GetNowFunction(), 'CALCULATED' => 'N', 'POSITION' => 'Y', 'AUTHORITY' => 'Y', 'CONFIGS' => 'a:3:{s:4:"MAIN";a:2:{s:4:"VOTE";a:1:{s:4:"USER";a:3:{s:6:"ACTIVE";s:1:"Y";s:11:"COEFFICIENT";s:1:"1";s:5:"LIMIT";s:1:"0";}}s:6:"RATING";a:1:{s:5:"BONUS";a:2:{s:6:"ACTIVE";s:1:"Y";s:11:"COEFFICIENT";s:1:"1";}}}s:5:"FORUM";a:2:{s:4:"VOTE";a:2:{s:5:"TOPIC";a:2:{s:11:"COEFFICIENT";s:1:"1";s:5:"LIMIT";s:2:"30";}s:4:"POST";a:2:{s:11:"COEFFICIENT";s:1:"1";s:5:"LIMIT";s:2:"30";}}s:6:"RATING";a:1:{s:8:"ACTIVITY";a:8:{s:16:"TODAY_TOPIC_COEF";s:2:"20";s:15:"WEEK_TOPIC_COEF";s:2:"10";s:16:"MONTH_TOPIC_COEF";s:1:"5";s:14:"ALL_TOPIC_COEF";s:1:"0";s:15:"TODAY_POST_COEF";s:3:"0.4";s:14:"WEEK_POST_COEF";s:3:"0.2";s:15:"MONTH_POST_COEF";s:3:"0.1";s:13:"ALL_POST_COEF";s:1:"0";}}}s:4:"BLOG";a:2:{s:4:"VOTE";a:2:{s:4:"POST";a:2:{s:11:"COEFFICIENT";s:1:"1";s:5:"LIMIT";s:2:"30";}s:7:"COMMENT";a:2:{s:11:"COEFFICIENT";s:1:"1";s:5:"LIMIT";s:2:"30";}}s:6:"RATING";a:1:{s:8:"ACTIVITY";a:8:{s:15:"TODAY_POST_COEF";s:3:"0.4";s:14:"WEEK_POST_COEF";s:3:"0.2";s:15:"MONTH_POST_COEF";s:3:"0.1";s:13:"ALL_POST_COEF";s:1:"0";s:18:"TODAY_COMMENT_COEF";s:3:"0.2";s:17:"WEEK_COMMENT_COEF";s:3:"0.1";s:18:"MONTH_COMMENT_COEF";s:4:"0.05";s:16:"ALL_COMMENT_COEF";s:1:"0";}}}}', ]; $ratingId = $DB->Add("b_rating", $arFields, ["CONFIGS"]); COption::SetOptionString("main", "rating_authority_rating", $ratingId); // set default rating vote group config $groupId = CGroup::GetIDByCode('RATING_VOTE'); if ($groupId) { $arVoteGroup[] = [ 'GROUP_ID' => 1, 'TYPE' => "'R'", ]; $arVoteGroup[] = [ 'GROUP_ID' => $groupId, 'TYPE' => "'R'", ]; foreach ($arVoteGroup as $arField) { $DB->Insert("b_rating_vote_group", $arField); } $arFields = [ 'ACTIVE' => 'N', 'NAME' => GetMessage("MAIN_RULE_ADD_GROUP_RATING_NAME"), 'ENTITY_TYPE_ID' => 'USER', 'CONDITION_NAME' => 'AUTHORITY', 'CONDITION_CLASS' => 'CRatingRulesMain', 'CONDITION_METHOD' => 'ratingCheck', 'CONDITION_CONFIG' => [ 'AUTHORITY' => [ 'RATING_CONDITION' => 1, 'RATING_VALUE' => 1, ], ], 'ACTION_NAME' => 'ADD_TO_GROUP', 'ACTION_CONFIG' => [ 'ADD_TO_GROUP' => [ 'GROUP_ID' => $groupId, ], ], 'ACTIVATE' => 'N', 'ACTIVATE_CLASS' => 'CRatingRulesMain', 'ACTIVATE_METHOD' => 'addToGroup', 'DEACTIVATE' => 'N', 'DEACTIVATE_CLASS' => 'CRatingRulesMain ', 'DEACTIVATE_METHOD' => 'addToGroup', "~CREATED" => $DB->GetNowFunction(), "~LAST_MODIFIED" => $DB->GetNowFunction(), ]; $arFields['CONDITION_CONFIG'] = serialize($arFields['CONDITION_CONFIG']); $arFields['ACTION_CONFIG'] = serialize($arFields['ACTION_CONFIG']); $DB->Add("b_rating_rule", $arFields, ["ACTION_CONFIG", "CONDITION_CONFIG"]); $arFields = [ 'ACTIVE' => 'N', 'NAME' => GetMessage("MAIN_RULE_REM_GROUP_RATING_NAME"), 'ENTITY_TYPE_ID' => 'USER', 'CONDITION_NAME' => 'AUTHORITY', 'CONDITION_CLASS' => 'CRatingRulesMain', 'CONDITION_METHOD' => 'ratingCheck', 'CONDITION_CONFIG' => [ 'AUTHORITY' => [ 'RATING_CONDITION' => 2, 'RATING_VALUE' => 1, ], ], 'ACTION_NAME' => 'REMOVE_FROM_GROUP', 'ACTION_CONFIG' => [ 'REMOVE_FROM_GROUP' => [ 'GROUP_ID' => $groupId, ], ], 'ACTIVATE' => 'N', 'ACTIVATE_CLASS' => 'CRatingRulesMain', 'ACTIVATE_METHOD' => 'removeFromGroup', 'DEACTIVATE' => 'N', 'DEACTIVATE_CLASS' => 'CRatingRulesMain ', 'DEACTIVATE_METHOD' => 'removeFromGroup', "~CREATED" => $DB->GetNowFunction(), "~LAST_MODIFIED" => $DB->GetNowFunction(), ]; $arFields['CONDITION_CONFIG'] = serialize($arFields['CONDITION_CONFIG']); $arFields['ACTION_CONFIG'] = serialize($arFields['ACTION_CONFIG']); $DB->Add("b_rating_rule", $arFields, ["ACTION_CONFIG", "CONDITION_CONFIG"]); COption::SetOptionString("main", "rating_assign_rating_group_add", 1); COption::SetOptionString("main", "rating_assign_rating_group_delete", 1); COption::SetOptionString("main", "rating_assign_rating_group", $groupId); } $groupId = CGroup::GetIDByCode('RATING_VOTE_AUTHORITY'); if ($groupId) { $arVoteGroup[] = [ 'GROUP_ID' => 1, 'TYPE' => "'A'", ]; $arVoteGroup[] = [ 'GROUP_ID' => $groupId, 'TYPE' => "'A'", ]; foreach ($arVoteGroup as $arField) { $DB->Insert("b_rating_vote_group", $arField); } $arFields = [ 'ACTIVE' => 'N', 'NAME' => GetMessage("MAIN_RULE_ADD_GROUP_AUTHORITY_NAME"), 'ENTITY_TYPE_ID' => 'USER', 'CONDITION_NAME' => 'AUTHORITY', 'CONDITION_CLASS' => 'CRatingRulesMain', 'CONDITION_METHOD' => 'ratingCheck', 'CONDITION_CONFIG' => [ 'AUTHORITY' => [ 'RATING_CONDITION' => 1, 'RATING_VALUE' => 2, ], ], 'ACTION_NAME' => 'ADD_TO_GROUP', 'ACTION_CONFIG' => [ 'ADD_TO_GROUP' => [ 'GROUP_ID' => $groupId, ], ], 'ACTIVATE' => 'N', 'ACTIVATE_CLASS' => 'CRatingRulesMain', 'ACTIVATE_METHOD' => 'addToGroup', 'DEACTIVATE' => 'N', 'DEACTIVATE_CLASS' => 'CRatingRulesMain ', 'DEACTIVATE_METHOD' => 'addToGroup', "~CREATED" => $DB->GetNowFunction(), "~LAST_MODIFIED" => $DB->GetNowFunction(), ]; $arFields['CONDITION_CONFIG'] = serialize($arFields['CONDITION_CONFIG']); $arFields['ACTION_CONFIG'] = serialize($arFields['ACTION_CONFIG']); $DB->Add("b_rating_rule", $arFields, ["ACTION_CONFIG", "CONDITION_CONFIG"]); $arFields = [ 'ACTIVE' => 'N', 'NAME' => GetMessage("MAIN_RULE_REM_GROUP_AUTHORITY_NAME"), 'ENTITY_TYPE_ID' => 'USER', 'CONDITION_NAME' => 'AUTHORITY', 'CONDITION_CLASS' => 'CRatingRulesMain', 'CONDITION_METHOD' => 'ratingCheck', 'CONDITION_CONFIG' => [ 'AUTHORITY' => [ 'RATING_CONDITION' => 2, 'RATING_VALUE' => 2, ], ], 'ACTION_NAME' => 'REMOVE_FROM_GROUP', 'ACTION_CONFIG' => [ 'REMOVE_FROM_GROUP' => [ 'GROUP_ID' => $groupId, ], ], 'ACTIVATE' => 'N', 'ACTIVATE_CLASS' => 'CRatingRulesMain', 'ACTIVATE_METHOD' => 'removeFromGroup', 'DEACTIVATE' => 'N', 'DEACTIVATE_CLASS' => 'CRatingRulesMain ', 'DEACTIVATE_METHOD' => 'removeFromGroup', "~CREATED" => $DB->GetNowFunction(), "~LAST_MODIFIED" => $DB->GetNowFunction(), ]; $arFields['CONDITION_CONFIG'] = serialize($arFields['CONDITION_CONFIG']); $arFields['ACTION_CONFIG'] = serialize($arFields['ACTION_CONFIG']); $DB->Add("b_rating_rule", $arFields, ["ACTION_CONFIG", "CONDITION_CONFIG"]); COption::SetOptionString("main", "rating_assign_authority_group_add", 2); COption::SetOptionString("main", "rating_assign_authority_group_delete", 2); COption::SetOptionString("main", "rating_assign_authority_group", $groupId); } // auto authority vote $arFields = [ 'ACTIVE' => 'Y', 'NAME' => GetMessage("MAIN_RULE_AUTO_AUTHORITY_VOTE_NAME"), 'ENTITY_TYPE_ID' => 'USER', 'CONDITION_NAME' => 'VOTE', 'CONDITION_CLASS' => 'CRatingRulesMain', 'CONDITION_METHOD' => 'voteCheck', 'CONDITION_CONFIG' => [ 'VOTE' => [ 'VOTE_LIMIT' => 90, 'VOTE_RESULT' => 10, 'VOTE_FORUM_TOPIC' => 0.5, 'VOTE_FORUM_POST' => 0.1, 'VOTE_BLOG_POST' => 0.5, 'VOTE_BLOG_COMMENT' => 0.1, ], ], 'ACTION_NAME' => 'empty', 'ACTION_CONFIG' => [ ], 'ACTIVATE' => 'N', 'ACTIVATE_CLASS' => 'empty', 'ACTIVATE_METHOD' => 'empty', 'DEACTIVATE' => 'N', 'DEACTIVATE_CLASS' => 'empty ', 'DEACTIVATE_METHOD' => 'empty', "~CREATED" => $DB->GetNowFunction(), "~LAST_MODIFIED" => $DB->GetNowFunction(), ]; $arFields['CONDITION_CONFIG'] = serialize($arFields['CONDITION_CONFIG']); $arFields['ACTION_CONFIG'] = serialize($arFields['ACTION_CONFIG']); $DB->Add("b_rating_rule", $arFields, ["ACTION_CONFIG", "CONDITION_CONFIG"]); // rating default config COption::SetOptionString("main", "rating_community_size", 1); COption::SetOptionString("main", "rating_community_authority", round(3 * 10, 4)); COption::SetOptionString("main", "rating_vote_weight", 10); COption::SetOptionString("main", "rating_normalization_type", "auto"); COption::SetOptionString("main", "rating_normalization", 10); COption::SetOptionString("main", "rating_count_vote", 10); COption::SetOptionString("main", "rating_authority_weight_formula", 'Y'); COption::SetOptionString("main", "rating_community_last_visit", 90); COption::SetOptionString("main", "rating_text_like_y", GetMessage("MAIN_RATING_TEXT_LIKE_Y")); COption::SetOptionString("main", "rating_text_like_n", GetMessage("MAIN_RATING_TEXT_LIKE_N")); COption::SetOptionString("main", "rating_text_like_d", GetMessage("MAIN_RATING_TEXT_LIKE_D")); COption::SetOptionString("main", "rating_assign_type", 'auto'); COption::SetOptionString("main", "rating_vote_type", 'like'); COption::SetOptionString("main", "rating_self_vote", 'Y'); COption::SetOptionString("main", "rating_vote_show", 'Y'); COption::SetOptionString("main", "rating_vote_template", 'like'); COption::SetOptionString("main", "rating_start_authority", 3); } private static function InstallDesktop() { $info_table = ''; $info_table .= ''; $info_table .= ' '; $info_table .= ' '; $info_table .= ' '; $info_table .= ''; $info_table .= ''; $info_table .= ' '; $info_table .= ' '; $info_table .= ''; $info_table .= ''; $info_table .= ' '; $info_table .= ' '; $info_table .= ''; $info_table .= ''; $info_table .= ' '; $info_table .= ' '; $info_table .= ''; $info_table .= ''; $info_table .= ' '; $info_table .= ' '; $info_table .= ''; $info_table .= '
' . GetMessage("MAIN_DESKTOP_CREATEDBY_KEY") . ':' . GetMessage("MAIN_DESKTOP_CREATEDBY_VALUE") . '
' . GetMessage("MAIN_DESKTOP_URL_KEY") . ':' . GetMessage("MAIN_DESKTOP_URL_VALUE") . '
' . GetMessage("MAIN_DESKTOP_PRODUCTION_KEY") . ':' . GetMessage("MAIN_DESKTOP_PRODUCTION_VALUE") . '
' . GetMessage("MAIN_DESKTOP_RESPONSIBLE_KEY") . ':' . GetMessage("MAIN_DESKTOP_RESPONSIBLE_VALUE") . '
' . GetMessage("MAIN_DESKTOP_EMAIL_KEY") . ':' . GetMessage("MAIN_DESKTOP_EMAIL_VALUE") . '
'; switch (LANGUAGE_ID) { case "ru": $rss_url = "https://www.1c-bitrix.ru/about/life/news/rss/"; break; case "de": $rss_url = "https://www.bitrix.de/company/news/rss/"; break; default: $rss_url = "https://www.bitrixsoft.com/company/news/rss/"; } if ( // 111 file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/statistic/install/index.php") && !file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/intranet/install/index.php") ) { if (file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/install/index.php")) { $arOptions = [ [ "GADGETS" => [ "ADMIN_ORDERS_GRAPH@111111111" => [ "COLUMN" => 0, "ROW" => 0, "HIDE" => "N", ], "ADMIN_ORDERS@111111111" => [ "COLUMN" => 0, "ROW" => 1, "HIDE" => "N", ], "ADMIN_STAT@222222222" => [ "COLUMN" => 0, "ROW" => 3, "HIDE" => "N", ], "HTML_AREA@444444444" => [ "COLUMN" => 1, "ROW" => 0, "HIDE" => "N", "USERDATA" => [ "content" => $info_table, ], "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_INFO_TITLE"), ], ], "ADMIN_SECURITY@555555555" => [ "COLUMN" => 1, "ROW" => 1, "HIDE" => "N", ], "ADMIN_SITESPEED@666666777" => [ "COLUMN" => 1, "ROW" => 2, "HIDE" => "N", ], "ADMIN_PERFMON@666666666" => [ "COLUMN" => 1, "ROW" => 3, "HIDE" => "N", ], "ADMIN_PRODUCTS@111111111" => [ "COLUMN" => 1, "ROW" => 65, "HIDE" => "N", ], "ADMIN_INFO@333333333" => [ "COLUMN" => 1, "ROW" => 7, "HIDE" => "N", ], "ADMIN_CHECKLIST@777888999" => [ "COLUMN" => 1, "ROW" => 8, "HIDE" => "N", ], "RSSREADER@777777777" => [ "COLUMN" => 1, "ROW" => 9, "HIDE" => "N", "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_RSS_TITLE"), "CNT" => 10, "RSS_URL" => $rss_url, ], ], ], ], ]; if (LANGUAGE_ID == "ru") { $arOptions[0]["GADGETS"]["ADMIN_MARKETPALCE@22549"] = [ "COLUMN" => 1, "ROW" => 4, "HIDE" => "N", ]; $arOptions[0]["GADGETS"]["ADMIN_MOBILESHOP@13391"] = [ "COLUMN" => 1, "ROW" => 5, "HIDE" => "N", ]; } } else { $arOptions = [ [ "GADGETS" => [ "ADMIN_STAT@222222222" => [ "COLUMN" => 0, "ROW" => 0, "HIDE" => "N", ], "ADMIN_INFO@333333333" => [ "COLUMN" => 0, "ROW" => 1, "HIDE" => "N", ], "ADMIN_CHECKLIST@777888999" => [ "COLUMN" => 0, "ROW" => 2, "HIDE" => "N", ], "RSSREADER@777777777" => [ "COLUMN" => 0, "ROW" => 3, "HIDE" => "N", "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_RSS_TITLE"), "CNT" => 10, "RSS_URL" => $rss_url, ], ], "HTML_AREA@444444444" => [ "COLUMN" => 1, "ROW" => 0, "HIDE" => "N", "USERDATA" => [ "content" => $info_table, ], "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_INFO_TITLE"), ], ], "ADMIN_SECURITY@555555555" => [ "COLUMN" => 1, "ROW" => 1, "HIDE" => "N", ], "ADMIN_SITESPEED@666666777" => [ "COLUMN" => 1, "ROW" => 2, "HIDE" => "N", ], "ADMIN_PERFMON@666666666" => [ "COLUMN" => 1, "ROW" => 3, "HIDE" => "N", ], ], ], ]; if (LANGUAGE_ID == "ru") { $arOptions[0]["GADGETS"]["ADMIN_MARKETPALCE@22549"] = [ "COLUMN" => 1, "ROW" => 4, "HIDE" => "N", ]; } } } elseif (!file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/intranet/install/index.php")) // 222 { if (file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/install/index.php")) { $arOptions = [ [ "GADGETS" => [ "ADMIN_ORDERS_GRAPH@111111111" => [ "COLUMN" => 0, "ROW" => 0, "HIDE" => "N", ], "ADMIN_ORDERS@111111111" => [ "COLUMN" => 0, "ROW" => 1, "HIDE" => "N", ], "HTML_AREA@444444444" => [ "COLUMN" => 1, "ROW" => 0, "HIDE" => "N", "USERDATA" => [ "content" => $info_table, ], "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_INFO_TITLE"), ], ], "ADMIN_SECURITY@555555555" => [ "COLUMN" => 1, "ROW" => 1, "HIDE" => "N", ], "ADMIN_SITESPEED@666666777" => [ "COLUMN" => 1, "ROW" => 2, "HIDE" => "N", ], "ADMIN_PERFMON@666666666" => [ "COLUMN" => 1, "ROW" => 3, "HIDE" => "N", ], "ADMIN_PRODUCTS@111111111" => [ "COLUMN" => 1, "ROW" => 6, "HIDE" => "N", ], "ADMIN_INFO@333333333" => [ "COLUMN" => 1, "ROW" => 7, "HIDE" => "N", ], "ADMIN_CHECKLIST@777888999" => [ "COLUMN" => 1, "ROW" => 8, "HIDE" => "N", ], "RSSREADER@777777777" => [ "COLUMN" => 1, "ROW" => 9, "HIDE" => "N", "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_RSS_TITLE"), "CNT" => 10, "RSS_URL" => $rss_url, ], ], ], ], ]; if (LANGUAGE_ID == "ru") { $arOptions[0]["GADGETS"]["ADMIN_MARKETPALCE@22549"] = [ "COLUMN" => 1, "ROW" => 4, "HIDE" => "N", ]; $arOptions[0]["GADGETS"]["ADMIN_MOBILESHOP@13391"] = [ "COLUMN" => 1, "ROW" => 5, "HIDE" => "N", ]; } } else { $arOptions = [ [ "GADGETS" => [ "ADMIN_INFO@333333333" => [ "COLUMN" => 0, "ROW" => 0, "HIDE" => "N", ], "HTML_AREA@444444444" => [ "COLUMN" => 0, "ROW" => 1, "HIDE" => "N", "USERDATA" => [ "content" => $info_table, ], "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_INFO_TITLE"), ], ], "ADMIN_CHECKLIST@777888999" => [ "COLUMN" => 0, "ROW" => 2, "HIDE" => "N", ], "RSSREADER@777777777" => [ "COLUMN" => 1, "ROW" => 3, "HIDE" => "N", "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_RSS_TITLE"), "CNT" => 10, "RSS_URL" => $rss_url, ], ], "ADMIN_SECURITY@555555555" => [ "COLUMN" => 1, "ROW" => 0, "HIDE" => "N", ], "ADMIN_SITESPEED@666666777" => [ "COLUMN" => 1, "ROW" => 1, "HIDE" => "N", ], "ADMIN_PERFMON@666666666" => [ "COLUMN" => 1, "ROW" => 2, "HIDE" => "N", ], ], ], ]; if (LANGUAGE_ID == "ru") { $arOptions[0]["GADGETS"]["ADMIN_MARKETPALCE@22549"] = [ "COLUMN" => 1, "ROW" => 3, "HIDE" => "N", ]; } } } elseif (file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/statistic/install/index.php")) // 333 { $arOptions = [ [ "GADGETS" => [ "ADMIN_SECURITY@555555555" => [ "COLUMN" => 0, "ROW" => 0, "HIDE" => "N", ], "ADMIN_PERFMON@666666666" => [ "COLUMN" => 0, "ROW" => 1, "HIDE" => "N", ], "ADMIN_STAT@222222222" => [ "COLUMN" => 0, "ROW" => 2, "HIDE" => "N", ], "HTML_AREA@444444444" => [ "COLUMN" => 1, "ROW" => 0, "HIDE" => "N", "USERDATA" => [ "content" => $info_table, ], "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_INFO_TITLE"), ], ], "ADMIN_INFO@333333333" => [ "COLUMN" => 1, "ROW" => 1, "HIDE" => "N", ], "RSSREADER@777777777" => [ "COLUMN" => 1, "ROW" => 3, "HIDE" => "N", "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_RSS_TITLE"), "CNT" => 5, "RSS_URL" => $rss_url, ], ], "ADMIN_CHECKLIST@777888999" => [ "COLUMN" => 1, "ROW" => 2, "HIDE" => "N", ], ], ], ]; } else // 444 { $arOptions = [ [ "GADGETS" => [ "ADMIN_INFO@333333333" => [ "COLUMN" => 0, "ROW" => 0, "HIDE" => "N", ], "ADMIN_SECURITY@555555555" => [ "COLUMN" => 0, "ROW" => 1, "HIDE" => "N", ], "ADMIN_PERFMON@666666666" => [ "COLUMN" => 0, "ROW" => 2, "HIDE" => "N", ], "HTML_AREA@444444444" => [ "COLUMN" => 1, "ROW" => 0, "HIDE" => "N", "USERDATA" => [ "content" => $info_table, ], "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_INFO_TITLE"), ], ], "RSSREADER@777777777" => [ "COLUMN" => 1, "ROW" => 2, "HIDE" => "N", "SETTINGS" => [ "TITLE_STD" => GetMessage("MAIN_DESKTOP_RSS_TITLE"), "CNT" => 5, "RSS_URL" => $rss_url, ], ], "ADMIN_CHECKLIST@777888999" => [ "COLUMN" => 1, "ROW" => 1, "HIDE" => "N", ], ], ], ]; } CUserOptions::SetOption('intranet', "~gadgets_admin_index", $arOptions, true); } function UnInstallDB() { return true; } function InstallEvents() { $languages = []; $langs = CLanguage::GetList(); while ($language = $langs->Fetch()) { $languages[] = $language; } $arEventTypes = []; foreach ($languages as $language) { $lid = $language["LID"]; IncludeModuleLangFile(__FILE__, $lid); $arEventTypes[] = [ "LID" => $lid, "EVENT_NAME" => "NEW_USER", "NAME" => GetMessage("MAIN_NEW_USER_TYPE_NAME"), "DESCRIPTION" => GetMessage("MAIN_NEW_USER_TYPE_DESC"), "SORT" => 1, ]; $arEventTypes[] = [ "LID" => $lid, "EVENT_NAME" => "USER_INFO", "NAME" => GetMessage("MAIN_USER_INFO_TYPE_NAME"), "DESCRIPTION" => GetMessage("MAIN_USER_INFO_TYPE_DESC"), "SORT" => 2, ]; $arEventTypes[] = [ "LID" => $lid, "EVENT_NAME" => "NEW_USER_CONFIRM", "NAME" => GetMessage("MAIN_NEW_USER_CONFIRM_TYPE_NAME"), "DESCRIPTION" => GetMessage("MAIN_NEW_USER_CONFIRM_TYPE_DESC"), "SORT" => 3, ]; $arEventTypes[] = [ "LID" => $lid, "EVENT_NAME" => "USER_PASS_REQUEST", "NAME" => GetMessage("MAIN_USER_PASS_REQUEST_TYPE_NAME"), "DESCRIPTION" => GetMessage("MAIN_USER_INFO_TYPE_DESC"), "SORT" => 4, ]; $arEventTypes[] = [ "LID" => $lid, "EVENT_NAME" => "USER_PASS_CHANGED", "NAME" => GetMessage("MAIN_USER_PASS_CHANGED_TYPE_NAME"), "DESCRIPTION" => GetMessage("MAIN_USER_INFO_TYPE_DESC"), "SORT" => 5, ]; $arEventTypes[] = [ "LID" => $lid, "EVENT_NAME" => "USER_INVITE", "NAME" => GetMessage("MAIN_USER_INVITE_TYPE_NAME"), "DESCRIPTION" => GetMessage("MAIN_USER_INVITE_TYPE_DESC"), "SORT" => 6, ]; $arEventTypes[] = [ "LID" => $lid, "EVENT_NAME" => "FEEDBACK_FORM", "NAME" => GetMessage("MF_EVENT_NAME"), "DESCRIPTION" => GetMessage("MF_EVENT_DESCRIPTION"), "SORT" => 7, ]; $arEventTypes[] = [ 'LID' => $lid, 'EVENT_NAME' => 'MAIN_MAIL_CONFIRM_CODE', 'NAME' => getMessage('MAIN_MAIL_CONFIRM_EVENT_TYPE_NAME'), 'DESCRIPTION' => getMessage('MAIN_MAIL_CONFIRM_EVENT_TYPE_DESC'), 'SORT' => 8, ]; $arEventTypes[] = [ 'LID' => $lid, 'EVENT_NAME' => 'EVENT_LOG_NOTIFICATION', 'NAME' => getMessage('MAIN_INSTALL_EVENT_TYPE_NOTIFICATION'), 'DESCRIPTION' => getMessage('MAIN_INSTALL_EVENT_TYPE_NOTIFICATION_DESC'), 'SORT' => 9, ]; $arEventTypes[] = [ 'LID' => $lid, 'EVENT_NAME' => 'USER_CODE_REQUEST', 'NAME' => GetMessage("MAIN_INSTALL_EVENT_TYPE_USER_CODE_REQUEST"), 'DESCRIPTION' => GetMessage("MAIN_INSTALL_EVENT_TYPE_USER_CODE_REQUEST_DESC"), 'SORT' => 10, ]; $arEventTypes[] = [ 'LID' => $lid, 'EVENT_NAME' => 'NEW_DEVICE_LOGIN', 'NAME' => GetMessage('MAIN_INSTALL_EVENT_TYPE_NEW_DEVICE_LOGIN'), 'DESCRIPTION' => GetMessage('MAIN_INSTALL_EVENT_TYPE_NEW_DEVICE_LOGIN_DESC'), 'SORT' => 11, ]; //sms types $arEventTypes[] = [ 'LID' => $lid, 'EVENT_NAME' => 'SMS_USER_CONFIRM_NUMBER', 'EVENT_TYPE' => \Bitrix\Main\Mail\Internal\EventTypeTable::TYPE_SMS, 'NAME' => GetMessage("main_install_sms_event_confirm_name"), 'DESCRIPTION' => GetMessage("main_install_sms_event_confirm_descr"), ]; $arEventTypes[] = [ 'LID' => $lid, 'EVENT_NAME' => 'SMS_USER_RESTORE_PASSWORD', 'EVENT_TYPE' => \Bitrix\Main\Mail\Internal\EventTypeTable::TYPE_SMS, 'NAME' => GetMessage("main_install_sms_event_restore_name"), 'DESCRIPTION' => GetMessage("main_install_sms_event_restore_descr"), ]; $arEventTypes[] = [ 'LID' => $lid, 'EVENT_NAME' => 'SMS_EVENT_LOG_NOTIFICATION', 'EVENT_TYPE' => \Bitrix\Main\Mail\Internal\EventTypeTable::TYPE_SMS, 'NAME' => getMessage('MAIN_INSTALL_EVENT_TYPE_NOTIFICATION'), 'DESCRIPTION' => getMessage('MAIN_INSTALL_EVENT_TYPE_NOTIFICATION_DESC_SMS'), ]; } $type = new CEventType; foreach ($arEventTypes as $arEventType) { $type->Add($arEventType); } foreach ($languages as $language) { $this->InstallEventMessages($language['LID'], ['s1']); } return true; } public function InstallEventMessages(string $languageId, array $siteId): void { if (!file_exists(__DIR__ . '/../lang/' . $languageId . '/install/index.php')) { return; } IncludeModuleLangFile(__FILE__, $languageId); $arMessages = []; $arMessages[] = [ "EVENT_NAME" => "NEW_USER", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#DEFAULT_EMAIL_FROM#", "SUBJECT" => GetMessage("MAIN_NEW_USER_EVENT_NAME"), "MESSAGE" => GetMessage("MAIN_NEW_USER_EVENT_DESC"), ]; $arMessages[] = [ "EVENT_NAME" => "USER_INFO", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL#", "SUBJECT" => GetMessage("MAIN_USER_INFO_EVENT_NAME"), "MESSAGE" => GetMessage("MAIN_USER_INFO_EVENT_DESC"), ]; $arMessages[] = [ "EVENT_NAME" => "USER_PASS_REQUEST", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL#", "SUBJECT" => GetMessage("MAIN_USER_PASS_REQUEST_EVENT_NAME"), "MESSAGE" => GetMessage("MAIN_USER_PASS_REQUEST_EVENT_DESC"), ]; $arMessages[] = [ "EVENT_NAME" => "USER_PASS_CHANGED", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL#", "SUBJECT" => GetMessage("MAIN_USER_PASS_CHANGED_EVENT_NAME"), "MESSAGE" => GetMessage("MAIN_USER_PASS_CHANGED_EVENT_DESC"), ]; $arMessages[] = [ "EVENT_NAME" => "NEW_USER_CONFIRM", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL#", "SUBJECT" => GetMessage("MAIN_NEW_USER_CONFIRM_EVENT_NAME"), "MESSAGE" => GetMessage("MAIN_NEW_USER_CONFIRM_EVENT_DESC"), ]; $arMessages[] = [ "EVENT_NAME" => "USER_INVITE", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL#", "SUBJECT" => GetMessage("MAIN_USER_INVITE_EVENT_NAME"), "MESSAGE" => GetMessage("MAIN_USER_INVITE_EVENT_DESC"), ]; $arMessages[] = [ "EVENT_NAME" => "FEEDBACK_FORM", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL_TO#", "SUBJECT" => GetMessage("MF_EVENT_SUBJECT"), "MESSAGE" => GetMessage("MF_EVENT_MESSAGE"), ]; $arMessages[] = [ 'EVENT_NAME' => 'MAIN_MAIL_CONFIRM_CODE', 'LID' => $siteId, 'EMAIL_FROM' => '#DEFAULT_EMAIL_FROM#', 'EMAIL_TO' => '#EMAIL_TO#', 'SUBJECT' => '#MESSAGE_SUBJECT#', 'MESSAGE' => "", 'BODY_TYPE' => 'html', 'SITE_TEMPLATE_ID' => 'mail_join', ]; $arMessages[] = [ "EVENT_NAME" => "EVENT_LOG_NOTIFICATION", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL#", "SUBJECT" => GetMessage("MAIN_EVENT_MESS_NOTIFICATION"), "MESSAGE" => GetMessage("MAIN_EVENT_MESS_NOTIFICATION_TEXT"), ]; $arMessages[] = [ "EVENT_NAME" => "USER_CODE_REQUEST", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL#", "SUBJECT" => GetMessage("MAIN_INSTALL_EVENT_MESS_USER_CODE_REQUEST"), "MESSAGE" => GetMessage("MAIN_INSTALL_EVENT_MESS_USER_CODE_REQUEST_MESS"), ]; $arMessages[] = [ "EVENT_NAME" => "NEW_DEVICE_LOGIN", "LID" => $siteId, "LANGUAGE_ID" => $languageId, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#EMAIL#", "SUBJECT" => GetMessage('MAIN_INSTALL_EVENT_MESSAGE_NEW_DEVICE_LOGIN_SUBJECT'), "MESSAGE" => GetMessage('MAIN_INSTALL_EVENT_MESSAGE_NEW_DEVICE_LOGIN'), ]; $message = new CEventMessage; foreach ($arMessages as $arMessage) { $message->Add($arMessage); } //sms templates $smsTemplates = [ [ "EVENT_NAME" => "SMS_USER_CONFIRM_NUMBER", "ACTIVE" => true, "SENDER" => "#DEFAULT_SENDER#", "RECEIVER" => "#USER_PHONE#", "MESSAGE" => GetMessage("main_install_sms_template_confirm_mess"), "LANGUAGE_ID" => $languageId, ], [ "EVENT_NAME" => "SMS_USER_RESTORE_PASSWORD", "ACTIVE" => true, "SENDER" => "#DEFAULT_SENDER#", "RECEIVER" => "#USER_PHONE#", "MESSAGE" => GetMessage("main_install_sms_template_restore_mess"), "LANGUAGE_ID" => $languageId, ], [ "EVENT_NAME" => "SMS_EVENT_LOG_NOTIFICATION", "ACTIVE" => true, "SENDER" => "#DEFAULT_SENDER#", "RECEIVER" => "#PHONE_NUMBER#", "MESSAGE" => GetMessage("main_install_sms_template_notification_mess"), "LANGUAGE_ID" => $languageId, ], ]; $entity = \Bitrix\Main\Sms\TemplateTable::getEntity(); $site = \Bitrix\Main\SiteTable::getEntity()->wakeUpObject("s1"); foreach ($smsTemplates as $smsTemplate) { $template = $entity->createObject(); foreach ($smsTemplate as $field => $value) { $template->set($field, $value); } $template->addToSites($site); $template->save(); } } function UnInstallEvents() { return true; } function InstallFiles() { CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/bitrix", $_SERVER["DOCUMENT_ROOT"] . "/bitrix", true, true); CopyDirFiles($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/install/admin", $_SERVER['DOCUMENT_ROOT'] . "/bitrix/admin"); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/tools", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/tools", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/services", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/services", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/images", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/images", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/js", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/js", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/themes", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/themes", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/sounds", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/sounds", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/components/bitrix", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/components/bitrix", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/gadgets/bitrix", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/gadgets/bitrix", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/panel", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/panel", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/fonts", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/fonts", true, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/css", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/css", true, true); return true; } function UnInstallFiles() { return true; } function DoInstall() { } function DoUninstall() { } }