Your IP : 3.144.23.93


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/tasks.widget.replication/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/tasks.widget.replication/class.php

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

use Bitrix\Tasks\Item\Task\Template\Field\ReplicateParams;
use Bitrix\Tasks\Internals\Task\Template\ReplicateParamsCorrector;

//use Bitrix\Main\Localization\Loc;
//
//Loc::loadMessages(__FILE__);

CBitrixComponent::includeComponentClass("bitrix:tasks.base");

class TasksWidgetReplicationComponent extends TasksBaseComponent
{
	protected function checkParameters()
	{
		$this->arParams['DATA'] = ReplicateParams::createValueStructure($this->arParams['DATA'])->get();
		$this->arResult['TASK_LIMIT_EXCEEDED'] = static::tryParseBooleanParameter($this->arParams['TASK_LIMIT_EXCEEDED']);

		static::tryParseIntegerParameter($this->arParams['USER_ID'], 0, true);
		static::tryParseArrayParameter($this->arParams['COMPANY_WORKTIME'], static::getCompanyWorkTime());

		return $this->errors->checkNoFatals();
	}

	protected function getData()
	{
		// week day order
		$weekStart = $this->arParams['COMPANY_WORKTIME']['WEEK_START'];

		$wdMap = array(
			0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6
		);

		// wee need mapping because of different week start
		if((string) $weekStart != '')
		{
			$wdStrMap = array(
				'MO' => 0,
				'TU' => 1,
				'WE' => 2,
				'TH' => 3,
				'FR' => 4,
				'SA' => 5,
				'SU' => 6,
			);

			$offs = $wdStrMap[$weekStart];

			$wdMap = array();
			for($k = 0; $k < 7; $k++)
			{
				$wdMap[$k] = ($k + $offs) % 7;
			}
		}

		$this->arResult['AUX_DATA']['WEEKDAY_MAP'] = $wdMap;

		$currentTimeZoneOffset = \Bitrix\Tasks\Util\User::getTimeZoneOffset($this->arParams['USER_ID']);
		$serverTimeZoneOffset = \Bitrix\Tasks\Util::getServerTimeZoneOffset();
		$resultTimeZoneOffset = $currentTimeZoneOffset + $serverTimeZoneOffset;

		$this->arResult['CURRENT_TIMEZONE_OFFSET'] = 0;
		$this->arResult['AUX_DATA']['UTC_TIME_ZONE_OFFSET'] = $resultTimeZoneOffset;

		$data = $this->arParams['DATA'];

		$time = strtotime($data['TIME']);
		$timeZoneOffset = $data['TIMEZONE_OFFSET'];
		$creator = $this->arParams['TEMPLATE_CREATED_BY'];

		$creatorTimeZoneOffset = (isset($timeZoneOffset)? $timeZoneOffset : \Bitrix\Tasks\Util\User::getTimeZoneOffset($creator));

		$serverTime = date('H:i', $time - $creatorTimeZoneOffset);
		$serverStartDate = MakeTimeStamp($data['START_DATE']);
		$serverEndDate = MakeTimeStamp($data['END_DATE']);

		$this->arParams['DATA']['TIME'] = ReplicateParamsCorrector::correctTime($serverTime, $currentTimeZoneOffset, 'user');
		$this->arParams['DATA']['START_DATE'] = ReplicateParamsCorrector::correctStartDate($serverTime, $serverStartDate, $currentTimeZoneOffset, 'user');
		$this->arParams['DATA']['END_DATE'] = ReplicateParamsCorrector::correctEndDate($serverTime, $serverEndDate, $currentTimeZoneOffset, 'user');
	}
}