• Модуль: webservice
  • Путь к файлу: ~/bitrix/modules/webservice/classes/general/sharepoint/client.php
  • Класс: CSPListsClient
  • Вызов: CSPListsClient::GetListItemChangesSinceToken
public function GetListItemChangesSinceToken($listName, $arParams = array())
{
	$arMethodParams = array('listName' => $listName);

	if ($arParams['TOKEN'])
		$arMethodParams['changeToken'] = $arParams['TOKEN'];

	if ($arParams['NUM_ROWS'])
		$arMethodParams['rowLimit'] = intval($arParams['NUM_ROWS']);

	$queryOptions = new CXMLCreator('QueryOptions');
	if (isset($arParams['PAGING']))
	{
		$queryOptions->addChild(CXMLCreator::createTagAttributed('Paging ListItemCollectionPositionNext="'.htmlspecialchars($arParams['PAGING']).'"'));
	}

	$arMethodParams['queryOptions'] = $queryOptions;

	if (is_array($arParams['FIELDS']))
	{
		$viewFields = new CXMLCreator('ViewFields');
		$viewFields->setAttribute('Properties', 'TRUE');

		foreach ($arParams['FIELDS'] as $fld)
			$viewFields->addChild(CXMLCreator::createTagAttributed('FieldRef Name="'.$fld.'"'));

		$arMethodParams['viewFields'] = $viewFields;
	}

	if (
		$this->__initialize()
		&& $this->Call('GetListItemChangesSinceToken', $arMethodParams)
		&& ($DOM = $this->RESPONSE->DOMDocument)
	)
	{
		$RESULT = array();

		// $fp = fopen($_SERVER['DOCUMENT_ROOT'].'/sp_client1.log', 'a');
		// fwrite($fp, $this->getRawRequest());
		// fwrite($fp, $this->getRawResponse());
		// fwrite($fp, "n==========================================nn");
		// fclose($fp);

		$CHANGES = $DOM->elementsByName('Changes');

		$RESULT['MORE_ROWS'] = false;
		if (is_array($CHANGES) && count($CHANGES) > 0)
		{
			$CHANGES = $CHANGES[0];
			$RESULT['TOKEN'] = $CHANGES->getAttribute('LastChangeToken');
			$RESULT['MORE_ROWS'] |= ($CHANGES->getAttribute('MoreChanges') == 'TRUE');
		}

		$DATA_NODE = $DOM->elementsByName('data');
		if (is_array($DATA_NODE) && count($DATA_NODE) > 0)
		{
			$DATA_NODE = $DATA_NODE[0];

			$RESULT['COUNT'] = $DATA_NODE->getAttribute('ItemCount');
			$RESULT['PAGING'] = $DATA_NODE->getAttribute('ListItemCollectionPositionNext');
			$RESULT['MORE_ROWS'] |= ($RESULT['PAGING'] <> '');

			$RESULT['DATA'] = $this->ConvertRows($DATA_NODE);

			if (count($RESULT['DATA']) <= 0)
				$RESULT['MORE_ROWS'] = false;
		}

		return $this->GetListItemChangesSinceTokenProcessResult($RESULT);
	}

	return false;
}