Your IP : 3.15.5.27


Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/salescenter/lib/model/
Upload File :
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/salescenter/lib/model/pagetable.php

<?php

namespace Bitrix\SalesCenter\Model;

use Bitrix\Main;
use Bitrix\Main\ORM\Event;
use Bitrix\Main\ORM\Fields\IntegerField;
use Bitrix\Main\ORM\Fields\StringField;
use Bitrix\SalesCenter\Integration\LandingManager;

class PageTable extends Main\ORM\Data\DataManager
{
	/**
	 * Returns DB table name for entity.
	 *
	 * @return string
	 */
	public static function getTableName()
	{
		return 'b_salescenter_page';
	}

	/**
	 * Returns entity map definition.
	 *
	 * @return array
	 */
	public static function getMap()
	{
		return [
			new IntegerField('ID', [
				'primary' => true,
				'autocomplete' => true,
			]),
			new StringField('NAME'),
			new StringField('URL'),
			new IntegerField('LANDING_ID'),
			new Main\ORM\Fields\BooleanField('HIDDEN', [
				'values' => ['N', 'Y'],
				'default_value' => 'N',
			]),
			new Main\ORM\Fields\BooleanField('IS_WEBFORM', [
				'values' => ['N', 'Y'],
				'default_value' => 'N',
			]),
			new Main\ORM\Fields\BooleanField('IS_FRAME_DENIED', [
				'values' => ['N', 'Y'],
				'default_value' => 'N',
			]),
			new IntegerField('SORT', [
				'required' => true,
				'default_value' => 500
			]),
		];
	}

	/**
	 * @return Main\ORM\Objectify\EntityObject|string
	 */
	public static function getObjectClass()
	{
		return Page::class;
	}

	/**
	 * @param array $fields
	 * @param array $oldFields
	 * @return Main\ORM\EventResult
	 */
	protected static function onChange(array $fields, array $oldFields = [])
	{
		$result = new Main\ORM\EventResult();

		$landingId = null;
		if(isset($fields['LANDING_ID']))
		{
			$landingId = $fields['LANDING_ID'];
		}
		elseif(isset($oldFields['LANDING_ID']))
		{
			$landingId = $oldFields['LANDING_ID'];
		}

		if($landingId)
		{
			$pageInfo = LandingManager::getInstance()->getLanding($landingId, false);
			if($pageInfo)
			{
				if(isset($fields['NAME']) && $pageInfo['TITLE'] === $fields['NAME'])
				{
					$result->modifyFields(['NAME' => '']);
				}
				$result->unsetField('URL');
			}
			else
			{
				$result->addError(new Main\ORM\EntityError('Landing not found'));
			}
		}
		else
		{
			if(empty($fields['NAME']) && empty($oldFields['NAME']))
			{
				$result->addError(new Main\ORM\EntityError('Name cannot be empty'));
			}
			if(empty($fields['URL']) && empty($oldFields['URL']))
			{
				$result->addError(new Main\ORM\EntityError('Url cannot be empty'));
			}
		}

		return $result;
	}

	/**
	 * @param Event $event
	 * @return Main\ORM\EventResult
	 */
	public static function onBeforeAdd(Event $event)
	{
		$fields = $event->getParameter('fields');
		return static::onChange($fields);
	}

	/**
	 * @param Event $event
	 * @return Main\ORM\EventResult
	 */
	public static function onBeforeUpdate(Event $event)
	{
		$oldFields = static::getById($event->getParameter('primary')['ID'])->fetch();
		$fields = $event->getParameter('fields');

		return static::onChange($fields, $oldFields);
	}

	public static function onAfterDelete(Event $event)
	{
		$pageId = $event->getParameter('primary');
		if(is_array($pageId))
		{
			$pageId = $pageId['ID'];
		}
		$pageId = (int) $pageId;
		if($pageId > 0)
		{
			PageParamTable::deleteByPageId($pageId);
		}
	}
}