Your IP : 18.224.229.216


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/intranet.tasks/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/intranet.tasks/init.php

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

if(!CModule::IncludeModule("socialnetwork"))
	return false;

if (!Function_Exists("__IntaskInitTaskFields"))
{
	CComponentUtil::__IncludeLang(BX_PERSONAL_ROOT."/components/bitrix/intranet.tasks", "init.php");

	function __IntaskInitTaskFields($iblockId, $taskType, $ownerId, $arSelect)
	{
		$arTasksFields = array(
			"ID" => array(
				"NAME" => GetMessage("INTI_ID"),
				"FULL_NAME" => GetMessage("INTI_ID_F"),
				"TYPE" => "int",
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => false,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 10,
			),
			"NAME" => array(
				"NAME" => GetMessage("INTI_NAME"),
				"FULL_NAME" => GetMessage("INTI_NAME_F"),
				"TYPE" => "string",
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"IS_REQUIRED" => "Y",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 60,
			),
			"TIMESTAMP_X" => array(
				"NAME" => GetMessage("INTI_TIMESTAMP_X"),
				"FULL_NAME" => GetMessage("INTI_TIMESTAMP_X_F"),
				"TYPE" => "datetime",
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => false,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 40,
			),
			"CODE" => array(
				"NAME" => GetMessage("INTI_CODE"),
				"FULL_NAME" => GetMessage("INTI_CODE_F"),
				"TYPE" => "string",
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 10,
			),
			"XML_ID" => array(
				"NAME" => GetMessage("INTI_XML_ID"),
				"FULL_NAME" => GetMessage("INTI_XML_ID_F"),
				"TYPE" => "string",
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 10,
			),
			"MODIFIED_BY" => array(
				"NAME" => GetMessage("INTI_MODIFIED_BY"),
				"FULL_NAME" => GetMessage("INTI_MODIFIED_BY_F"),
				"TYPE" => "user",
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => false,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 30,
			),
			"DATE_CREATE" => array(
				"NAME" => GetMessage("INTI_DATE_CREATE"),
				"FULL_NAME" => GetMessage("INTI_DATE_CREATE_F"),
				"TYPE" => "datetime",
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => false,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 20,
			),
			"CREATED_BY" => array(
				"NAME" => GetMessage("INTI_CREATED_BY"),
				"FULL_NAME" => GetMessage("INTI_CREATED_BY_F"),
				"TYPE" => "user",
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => false,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 10,
			),
			"DATE_ACTIVE_FROM" => array(
				"NAME" => GetMessage("INTI_DATE_ACTIVE_FROM"),
				"FULL_NAME" => GetMessage("INTI_DATE_ACTIVE_FROM_F"),
				"TYPE" => "datetime",
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 80,
			),
			"DATE_ACTIVE_TO" => array(
				"NAME" => GetMessage("INTI_DATE_ACTIVE_TO"),
				"FULL_NAME" => GetMessage("INTI_DATE_ACTIVE_TO_F"),
				"TYPE" => "datetime",
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 90,
			),
			"ACTIVE_DATE" => array(
				"NAME" => GetMessage("INTI_ACTIVE_DATE"),
				"FULL_NAME" => GetMessage("INTI_ACTIVE_DATE_F"),
				"TYPE" => "bool",
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => false,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => false,
				"FILTERABLE" => true,
				"PSORT" => 10,
			),
			"IBLOCK_SECTION" => array(
				"NAME" => GetMessage("INTI_IBLOCK_SECTION"),
				"FULL_NAME" => GetMessage("INTI_IBLOCK_SECTION_F"),
				"TYPE" => "group",
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => true,
				"PSORT" => 55,
			),
			"DETAIL_TEXT" => array(
				"NAME" => GetMessage("INTI_DETAIL_TEXT"),
				"FULL_NAME" => GetMessage("INTI_DETAIL_TEXT_F"),
				"TYPE" => "text",
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"IS_REQUIRED" => "N",
				"SELECTABLE" => true,
				"FILTERABLE" => false,
				"PSORT" => 70,
			),
		);

		$arTasksProps = array(
			"TASKPRIORITY" => array(
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"LIST_NAME" => GetMessage("INTI_TASKPRIORITY_L"),
				"FILTERABLE" => true,
				"DISPLAY" => true,
				"PSORT" => 100,
			),
			"TASKSTATUS" => array(
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => true,
				"LIST_NAME" => GetMessage("INTI_TASKSTATUS_L"),
				"FILTERABLE" => true,
				"DISPLAY" => true,
				"PSORT" => 110,
			),
			"TASKCOMPLETE" => array(
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => true,
				"LIST_NAME" => GetMessage("INTI_TASKCOMPLETE_L"),
				"FILTERABLE" => true,
				"DISPLAY" => true,
				"PSORT" => 130,
			),
			"TASKASSIGNEDTO" => array(
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => true,
				"TYPE" => "user",
				"LIST_NAME" => GetMessage("INTI_TASKASSIGNEDTO_L"),
				"FILTERABLE" => true,
				"DISPLAY" => true,
				"PSORT" => 50,
			),
			"TASKALERT" => array(
				"EDITABLE_AUTHOR" => true,
				"EDITABLE_RESPONSIBLE" => false,
				"TYPE" => "bool",
				"LIST_NAME" => GetMessage("INTI_TASKALERT_L"),
				"FILTERABLE" => false,
				"DISPLAY" => true,
				"PSORT" => 160,
			),
			"TASKSIZE" => array(
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => true,
				"LIST_NAME" => GetMessage("INTI_TASKSIZE_L"),
				"FILTERABLE" => true,
				"DISPLAY" => true,
				"PSORT" => 140,
			),
			"TASKSIZEREAL" => array(
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => true,
				"LIST_NAME" => GetMessage("INTI_TASKSIZEREAL_L"),
				"FILTERABLE" => true,
				"DISPLAY" => true,
				"PSORT" => 150,
			),
			"TASKFINISH" => array(
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => false,
				"LIST_NAME" => GetMessage("INTI_TASKFINISH_L"),
				"FILTERABLE" => true,
				"DISPLAY" => true,
				"PSORT" => 130,
			),
			"TASKREPORT" => array(
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => true,
				"LIST_NAME" => GetMessage("INTI_TASKREPORT_L"),
				"FILTERABLE" => false,
				"DISPLAY" => true,
				"PSORT" => 120,
			),
			"TASKREMIND" => array(
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => true,
				"LIST_NAME" => GetMessage("INTI_TASKREMIND_L"),
				"FILTERABLE" => false,
				"DISPLAY" => true,
				"PSORT" => 170,
			),
			"VERSION" => array(
				"EDITABLE_AUTHOR" => false,
				"EDITABLE_RESPONSIBLE" => false,
				"LIST_NAME" => GetMessage("INTI_VERSION_L"),
				"FILTERABLE" => false,
				"DISPLAY" => false,
				"PSORT" => 10,
			),
		);

		if (!Is_Array($arSelect))
			$arSelect = array();

		$arNeedBeSelected = array("ID", "NAME", "TIMESTAMP_X", "MODIFIED_BY", "DATE_CREATE", "CREATED_BY", "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO", "IBLOCK_SECTION", "DETAIL_TEXT", "TASKPRIORITY", "TASKSTATUS", "TASKCOMPLETE", "TASKASSIGNEDTO", "TASKALERT", "TASKSIZE", "TASKSIZEREAL", "TASKFINISH", "TASKREPORT", "TASKREMIND", 'VERSION');

		foreach ($arNeedBeSelected as $v)
		{
			if (!In_Array($v, $arSelect))
				$arSelect[] = $v;
		}

		$iblockId = IntVal($iblockId);
		if ($iblockId <= 0)
			return false;

		$taskType = StrToLower($taskType);
		if (!in_array($taskType, array("group", "user")))
			$taskType = "user";

		$ownerId = IntVal($ownerId);
		if ($ownerId <= 0)
		{
			$taskType = "user";
			$ownerId = $GLOBALS["USER"]->GetID();
		}
		$ownerId = IntVal($ownerId);
		if ($ownerId <= 0)
			return false;


		$arResult = array();

		$bArSelectIsEmpty = true;
		foreach ($arSelect as $field)
		{
			$field = StrToUpper(Trim($field));
			if (Array_Key_Exists($field, $arTasksFields))
			{
				$arResult[$field] = $arTasksFields[$field];
				$arResult[$field]["IS_FIELD"] = true;
				$bArSelectIsEmpty = false;
			}
		}

		if ($bArSelectIsEmpty)
		{
			foreach ($arTasksFields as $key => $value)
			{
				$arResult[$key] = $value;
				$arResult[$key]["IS_FIELD"] = true;
			}
		}

		if (Array_Key_Exists('IBLOCK_SECTION', $arResult))
		{
			$arResult['IBLOCK_SECTION']["IBLOCK_ID"] = $iblockId;
			$arResult['IBLOCK_SECTION']["ROOT_ID"] = (($taskType == "group") ? $ownerId : (($taskType == "user") ? "users_tasks" : ""));
		}

		$arTasksCustomProps = array();
		$dbTasksCustomProps = CIBlockProperty::GetList(
			array("sort" => "asc", "name" => "asc"),
			array("ACTIVE" => "Y", "IBLOCK_ID" => $iblockId)
		);
		while ($arTasksCustomProp = $dbTasksCustomProps->Fetch())
		{
			$ind = ((StrLen($arTasksCustomProp["CODE"]) > 0) ? $arTasksCustomProp["CODE"] : $arTasksCustomProp["ID"]);
			$arTasksCustomProps[StrToUpper($ind)] = $arTasksCustomProp;
			if (StrLen($arTasksCustomProp["USER_TYPE"]) > 0)
				$arTasksCustomProps[StrToUpper($ind)]["USER_TYPE_DETAILS"] = CIBlockProperty::GetUserType($arTasksCustomProp["USER_TYPE"]);
		}

		if (!$bArSelectIsEmpty)
		{
			foreach ($arSelect as $field)
			{
				$field = StrToUpper(Trim($field));
				if (Array_Key_Exists($field, $arTasksCustomProps))
				{
					$arResult[$field] = $arTasksCustomProps[$field];
					$arResult[$field]["IS_FIELD"] = false;
					$arResult[$field]["SELECTABLE"] = true;
					$arResult[$field]["FILTERABLE"] = ($arResult[$field]["FILTERABLE"] == "Y");
					if (Array_Key_Exists($field, $arTasksProps))
					{
						$arResult[$field]["FULL_NAME"] = $arResult[$field]["NAME"];
						$arResult[$field]["NAME"] = $arTasksProps[$field]["LIST_NAME"];

						foreach ($arTasksProps[$field] as $key => $value)
							$arResult[$field][$key] = $value;
					}
					else
					{
						$arResult[$field]["FULL_NAME"] = $arResult[$field]["NAME"];
						$arResult[$field]["EDITABLE_AUTHOR"] = true;
						$arResult[$field]["EDITABLE_RESPONSIBLE"] = true;
					}
				}
			}
		}
		else
		{
			foreach ($arTasksProps as $key => $value)
			{
				if (Array_Key_Exists($key, $arTasksCustomProps))
				{
					$arResult[$key] = $arTasksCustomProps[$key];
					$arResult[$key]["IS_FIELD"] = false;
					$arResult[$key]["SELECTABLE"] = true;
					$arResult[$key]["FILTERABLE"] = ($arResult[$field]["FILTERABLE"] == "Y");

					$arResult[$key]["FULL_NAME"] = $arResult[$key]["NAME"];
					$arResult[$key]["NAME"] = $value["LIST_NAME"];

					foreach ($value as $k => $v)
						$arResult[$key][$k] = $v;
				}
			}
		}

		foreach (array("TASKASSIGNEDTO", "TASKSTATUS") as $key)
		{
			if (!Array_Key_Exists($key, $arResult))
			{
				if (Array_Key_Exists($key, $arTasksCustomProps))
				{
					$arResult[$key] = $arTasksCustomProps[$key];
					$arResult[$key]["IS_FIELD"] = false;
					$arResult[$key]["SELECTABLE"] = true;
					$arResult[$key]["FILTERABLE"] = true;

					$arResult[$key]["FULL_NAME"] = $arResult[$key]["NAME"];
					$arResult[$key]["NAME"] = $arTasksProps[$key]["LIST_NAME"];

					foreach ($arTasksProps[$key] as $k => $v)
						$arResult[$key][$k] = $v;
				}
				else
				{
					return false;
				}
			}
		}

		return $arResult;
	}

	function __TaskPropertyUser($value)
	{
		$arReturn = array();

		if (!Is_Array($value))
			$value = array($value);

		foreach ($value as $val)
		{
			$dbUser = CUser::GetByID($val);
			if ($arUser = $dbUser->GetNext())
			{
				$name = Trim($arUser["NAME"]);
				$lastName = Trim($arUser["LAST_NAME"]);
				$login = Trim($arUser["LOGIN"]);

				$formatName = $name;
				if (StrLen($formatName) > 0 && StrLen($lastName) > 0)
					$formatName .= " ";
				$formatName .= $lastName;
				if (StrLen($formatName) <= 0)
					$formatName = $login;

				$arReturn[] = $formatName;//." [".$arUser["ID"]."]";
			}
		}

		return ((Count($arReturn) > 1) ? $arReturn : ((Count($arReturn) == 1) ? $arReturn[0] : ""));
	}

	function __TaskPropertySection($value, $iblockId, $mainIBlockId, &$arBaseSection)
	{
		$arReturn = array();
		$arBaseSection = array();

		if (!Is_Array($value))
			$value = array($value);

		foreach ($value as $val)
		{
			$dbSectionsList = CIBlockSection::GetNavChain($iblockId, $val);
			$ar = array();
			$bFirst = true;
			while ($arSection = $dbSectionsList->GetNext())
			{
				if ($bFirst)
					$arBaseSection[] = $arSection;
				if (!$bFirst || $mainIBlockId != $iblockId)
					$ar[$arSection["ID"]] = $arSection["NAME"];
				$bFirst = false;
			}

			$arReturn[] = $ar;
		}

		return $arReturn;
	}

	function __InTaskInitPerms($taskType, $ownerId)
	{
		$arResult = array(
			"view" => false,
			"view_all" => false,
			"create_tasks" => false,
			"edit_tasks" => false,
			"delete_tasks" => false,
			"modify_folders" => false,
			"modify_common_views" => false,
		);

		$taskType = StrToLower($taskType);
		if (!in_array($taskType, array("group", "user")))
			$taskType = "user";

		$ownerId = IntVal($ownerId);
		if ($ownerId <= 0)
		{
			$taskType = "user";
			$ownerId = $GLOBALS["USER"]->GetID();
		}
		$ownerId = IntVal($ownerId);
		if ($ownerId <= 0)
			return $arResult;

		if ($taskType == "group")
		{
			$arGroupTmp = CSocNetGroup::GetByID($ownerId);
			if ($arGroupTmp["CLOSED"] == "Y" && COption::GetOptionString("socialnetwork", "work_with_closed_groups", "N") != "Y")
				$HideArchiveLinks = true;
		}
		foreach ($arResult as $key => $val)
		{
			if (!$HideArchiveLinks && $GLOBALS["USER"]->IsAdmin())
				$arResult[$key] = true;
			else
				$arResult[$key] = CSocNetFeaturesPerms::CanPerformOperation(
					$GLOBALS["USER"]->GetID(),
					(($taskType == 'user') ? SONET_ENTITY_USER : SONET_ENTITY_GROUP),
					$ownerId,
					"tasks",
					$key
				);
		}

		if ($HideArchiveLinks)
			$arResult["HideArchiveLinks"] = true;
		return $arResult;
	}

	function __InTaskCheckActiveFeature($taskType, $ownerId)
	{
		$taskType = StrToLower($taskType);
		if (!in_array($taskType, array("group", "user")))
			$taskType = "user";

		$ownerId = IntVal($ownerId);
		if ($ownerId <= 0)
		{
			$taskType = "user";
			$ownerId = $GLOBALS["USER"]->GetID();
		}
		$ownerId = IntVal($ownerId);
		if ($ownerId <= 0)
			return false;

		return CSocNetFeatures::IsActiveFeature((($taskType == 'user') ? SONET_ENTITY_USER : SONET_ENTITY_GROUP), $ownerId, "tasks");
	}

	function __InTaskGetPropertyValue($arFields, $key)
	{
		$value = 0;

		if (Array_Key_Exists($key, $arFields))
		{
			if (Is_Array($arFields[$key]))
			{
				foreach ($arFields[$key] as $v)
				{
					$v = IntVal($v);
					if ($v > 0)
					{
						$value = $v;
						break;
					}
				}
			}
			else
			{
				$value = IntVal($arFields[$key]);
			}
		}

		return $value;
	}

	function __InTaskGetStringPropertyValue($arFields, $key)
	{
		$value = 0;

		if (Array_Key_Exists($key, $arFields))
		{
			if (Is_Array($arFields[$key]))
			{
				foreach ($arFields[$key] as $v)
				{
					if (is_array($v))
					{
						$value = $v["VALUE"];
						break;
					}
					elseif (StrLen($v) > 0)
					{
						$value = $v;
						break;
					}
				}
			}
			else
			{
				$value = $arFields[$key];
			}
		}

		return $value;
	}

	function __InTaskGetTask($taskId, $iblockId, $taskType, $ownerId)
	{
		$taskId = IntVal($taskId);
		$iblockId = IntVal($iblockId);
		$taskType = Trim($taskType);
		$ownerId = IntVal($ownerId);
		if ($taskId <= 0 || $iblockId <= 0 || $ownerId <= 0 || StrLen($taskType) <= 0)
			return false;

		$globalParentSection = 0;
		$dbSectionsList = CIBlockSection::GetList(
			array(),
			array(
				"GLOBAL_ACTIVE" => "Y",
				"EXTERNAL_ID" => (($taskType == "group") ? $ownerId : "users_tasks"),
				"IBLOCK_ID" => $iblockId,
				"SECTION_ID" => 0
			),
			false
		);
		if ($arSection = $dbSectionsList->GetNext())
			$globalParentSection = $arSection["ID"];

		if ($globalParentSection <= 0)
			return false;

		$dbTasksList = CIBlockElement::GetList(
			array(),
			array(
				"SECTION_ID" => $globalParentSection,
				"INCLUDE_SUBSECTIONS" => "Y",
				"ID" => $taskId
			),
			false,
			false,
			array("ID", "IBLOCK_ID", "NAME", "CODE", "XML_ID", "MODIFIED_BY", "DATE_CREATE", "CREATED_BY", "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO", "ACTIVE_DATE", "DETAIL_TEXT")
		);

		$arResult = false;
		if ($obTask = $dbTasksList->GetNextElement())
		{
			$arTaskFields = $obTask->GetFields();
			$arTaskProps = $obTask->GetProperties();

			$arTaskPropsTmp = array();
			foreach ($arTaskProps as $k => $v)
				$arTaskPropsTmp[StrToUpper($k)] = $v;
			$arTaskProps = $arTaskPropsTmp;

			$arResult = array(
				"FIELDS" => $arTaskFields,
				"PROPS" => $arTaskProps
			);
		}

		return $arResult;
	}

	function __InTaskPrepareIBlock($iblockId)
	{
		$iblockId = IntVal($iblockId);
		if ($iblockId <= 0)
			return;

		$dbIBlock = CIBlock::GetList(array(), array("ID" => $iblockId, "ACTIVE" => "Y"));
		if ($arIBlock = $dbIBlock->Fetch())
		{
			$arIBlockProperties = array();

			$dbIBlockProps = CIBlock::GetProperties($iblockId);
			while ($arIBlockProps = $dbIBlockProps->Fetch())
			{
				$ind = ((StrLen($arIBlockProps["CODE"]) > 0) ? $arIBlockProps["CODE"] : $arIBlockProps["ID"]);
				$arIBlockProperties[StrToUpper($ind)] = $arIBlockProps;
			}

			$arTasksProps = array(
				"TASKPRIORITY" => array(
					"NAME" => GetMessage("INTI_TASKPRIORITY"),
					"ACTIVE" => "Y",
					"SORT" => 100,
					"CODE" => "TaskPriority",
					"PROPERTY_TYPE" => "L",
					"USER_TYPE" => false,
					"ROW_COUNT" => 1,
					"COL_COUNT" => 30,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "Y",
					"SEARCHABLE" => "Y",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "Y",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
					"VALUES" => array(
						array(
							"VALUE" => "   ".GetMessage("INTI_TASKPRIORITY_1"),
							"DEF" => "N",
							"SORT" => 100,
							"XML_ID" => "1"
						),
						array(
							"VALUE" => "  ".GetMessage("INTI_TASKPRIORITY_2"),
							"DEF" => "Y",
							"SORT" => 200,
							"XML_ID" => "2"
						),
						array(
							"VALUE" => " ".GetMessage("INTI_TASKPRIORITY_3"),
							"DEF" => "N",
							"SORT" => 300,
							"XML_ID" => "3"
						),
					),
				),
				"TASKSTATUS" => array(
					"NAME" => GetMessage("INTI_TASKSTATUS"),
					"ACTIVE" => "Y",
					"SORT" => 200,
					"CODE" => "TaskStatus",
					"PROPERTY_TYPE" => "L",
					"USER_TYPE" => false,
					"ROW_COUNT" => 1,
					"COL_COUNT" => 30,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "Y",
					"SEARCHABLE" => "Y",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "Y",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
					"VALUES" => array(
						array(
							"VALUE" => GetMessage("INTI_TASKSTATUS_1"),
							"DEF" => "Y",
							"SORT" => 100,
							"XML_ID" => "NotAccepted"
						),
						array(
							"VALUE" => GetMessage("INTI_TASKSTATUS_2"),
							"DEF" => "N",
							"SORT" => 200,
							"XML_ID" => "NotStarted"
						),
						array(
							"VALUE" => GetMessage("INTI_TASKSTATUS_3"),
							"DEF" => "N",
							"SORT" => 300,
							"XML_ID" => "InProgress"
						),
						array(
							"VALUE" => GetMessage("INTI_TASKSTATUS_4"),
							"DEF" => "N",
							"SORT" => 400,
							"XML_ID" => "Completed"
						),
						array(
							"VALUE" => GetMessage("INTI_TASKSTATUS_5"),
							"DEF" => "N",
							"SORT" => 500,
							"XML_ID" => "Waiting"
						),
						array(
							"VALUE" => GetMessage("INTI_TASKSTATUS_6"),
							"DEF" => "N",
							"SORT" => 600,
							"XML_ID" => "Deferred"
						),
					),
				),
				"TASKCOMPLETE" => array(
					"NAME" => GetMessage("INTI_TASKCOMPLETE"),
					"ACTIVE" => "Y",
					"SORT" => 300,
					"CODE" => "TaskComplete",
					"PROPERTY_TYPE" => "N",
					"USER_TYPE" => false,
					"ROW_COUNT" => 1,
					"COL_COUNT" => 5,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "Y",
					"SEARCHABLE" => "Y",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"TASKASSIGNEDTO" => array(
					"NAME" => GetMessage("INTI_TASKASSIGNEDTO"),
					"ACTIVE" => "Y",
					"SORT" => 400,
					"CODE" => "TaskAssignedTo",
					"PROPERTY_TYPE" => "S",
					"USER_TYPE" => "UserID",
					"ROW_COUNT" => 1,
					"COL_COUNT" => 30,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "Y",
					"SEARCHABLE" => "Y",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "Y",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"TASKALERT" => array(
					"NAME" => GetMessage("INTI_TASKALERT"),
					"ACTIVE" => "Y",
					"SORT" => 500,
					"CODE" => "TaskAlert",
					"PROPERTY_TYPE" => "S",
					"USER_TYPE" => false,
					"DEFAULT_VALUE" => "Y",
					"ROW_COUNT" => 1,
					"COL_COUNT" => 30,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "N",
					"SEARCHABLE" => "N",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"TASKSIZE" => array(
					"NAME" => GetMessage("INTI_TASKSIZE"),
					"ACTIVE" => "Y",
					"SORT" => 600,
					"CODE" => "TaskSize",
					"PROPERTY_TYPE" => "N",
					"USER_TYPE" => false,
					"ROW_COUNT" => 1,
					"COL_COUNT" => 5,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "Y",
					"SEARCHABLE" => "Y",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"TASKSIZEREAL" => array(
					"NAME" => GetMessage("INTI_TASKSIZEREAL"),
					"ACTIVE" => "Y",
					"SORT" => 700,
					"CODE" => "TaskSizeReal",
					"PROPERTY_TYPE" => "N",
					"USER_TYPE" => false,
					"ROW_COUNT" => 1,
					"COL_COUNT" => 5,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "Y",
					"SEARCHABLE" => "Y",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"TASKFINISH" => array(
					"NAME" => GetMessage("INTI_TASKFINISH"),
					"ACTIVE" => "Y",
					"SORT" => 800,
					"CODE" => "TaskFinish",
					"PROPERTY_TYPE" => "S",
					"USER_TYPE" => "DateTime",
					"ROW_COUNT" => 1,
					"COL_COUNT" => 30,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "Y",
					"SEARCHABLE" => "Y",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"TASKFILES" => array(
					"NAME" => GetMessage("INTI_TASKFILES"),
					"ACTIVE" => "Y",
					"SORT" => 900,
					"CODE" => "TaskFiles",
					"PROPERTY_TYPE" => "F",
					"USER_TYPE" => false,
					"ROW_COUNT" => 10,
					"COL_COUNT" => 60,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "N",
					"SEARCHABLE" => "N",
					"MULTIPLE"  => "Y",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"TASKREPORT" => array(
					"NAME" => GetMessage("INTI_TASKREPORT"),
					"ACTIVE" => "Y",
					"SORT" => 1000,
					"CODE" => "TaskReport",
					"PROPERTY_TYPE" => "S",
					"USER_TYPE" => false,
					"ROW_COUNT" => 10,
					"COL_COUNT" => 60,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "N",
					"SEARCHABLE" => "N",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"TASKREMIND" => array(
					"NAME" => GetMessage("INTI_TASKREMIND"),
					"ACTIVE" => "Y",
					"SORT" => 300,
					"CODE" => "TaskRemind",
					"PROPERTY_TYPE" => "S",
					"USER_TYPE" => "DateTime",
					"ROW_COUNT" => 1,
					"COL_COUNT" => 30,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "N",
					"SEARCHABLE" => "N",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
				"VERSION" => array(
					"NAME" => GetMessage("INTI_VERSION"),
					"ACTIVE" => "Y",
					"SORT" => 1100,
					"CODE" => "VERSION",
					"PROPERTY_TYPE" => "N",
					"USER_TYPE" => false,
					"ROW_COUNT" => 1,
					"COL_COUNT" => 10,
					"LINK_IBLOCK_ID" => 0,
					"WITH_DESCRIPTION" => "N",
					"FILTRABLE" => "N",
					"SEARCHABLE" => "N",
					"MULTIPLE"  => "N",
					"MULTIPLE_CNT" => 5,
					"IS_REQUIRED" => "N",
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
					"LIST_TYPE" => "L",
					"IBLOCK_ID" => $iblockId,
				),
			);

			foreach ($arTasksProps as $propKey => $arProp)
			{
				if (!Array_Key_Exists($propKey, $arIBlockProperties))
				{
					$ibp = new CIBlockProperty;
					$ibp->Add($arProp);
				}
			}
		}
	}

	function __InTaskInstallViews($iblockId, $taskType, $ownerId)
	{
		$iblockId = IntVal($iblockId);
		$ownerId = IntVal($ownerId);
		if (!In_Array($taskType, array("user", "group")))
			$taskType = "user";

		$newID = 0;

		$dbUserOptionsList = CUserOptions::GetList(
			array("ID" => "DESC"),
			array()
		);
		if ($arUserOptionTmp = $dbUserOptionsList->Fetch())
			$newID = IntVal($arUserOptionTmp["ID"]);

		$arTaskStatus = array();
		$dbRes = CIBlockProperty::GetPropertyEnum("TASKSTATUS", Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblockId));
		while ($arRes = $dbRes->Fetch())
			$arTaskStatus[StrToUpper($arRes["XML_ID"])] = $arRes;

		if ($taskType == "group")
		{
			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_ASSIGNED2ME_ACT"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKPRIORITY" => 4,
						"DATE_ACTIVE_FROM" => 5,
						"DATE_ACTIVE_TO" => 6,
						"TASKSTATUS" => 7,
						"TASKCOMPLETE" => 8,
					),
					"ORDER_BY_0" => "TIMESTAMP_X",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DESC",
					"FILTER" => Array(
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"TASKASSIGNEDTO" => "current",
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "Y",
				),
				true
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_BY_PRIORITY"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKPRIORITY" => 4,
						"DATE_ACTIVE_FROM" => 5,
						"DATE_ACTIVE_TO" => 6,
						"TASKSTATUS" => 7,
						"TASKCOMPLETE" => 8,
					),
					"ORDER_BY_0" => "TASKPRIORITY",
					"ORDER_DIR_0" => "ASC",
					"ORDER_BY_1" => "DATE_ACTIVE_TO",
					"ORDER_DIR_1" => "ASC",
					"FILTER" => Array(
						"TASKASSIGNEDTO" => "current",
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "Y",
				),
				true
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_ASSIGNED2ME_FIN"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"CREATED_BY" => 2,
						"TASKSIZE" => 3,
						"TASKSIZEREAL" => 4,
						"TASKFINISH" => 5,
					),
					"ORDER_BY_0" => "TASKFINISH",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "DATE_ACTIVE_TO",
					"ORDER_DIR_1" => "DESC",
					"FILTER" => Array(
						"TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"TASKASSIGNEDTO" => "current",
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "Y",
				),
				true
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_CREATED_BY_ACT"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"TASKASSIGNEDTO" => 3,
						"DATE_ACTIVE_FROM" => 4,
						"DATE_ACTIVE_TO" => 5,
						"TASKSTATUS" => 6,
						"TASKCOMPLETE" => 7,
					),
					"ORDER_BY_0" => "TIMESTAMP_X",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DESC",
					"FILTER" => Array(
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"CREATED_BY" => "current",
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "Y",
				),
				true
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_CREATED_BY_FIN"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TASKASSIGNEDTO" => 2,
						"TASKSIZE" => 3,
						"TASKSIZEREAL" => 4,
						"TASKFINISH" => 5,
					),
					"ORDER_BY_0" => "TASKFINISH",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DATE_ACTIVE_TO",
					"FILTER" => Array(
						"TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"CREATED_BY" => "current",
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "Y",
				),
				true
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_TODAY"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKPRIORITY" => 4,
						"DATE_ACTIVE_FROM" => 5,
						"DATE_ACTIVE_TO" => 6,
						"TASKSTATUS" => 7,
						"TASKCOMPLETE" => 8,
					),
					"ORDER_BY_0" => "TASKPRIORITY",
					"ORDER_DIR_0" => "ASC",
					"ORDER_BY_1" => "DATE_ACTIVE_TO",
					"ORDER_DIR_1" => "ASC",
					"FILTER" => Array(
						"TASKASSIGNEDTO" => "current",
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"<DATE_ACTIVE_FROM" => "current",
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "Y",
				),
				true
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => "gant",
					"TITLE" => GetMessage("INTASK_I_GANT"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKASSIGNEDTO" => 4,
						"TASKPRIORITY" => 5,
						"DATE_ACTIVE_FROM" => 6,
						"DATE_ACTIVE_TO" => 7,
						"TASKSTATUS" => 8,
						"TASKCOMPLETE" => 9,
					),
					"ORDER_BY_0" => "DATE_ACTIVE_TO",
					"ORDER_DIR_0" => "ASC",
					"ORDER_BY_1" => "TASKPRIORITY",
					"ORDER_DIR_1" => "ASC",
					"ORDER_BY_3" => "DATE_ACTIVE_FROM",
					"ORDER_DIR_3" => "ASC",
					"FILTER" => Array(
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "Y",
				),
				true
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_FIN"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TASKASSIGNEDTO" => 2,
						"TASKSIZE" => 3,
						"TASKSIZEREAL" => 4,
						"TASKFINISH" => 5,
					),
					"ORDER_BY_0" => "TASKFINISH",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DATE_ACTIVE_TO",
					"FILTER" => Array(
						"TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "Y",
				),
				true
			);
		}
		elseif ($taskType == "user" && $ownerId == $GLOBALS["USER"]->GetID())
		{
			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_ASSIGNED2ME_ACT"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKPRIORITY" => 4,
						"DATE_ACTIVE_FROM" => 5,
						"DATE_ACTIVE_TO" => 6,
						"TASKSTATUS" => 7,
						"TASKCOMPLETE" => 8,
					),
					"ORDER_BY_0" => "TIMESTAMP_X",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DESC",
					"FILTER" => Array(
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"TASKASSIGNEDTO" => "current",
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "N",
				),
				false
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_BY_PRIORITY"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKPRIORITY" => 4,
						"DATE_ACTIVE_FROM" => 5,
						"DATE_ACTIVE_TO" => 6,
						"TASKSTATUS" => 7,
						"TASKCOMPLETE" => 8,
					),
					"ORDER_BY_0" => "TASKPRIORITY",
					"ORDER_DIR_0" => "ASC",
					"ORDER_BY_1" => "DATE_ACTIVE_TO",
					"ORDER_DIR_1" => "ASC",
					"FILTER" => Array(
						"TASKASSIGNEDTO" => "current",
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "N",
				),
				false
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_ASSIGNED2ME_FIN"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"CREATED_BY" => 2,
						"TASKSIZE" => 3,
						"TASKSIZEREAL" => 4,
						"TASKFINISH" => 5,
					),
					"ORDER_BY_0" => "TASKFINISH",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "DATE_ACTIVE_TO",
					"ORDER_DIR_1" => "DESC",
					"FILTER" => Array(
						"TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"TASKASSIGNEDTO" => "current",
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "N",
				),
				false
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_CREATED_BY_ACT"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"TASKASSIGNEDTO" => 3,
						"DATE_ACTIVE_FROM" => 4,
						"DATE_ACTIVE_TO" => 5,
						"TASKSTATUS" => 6,
						"TASKCOMPLETE" => 7,
					),
					"ORDER_BY_0" => "TIMESTAMP_X",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DESC",
					"FILTER" => Array(
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"CREATED_BY" => "current",
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "N",
				),
				false
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_CREATED_BY_FIN"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TASKASSIGNEDTO" => 2,
						"TASKSIZE" => 3,
						"TASKSIZEREAL" => 4,
						"TASKFINISH" => 5,
					),
					"ORDER_BY_0" => "TASKFINISH",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DATE_ACTIVE_TO",
					"FILTER" => Array(
						"TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"CREATED_BY" => "current",
					),
					"THROUGH_SAMPLING" => ($taskType == "user" ? "Y" : "N"),
					"COMMON" => "N",
				),
				false
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_TODAY"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKPRIORITY" => 4,
						"DATE_ACTIVE_FROM" => 5,
						"DATE_ACTIVE_TO" => 6,
						"TASKSTATUS" => 7,
						"TASKCOMPLETE" => 8,
					),
					"ORDER_BY_0" => "TASKPRIORITY",
					"ORDER_DIR_0" => "ASC",
					"ORDER_BY_1" => "DATE_ACTIVE_TO",
					"ORDER_DIR_1" => "ASC",
					"FILTER" => Array(
						"TASKASSIGNEDTO" => "current",
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
						"<DATE_ACTIVE_FROM" => "current",
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "N",
				),
				false
			);

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => "gant",
					"TITLE" => GetMessage("INTASK_I_GANT"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKASSIGNEDTO" => 4,
						"TASKPRIORITY" => 5,
						"DATE_ACTIVE_FROM" => 6,
						"DATE_ACTIVE_TO" => 7,
						"TASKSTATUS" => 8,
						"TASKCOMPLETE" => 9,
					),
					"ORDER_BY_0" => "DATE_ACTIVE_TO",
					"ORDER_DIR_0" => "ASC",
					"ORDER_BY_1" => "TASKPRIORITY",
					"ORDER_DIR_1" => "ASC",
					"ORDER_BY_3" => "DATE_ACTIVE_FROM",
					"ORDER_DIR_3" => "ASC",
					"FILTER" => Array(
						"TASKASSIGNEDTO" => "current",
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "N",
				),
				false
			);

			$userIBlockSectionId = 0;
			$dbSectionsList = CIBlockSection::GetList(
				array(),
				array(
					"GLOBAL_ACTIVE" => "Y",
					"EXTERNAL_ID" => "users_tasks",
					"IBLOCK_ID" => $iblockId,
					"SECTION_ID" => 0
				),
				false
			);
			if ($arSection = $dbSectionsList->GetNext())
				$userIBlockSectionId = $arSection["ID"];

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_PERSONAL"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKPRIORITY" => 4,
						"DATE_ACTIVE_FROM" => 5,
						"DATE_ACTIVE_TO" => 6,
						"TASKSTATUS" => 7,
						"TASKCOMPLETE" => 8,
					),
					"ORDER_BY_0" => "TIMESTAMP_X",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DESC",
					"FILTER" => Array(
						"TASKASSIGNEDTO" => $ownerId,
						"IBLOCK_SECTION" => $userIBlockSectionId,
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "N",
				),
				false
			);
		}
		elseif ($taskType == "user")
		{
			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => "gant",
					"TITLE" => GetMessage("INTASK_I_GANT"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKASSIGNEDTO" => 4,
						"TASKPRIORITY" => 5,
						"DATE_ACTIVE_FROM" => 6,
						"DATE_ACTIVE_TO" => 7,
						"TASKSTATUS" => 8,
						"TASKCOMPLETE" => 9,
					),
					"ORDER_BY_0" => "DATE_ACTIVE_TO",
					"ORDER_DIR_0" => "ASC",
					"ORDER_BY_1" => "TASKPRIORITY",
					"ORDER_DIR_1" => "ASC",
					"ORDER_BY_3" => "DATE_ACTIVE_FROM",
					"ORDER_DIR_3" => "ASC",
					"FILTER" => Array(
						"!TASKSTATUS" => $arTaskStatus["COMPLETED"]["ID"],
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "N",
				),
				false
			);

			$userIBlockSectionId = 0;
			$dbSectionsList = CIBlockSection::GetList(
				array(),
				array(
					"GLOBAL_ACTIVE" => "Y",
					"EXTERNAL_ID" => "users_tasks",
					"IBLOCK_ID" => $iblockId,
					"SECTION_ID" => 0
				),
				false
			);
			if ($arSection = $dbSectionsList->GetNext())
				$userIBlockSectionId = $arSection["ID"];

			$newID++;

			CUserOptions::SetOption(
				"IntranetTasks",
				"Settings_".$newID,
				Array(
					"TEMPLATE" => ".default",
					"TITLE" => GetMessage("INTASK_I_PERSONAL"),
					"IBLOCK_ID" => $iblockId,
					"TASK_TYPE" => $taskType,
					"OWNER_ID" => $ownerId,
					"COLUMNS" => Array(
						"NAME" => 1,
						"TIMESTAMP_X" => 2,
						"CREATED_BY" => 3,
						"TASKPRIORITY" => 4,
						"DATE_ACTIVE_FROM" => 5,
						"DATE_ACTIVE_TO" => 6,
						"TASKSTATUS" => 7,
						"TASKCOMPLETE" => 8,
					),
					"ORDER_BY_0" => "TIMESTAMP_X",
					"ORDER_DIR_0" => "DESC",
					"ORDER_BY_1" => "ID",
					"ORDER_DIR_1" => "DESC",
					"FILTER" => Array(
						"TASKASSIGNEDTO" => $ownerId,
						"IBLOCK_SECTION" => $userIBlockSectionId,
					),
					"THROUGH_SAMPLING" => "Y",
					"COMMON" => "N",
				),
				false
			);
		}
	}

	function __InTaskCompare($arTask1, $arTask2, $arOrder)
	{
		foreach ($arOrder as $ord)
		{
			if (Array_Key_Exists($ord["ORDER"], $arTask1["FIELDS"]))
			{
				$v1 = $arTask1["FIELDS"][$ord["ORDER"]];
				$v2 = $arTask2["FIELDS"][$ord["ORDER"]];
				if ($ord["TYPE"] == "datetime")
				{
					$v1 = CDatabase::FormatDate($v1, CLang::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS");
					$v2 = CDatabase::FormatDate($v2, CLang::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS");
				}

				if ($ord["NULLS"])
				{
					if (StrLen($v1) <= 0 && StrLen($v2) > 0)
						return (($ord["DIRECTION"] == "ASC") ? true : false);
					elseif (StrLen($v1) > 0 && StrLen($v2) <= 0)
						return (($ord["DIRECTION"] == "ASC") ? false : true);
				}

				if ($v1 > $v2)
					return (($ord["DIRECTION"] == "ASC") ? true : false);
				elseif ($v1 < $v2)
					return (($ord["DIRECTION"] == "ASC") ? false : true);
			}
			else
			{
				foreach ($arTask1["PROPS"] as $key => $value)
				{
					if (StrToUpper($key) == $ord["ORDER"])
					{
						$v1 = $value["VALUE"];
						$v2 = $arTask2["PROPS"][$key]["VALUE"];
						if ($ord["TYPE"] == "datetime")
						{
							$v1 = CDatabase::FormatDate($v1, CLang::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS");
							$v2 = CDatabase::FormatDate($v2, CLang::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS");
						}

						if ($ord["NULLS"])
						{
							if (StrLen($v1) <= 0 && StrLen($v2) > 0)
								return (($ord["DIRECTION"] == "ASC") ? true : false);
							elseif (StrLen($v1) > 0 && StrLen($v2) <= 0)
								return (($ord["DIRECTION"] == "ASC") ? false : true);
						}

						if ($v1 > $v2)
							return (($ord["DIRECTION"] == "ASC") ? true : false);
						elseif ($v1 < $v2)
							return (($ord["DIRECTION"] == "ASC") ? false : true);

						break;
					}
				}
			}
		}

		return true;
	}

	function __InTaskAdd2Log($entityType, $entityId, $type, $title, $message, $url)
	{
		if ($type == "add")
			$template = GetMessage("INTASK_2LOG_ADD");
		elseif ($type == "update")
			$template = GetMessage("INTASK_2LOG_UPDATE");
		elseif ($type == "delete")
			$template = GetMessage("INTASK_2LOG_DELETE");

		$logID = CSocNetLog::Add(
			array(
				"ENTITY_TYPE" 		=> $entityType,
				"ENTITY_ID" 		=> $entityId,
				"EVENT_ID" 			=> "tasks",
				"=LOG_DATE" 		=> $GLOBALS["DB"]->CurrentTimeFunction(),
				"TITLE_TEMPLATE" 	=> $template,
				"TITLE" 			=> $title,
				"MESSAGE"			=> nl2br($message),
				"TEXT_MESSAGE" 		=> $message,
				"URL" 				=> $url,
				"MODULE_ID" 		=> false,
				"CALLBACK_FUNC" 	=> false
			)
		);
		if (intval($logID) > 0)
			CSocNetLog::Update($logID, array("TMP_ID" => $logID));
	}
}
?>