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/cvetdv.ru/bitrix/modules/yandex.market/lib/component/molecules/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/component/molecules/apipaging.php
<?php
namespace Yandex\Market\Component\Molecules;

use Bitrix\Main;

class ApiPaging
{
	private $gridId;

	public function __construct($gridId)
	{
		$this->gridId = $gridId;
	}

	public function getParameters(array $queryParameters, $pageSize = null)
	{
		$result = [];

		if (isset($queryParameters['limit'], $queryParameters['offset']))
		{
			if ($pageSize === null) { $pageSize = $queryParameters['limit']; }

			$result['page'] = floor($queryParameters['offset'] / $pageSize) + 1;
			$result['limit'] = $pageSize;

			if ($result['page'] > 1)
			{
				$result['pageToken'] = $this->getPageToken($result, $result['page']);
			}
		}

		return $result;
	}

	public function setPageToken($filter, $page, $token)
	{
		$sessionKey = $this->getPageTokenSessionKey();
		$queryKey = $this->makeFilterKey($filter) . '-' . $page;

		if (!isset($_SESSION[$sessionKey]))
		{
			$_SESSION[$sessionKey] = [];
		}

		$_SESSION[$sessionKey][$queryKey] = (string)$token;
	}

	public function getPageToken($filter, $page)
	{
		$sessionKey = $this->getPageTokenSessionKey();
		$queryKey = $this->makeFilterKey($filter) . '-' . $page;

		if (!isset($_SESSION[$sessionKey][$queryKey]))
		{
			throw new Main\ArgumentException('missing session pageToken', 'pageToken');
		}

		return (string)$_SESSION[$sessionKey][$queryKey];
	}

	protected function makeFilterKey($filter)
	{
		if (!is_array($filter) || empty($filter)) { return '0'; }

		$parts = [];
		$filter = array_diff_key($filter, [
			'page' => true,
			'pageToken' => true,
		]);

		foreach ($filter as $key => $value)
		{
			if (is_array($value))
			{
				$parts[$key] = implode(',', $value);
			}
			else if ($value instanceof Main\Type\DateTime)
			{
				$parts[$key] = $value->format('Y-m-d');
			}
			else
			{
				$parts[$key] = (string)$value;
			}
		}

		return implode('|', $parts);
	}

	protected function getPageTokenSessionKey()
	{
		return $this->gridId . '_PAGE_TOKEN';
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit