Base::getData

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Base
  4. getData
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/tracking/analytics/provider/base.php
  • Класс: Bitrix\Crm\Tracking\Analytics\Provider\Base
  • Вызов: Base::getData
public function getData()
{
	if ($this->data === null)
	{
		$dateFrom = clone $this->dateFrom;
		if ($dateFrom instanceof DateTime)
		{
			$dateFrom->setTime(0, 0, 0);
		}
		$dateTo = clone $this->dateTo;
		if ($dateTo instanceof DateTime)
		{
			$dateTo->setTime(0, 0, 0);
		}

		$cacheDir = '/crm/tracking/data/provider';
		$cacheTtl = (int) Config\Option::get('crm', 'crm_tracking_actions_cache_ttl') ?: self::CacheTtl;
		$cacheId = $this->getCode()
			. '|' . serialize($this->filter)
			. '|' . serialize($this->group)
			. '|' . get_class($this);
		$cache = Cache::createInstance();
		if ($cache->initCache($cacheTtl, $cacheId, $cacheDir))
		{
			$this->data = $cache->getVars()['data'];
		}
		else
		{
			$hasData = false;
			$this->data = [];
			foreach ($this->query() as $row)
			{
				if (is_numeric($row[self::TrackingSourceId]) || $row[self::TrackingSourceId] == '')
				{
					$row[self::TrackingSourceId] = (int) $row[self::TrackingSourceId];
				}

				$this->data[] = $row;
				$hasData = $hasData || !empty($row['SUM']) || !empty($row['CNT']);
			}

			if ($hasData)
			{
				$cache->startDataCache();
				$cache->endDataCache(['data' => $this->data]);
			}
		}
	}

	return $this->data;
}

Добавить комментарий