Your IP : 3.143.254.46
<?php
IncludeModuleLangFile(__FILE__);
/**
* @deprecated
*/
class TasksException extends \Bitrix\Tasks\Exception
{
const TE_TASK_NOT_FOUND_OR_NOT_ACCESSIBLE = 0x000001;
const TE_ACCESS_DENIED = 0x100002;
const TE_ACTION_NOT_ALLOWED = 0x000004;
const TE_ACTION_FAILED_TO_BE_PROCESSED = 0x000008;
const TE_TRYED_DELEGATE_TO_WRONG_PERSON = 0x000010;
const TE_FILE_NOT_ATTACHED_TO_TASK = 0x000020;
const TE_UNKNOWN_ERROR = 0x000040;
const TE_FILTER_MANIFEST_MISMATCH = 0x000080;
const TE_WRONG_ARGUMENTS = 0x000100;
const TE_ITEM_NOT_FOUND_OR_NOT_ACCESSIBLE = 0x000200;
const TE_SQL_ERROR = 0x000400;
const TE_FLAG_SERIALIZED_ERRORS_IN_MESSAGE = 0x100000;
private static $errSymbolsMap = array(
'TE_TASK_NOT_FOUND_OR_NOT_ACCESSIBLE' => 0x000001,
'TE_ACCESS_DENIED' => 0x100002,
'TE_ACTION_NOT_ALLOWED' => 0x000004,
'TE_ACTION_FAILED_TO_BE_PROCESSED' => 0x000008,
'TE_TRYED_DELEGATE_TO_WRONG_PERSON' => 0x000010,
'TE_FILE_NOT_ATTACHED_TO_TASK' => 0x000020,
'TE_UNKNOWN_ERROR' => 0x000040,
'TE_FILTER_MANIFEST_MISMATCH' => 0x000080,
'TE_WRONG_ARGUMENTS' => 0x000100,
'TE_ITEM_NOT_FOUND_OR_NOT_ACCESSIBLE' => 0x000200,
'TE_SQL_ERROR' => 0x000400,
'TE_FLAG_SERIALIZED_ERRORS_IN_MESSAGE' => 0x100000
);
public function checkIsActionNotAllowed()
{
return $this->checkOfType(self::TE_ACTION_NOT_ALLOWED);
}
public function checkOfType($type)
{
return $this->getCode() & $type;
}
protected function dumpAuxError()
{
// if case of do not dump AUX ERROR, because we can not add trailing ID to a serialized message
return !(intval($this->additional['CODE']) & self::TE_FLAG_SERIALIZED_ERRORS_IN_MESSAGE);
}
public function __construct($message = false, $code = 0)
{
$parameters = array();
if(!$message)
{
$message = $GLOBALS['APPLICATION']->GetException();
}
// exception extra data goes to log
if($this->checkOfType(self::TE_FLAG_SERIALIZED_ERRORS_IN_MESSAGE) && $message !== false)
{
$parameters['AUX']['ERROR'] = unserialize($message);
}
parent::__construct(
$message,
$parameters,
array(
'CODE' => $code
)
);
}
/**
* @deprecated
*/
public static function renderErrorCode($e)
{
$errCode = $e->getCode();
$strErrCode = $errCode . '/';
if ($e instanceof TasksException)
{
$strErrCode .= 'TE';
foreach (self::$errSymbolsMap as $symbol => $code)
{
if ($code & $errCode)
$strErrCode .= '/'.mb_substr($symbol, 3);
}
}
elseif ($e instanceof CTaskAssertException)
$strErrCode .= 'CTAE';
else
$strErrCode .= 'Unknown';
return ($strErrCode);
}
}
class CTasksPerHitOption
{
public static function set($moduleId, $optionName, $value)
{
self::managePerHitOptions('write', $moduleId, $optionName, $value);
}
public static function get($moduleId, $optionName)
{
return (self::managePerHitOptions('read', $moduleId, $optionName));
}
public static function getHitTimestamp()
{
static $t = null;
if ($t === null)
$t = time();
return ($t);
}
private static function managePerHitOptions($operation, $moduleId, $optionName, $value = null)
{
static $arOptions = array();
$oName = $moduleId . '::' . $optionName;
if ( ! array_key_exists($oName, $arOptions) )
$arOptions[$oName] = null;
$rc = null;
if ($operation === 'read')
$rc = $arOptions[$oName];
elseif ($operation === 'write')
$arOptions[$oName] = $value;
else
CTaskAssert::assert(false);
return ($rc);
}
}
function tasksFormatDate($in_date)
{
$date = $in_date;
$strDate = false;
if (!is_int($in_date))
$date = MakeTimeStamp($in_date);
if ( ($date === false) || ($date === -1) || ($date === 0) )
$date = MakeTimeStamp ($in_date);
// It can be other date on server (relative to client), ...
$bTzWasDisabled = ! CTimeZone::enabled();
if ($bTzWasDisabled)
CTimeZone::enable();
$ts = time() + CTimeZone::getOffset(); // ... so shift cur timestamp to compensate it.
if ($bTzWasDisabled)
CTimeZone::disable();
$curDateStrAtClient = date('d.m.Y', $ts);
$yesterdayDateStrAtClient = date('d.m.Y', strtotime('-1 day', $ts));
if ($curDateStrAtClient === date('d.m.Y', $date))
{
$strDate = FormatDate("today", $date);
}
elseif ($yesterdayDateStrAtClient === date('d.m.Y', $date))
{
$strDate = FormatDate("yesterday", $date);
}
// disabled, since it is not clear for foreigners
// elseif (date("Y", $now) == date("Y", $date))
// {
// $strDate = ToLower(FormatDate("j F", $date));
// }
else
{
if (defined('FORMAT_DATE'))
{
$strDate = \Bitrix\Tasks\UI::formatDateTime($date, FORMAT_DATE);
}
else
$strDate = FormatDate("d.m.Y", $date);
}
return $strDate;
}
/**
* @param $arParams
* @return mixed|string
* @deprecated
*/
function tasksPeriodToStr($arParams)
{
return \Bitrix\Tasks\UI\Task\Template::makeReplicationPeriodString($arParams);
}
function taskMessSuffix($number)
{
switch ($number)
{
case 2:
return "_ND";
case 3:
return "_RD";
default:
return "_TH";
}
}
function tasksFormatName($name, $lastName, $login, $secondName = "", $nameTemplate = "", $bEscapeSpecChars = false)
{
if ($nameTemplate != "")
{
$result = CUser::FormatName($nameTemplate, array( "NAME" => $name,
"LAST_NAME" => $lastName,
"SECOND_NAME" => $secondName,
"LOGIN" => $login),
true,
$bEscapeSpecChars);
return $result;
}
if ($name || $lastName)
{
$rc = $name.($name && $lastName ? " " : "").$lastName;
}
else
{
$rc = $login;
}
if ($bEscapeSpecChars)
$rc = htmlspecialcharsbx($rc);
return ($rc);
}
function tasksFormatNameShort($name, $lastName, $login, $secondName = "", $nameTemplate = "", $bEscapeSpecChars = false)
{
if ($nameTemplate != "")
{
$result = CUser::FormatName($nameTemplate, array( "NAME" => $name,
"LAST_NAME" => $lastName,
"SECOND_NAME" => $secondName,
"LOGIN" => $login),
true,
$bEscapeSpecChars);
return $result;
}
if ($name && $lastName)
{
if ( ! $bEscapeSpecChars )
$rc = $lastName." ".mb_substr(htmlspecialcharsBack($name), 0, 1).".";
else
$rc = $lastName." ".mb_substr($name, 0, 1).".";
}
elseif ($lastName)
{
$rc = $lastName;
}
elseif ($name)
{
$rc = $name;
}
else
{
$rc = $login;
}
if ($bEscapeSpecChars)
$rc = htmlspecialcharsbx($rc);
return ($rc);
}
function tasksFormatHours($hours)
{
$hoursOriginal = $hours = intval($hours);
$hours %= 100;
if ($hours >= 5 && $hours <= 20)
return $hoursOriginal. " ".GetMessage("TASKS_HOURS_P");
$hours %= 10;
if ($hours == 1)
return $hoursOriginal. " ".GetMessage("TASKS_HOURS_N");
if ($hours >= 2 && $hours <= 4)
return $hoursOriginal. " ".GetMessage("TASKS_HOURS_G");
return $hoursOriginal. " ".GetMessage("TASKS_HOURS_P");
}
function tasksTimeCutZeros($time)
{
if (IsAmPmMode())
{
return trim(mb_substr($time, 11, 11) == "12:00:00 am"? mb_substr($time, 0, 10) : mb_substr($time, 0, 22));
}
else
{
return mb_substr($time, 11, 8) == "00:00:00"? mb_substr($time, 0, 10) : mb_substr($time, 0, 16);
}
}
/**@deprecated
*
* @param $task
* @param $arPaths
* @param string $site_id
* @param bool $bGantt
* @param bool $top
* @param bool $bSkipJsMenu
* @param array $params
*/
function tasksGetItemMenu($task, $arPaths, $site_id = SITE_ID, $bGantt = false, $top = false, $bSkipJsMenu = false, array $params = array())
{
$userId = \Bitrix\Tasks\Util\User::getId();
$arAllowedTaskActions = array();
if (isset($task['META:ALLOWED_ACTIONS']))
$arAllowedTaskActions = $task['META:ALLOWED_ACTIONS'];
elseif ($task['ID'])
{
$oTask = CTaskItem::getInstanceFromPool($task['ID'], $userId);
$arAllowedTaskActions = $oTask->getAllowedTaskActionsAsStrings();
$task['META:ALLOWED_ACTIONS'] = $arAllowedTaskActions;
}
$viewUrl = CComponentEngine::makePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => $task["ID"], 'user_id'=>$userId, 'group_id'=>$task['GROUP_ID'], "action" => "view"));
$editUrl = CComponentEngine::makePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => $task["ID"], 'user_id'=>$userId, 'group_id'=>$task['GROUP_ID'], "action" => "edit"));
$copyUrl = CComponentEngine::makePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => 0, "action" => "edit", 'user_id'=>$userId, 'group_id'=>$task['GROUP_ID']));
$createUrl = CComponentEngine::makePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => 0, "action" => "edit", 'user_id'=>$userId, 'group_id'=>$task['GROUP_ID']));
$createUrl = $createUrl.(mb_strpos($createUrl, "?") === false ? "?" : "&")."PARENT_ID=".$task["ID"];
$inFavorite = false;
if(is_array($params['VIEW_STATE']) && $params['VIEW_STATE']['SECTION_SELECTED']['CODENAME'] == 'VIEW_SECTION_ADVANCED_FILTER' && $params['VIEW_STATE']['SPECIAL_PRESET_SELECTED']['CODENAME'] == 'FAVORITE')
{
$inFavorite = true;
}
?>
{
text : "<?=GetMessage("TASKS_VIEW_TASK")?>",
title : "<?=GetMessage("TASKS_VIEW_TASK_EX")?>",
className : "menu-popup-item-view",
href : "<? echo CUtil::JSEscape($viewUrl)?>"
<?
if ($bGantt && !$params['DISABLE_IFRAME_POPUP'])
{
?>,
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.ShowPopupTask) || (top && top.ShowPopupTask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>, event);
this.popupWindow.close();}
)
<?
}
else
{
?>,
onclick : function(window, top, event) {
this.popupWindow.close();
}
<?
}?>
},
<? if ($arAllowedTaskActions['ACTION_EDIT']):?>
{
text : "<?=GetMessage("TASKS_EDIT_TASK")?>",
title : "<?=GetMessage("TASKS_EDIT_TASK_EX")?>",
className : "menu-popup-item-edit",
href : "<? echo CUtil::JSEscape($editUrl)?>"
<?
if ($bGantt && !$params['DISABLE_IFRAME_POPUP'])
{
?>,
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.EditPopupTask) || (top && top.EditPopupTask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>, event);
this.popupWindow.close();}
)
<?
}
else
{
?>,
onclick : function(window, top, event) {
this.popupWindow.close();
}
<?
}?>
},
<? endif?>
{
text : "<?=GetMessage("TASKS_ADD_SUBTASK"); ?>",
title : "<?=GetMessage("TASKS_ADD_SUBTASK"); ?>",
className : "menu-popup-item-create",
href : "<? echo CUtil::JSEscape($createUrl)?>"
<?
if ($bGantt && !$params['DISABLE_IFRAME_POPUP'])
{
?>,
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.AddPopupSubtask) || (top && top.AddPopupSubtask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>, event);
this.popupWindow.close();}
)
<?
}
else
{
?>,
onclick : function(window, top, event) {
this.popupWindow.close();
}
<?
}?>
},
<?
if ($bGantt && ($arAllowedTaskActions['ACTION_EDIT'] || $arAllowedTaskActions['ACTION_CHANGE_DEADLINE']))
{
?>
{
text : "<? if(!$task["DEADLINE"]):?><?=GetMessage("TASKS_ADD_DEADLINE")?><? else:?><?=GetMessage("TASKS_REMOVE_DEADLINE")?><? endif?>",
title : "<? if(!$task["DEADLINE"]):?><?=GetMessage("TASKS_ADD_DEADLINE")?><? else:?><?=GetMessage("TASKS_REMOVE_DEADLINE")?><? endif?>",
className : "<? if(!$task["DEADLINE"]):?>task-menu-popup-item-add-deadline<? else:?>task-menu-popup-item-remove-deadline<? endif?>",
onclick : BX.CJSTask.fixWindow(function(window, top, event, item)
{
var BX = top.BX;
if (BX.hasClass(item.layout.item, "task-menu-popup-item-add-deadline"))
{
BX.removeClass(item.layout.item, "task-menu-popup-item-add-deadline");
BX.addClass(item.layout.item, "task-menu-popup-item-remove-deadline");
item.layout.text.innerHTML = "<?=GetMessage("TASKS_REMOVE_DEADLINE")?>";
var deadline = BX.GanttChart.convertDateFromUTC(this.params.task.dateEnd);
deadline.setDate(deadline.getDate() + 3);
if(typeof top.COMPANY_WORKTIME != 'undefined')
deadline = BX.CJSTask.addTimeToDate(deadline, top.COMPANY_WORKTIME);
this.params.task.setDateDeadline(deadline);
this.params.task.redraw();
this.popupWindow.close();
// this should pass through
var data = {
mode : "deadline",
sessid : BX.message("bitrix_sessid"),
id : this.params.task.id,
deadline : top.tasksFormatDate(deadline)
};
BX.ajax.post(top.ajaxUrl, data);
}
else
{
BX.removeClass(item.layout.item, "task-menu-popup-item-remove-deadline");
BX.addClass(item.layout.item, "task-menu-popup-item-add-deadline");
item.layout.text.innerHTML = "<?=GetMessage("TASKS_ADD_DEADLINE")?>";
this.params.task.setDateDeadline(null);
this.params.task.redraw();
this.popupWindow.close();
var data = {
mode : "deadline",
sessid : BX.message("bitrix_sessid"),
id : this.params.task.id,
deadline : ""
};
BX.ajax.post(top.ajaxUrl, data);
}
})
},
<?
}
if ($arAllowedTaskActions['ACTION_ADD_FAVORITE'])
{
?>{
text : "<?=GetMessage("ACTION_ADD_FAVORITE")?>",
title : "<?=GetMessage("ACTION_ADD_FAVORITE")?>",
className : "task-menu-popup-item-favorite",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.AddToFavorite) || (top && top.AddToFavorite) || BX.DoNothing;
fn(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},
<?
}
if ($arAllowedTaskActions['ACTION_DELETE_FAVORITE'])
{
?>{
text : "<?=GetMessage("ACTION_DELETE_FAVORITE")?>",
title : "<?=GetMessage("ACTION_DELETE_FAVORITE")?>",
className : "task-menu-popup-item-favorite",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.DeleteFavorite) || (top && top.DeleteFavorite) || BX.DoNothing;
fn(<?=intval($task["ID"])?>, {mode: 'delete-subtree', rowDelete: <?=($inFavorite ? 'true' : 'false')?>});
this.popupWindow.close();
})
},
<?
}
if ($arAllowedTaskActions['ACTION_COMPLETE'])
{
?>{
text : "<?=GetMessage("TASKS_CLOSE_TASK")?>",
title : "<?=GetMessage("TASKS_CLOSE_TASK")?>",
className : "menu-popup-item-complete",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.CloseTask) || (top && top.CloseTask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},<?
}
if ($arAllowedTaskActions['ACTION_START'])
{
?>{
text : "<?=GetMessage("TASKS_START_TASK")?>",
title : "<?=GetMessage("TASKS_START_TASK")?>",
className : "menu-popup-item-begin",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.StartTask) || (top && top.StartTask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},<?
}
if ($arAllowedTaskActions['ACTION_PAUSE'])
{
?>{
text : "<?=GetMessage("TASKS_PAUSE_TASK")?>",
title : "<?=GetMessage("TASKS_PAUSE_TASK")?>",
className : "task-menu-popup-item-pause",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.PauseTask) || (top && top.PauseTask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},<?
}
if ($arAllowedTaskActions['ACTION_RENEW'])
{
?>{
text : "<?=GetMessage("TASKS_RENEW_TASK")?>",
title : "<?=GetMessage("TASKS_RENEW_TASK")?>",
className : "menu-popup-item-reopen",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.RenewTask) || (top && top.RenewTask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},<?
}
if ($arAllowedTaskActions['ACTION_DEFER'])
{
?>{
text : "<?=GetMessage("TASKS_DEFER_TASK")?>",
title : "<?=GetMessage("TASKS_DEFER_TASK")?>",
className : "menu-popup-item-hold",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.DeferTask) || (top && top.DeferTask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},<?
}
if ($arAllowedTaskActions['ACTION_APPROVE'])
{
?>{
text : "<?=GetMessage("TASKS_APPROVE_TASK")?>",
title : "<?=GetMessage("TASKS_APPROVE_TASK")?>",
className : "menu-popup-item-accept",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.tasksListNS) || (top && top.tasksListNS) || BX.DoNothing;
fn.approveTask(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},<?
}
if ($arAllowedTaskActions['ACTION_DISAPPROVE'])
{
?>{
text : "<?=GetMessage("TASKS_REDO_TASK")?>",
title : "<?=GetMessage("TASKS_REDO_TASK")?>",
className : "menu-popup-item-remake",
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.tasksListNS) || (top && top.tasksListNS) || BX.DoNothing;
fn.disapproveTask(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},<?
}
?>
{
text : "<?=GetMessage("TASKS_COPY_TASK")?>",
title : "<?=GetMessage("TASKS_COPY_TASK_EX")?>",
className : "menu-popup-item-copy",
href : "<? echo $copyUrl.(mb_strpos($copyUrl, "?") === false ? "?" : "&")."COPY=".$task["ID"]?>"
<?
if ($bGantt)
{
?>,
onclick : BX.CJSTask.fixWindow(function(window, top, event) {
var fn = (window && window.CopyPopupTask) || (top && top.CopyPopupTask) || BX.DoNothing;
fn(<?=intval($task["ID"])?>, event);
this.popupWindow.close();
})
<?
}
?>
},
<?
// Only responsible person and accomplices can add task to day plan
// And we must be not at extranet site
if (
(
$task["RESPONSIBLE_ID"] == $userId
|| (
is_array($task['ACCOMPLICES'])
&& in_array($userId, $task['ACCOMPLICES'])
)
)
&& (!CModule::IncludeModule('extranet') || !CExtranet::IsExtranetSite())
)
{
$arTasksInPlan = CTaskPlannerMaintance::getCurrentTasksList();
// If not in day plan already
if (!(is_array($arTasksInPlan) && in_array($task["ID"], $arTasksInPlan)))
{
?>
{
text : "<?=GetMessage("TASKS_ADD_TASK_TO_TIMEMAN")?>",
title : "<?=GetMessage("TASKS_ADD_TASK_TO_TIMEMAN_EX")?>",
className : "menu-popup-item-add-to-tm",
onclick : BX.CJSTask.fixWindow(function(window, top, event, item) {
var fn = (window && window.Add2Timeman) || (top && top.Add2Timeman) || BX.DoNothing;
fn(this, <?=intval($task["ID"])?>);
})
},<?
}
}
if ($arAllowedTaskActions['ACTION_REMOVE'])
{
?>
{
text : "<?=GetMessage("TASKS_DELETE_TASK")?>",
title : "<?=GetMessage("TASKS_DELETE_TASK")?>",
className : "menu-popup-item-delete",
onclick : BX.CJSTask.fixWindow(function(window, top, event)
{
var fn = (window && window.DeleteTask) || (top && top.DeleteTask) || BX.DoNothing;
this.menuItems = [];
this.bindElement.onclick = function() { return (false); };
fn(<?=intval($task["ID"])?>);
this.popupWindow.close();
})
},<?
}
?>
{}
<?
}
function tasksRenderListItem($task, $childrenCount, $arPaths, $depth = 0,
$plain = false, $defer = false, $site_id = SITE_ID, $updatesCount = 0,
$projectExpanded = true, $taskAdded = false,
$componentName = "bitrix:tasks.list.item", $componentTemplate = ".default",
$userNameTemplate = "", $arAllowedTaskActions = null, $ynIframe = 'N'
)
{
global $APPLICATION;
$APPLICATION->IncludeComponent(
$componentName, $componentTemplate, array(
"TASK" => $task,
"CHILDREN_COUNT" => $childrenCount,
"PATHS" => $arPaths,
"DEPTH" => $depth,
"PLAIN" => $plain,
"DEFER" => $defer,
"SITE_ID" => $site_id,
"UPDATES_COUNT" => $updatesCount,
"PROJECT_EXPANDED" => $projectExpanded,
"TASK_ADDED" => $taskAdded,
'ALLOWED_ACTIONS' => $arAllowedTaskActions,
'IFRAME' => $ynIframe,
"NAME_TEMPLATE" => $userNameTemplate
), null, array("HIDE_ICONS" => "Y")
);
}
function templatesGetListItemActions($template, $arPaths)
{
$addTaskUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK_ADD_BY_TEMPLATE"], array("task_id" => 0, "action" => "edit"));
$addTaskUrl .= (mb_strpos($addTaskUrl, "?") === false ? "?" : "&")."TEMPLATE=".$template["ID"];
$viewUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TEMPLATES_TEMPLATE"], array("template_id" => $template["ID"], "action" => "view"));
$editUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TEMPLATES_TEMPLATE"], array("template_id" => $template["ID"], "action" => "edit"));
$addSubTmplUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => 0, "action" => "edit"))."?BASE_TEMPLATE=".intval($template["ID"]);
$copyUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => 0, "action" => "edit"))."?COPY=".intval($template["ID"]);
?>
{ text : "<?php echo GetMessage("TASKS_VIEW_TASK")?>", title : "<?php echo GetMessage("TASKS_VIEW_TASK")?>", className : "menu-popup-item-view", href : "<?php echo CUtil::JSEscape($viewUrl)?>" },
<?if(!intval($template['BASE_TEMPLATE_ID']) && $template['TPARAM_TYPE'] != CTaskTemplates::TYPE_FOR_NEW_USER):?>
{ text : "<?php echo GetMessage("TASKS_ADD_TEMPLATE_TASK")?>", title : "<?php echo GetMessage("TASKS_ADD_TEMPLATE_TASK")?>", className : "menu-popup-item-create", href : "<?php echo CUtil::JSEscape($addTaskUrl)?>" },
<?endif?>
<?if($template['TPARAM_TYPE'] != CTaskTemplates::TYPE_FOR_NEW_USER):?>
{ text : "<?=GetMessage("TASKS_ADD_SUB_TEMPLATE")?>", title : "<?php echo GetMessage("TASKS_ADD_SUB_TEMPLATE")?>", className : "menu-popup-item-create", href : "<?=CUtil::JSEscape($addSubTmplUrl)?>" },
<?endif?>
{ text : "<?=GetMessage("TASKS_TEMPLATE_COPY")?>", title : "<?php echo GetMessage("TASKS_TEMPLATE_COPY")?>", className : "menu-popup-item-copy", href : "<?=CUtil::JSEscape($copyUrl)?>" },
<?if($template['ALLOWED_ACTIONS']['UPDATE']):?>
{ text : "<?php echo GetMessage("TASKS_EDIT_TASK")?>", title : "<?php echo GetMessage("TASKS_EDIT_TASK")?>", className : "menu-popup-item-edit", href : "<?php echo CUtil::JSEscape($editUrl)?>" },
<?endif?>
<?if($template['ALLOWED_ACTIONS']['DELETE']):?>
{ text : "<?php echo GetMessage("TASKS_DELETE_TASK")?>", title : "<?php echo GetMessage("TASKS_DELETE_TASK")?>", className : "menu-popup-item-delete", onclick : function() { if(confirm("<?php echo GetMessage("TASKS_DELETE_TASKS_CONFIRM")?>")){this.menuItems = []; DeleteTemplate(<?php echo $template["ID"]?>);} this.popupWindow.close(); } },
<?endif?>
<?
}
function templatesRenderListItem($template, $arPaths, $depth = 0, $plain = false, $defer = false, $nameTemplate = "")
{
$anchor_id = RandString(8);
$addUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => 0, "action" => "edit"));
$addUrl .= (mb_strpos($addUrl, "?") === false ? "?" : "&")."TEMPLATE=".$template["ID"];
$editUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TEMPLATES_TEMPLATE"], array("template_id" => $template["ID"], "action" => "edit"));
?>
<script type="text/javascript"<?php echo $defer ? " defer=\"defer\"" : ""?>>
tasksMenuPopup[<?php echo $template["ID"]?>] = [
<?templatesGetListItemActions($template, $arPaths)?>
];
</script>
<tr class="task-list-item task-depth-<?php echo $depth?>" id="template-<?php echo $template["ID"]?>" ondblclick="jsUtils.Redirect([], '<?php echo CUtil::JSEscape(CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TEMPLATES_TEMPLATE"], array("template_id" => $template["ID"], "action" => "edit")))?>');" title="<?php echo GetMessage("TASKS_DOUBLE_CLICK")?>">
<td class="task-title-column">
<div class="task-title-container">
<div class="task-title-info">
<?php if ($template["MULTITASK"] == "Y"):?><span class="task-title-multiple" title="<?php echo GetMessage("TASKS_MULTITASK")?>"></span><?php endif?><a href="<?php echo CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TEMPLATES_TEMPLATE"], array("template_id" => $template["ID"], "action" => "edit"))?>" class="task-title-link" title=""><?php echo $template["TITLE"]?></a>
</div>
</div>
</td>
<td class="task-menu-column"><a href="javascript: void(0)" class="task-menu-button" onclick="return ShowMenuPopup(<?php echo $template["ID"]?>, this);" title="<?php echo GetMessage("TASKS_MENU")?>"><i class="task-menu-button-icon"></i></a></td>
<td class="task-flag-column"> </td>
<td class="task-priority-column">
<i class="task-priority-icon task-priority-<?php if ($template["PRIORITY"] == 0):?>low<?php elseif ($template["PRIORITY"] == 2):?>high<?php else:?>medium<?php endif?>" title="<?php echo GetMessage("TASKS_PRIORITY")?>: <?php echo GetMessage("TASKS_PRIORITY_".$template["PRIORITY"])?>"></i>
</td>
<td class="task-deadline-column"><?php if ($template["DEADLINE"]):?><span class="task-deadline-datetime"><span class="task-deadline-date"><?php echo tasksFormatDate($template["DEADLINE"])?></span></span><?php if(date("H:i", strtotime($template["DEADLINE"])) != "00:00"):?> <span class="task-deadline-time"><?php echo date("H:i", strtotime($template["DEADLINE"]))?></span><?php endif?><?php else:?> <?php endif?></td>
<td class="task-responsible-column"><a class="task-responsible-link" href="<?php echo CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_USER_PROFILE"], array("user_id" => $template["RESPONSIBLE_ID"]))?>" id="anchor_responsible_<?php echo $anchor_id?>" bx-tooltip-user-id="<?=$template["RESPONSIBLE_ID"]?>"><?php echo tasksFormatNameShort($template["RESPONSIBLE_NAME"], $template["RESPONSIBLE_LAST_NAME"], $template["RESPONSIBLE_LOGIN"], $template["RESPONSIBLE_SECOND_NAME"], $nameTemplate)?></a></td>
<td class="task-director-column"><a class="task-director-link" href="<?php echo CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_USER_PROFILE"], array("user_id" => $template["CREATED_BY"]))?>" id="anchor_created_<?php echo $anchor_id?>" bx-tooltip-user-id="<?=$template["CREATED_BY"]?>"><?php echo tasksFormatNameShort($template["CREATED_BY_NAME"], $template["CREATED_BY_LAST_NAME"], $template["CREATED_BY_LOGIN"], $template["CREATED_BY_SECOND_NAME"], $nameTemplate)?></a></td>
<td class="task-grade-column"> </td>
<td class="task-complete-column"> </td>
</tr>
<?php
}
/**@deprecated
*
* @param $arTask
* @param $childrenCount
* @param $arPaths
* @param bool $bParent
* @param bool $bGant
* @param bool $top
* @param string $nameTemplate
* @param array $arAdditionalFields
* @param bool $bSkipJsMenu
* @param array $params
*
*/
function tasksRenderJSON(
$arTask, $childrenCount, $arPaths, $bParent = false, $bGant = false,
$top = false, $nameTemplate = "", $arAdditionalFields = array(), $bSkipJsMenu = false, array $params = array()
)
{
$userId = \Bitrix\Tasks\Util\User::getId();
if (array_key_exists('USER_ID', $params))
{
$profileUserId = (int)$params['USER_ID'];
}
else
{
$profileUserId = $userId;
}
$arAllowedTaskActions = array();
if (isset($arTask['META:ALLOWED_ACTIONS']))
$arAllowedTaskActions = $arTask['META:ALLOWED_ACTIONS'];
elseif ($arTask['ID'])
{
$oTask = CTaskItem::getInstanceFromPool($arTask['ID'], $userId);
$arAllowedTaskActions = $oTask->getAllowedTaskActionsAsStrings();
$arTask['META:ALLOWED_ACTIONS'] = $arAllowedTaskActions;
}
$runningTaskId = $runningTaskTimer = null;
if ($arTask['ALLOW_TIME_TRACKING'] === 'Y')
{
$oTimer = CTaskTimerManager::getInstance($userId);
$runningTaskData = $oTimer->getRunningTask(false);
$runningTaskId = $runningTaskData['TASK_ID'];
$runningTaskTimer = time() - $runningTaskData['TIMER_STARTED_AT'];
}
$canCreateTasks = false;
$canEditTasks = false;
if ($arTask["GROUP_ID"])
{
$canCreateTasks = \CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP, $arTask["GROUP_ID"], "tasks", "create_tasks");
$canEditTasks = \CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP, $arTask["GROUP_ID"], "tasks", "edit_tasks");
}
?>
{
id : <?=intval($arTask["ID"])?>,
name : "<?=CUtil::JSEscape($arTask["TITLE"])?>",
<?if ($arTask["GROUP_ID"]):?>
projectId : <?=intval($arTask["GROUP_ID"])?>,
projectName : '<?=CUtil::JSEscape($arTask['GROUP_NAME'])?>',
projectCanCreateTasks: <?=CUtil::PhpToJSObject($canCreateTasks)?>,
projectCanEditTasks: <?=CUtil::PhpToJSObject($canEditTasks)?>,
<?else:?>
projectId : 0,
<?endif?>
status : "<?=tasksStatus2String($arTask["STATUS"])?>",
realStatus : "<?=intval($arTask["REAL_STATUS"])?>",
url: '<?=CUtil::JSEscape(CComponentEngine::MakePathFromTemplate(
$arPaths["PATH_TO_TASKS_TASK"],
array(
"task_id" => $arTask["ID"],
"user_id" => $profileUserId,
"action" => "view",
"group_id" => $arTask["GROUP_ID"]
)
));?>',
priority : <?=intval($arTask["PRIORITY"])?>,
mark : <?php echo !$arTask["MARK"] ? "null" : "'".CUtil::JSEscape($arTask["MARK"])."'"?>,
responsible: '<?=CUtil::JSEscape(tasksFormatNameShort($arTask["RESPONSIBLE_NAME"], $arTask["RESPONSIBLE_LAST_NAME"], $arTask["RESPONSIBLE_LOGIN"], $arTask["RESPONSIBLE_SECOND_NAME"], $nameTemplate))?>',
director: '<?=CUtil::JSEscape(tasksFormatNameShort($arTask["CREATED_BY_NAME"], $arTask["CREATED_BY_LAST_NAME"], $arTask["CREATED_BY_LOGIN"], $arTask["CREATED_BY_SECOND_NAME"], $nameTemplate))?>',
responsibleId : <?=intval($arTask["RESPONSIBLE_ID"])?>,
directorId : <?=intval($arTask["CREATED_BY"])?>,
responsible_name: '<?=CUtil::JSEscape($arTask["RESPONSIBLE_NAME"]); ?>',
responsible_second_name: '<?=CUtil::JSEscape($arTask["RESPONSIBLE_SECOND_NAME"]); ?>',
responsible_last_name: '<?=CUtil::JSEscape($arTask["RESPONSIBLE_LAST_NAME"]); ?>',
responsible_login: '<?=CUtil::JSEscape($arTask["RESPONSIBLE_LOGIN"]); ?>',
director_name: '<?=CUtil::JSEscape($arTask["CREATED_BY_NAME"]); ?>',
director_second_name: '<?=CUtil::JSEscape($arTask["CREATED_BY_SECOND_NAME"]); ?>',
director_last_name: '<?=CUtil::JSEscape($arTask["CREATED_BY_LAST_NAME"]); ?>',
director_login: '<?=CUtil::JSEscape($arTask["CREATED_BY_LOGIN"]); ?>',
dateCreated : <?tasksJSDateObject($arTask["CREATED_DATE"], $top)?>,
links: <?=CUtil::PhpToJSObject($arTask['LINKS'], false, false, true)?>,
<?php if ($arTask["START_DATE_PLAN"]):?>dateStart : <?php tasksJSDateObject($arTask["START_DATE_PLAN"], $top)?>,<?php else:?>dateStart: null,<?php endif?>
<?php if ($arTask["END_DATE_PLAN"]):?>dateEnd : <?php tasksJSDateObject($arTask["END_DATE_PLAN"], $top)?>,<?php else:?>dateEnd: null,<?php endif?>
<?php if ($arTask["DATE_START"]):?>dateStarted: <?php tasksJSDateObject($arTask["DATE_START"], $top)?>,<?php endif?>
dateCompleted : <?php if ($arTask["CLOSED_DATE"]):?><?php tasksJSDateObject($arTask["CLOSED_DATE"], $top)?><?php else:?>null<?php endif?>,
<?php if ($arTask["DEADLINE"]):?>dateDeadline : <?php tasksJSDateObject($arTask["DEADLINE"], $top)?>,<?php else:?>dateDeadline: null,<?php endif?>
canEditPlanDates : <?php if ($arAllowedTaskActions['ACTION_CHANGE_DEADLINE']):?>true<?php else:?>false<?php endif?>,
canEdit: <?=(isset($arTask["META:ALLOWED_ACTIONS"]) && $arTask["META:ALLOWED_ACTIONS"]["ACTION_EDIT"] ? "true" : "false")?>,
<?if ($arTask["PARENT_ID"] && $bParent):?>
parentTaskId : <?=intval($arTask["PARENT_ID"])?>,
<?else:?>
parentTaskId : 0,
<?endif?>
<?php
if ($arTask["FILES"] && sizeof($arTask["FILES"])):
$i = 0;
?>
files: [
<?php
foreach($arTask["FILES"] as $file):
$i++;
?>
{ name : '<?php echo CUtil::JSEscape($file["ORIGINAL_NAME"])?>', url : '/bitrix/components/bitrix/tasks.task.detail/show_file.php?fid=<?=intval($file["ID"])?>', size : '<?php echo CUtil::JSEscape(CFile::FormatSize($file["FILE_SIZE"]))?>' }<?php if ($i != sizeof($arTask["FILES"])):?>,<?php endif?>
<?php endforeach?>
],
<?php endif?>
<?php
if ($arTask['ACCOMPLICES'] && is_array($arTask['ACCOMPLICES']))
{
$i = 0;
echo 'accomplices: [';
foreach($arTask['ACCOMPLICES'] as $ACCOMPLICE_ID)
{
if ($i++)
echo ',';
echo '{ id: ' . (int) $ACCOMPLICE_ID . ' }';
}
echo '], ';
}
?>
<?php
if ($arTask['AUDITORS'] && is_array($arTask['AUDITORS']))
{
$i = 0;
echo 'auditors: [';
foreach($arTask['AUDITORS'] as $AUDITOR_ID)
{
if ($i++)
echo ',';
echo '{ id: ' . (int) $AUDITOR_ID . ' }';
}
echo '], ';
}
?>
isSubordinate: <?php echo $arTask["SUBORDINATE"] == "Y" ? "true" : "false"?>,
isInReport: <?php echo $arTask["ADD_IN_REPORT"] == "Y" ? "true" : "false"?>,
hasChildren : <?php
if (((int) $childrenCount) > 0)
echo 'true';
else
echo 'false';
?>,
childrenCount : <?php echo (int) $childrenCount; ?>,
canEditDeadline : <?php
if ($arAllowedTaskActions['ACTION_CHANGE_DEADLINE'])
echo 'true';
else
echo 'false';
?>,
canStartTimeTracking : <?php if ($arAllowedTaskActions['ACTION_START_TIME_TRACKING']):?>true<?php else:?>false<?php endif?>,
ALLOW_TIME_TRACKING : <?php
if (isset($arTask['ALLOW_TIME_TRACKING']) && ($arTask['ALLOW_TIME_TRACKING'] === 'Y'))
echo 'true';
else
echo 'false';
?>,
matchWorkTime: <?=($arTask['MATCH_WORK_TIME'] == 'Y' ? 'true' : 'false')?>,
TIMER_RUN_TIME : <?php if ($runningTaskId == $arTask['ID']) echo (int) $runningTaskTimer; else echo 'false'; ?>,
TIME_SPENT_IN_LOGS : <?php echo (int) $arTask['TIME_SPENT_IN_LOGS']; ?>,
TIME_ESTIMATE : <?php echo (int) $arTask['TIME_ESTIMATE']; ?>,
IS_TASK_TRACKING_NOW : <?php if ($runningTaskId == $arTask['ID']) echo 'true'; else echo 'false'; ?>,
menuItems: [<?php tasksGetItemMenu($arTask, $arPaths, SITE_ID, $bGant, $top, $bSkipJsMenu, $params)?>],
<?$arTask['SE_PARAMETER'] = is_array($arTask['SE_PARAMETER']) ? $arTask['SE_PARAMETER'] : array();?>
<?$seParameters = array();?>
<?foreach($arTask['SE_PARAMETER'] as $k => $v):?>
<?if($v['VALUE'] == 'Y' || $v['VALUE'] == 'N'):?>
<?
$code = $v['CODE'];
if($code == \CTasks::PARAMETER_COMPLETE_TASK_FROM_SUBTASKS)
{
$code = 'completeTasksFromSubTasks';
}
elseif($code == \CTasks::PARAMETER_PROJECT_PLAN_FROM_SUBTASKS)
{
$code = 'projectPlanFromSubTasks';
}
?>
<?$seParameters[$code] = $v['VALUE'] == 'Y';?>
<?endif?>
<?endforeach?>
parameters: <?=json_encode($seParameters)?>
<?php
foreach ($arAdditionalFields as $key => $value)
echo ', ' . $key . ' : ' . $value . "\n";
?>
}
<?php
}
function tasksJSDateObject($date, $top = false)
{
$ts = MakeTimeStamp($date);
?>
new <?php if ($top):?>top.<?php endif?>Date(<?php
echo date("Y", $ts); ?>, <?php
echo date("n", $ts) - 1; ?>, <?php
echo date("j", $ts); ?>, <?php
echo date("G", $ts); ?>, <?php
echo (date("i", $ts) + 0); ?>, <?php
echo (date("s", $ts) + 0); ?>)
<?php
}
function tasksStatus2String($status)
{
$arMap = array(
CTasks::METASTATE_EXPIRED => 'overdue',
CTasks::METASTATE_VIRGIN_NEW => 'new',
CTasks::STATE_NEW => 'accepted',
CTasks::METASTATE_EXPIRED_SOON => 'overdue-soon',
CTasks::STATE_PENDING => 'accepted',
CTasks::STATE_IN_PROGRESS => 'in-progress',
CTasks::STATE_SUPPOSEDLY_COMPLETED => 'waiting',
CTasks::STATE_COMPLETED => 'completed',
CTasks::STATE_DEFERRED => 'delayed',
CTasks::STATE_DECLINED => 'declined'
);
$strStatus = "";
if (isset($arMap[$status]))
$strStatus = $arMap[$status];
return $strStatus;
}
function tasksServerName($server_name = false)
{
if (!$server_name)
{
if (defined("SITE_SERVER_NAME") && SITE_SERVER_NAME)
{
$server_name = SITE_SERVER_NAME;
}
else
{
$server_name = COption::GetOptionString("main", "server_name", $_SERVER['HTTP_HOST']);
}
}
if (
(mb_substr(mb_strtolower($server_name), 0, 8) !== 'https://')
&& (mb_substr(mb_strtolower($server_name), 0, 7) !== 'http://')
)
{
if (CMain::IsHTTPS())
$server_name = 'https://' . $server_name;
else
$server_name = 'http://' . $server_name;
}
$server_name_wo_protocol = str_replace(
array('http://', 'https://', 'HTTP://', 'HTTPS://'), // Yeah, I know: 'hTtpS://', ...
array('', '', '', ''),
$server_name
);
// Cutoff all what is after '/' (include '/' itself)
$slashPos = mb_strpos($server_name_wo_protocol, '/');
if ($slashPos >= 1)
{
$length = $slashPos;
$server_name_wo_protocol = mb_substr(0, $length);
}
$isServerPortAlreadyGiven = false;
if (mb_strpos($server_name_wo_protocol, ':') !== false)
$isServerPortAlreadyGiven = true;
$server_port = '';
if (
( ! $isServerPortAlreadyGiven )
&& ($_SERVER['SERVER_PORT'] <> '')
&& ($_SERVER['SERVER_PORT'] != '80')
&& ($_SERVER['SERVER_PORT'] != '443')
)
{
$server_port = ':' . $_SERVER['SERVER_PORT'];
}
if ( ! $isServerPortAlreadyGiven )
$server_name .= $server_port;
return ($server_name);
}
function tasksGetLastSelected($arManagers, $bSubordinateOnly = false, $nameTemplate = "")
{
static $arLastUsers;
$userId = \Bitrix\Tasks\Util\User::getId();
if (!isset($arLastUsers))
{
$arSubDeps = CTasks::GetSubordinateDeps();
if (!class_exists('CUserOptions'))
include_once($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/classes/".$GLOBALS['DBType']."/favorites.php");
$arLastSelected = CUserOptions::GetOption("tasks", "user_search", array());
if (is_array($arLastSelected) && $arLastSelected['last_selected'] <> '')
$arLastSelected = array_unique(explode(',', $arLastSelected['last_selected']));
else
$arLastSelected = false;
if (is_array($arLastSelected))
{
$currentUser = array_search($userId, $arLastSelected);
if ($currentUser !== false)
{
unset($arLastSelected[$currentUser]);
}
array_unshift($arLastSelected, $userId);
}
else
{
$arLastSelected[] = $userId;
}
$arFilter = array('ACTIVE' => 'Y');
if ($bSubordinateOnly)
{
$arFilter["UF_DEPARTMENT"] = $arSubDeps;
}
else
{
$arFilter['!UF_DEPARTMENT'] = false;
}
$arFilter['ID'] = is_array($arLastSelected) ? implode('|', array_slice($arLastSelected, 0, 10)) : '-1';
$dbRes = CUser::GetList($by = 'last_name', $order = 'asc', $arFilter, array('SELECT' => array('UF_DEPARTMENT')));
$arLastUsers = array();
while ($arRes = $dbRes->GetNext())
{
$arPhoto = array('IMG' => '');
if (!$arRes['PERSONAL_PHOTO'])
{
switch ($arRes['PERSONAL_GENDER'])
{
case "M":
$suffix = "male";
break;
case "F":
$suffix = "female";
break;
default:
$suffix = "unknown";
}
$arRes['PERSONAL_PHOTO'] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, isset($arParams['SITE_ID']) ? $arParams['SITE_ID'] : SITE_ID);
}
if ($arRes['PERSONAL_PHOTO'] > 0)
$arPhoto = CIntranetUtils::InitImage($arRes['PERSONAL_PHOTO'], 30, 0, BX_RESIZE_IMAGE_EXACT);
$arLastUsers[$arRes['ID']] = array(
'ID' => $arRes['ID'],
'NAME' => CUser::FormatName(empty($nameTemplate) ? CSite::GetNameFormat() : $nameTemplate, $arRes, true, false),
'LOGIN' => $arRes['LOGIN'],
'EMAIL' => $arRes['EMAIL'],
'WORK_POSITION' => htmlspecialcharsBack($arRes['WORK_POSITION'] ? $arRes['WORK_POSITION'] : $arRes['PERSONAL_PROFESSION']),
'PHOTO' => isset($arPhoto['CACHE']['src']) ? $arPhoto['CACHE']['src'] : "",
'HEAD' => false,
'SUBORDINATE' => is_array($arSubDeps) && is_array($arRes['UF_DEPARTMENT']) && array_intersect($arRes['UF_DEPARTMENT'], $arSubDeps) ? 'Y' : 'N',
'SUPERORDINATE' => in_array($arRes["ID"], $arManagers) ? 'Y' : 'N'
);
}
}
return $arLastUsers;
}
define("TASKS_FILTER_SESSION_INDEX", "FILTER");
function tasksGetFilter($fieldName)
{
if (isset($_GET[$fieldName]))
{
$_SESSION[TASKS_FILTER_SESSION_INDEX][$fieldName] = $_GET[$fieldName];
}
return $_SESSION[TASKS_FILTER_SESSION_INDEX][$fieldName];
}
function tasksPredefinedFilters($userID, $roleFilterSuffix = "")
{
return array(
"ROLE" => array(
array("TITLE" => GetMessage("TASKS_FILTER_MY".$roleFilterSuffix), "FILTER" => array("DOER" => $userID), "CLASS" => "inbox", "COUNT" => "-", "STATUS_FILTER" => 0),
array("TITLE" => GetMessage("TASKS_FILTER_RESPONSIBLE".$roleFilterSuffix), "FILTER" => array("RESPONSIBLE_ID" => $userID), "CLASS" => "my-responsibility", "COUNT" => "-", "STATUS_FILTER" => 0),
array("TITLE" => GetMessage("TASKS_FILTER_ACCOMPLICE".$roleFilterSuffix), "FILTER" => array("ACCOMPLICE" => $userID), "CLASS" => "my-complicity", "COUNT" => "-", "STATUS_FILTER" => 0),
array("TITLE" => GetMessage("TASKS_FILTER_IN_REPORT".$roleFilterSuffix), "FILTER" => array("RESPONSIBLE_ID" => $userID, "ADD_IN_REPORT" => "Y"), "CLASS" => "my-report", "COUNT" => "-", "STATUS_FILTER" => 0),
array("TITLE" => GetMessage("TASKS_FILTER_CREATOR".$roleFilterSuffix), "FILTER" => array("CREATED_BY" => $userID), "CLASS" => "outbox", "COUNT" => "-", "STATUS_FILTER" => 1),
array("TITLE" => GetMessage("TASKS_FILTER_FOR_REPORT".$roleFilterSuffix), "FILTER" => array("CREATED_BY" => $userID, "ADD_IN_REPORT" => "Y"), "CLASS" => "my-report", "COUNT" => "-", "STATUS_FILTER" => 1),
array("TITLE" => GetMessage("TASKS_FILTER_AUDITOR".$roleFilterSuffix), "FILTER" => array("AUDITOR" => $userID), "CLASS" => "under-control", "COUNT" => "-", "STATUS_FILTER" => 0),
array("TITLE" => GetMessage("TASKS_FILTER_ALL"), "FILTER" => array("MEMBER" => $userID), "CLASS" => "anybox", "COUNT" => "-", "STATUS_FILTER" => 0)
),
"STATUS" => array(
array(
array("TITLE" => GetMessage("TASKS_FILTER_ACTIVE"), "FILTER" => array("STATUS" => array(-2, -1, 1, 2, 3)), "CLASS" => "open", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_NEW"), "FILTER" => array("STATUS" => array(-2, 1)), "CLASS" => "new", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_IN_PROGRESS"), "FILTER" => array("STATUS" => 3), "CLASS" => "in-progress", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_ACCEPTED"), "FILTER" => array("STATUS" => 2), "CLASS" => "accepted", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_OVERDUE"), "FILTER" => array("STATUS" => -1), "CLASS" => "overdue", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_DELAYED"), "FILTER" => array("STATUS" => 6), "CLASS" => "delayed", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_CLOSED"), "FILTER" => array("STATUS" => array(4, 5)), "CLASS" => "completed", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_ALL"), "FILTER" => array(), "CLASS" => "any", "COUNT" => "-")
),
array(
array("TITLE" => GetMessage("TASKS_FILTER_ACTIVE"), "FILTER" => array("STATUS" => array(-1, 1, 2, 3, 4, 7)), "CLASS" => "open", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_NOT_ACCEPTED"), "FILTER" => array("STATUS" => 1), "CLASS" => "new", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_IN_CONTROL"), "FILTER" => array("STATUS" => array(4, 7)), "CLASS" => "waiting", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_IN_PROGRESS"), "FILTER" => array("STATUS" => 3), "CLASS" => "in-progress", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_ACCEPTED"), "FILTER" => array("STATUS" => 2), "CLASS" => "accepted", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_OVERDUE"), "FILTER" => array("STATUS" => -1), "CLASS" => "overdue", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_DELAYED"), "FILTER" => array("STATUS" => 6), "CLASS" => "delayed", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_CLOSED"), "FILTER" => array("STATUS" => array(4, 5)), "CLASS" => "completed", "COUNT" => "-"),
array("TITLE" => GetMessage("TASKS_FILTER_ALL"), "FILTER" => array(), "CLASS" => "any", "COUNT" => "-")
)
)
);
}
/**
* @param $component
* @param bool $bShowError
* @param string $errText
*
* @deprecated
*/
function ShowInFrame(&$component, $bShowError = false, $errText = '')
{
global $APPLICATION;
$APPLICATION->RestartBuffer();
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?=LANGUAGE_ID?>" lang="<?=LANGUAGE_ID?>">
<head><?php
$APPLICATION->ShowHead();
$APPLICATION->AddHeadString('
<style>
body {background: #fff !important; text-align: left !important; color: #000 !important;}
div.bx-core-dialog-overlay {opacity: 0 !important; -moz-opacity: 0 !important; -khtml-opacity: 0 !important; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0) !important;}
div#tasks-content-outer {padding: 15px;}
.task-comment-content{ font-family:Verdana, sans-serif; padding-top:6px; word-wrap: break-word; width: 620px; overflow: hidden;}
.task-detail-description { font-size:13px; color:#222; padding: 0 0 5px; word-wrap: break-word; width: 585px; overflow: hidden;}
</style>
', false, true);
?></head>
<body class="<?$APPLICATION->ShowProperty("BodyClass");?>" onload="if (window.top.BX.TasksIFrameInst) window.top.BX.TasksIFrameInst.onTaskLoaded();">
<div id="tasks-content-outer">
<table cellpadding="0" cellspading="0" width="100%">
<tr>
<td valign="top"><?php
if ($bShowError)
{
?><div id="task-reminder-link"><?php
ShowError($errText);
?></div><?php
}
else
$component->IncludeComponentTemplate();
?></td>
<?php if($APPLICATION->GetViewContent("sidebar_tools_1") <> ''): ?>
<td width="10"></td>
<td valign="top" width="230"><?php $APPLICATION->ShowViewContent("sidebar_tools_1") ?></td>
<?php endif?>
</tr>
</table>
</div>
</body>
</html><?
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
die();
}
function __checkForum($forumID)
{
if (!($settingsForumID = COption::GetOptionString("tasks", "task_forum_id")))
{
if ( (int) $forumID > 0 )
COption::SetOptionString("tasks", "task_forum_id", intval($forumID));
}
if (IsModuleInstalled('extranet'))
{
if (-1 === COption::GetOptionString('tasks', 'task_extranet_forum_id', -1, $siteId = ''))
{
try
{
$extranetForumID = CTasksTools::GetForumIdForExtranet();
COption::SetOptionString('tasks', 'task_extranet_forum_id', $extranetForumID, '', $siteId = '');
}
catch (TasksException $e)
{
COption::SetOptionString('tasks', 'task_extranet_forum_id', (int) $forumID, '', $siteId = '');
}
}
}
if (CModule::IncludeModule("forum") && $forumID && COption::GetOptionString("tasks", "forum_checked", false))
{
$arGroups = array();
$rs = CGroup::GetList($order = 'id', $by = 'asc', array());
while($ar = $rs->Fetch())
$arGroups[$ar['ID']] = 'A';
CForumNew::Update($forumID, array("GROUP_ID"=>$arGroups, "INDEXATION" => "Y"));
COption::RemoveOption("tasks", "forum_checked");
}
}
/**
* This function is deprecated. See CTaskFiles::removeTemporaryFile()
*
* @deprecated
*/
function deleteUploadedFiles($arFileIDs)
{
$arFileIDs = (array) $arFileIDs;
foreach($arFileIDs as $fileID)
{
$key = array_search(intval($fileID), $_SESSION["TASKS_UPLOADED_FILES"]);
if ($key !== false)
{
unset($_SESSION["TASKS_UPLOADED_FILES"][$key]);
}
}
}
/**
* This function is deprecated. See CTaskFiles::saveFileTemporary()
*
* @deprecated
*/
function addUploadedFiles($arFileIDs)
{
$arFileIDs = (array) $arFileIDs;
if (!is_array($_SESSION["TASKS_UPLOADED_FILES"]))
$_SESSION["TASKS_UPLOADED_FILES"] = array();
$_SESSION["TASKS_UPLOADED_FILES"] = array_merge($_SESSION["TASKS_UPLOADED_FILES"], $arFileIDs);
}
/**
* This function is deprecated.
*
* @deprecated
*/
function cleanupUploadedFiles()
{
if (isset($_SESSION["TASKS_UPLOADED_FILES"]) && is_array($_SESSION["TASKS_UPLOADED_FILES"]))
{
foreach($_SESSION["TASKS_UPLOADED_FILES"] as $fileID)
{
CFile::Delete($fileID);
}
$_SESSION["TASKS_UPLOADED_FILES"] = array();
}
}
if ( ! function_exists('tasksFormatFileSize') )
{
function tasksFormatFileSize($in)
{
return(CFile::FormatSize($in));
}
}