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/ilovecveti.ru/bitrix/modules/seo/lib/analytics/services/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/seo/lib/analytics/services/accountvkads.php
<?php

namespace Bitrix\Seo\Analytics\Services;

use Bitrix\Main\Context;
use Bitrix\Main\Error;
use Bitrix\Main\Result;
use Bitrix\Main\Type\DateTime;
use Bitrix\Seo\Analytics\Internals\Expenses;
use Bitrix\Main\Type\Date;
use Bitrix\Seo\Analytics\Internals\ExpensesCollection;
use Bitrix\Seo\Retargeting\Response;
use Bitrix\Seo\Retargeting\Services\ResponseVkads;

class AccountVkads extends \Bitrix\Seo\Analytics\Account
{
	const TYPE_CODE = 'vkads';

	const MAX_ADS_EDIT = 20;
	const CURRENCY_CODE = 'RUB';

	protected static $listRowMap = array(
		'ID' => 'ACCOUNT_ID',
		'NAME' => 'NAME',
	);

	public function getList()
	{
		$result =  $this->getRequest()->send([
			'methodName' => 'analytics.account.list.full',
		]);
		if ($result->isSuccess())
		{
			$list = [];
			while ($item = $result->fetch())
			{
				if (
					(
						isset($item['CLIENT_NAME'])
						|| isset($item['NAME'])
					)
					&& isset($item['ID'])
				)
				{
					$list[] = [
						'NAME' => !empty(trim($item['CLIENT_NAME'])) ? $item['CLIENT_NAME'] : $item['NAME'],
						'ACCOUNT_ID' => $item['ID'],
					];
				}
			}
			$result->setData($list);
		}

		return $result;
	}

	public function getProfile()
	{
		$response = $this->getRequest()->send([
			'methodName' => 'analytics.profile',
			'parameters' => []
		]);

		if ($response->isSuccess() && $data = $response->fetch())
		{
			$result = [
				'ID' => $data['ID'],
				'NAME' => $data['FIRST_NAME'] . ' ' . $data['LAST_NAME'],
				'LINK' => 'https://ads.vk.com/hq/budget/transactions/',
			];

			$result['PICTURE'] = (Context::getCurrent()->getRequest()->isHttps() ? 'https' : 'http')
				. '://'
				.  Context::getCurrent()->getServer()->getHttpHost() . '/bitrix/images/seo/integration/vklogo.svg';

			return $result;
		}

		return null;
	}

	public function getExpenses($accountId, Date $dateFrom = null, Date $dateTo = null)
	{
		$result = new ResponseVkads();
		$params = [
			'id' => $accountId,
		];

		if($dateFrom && $dateTo)
		{
			$params['period'] = 'day';
			$params['date_from'] = $dateFrom->format('Y-m-d');
			$params['date_to'] = $dateTo->format('Y-m-d');
		}
		else
		{
			$params['period'] = 'summary';
			$params['date_from'] = '0';
			$params['date_to'] = '0';
		}
		$response = $this->getRequest()->send([
			'methodName' => 'analytics.expenses.get',
			'parameters' => $params,
		]);
		if($response->isSuccess())
		{
			$data = $response->getData();
			$expenses = new Expenses();
			$expenses->add([
				'impressions' => $data['shows'],
				'clicks' => $data['clicks'],
				'actions' => $data['clicks'],
				'spend' => $data['spent'],
				'currency' => static::CURRENCY_CODE,
			]);
			$result->setData(['expenses' => $expenses]);
		}
		else
		{
			$result->addErrors($response->getErrors());
		}

		return $result;
	}

	/**
	 * @param $accountId
	 * @param array $params
	 * @param array $publicPageIds
	 * @return Response
	 * @throws \Bitrix\Main\SystemException
	 */
	public function updateAnalyticParams($accountId, array $params, array $publicPageIds = [])
	{
		return new ResponseVkads();
	}

	public function hasDailyExpensesReport(): bool
	{
		return true;
	}

	public function getDailyExpensesReport(?string $accountId, ?Date $dateFrom, ?Date $dateTo): Result
	{
		$result = new Result();
		$params = [
			'id' => $accountId,
		];

		if ($dateFrom && $dateTo)
		{
			$params['date_from'] = $dateFrom->format('Y-m-d');
			$params['date_to'] = $dateTo->format('Y-m-d');
		}
		else
		{
			$params['date_from'] = (new DateTime())->add('-1 year')->format('Y-m-d');
			$params['date_to'] = (new DateTime())->format('Y-m-d');
		}

		$response = $this->getRequest()->send([
			'methodName' => 'analytics.banners.expenses.get',
			'parameters' => $params,
			'streamTimeout' => static::LOAD_DAILY_EXPENSES_TIMEOUT,
			'listenHttpErrors' => true,
		]);

		if (!$response->isSuccess())
		{
			$innerErrors = implode(',', $response->getErrorMessages());
			$errorMessage = $this->buildErrorMessage("Error occurred while load daily expenses: {$innerErrors}");

			return $result->addError(new Error($errorMessage));
		}

		$responseData = $response->getData();
		if (!is_array($responseData) || !is_array($responseData['banners']))
		{
			$result->setData(['expenses' => new ExpensesCollection()]);

			return $result;
		}

		$bannersList = $responseData['banners'];
		$campaigns = $responseData['campaigns'];
		$groups = $responseData['groups'];

		$expensesCollection = new ExpensesCollection();
		foreach ($bannersList as $banner)
		{
			if (!isset($banner['rows']))
			{
				continue;
			}

			/** @var array{date: string, base: array} $row */
			foreach ($banner['rows'] as $row)
			{
				if (isset($row['base']))
				{
					$expensesCollection->addItem(
						new Expenses([
								'date' => new Date($row['date'], 'Y-m-d'),

								'impressions' => $row['base']['shows'],
								'clicks' => $row['base']['clicks'],
								'actions' => $row['base']['clicks'],
								'spend' => $row['base']['spent'],
								'currency' => static::CURRENCY_CODE,

								'campaignId' => $banner['campaign_id'],
								'campaignName' => $campaigns[$banner['campaign_id']]['name'] ?? '',
								'groupId' => $banner['ad_group_id'],
								'groupName' => $groups[$banner['ad_group_id']]['name'] ?? '',
								'adId' => $banner['banner_id'],
								'adName' => $banner['banner_name'],

								'utmMedium' => $banner['utm_medium'] ?? '',
								'utmSource' => $banner['utm_source'] ?? '',
								'utmCampaign' => $banner['utm_campaign'] ?? '',
								'utmContent' => $banner['utm_content'] ?? '',
							])
					);
				}
			}
		}

		$result->setData(['expenses' => $expensesCollection]);

		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit