Your IP : 3.136.18.38


Current Path : /var/www/www-root/data/www.catalog.monolith-realty.ru/bitrix/modules/landing/lib/note/
Upload File :
Current File : /var/www/www-root/data/www.catalog.monolith-realty.ru/bitrix/modules/landing/lib/note/target.php

<?php
namespace Bitrix\Landing\Note;

use \Bitrix\Landing\Rights;
use \Bitrix\Landing\Landing;
use \Bitrix\Landing\Site;
use \Bitrix\Landing\Site\Type;

class Target
{
	/**
	 * User option code for storage notes last sites.
	 */
	const UO_CODE_NOTES_LAST = 'notes_last';

	/**
	 * By landing id remembers user opt.
	 * @param int $landingId Landing id.
	 * @return void
	 */
	public static function rememberLastSite(int $landingId): void
	{
		$res = Landing::getList([
			'select' => [
				'SITE_ID',
				'SITE_TITLE' => 'SITE.TITLE',
				'SITE_TYPE' => 'SITE.TYPE'
			],
			'filter' => [
				'ID' => $landingId
			],
			'limit' => 1
		]);
		if ($row = $res->fetch())
		{
			$option = \CUserOptions::getOption('landing', self::UO_CODE_NOTES_LAST, []);
			foreach ($option as $item)
			{
				if ($item['SITE_ID'] == $row['SITE_ID'])
				{
					return;
				}
			}
			$option[] = $row;
			if (count($option) > 5)
			{
				unset($option[0]);
			}
			\CUserOptions::setOption('landing', self::UO_CODE_NOTES_LAST, array_values($option));
		}
	}

	/**
	 * Returns available entities short pop list for note creating.
	 * @return array
	 */
	public static function getShortList(): array
	{
		$data = [];
		$option = \CUserOptions::getOption('landing', self::UO_CODE_NOTES_LAST, []);
		$option = array_reverse($option);

		// check every item in short list on accessibility
		foreach ($option as $item)
		{
			Type::setScope($item['SITE_TYPE']);
			// because every item may by in different scopes
			$check = Rights::hasAccessForSite(
				$item['SITE_ID'],
				Rights::ACCESS_TYPES['edit']
			);
			if ($check)
			{
				$res = Site::getList([
					'select' => [
						'ID', 'TITLE', 'TYPE'
					],
					'filter' => [
						'ID' => $item['SITE_ID']
					]
				]);
				if ($row = $res->fetch())
				{
					$data[] = $row;
				}
			}
		}

		$data = \Bitrix\Landing\Binding\Group::recognizeSiteTitle(
			$data
		);

		return $data;
	}
}