Your IP : 18.218.149.167


Current Path : /home/bitrix/ext_www/klimatlend.ua/bitrix/modules/socialnetwork/lib/livefeed/
Upload File :
Current File : /home/bitrix/ext_www/klimatlend.ua/bitrix/modules/socialnetwork/lib/livefeed/taskstask.php

<?php
namespace Bitrix\Socialnetwork\Livefeed;

use Bitrix\Main\Loader;
use Bitrix\Main\Config\Option;

final class TasksTask extends Provider
{
	const PROVIDER_ID = 'TASK';
	const CONTENT_TYPE_ID = 'TASK';

	public static function getId()
	{
		return static::PROVIDER_ID;
	}

	public function getEventId()
	{
		return array('tasks');
	}

	public function getType()
	{
		return Provider::TYPE_POST;
	}

	public function getCommentProvider()
	{
		$provider = new \Bitrix\Socialnetwork\Livefeed\ForumPost();
		return $provider;
	}

	public function initSourceFields()
	{
		$taskId = $this->entityId;

		if (
			$taskId > 0
			&& Loader::includeModule('tasks')
		)
		{
			$res = \CTasks::getByID(intval($taskId), true);
			if ($task = $res->fetch())
			{
				$this->setSourceFields($task);
				$this->setSourceDescription($task['DESCRIPTION']);
				$this->setSourceTitle($task['TITLE']);
				$this->setSourceAttachedDiskObjects($this->getAttachedDiskObjects());
				$this->setSourceDiskObjects($this->getDiskObjects($taskId, $this->cloneDiskObjects));
			}
		}
	}

	protected function getAttachedDiskObjects($clone = false)
	{
		global $USER_FIELD_MANAGER;
		static $cache = array();

		$taskId = $this->entityId;

		$result = array();
		$cacheKey = $taskId.$clone;

		if (isset($cache[$cacheKey]))
		{
			$result = $cache[$cacheKey];
		}
		else
		{
			$taskUF = $USER_FIELD_MANAGER->getUserFields("TASKS_TASK", $taskId, LANGUAGE_ID);
			if (
				!empty($taskUF['UF_TASK_WEBDAV_FILES'])
				&& !empty($taskUF['UF_TASK_WEBDAV_FILES']['VALUE'])
				&& is_array($taskUF['UF_TASK_WEBDAV_FILES']['VALUE'])
			)
			{
				if ($clone)
				{
					$this->attachedDiskObjectsCloned = self::cloneUfValues($taskUF['UF_TASK_WEBDAV_FILES']['VALUE']);
					$result = $cache[$cacheKey] = array_values($this->attachedDiskObjectsCloned);
				}
				else
				{
					$result = $cache[$cacheKey] = $taskUF['UF_TASK_WEBDAV_FILES']['VALUE'];
				}
			}
		}

		return $result;
	}

	public static function canRead($params)
	{
		return true;
	}

	protected function getPermissions(array $post)
	{
		$result = self::PERMISSION_READ;

		return $result;
	}

	public function getLiveFeedUrl()
	{
		$pathToTask = '';
		$userPage = Option::get('socialnetwork', 'user_page', '', SITE_ID);
		if (
			!empty($userPage)
			&& ($task = $this->getSourceFields())
			&& !empty($task)
		)
		{
			$pathToTask = \CComponentEngine::makePathFromTemplate($userPage."user/#user_id#/tasks/task/#action#/#task_id#/", array(
				"user_id" => $task["CREATED_BY"],
				"action" => "view",
				"task_id" => $task["ID"]
			));
		}

		return $pathToTask;
	}
}