420 $result =
new Entity\EventResult();
422 $primary =
$event->getParameter(
'primary');
423 $unsetFields =
array();
424 $modifyFields =
array();
425 $siteController = self::getSiteController();
428 self::$touchMode = isset(
$fields[
'TOUCH']) &&
$fields[
'TOUCH'] ==
'Y';
430 if ($actionType == self::ACTION_TYPE_ADD)
436 'LANDING_SITE_CREATE'
461 $unsetFields[] =
'DOMAIN_ID';
468 $modifyFields[
'ACTIVE'] =
'N';
471 if ($primary &&
$fields[
'DELETED'] ==
'N')
473 $fields[
'TYPE'] = self::getValueByCode(
482 'filter' => [
'!ID' => $primary[
'ID']]
489 Restriction\Manager::getSystemErrorMessage(
'limit_sites_number'),
496 else if ($primary &&
$fields[
'DELETED'] ==
'Y')
498 $fields[
'DOMAIN_PROVIDER'] = self::getValueByCode(
507 Loc::getMessage(
'LANDING_TABLE_ERROR_ACCESS_DENIED_DELETED'),
508 'ACCESS_DENIED_DELETED'
517 if (!$primary && isset(
$fields[
'TYPE']))
520 if (!in_array(
$fields[
'TYPE'], $allowedTypes))
524 Loc::getMessage(
'LANDING_TABLE_ERROR_ACCESS_DENIED_ADD'),
533 if (!$primary && !array_key_exists(
'DOMAIN_ID',
$fields))
536 $modifyFields[
'DOMAIN_ID'] =
$fields[
'DOMAIN_ID'];
545 $freeAccessFields = [
555 if (isset($freeAccessFields[
'ACTIVE']))
557 unset($freeAccessFields[
'ACTIVE']);
559 if (isset($freeAccessFields[
'DELETED']))
561 unset($freeAccessFields[
'DELETED']);
563 $freeAccessFields = array_keys($freeAccessFields);
567 $freeAccessFields[] =
'ACTIVE';
571 $freeAccessFields[] =
'DELETED';
572 $freeAccessFields[] =
'DOMAIN_PROVIDER';
576 $freeAccessFields[] =
'ACTIVE';
581 if (!in_array(
$key, $freeAccessFields))
583 $errMessage = Loc::getMessage(
584 'LANDING_TABLE_ERROR_ACCESS_DENIED_' .
$key
588 $errMessage = Loc::getMessage(
589 'LANDING_TABLE_ERROR_ACCESS_DENIED'
611 Loc::getMessage(
'LANDING_TABLE_ERROR_ACCESS_DENIED_ADD'),
620 if (array_key_exists(
'ADDITIONAL_FIELDS',
$fields))
622 self::$additionalFields =
$fields[
'ADDITIONAL_FIELDS'];
623 $unsetFields[] =
'ADDITIONAL_FIELDS';
627 self::$additionalFields =
array();
632 array_key_exists(
'DOMAIN_ID',
$fields) &&
647 $result->unsetFields($unsetFields);
650 Loc::getMessage(
'LANDING_TABLE_ERROR_DOMAIN_NOT_EXIST'),
666 $fields[
'TYPE'] = self::getValueByCode(
676 $special = self::getValueByCode(
683 $canPublicSite =
true;
687 $domainProvider = self::getValueByCode(
694 if (!
Restriction\Manager::isAllowed(
'limit_free_domen', [
'trueOnNotNull' =>
true]))
696 $result->unsetFields($unsetFields);
699 Restriction\Manager::getSystemErrorMessage(
'limit_free_domen'),
700 'FREE_DOMAIN_IS_NOT_ALLOWED'
711 '!ID' => $primary[
'ID']
723 ?
'PUBLIC_SITE_REACHED_FREE'
724 :
'PUBLIC_SITE_REACHED';
726 ?
'limit_sites_number_free'
727 :
'limit_sites_number';
728 $result->unsetFields($unsetFields);
731 Restriction\Manager::getSystemErrorMessage($msgCode),
740 if (array_key_exists(
'CODE',
$fields))
743 if (mb_strpos(
$fields[
'CODE'],
'/') !==
false)
745 $result->unsetFields($unsetFields);
748 Loc::getMessage(
'LANDING_TABLE_ERROR_SITE_SLASH_IS_NOT_ALLOWED'),
749 'SLASH_IS_NOT_ALLOWED'
757 $fields[
'CODE'] = \CUtil::translit(
768 if (preg_match(
'/^[\d]+$/',
$fields[
'CODE']))
775 if (!array_key_exists(
'DOMAIN_ID',
$fields) && $primary)
777 $domainId = self::getValueByCode(
783 else if (array_key_exists(
'DOMAIN_ID',
$fields))
785 $domainId =
$fields[
'DOMAIN_ID'];
788 if ($domainId !==
null)
791 $originalCode =
$fields[
'CODE'];
794 $unique = self::checkUniqueInDomain(
796 $primary ? $primary[
'ID'] : 0,
801 $fields[
'CODE'] = $originalCode . (++$checkCount);
806 $modifyFields[
'CODE'] =
$fields[
'CODE'];
811 array_key_exists(
'DOMAIN_ID',
$fields) &&
814 preg_replace(
'/[\d]/',
'', trim(
$fields[
'DOMAIN_ID'])) !=
'' ||
820 $domainName = mb_strtolower(trim(
$fields[
'DOMAIN_ID']));
824 if ($domainName !=
'')
826 $puny = new \CBXPunycode;
827 $domainName = $puny->encode($domainName);
829 if (!preg_match(
'/^[a-z0-9\-\.]+\.[a-z0-9\-]{2,20}$/i', $domainName))
831 $result->unsetFields($unsetFields);
834 Loc::getMessage(
'LANDING_TABLE_ERROR_DOMAIN_IS_INCORRECT2'),
835 'DOMAIN_IS_INCORRECT'
843 if ($actionType == self::ACTION_TYPE_ADD)
845 $modifyFields[
'DOMAIN_ID'] = 0;
854 'DOMAIN_NAME' =>
'DOMAIN.DOMAIN'
857 'ID' => $primary[
'ID'],
858 'CHECK_PERMISSIONS' =>
'N'
861 if ($row =
$res->fetch())
863 $domainNameOld = mb_strtolower($row[
'DOMAIN_NAME']);
864 $domainId = $row[
'DOMAIN_ID'];
867 $unsetFields[] =
'DOMAIN_ID';
871 if ($domainId && array_key_exists(
'CODE',
$fields))
873 $unique = self::checkUniqueInDomain(
875 $primary ? $primary[
'ID'] : 0,
880 $result->unsetFields($unsetFields);
883 Loc::getMessage(
'LANDING_TABLE_ERROR_SITE_CODE_IS_NOT_UNIQUE2'),
893 $domainName != $domainNameOld ||
894 $actionType == self::ACTION_TYPE_ADD
897 $domainExist =
false;
900 if ($domainName !=
'')
902 $resDomain = Domain::getList(
array(
907 '=DOMAIN' => $domainName
910 if ($rowDomain = $resDomain->fetch())
913 $resSite = Site::getList(
array(
918 'DOMAIN_ID' => $rowDomain[
'ID'],
920 'CHECK_PERMISSIONS' =>
'N'
923 if ($resSite->fetch())
928 Loc::getMessage(
'LANDING_TABLE_ERROR_DOMAIN_EXIST_TRASH'),
942 !str_ends_with($domainName,
'.b24site.online')
943 && !str_ends_with($domainName,
'.b24shop.online')
946 $domainExist = $siteController::isDomainExists($domainName);
951 if (str_ends_with($domainName,
'.b24site.online'))
953 $byDomainName = str_replace(
'.b24site.online',
'.bitrix24site.by', $domainName);
955 if (str_ends_with($domainName,
'.b24shop.online'))
957 $byDomainName = str_replace(
'.b24shop.online',
'.bitrix24shop.by', $domainName);
959 if ($byDomainName !==
'' && $siteController::isDomainExists($byDomainName))
965 $domainExist = $siteController::isDomainExists($domainName);
971 $result->unsetFields($unsetFields);
973 self::customizeControllerError($ex)
981 $result->unsetFields($unsetFields);
982 if (self::checkBitrixUse($domainName))
987 Loc::getMessage(
'LANDING_TABLE_ERROR_DOMAIN_BITRIX_DISABLE'),
998 Loc::getMessage(
'LANDING_TABLE_ERROR_DOMAIN_EXIST'),
1011 $siteController::isDomainExists(
'repo.bitrix24.site');
1015 $result->unsetFields($unsetFields);
1017 self::customizeControllerError($ex)
1026 $actionType == self::ACTION_TYPE_ADD
1027 ?
'\\' . __NAMESPACE__ .
'\\Site::onAfterAdd'
1028 :
'\\' . __NAMESPACE__ .
'\\Site::onAfterUpdate',
1031 $primary =
$event->getParameter(
'primary');
1052 'ID' => $primary[
'ID']
1055 if ($row[
'TYPE'] ==
'STORE')
1057 $row[
'TYPE'] =
'shop';
1061 $siteController::addDomain(
1071 $domainName = $siteController::addRandomDomain(
1080 $result->unsetFields($unsetFields);
1082 self::customizeControllerError($ex)
1090 $resDomain = Domain::add(
array(
1092 'DOMAIN' => $domainName
1094 $domainId = $resDomain->getId();
1099 'DOMAIN_ID' => $domainId
1109 'DOMAIN' => $domainName,
1110 'FAIL_COUNT' =>
null,
1113 if (
$res->isSuccess())
1122 $siteController::updateDomain(
1130 $result->unsetFields($unsetFields);
1132 self::customizeControllerError($ex)
1145 $result->unsetFields($unsetFields);
1146 $result->modifyFields($modifyFields);