2namespace Bitrix\Landing\Internals;
4use \Bitrix\Main\Localization\Loc;
5use \Bitrix\Main\Entity;
6use \Bitrix\Landing\Landing;
7use \Bitrix\Landing\Manager;
8use \Bitrix\Landing\Rights;
9use \Bitrix\Landing\Role;
10use \Bitrix\Landing\TemplateRef;
11use \Bitrix\Landing\Landing\Cache;
13Loc::loadMessages(__FILE__);
67 'autocomplete' =>
true,
71 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_LANDING_CODE')
74 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_LANDING_INITIATOR_APP_CODE')
77 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_RULE')
80 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_LANDING_ACTIVE'),
81 'default_value' =>
'Y'
84 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_SITE_DELETED'),
85 'default_value' =>
'N'
88 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_LANDING_PUBLIC'),
89 'default_value' =>
'Y'
92 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_LANDING_SYSTEM'),
93 'default_value' =>
'N'
96 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_LANDING_VIEWS'),
100 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_LANDING_TITLE'),
102 'save_data_modification' =>
array(
'\Bitrix\Main\Text\Emoji',
'getSaveModificator'),
103 'fetch_data_modification' =>
array(
'\Bitrix\Main\Text\Emoji',
'getFetchModificator'),
106 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_XML_ID')
109 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_DESCRIPTION')
112 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_TPL_ID')
115 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_TPL_CODE')
118 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_SITE_ID'),
121 'SITE' =>
new Entity\ReferenceField(
123 'Bitrix\Landing\Internals\SiteTable',
124 array(
'=this.SITE_ID' =>
'ref.ID')
126 'AREAS' =>
new Entity\ReferenceField(
128 'Bitrix\Landing\Internals\TemplateRefTable',
129 array(
'=this.ID' =>
'ref.LANDING_ID')
132 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_LANDING_SITEMAP'),
133 'default_value' =>
'N'
136 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_FOLDER'),
137 'default_value' =>
'N'
140 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_FOLDER_ID')
143 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_SEARCH_CONTENT')
146 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_VERSION'),
147 'default_value' => 10
150 'title' =>
'History step',
154 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_CREATED_BY_ID'),
157 'CREATED_BY' =>
new Entity\ReferenceField(
159 'Bitrix\Main\UserTable',
160 array(
'=this.CREATED_BY_ID' =>
'ref.ID')
163 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_MODIFIED_BY_ID'),
166 'MODIFIED_BY' =>
new Entity\ReferenceField(
168 'Bitrix\Main\UserTable',
169 array(
'=this.MODIFIED_BY_ID' =>
'ref.ID')
172 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_DATE_CREATE'),
176 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_DATE_MODIFY'),
180 'title' => Loc::getMessage(
'LANDING_TABLE_FIELD_DATE_PUBLIC')
193 isset(
$params[
'filter'][
'CHECK_PERMISSIONS']) &&
194 $params[
'filter'][
'CHECK_PERMISSIONS'] ==
'N'
203 $allowedSites ? [
'SITE_ID' => $allowedSites] : []
205 if (empty($buildFilter))
236 static $expectedRoles =
null;
237 if ($expectedRoles ===
null)
246 '=this.SITE_ID' =>
'ref.ENTITY_ID',
247 '=ref.ENTITY_ID' => [0]
251 $runtimeParams[
'=ref.ROLE_ID'] = [0];
256 $runtimeParams[
'@ref.ROLE_ID'] = [implode(
',', $expectedRoles)];
258 $params[
'runtime'][] =
new Entity\ReferenceField(
260 'Bitrix\Landing\Internals\RightsTable',
262 [
'join_type' =>
'INNER']
265 $params[
'group'][] =
'SITE_ID';
268 $params[
'filter'][] = $buildFilter;
281 $result =
new Entity\EventResult();
282 $primary =
$event->getParameter(
'primary');
284 $modifyFields =
array();
285 $existFields =
array();
294 'SITE_ID',
'FOLDER_ID',
295 'INITIATOR_APP_CODE',
296 'ID_INDEX' =>
'SITE.LANDING_ID_INDEX'
299 'ID' => $primary[
'ID'],
300 '=DELETED' => [
'Y',
'N']
303 $existFields =
$res->fetch();
308 if ((
$fields[
'FOLDER_ID'] ??
null) && (
$fields[
'FOLDER_SKIP_CHECK'] ??
'N') !==
'Y')
310 if (empty($existFields[
'SITE_ID']))
312 $existFields[
'SITE_ID'] =
$fields[
'SITE_ID'];
314 $res = FolderTable::getList([
319 'SITE_ID' => $existFields[
'SITE_ID'],
327 Loc::getMessage(
'LANDING_TABLE_ERROR_FOLDER_NOT_FOUND'),
339 !isset($existFields[
'CODE']) ||
340 $existFields[
'CODE'] !=
$fields[
'CODE']
344 if (preg_match(
'#^([\w]+)\_([\d]+)\_([\d]+)$#',
$fields[
'CODE'],
$matches))
348 Loc::getMessage(
'LANDING_TABLE_ERROR_WRONG_CODE_FORMAT'),
357 if (isset(
$fields[
'INITIATOR_APP_CODE']))
359 $existFields[
'INITIATOR_APP_CODE'] =
$fields[
'INITIATOR_APP_CODE'];
366 $modifyFields[
'ACTIVE'] =
'N';
369 if (
$fields[
'DELETED'] ==
'Y' && $primary)
371 if ($existFields[
'ID_INDEX'] == $primary[
'ID'])
379 'SITE_ID' => $existFields[
'SITE_ID'],
384 if (
count($sitesCheck) > 1)
388 Loc::getMessage(
'LANDING_TABLE_ERROR_LD_CANT_DELETE_MAIN'),
399 if (array_key_exists(
'SITE_ID',
$fields))
401 $res = \Bitrix\Landing\Site::getList(
array(
413 Loc::getMessage(
'LANDING_TABLE_ERROR_SITE_NOT_FOUND'),
420 else if ($existFields)
422 if ($existFields[
'SITE_ID'])
424 $fields[
'SITE_ID'] = $existFields[
'SITE_ID'];
430 Loc::getMessage(
'LANDING_TABLE_ERROR_SITE_NOT_FOUND'),
457 $errMessage = Loc::getMessage(
458 'LANDING_TABLE_ERROR_LD_ACCESS_DENIED_ADD'
471 $freeAccessFields = [
483 'ACTIVE',
'DATE_PUBLIC',
'DELETED'
485 foreach ($higherAccess as
$key)
487 if (isset($freeAccessFields[
$key]))
489 unset($freeAccessFields[
$key]);
492 $freeAccessFields = array_keys($freeAccessFields);
496 $freeAccessFields[] =
'ACTIVE';
497 $freeAccessFields[] =
'DATE_PUBLIC';
501 $freeAccessFields[] =
'DELETED';
505 $freeAccessFields[] =
'ACTIVE';
510 if (!in_array(
$key, $freeAccessFields))
512 $errMessage = Loc::getMessage(
513 'LANDING_TABLE_ERROR_LD_ACCESS_DENIED_' .
$key
517 $errMessage = Loc::getMessage(
518 'LANDING_TABLE_ERROR_LD_ACCESS_DENIED'
534 if (array_key_exists(
'ADDITIONAL_FIELDS',
$fields))
536 self::$additionalFields =
$fields[
'ADDITIONAL_FIELDS'];
541 self::$additionalFields =
array();
546 array_key_exists(
'CODE',
$fields) &&
547 mb_strpos(
$fields[
'CODE'],
'/') !==
false
552 Loc::getMessage(
'LANDING_TABLE_ERROR_SLASH_IS_NOT_ALLOWED'),
553 'SLASH_IS_NOT_ALLOWED'
560 array_key_exists(
'CODE',
$fields) &&
567 Loc::getMessage(
'LANDING_TABLE_ERROR_CANT_BE_EMPTY'),
574 $actionType == self::ACTION_TYPE_ADD && array_key_exists(
'TITLE',
$fields) &&
575 (!array_key_exists(
'CODE',
$fields) || trim(
$fields[
'CODE']) ==
'')
578 $fields[
'CODE'] = \CUtil::translit(
582 'replace_space' =>
'',
583 'replace_other' =>
''
589 $modifyFields[
'CODE'] =
$fields[
'CODE'];
592 $result->modifyFields($modifyFields);
604 if (Landing::checkDeleted())
614 !isset(
$params[
'filter'][
'DELETED']) &&
615 !isset(
$params[
'filter'][
'=DELETED'])
618 $params[
'filter'][
'=DELETED'] =
'N';
621 !isset(
$params[
'filter'][
'SITE.DELETED']) &&
622 !isset(
$params[
'filter'][
'=SITE.DELETED'])
625 $params[
'filter'][
'=SITE.DELETED'] =
'N';
628 if (isset(
$params[
'filter'][
'CHECK_PERMISSIONS']))
630 unset(
$params[
'filter'][
'CHECK_PERMISSIONS']);
635 if (isset(
$params[
'filter'][
'SITE.TYPE']))
638 unset(
$params[
'filter'][
'SITE.TYPE']);
640 if (isset(
$params[
'filter'][
'=SITE.TYPE']))
643 unset(
$params[
'filter'][
'=SITE.TYPE']);
650 return parent::getList(
$params);
680 $result =
new Entity\EventResult();
681 $primary =
$event->getParameter(
'primary');
689 'ID' => $primary[
'ID'],
690 'CHECK_PERMISSIONS' =>
'N',
691 '=SITE.DELETED' => [
'Y',
'N'],
692 '=DELETED' => [
'Y',
'N']
706 Loc::getMessage(
'LANDING_TABLE_ERROR_LD_ACCESS_DENIED_DELETED'),
718 Loc::getMessage(
'LANDING_TABLE_ERROR_LD_IS_LOCK'),
735 $result =
new Entity\EventResult();
737 if (!empty(self::$additionalFields))
739 $primary =
$event->getParameter(
'primary');
742 self::$additionalFields
756 $primary =
$event->getParameter(
'primary');
759 if (!Landing::isCheckUniqueAddress())
764 if (isset($primary[
'ID']) && array_key_exists(
'CODE',
$fields))
766 $landingId = (int)$primary[
'ID'];
769 Landing::disableCheckDeleted();
771 $landing = Landing::createInstance($landingId);
773 if ($landing->getMeta()[
'RULE'])
775 Landing::enableCheckDeleted();
779 if ($landing->exist())
781 if (
$fields[
'FOLDER_ID'] ??
null)
788 '!ID' => $primary[
'ID'],
789 'FOLDER_ID' =>
$fields[
'FOLDER_ID'],
800 $landingUrl = $landing->getPublicUrl(
false,
false);
801 $resolvedId = Landing::resolveIdByPublicUrl($landingUrl, $landing->getSiteId());
802 if ($resolvedId && $landingId !== $resolvedId)
809 Landing::enableCheckDeleted();
813 Landing::disableCheckUniqueAddress();
817 if (self::$additionalFields)
819 $reUpdate[
'ADDITIONAL_FIELDS'] = self::$additionalFields;
821 parent::update($landingId, $reUpdate);
822 Landing::enableCheckUniqueAddress();
834 $primary =
$event->getParameter(
'primary');
838 if ($primary && isset(
$fields[
'SITE_ID']))
845 'SITE_ID' =>
$fields[
'SITE_ID'],
846 'CHECK_PERMISSIONS' =>
'N'
854 'LANDING_ID_INDEX' => $primary[
'ID']
872 $primary =
$event->getParameter(
'primary');
877 Cache::clear($primary[
'ID']);
882 array_key_exists(
'SITE_ID',
$fields) &&
886 \Bitrix\Landing\Site::update(
904 $primary =
$event->getParameter(
'primary');
906 if (isset($primary[
'ID']))
912 \Bitrix\Landing\Hook::deleteForLanding($primary[
'ID']);
918 $res = \Bitrix\Landing\Site::getList(
array(
923 'LANDING_ID_INDEX' => $primary[
'ID']
933 'SITE_ID' =>
$site[
'ID']
943 \Bitrix\Landing\Site::update(
946 'LANDING_ID_INDEX' =>
$page[
'ID']
static deleteFromLanding($lid, $fileId=array())
static getList(array $params=array())
static prepareChange(Entity\Event $event, $actionType)
static OnBeforeDelete(Entity\Event $event)
static revertCode(Entity\Event $event)
static OnAfterDelete(Entity\Event $event)
static OnAfterUpdate(Entity\Event $event)
static OnBeforeAdd(Entity\Event $event)
static setAccessFilter($params)
static saveAdditionalFields(Entity\Event $event)
static OnBeforeUpdate(Entity\Event $event)
static OnAfterAdd(Entity\Event $event)
static saveAdditionalFields(Entity\Event $event)
static isLandingDeleteLocked(int $landingId)
static getRandomString(int $length)
static getAccessFilter(array $additionalFilterOr=[])
static getOperationsForSite($siteId)
static hasAccessForSite($siteId, $accessType, $deleted=false)
static getExpectedRoleIds()
static getFilterType($strict=false)
static deleteForLanding($id)
static landingIsArea(int|array $lid)
static setForLanding($id, array $data=array())
static removeForLanding($landingId)
static getList(array $parameters=array())
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
randString($pass_len=10, $pass_chars=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']