private static function getFilesAttachedInAccessibleTemplates($userId) { $arAccessibleFilesIds = array(); // Array of accessible files ids $rsTemplate = CTaskTemplates::GetList(array(), array('CREATED_BY' => $userId)); while ($arTemplate = $rsTemplate->Fetch()) { $arTemplate['FILES'] = unserialize($arTemplate['FILES']); if (is_array($arTemplate['FILES'])) { foreach ($arTemplate['FILES'] as $fileId) { $arAccessibleFilesIds[] = (int) $fileId; } } } return array_unique($arAccessibleFilesIds); }
protected function getChildTemplateData($templateId) { $templateId = (int) $templateId; if (!$templateId) { return array(); } // template id not set $subTasksToCreate = array(); $res = CTaskTemplates::GetList(array('BASE_TEMPLATE_ID' => 'asc'), array('BASE_TEMPLATE_ID' => $templateId), false, array('INCLUDE_TEMPLATE_SUBTREE' => true), array('*', 'UF_*', 'BASE_TEMPLATE_ID')); while ($item = $res->fetch()) { if ($item['ID'] == $templateId) { continue; } $subTasksToCreate[$item['ID']] = $item; } // get check lists $res = \Bitrix\Tasks\Template\CheckListItemTable::getListByTemplateDependency($templateId, array('order' => array('SORT' => 'ASC'), 'select' => array('ID', 'TEMPLATE_ID', 'IS_COMPLETE', 'SORT_INDEX', 'TITLE'))); while ($item = $res->fetch()) { if (isset($subTasksToCreate[$item['TEMPLATE_ID']])) { $clId = $item['ID']; $tmpId = $item['TEMPLATE_ID']; unset($item['ID']); unset($item['TEMPLATE_ID']); $subTasksToCreate[$tmpId]['CHECK_LIST'][$clId] = $item; } } return $subTasksToCreate; }
LocalRedirect($redirectPath); } else { $arData = $_POST; // specially for USER FIELDS if (is_array($arResult['USER_FIELDS'])) { foreach ($arResult['USER_FIELDS'] as $fld => &$fldData) { if (isset($arData[$fld])) { $fldData['VALUE'] = $arData[$fld]; } } } } } } elseif (check_bitrix_sessid() && $arResult["ACTION"] == "delete") { if (is_array($arData) && intval($arData['ID'])) { $templateInstance = new CTaskTemplates(); if ($templateInstance->Delete($arData['ID'])) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TASKS_TEMPLATES"], array())); } else { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TEMPLATES_TEMPLATE"], array('action' => 'view', 'template_id' => $arData['ID']))); } } } else { // some pre-sets for new template if ($arResult["ACTION"] == "create") { $arData['DESCRIPTION_IN_BBCODE'] = 'Y'; // create all new tasks in BB-code // set base template id, if it came from GET request if (intval($_REQUEST['BASE_TEMPLATE'])) { $arData['BASE_TEMPLATE_ID'] = intval($_REQUEST['BASE_TEMPLATE']); }
CModule::IncludeModule('tasks'); __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__)); $SITE_ID = isset($_GET["SITE_ID"]) ? $_GET["SITE_ID"] : SITE_ID; if ($_REQUEST['MODE'] == 'SEARCH') { CUtil::JSPostUnescape(); $APPLICATION->RestartBuffer(); $search = $_REQUEST['SEARCH_STRING']; $arFilter = array("%TITLE" => $search, "!TPARAM_TYPE" => CTaskTemplates::TYPE_FOR_NEW_USER); $arGetListParams = array('USER_ID' => $GLOBALS['USER']->GetID()); if (isset($_GET["FILTER"])) { $arFilter = array_merge($arFilter, $_GET["FILTER"]); } $totalTasksToBeSelected = 10; if (intval($_REQUEST['TEMPLATE_ID'])) { $arFilter['BASE_TEMPLATE_ID'] = intval($_REQUEST['TEMPLATE_ID']); $arFilter['!=ID'] = intval($_REQUEST['TEMPLATE_ID']); // do not link to itself $arGetListParams['EXCLUDE_TEMPLATE_SUBTREE'] = true; // do not link to it`s subtree } $dbRes = CTaskTemplates::GetList(array('TITLE' => 'ASC'), $arFilter, array('NAV_PARAMS' => array('nTopCount' => 10)), $arGetListParams, array('ID', 'TITLE')); $arTasks = array(); while ($arRes = $dbRes->fetch()) { $arTasks[] = array("ID" => $arRes["ID"], "TITLE" => $arRes["TITLE"], "STATUS" => CTasks::STATE_PENDING); } header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); echo CUtil::PhpToJsObject($arTasks); CMain::FinalActions(); // to make events work on bitrix24 die; }
function GetByID($ID, $arParams = array()) { if (!intval($ID)) { $dbResult = new CDBResult(); $dbResult->InitFromArray(array()); return $dbResult; } return CTaskTemplates::GetList(array(), array("ID" => $ID), array(), $arParams, array('*', 'UF_*')); }
?> <?php if ($arParams["USER_ID"] == $USER->GetID()) { ?> <div class="task-filter-extra-pages"> <ul class="task-filter-items"> <li class="task-filter-item"> <a class="task-filter-item-link" href="<?php echo CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TEMPLATES"], array()); ?> "><span class="task-filter-item-left"></span><span class="task-filter-item-text"><?php echo GetMessage("TASKS_TEMPLATES"); ?> </span><span class="task-filter-item-number"><?php echo CTaskTemplates::GetCount(); ?> </span></a> </li> <li class="task-filter-item"> <a class="task-filter-item-link" href="<?php echo CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_REPORTS"], array()); ?> "><span class="task-filter-item-left"></span><span class="task-filter-item-text"><?php echo GetMessage("TASKS_REPORTS"); ?> </span></a> </li> </ul> </div> <?php
if (!empty($arGroupsIDs)) { $rsGroups = CSocNetGroup::GetList(array("ID" => "ASC"), array("ID" => $arGroupsIDs)); while ($arGroup = $rsGroups->GetNext()) { $arGroup["EXPANDED"] = array_key_exists($arGroup["ID"], $arOpenedProjects) && $arOpenedProjects[$arGroup["ID"]] == "false" ? false : true; $arResult["GROUPS"][$arGroup["ID"]] = $arGroup; } } $arResult["CHILDREN_COUNT"] = array(); $rsChildrenCount = CTasks::GetChildrenCount($arFilter, $arTasksIDs); if ($rsChildrenCount) { while ($arChildrenCount = $rsChildrenCount->Fetch()) { $arResult["CHILDREN_COUNT"]["PARENT_" . $arChildrenCount["PARENT_ID"]] = $arChildrenCount["CNT"]; } } $arResult["UPDATES_COUNT"] = CTasks::GetUpdatesCount($arViewed); $rsTemplates = CTaskTemplates::GetList(array("ID" => "DESC"), array("CREATED_BY" => $USER->GetID(), 'BASE_TEMPLATE_ID' => false, '!TPARAM_TYPE' => CTaskTemplates::TYPE_FOR_NEW_USER), array('NAV_PARAMS' => array('nTopCount' => 10))); $arResult["TEMPLATES"] = array(); while ($template = $rsTemplates->GetNext()) { $arResult["TEMPLATES"][] = $template; } $sTitle = ""; if ($taskType == "group") { $sTitle = $sTitleShort = GetMessage("TASKS_TITLE_GROUP_TASKS"); } else { if ($arParams["USER_ID"] == $USER->GetID()) { $sTitle = $sTitleShort = GetMessage("TASKS_TITLE_MY_TASKS"); } else { $sTitle = CUser::FormatName($arParams["NAME_TEMPLATE"], $arResult["USER"], true, false) . ": " . GetMessage("TASKS_TITLE_TASKS"); $sTitleShort = GetMessage("TASKS_TITLE_TASKS"); } }
} $arFilter = array('CREATED_BY' => $loggedInUserId, 'ID' => $unfilteredTaskIds); } // Select templates choosen $templateIds = array(); $res = CTaskTemplates::GetList(array(), $arFilter, array('ID')); while ($template = $res->fetch()) { $templateIds[] = (int) $template['ID']; } //$value = null; $processedItems = $notProcessedItems = 0; switch ($_POST['subaction']) { case 'remove': foreach ($templateIds as $templateId) { // ka-boom! $templateInstance = new CTaskTemplates(); if ($templateInstance->Delete($templateId)) { ++$processedItems; } else { ++$notProcessedItems; } } break; default: CTaskAssert::logError('[0x8a1747a5] unknown subaction: ' . $_POST['subaction']); break; } break; default: CTaskAssert::logError('[0x8b300a99] unknown action: ' . $_POST['action']); break;
define('STOP_STATISTICS', true); define('NO_AGENT_CHECK', true); define('DisableEventsCheck', true); define('BX_SECURITY_SHOW_MESSAGE', true); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; CUtil::JSPostUnescape(); CModule::IncludeModule('tasks'); __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__)); __IncludeLang(dirname(__FILE__) . '/templates/.default/lang/' . LANGUAGE_ID . '/template.php'); if (check_bitrix_sessid()) { if (intval($_POST["id"]) > 0) { $rsTemplate = CTaskTemplates::GetByID((int) $_POST["id"], array('USER_ID' => $USER->getId())); if ($arTemplate = $rsTemplate->Fetch()) { if ($_POST["mode"] == "delete") { $template = new CTaskTemplates(); $rc = $template->Delete(intval($_POST["id"])); if ($rc === false) { $strError = 'Error'; if ($ex = $APPLICATION->GetException()) { $strError = $ex->GetString(); } if ($_POST["type"] == "json") { echo "['strError' : '" . CUtil::JSEscape(htmlspecialcharsbx($strError)) . "']"; } else { echo htmlspecialcharsbx($strError); } } } elseif ($_POST["mode"] == "load") { $arPaths = array('PATH_TO_TASKS_TASK' => null, 'PATH_TO_USER_PROFILE' => null, 'PATH_TO_USER_TASKS_TASK' => null, 'PATH_TO_TEMPLATES_TEMPLATE' => null); if (isset($_POST['path_to_task'])) {
/** * @deprecated * * This function is deprecated and strongly discouraged to be used. * But it will not be removed, because some agents can be still active for * using this function in future for at least one year. * Current date is: 06 Oct 2012, Sat. Code written, but updater not builded. * * @param $TASK_ID * @param string $time * @return string originally always returns an empty string */ function RepeatTask($TASK_ID, $time = "") { $rsTemplate = CTaskTemplates::GetList(array(), array('TASK_ID' => (int) $TASK_ID)); if (!($arTemplate = $rsTemplate->Fetch())) { return ''; } // Redirect call to new function if (isset($arTemplate['ID']) && $arTemplate['ID'] > 0) { self::RepeatTaskByTemplateId((int) $arTemplate['ID']); } return ''; }
return $arChecklistItems; } else { throw new \Bitrix\Main\SystemException(); } $arResult['BLOCKS'] = array_intersect($arWhiteList, $arParams['BLOCKS']); if (isset($arParams['TASK_ID']) && isset($arParams['LOAD_TASK_DATA']) && $arParams['LOAD_TASK_DATA'] === 'Y') { $oTask = CTaskItem::getInstance($arParams['TASK_ID'], $arResult['LOGGED_IN_USER']); $arResult['ALLOWED_ACTIONS'] = $oTask->getAllowedActions($asStrings = true); $arResult['TASK'] = $oTask->getData(); $arResult['TASK']['META:ALLOWED_ACTIONS_CODES'] = $oTask->getAllowedTaskActions(); $arResult['TASK']['META:ALLOWED_ACTIONS'] = $arResult['ALLOWED_ACTIONS']; $arResult['TASK']['META:IN_DAY_PLAN'] = 'N'; $arResult['TASK']['META:CAN_ADD_TO_DAY_PLAN'] = 'N'; // Was task created from template? if ($arResult['TASK']['FORKED_BY_TEMPLATE_ID']) { $rsTemplate = CTaskTemplates::GetByID($arResult['TASK']['FORKED_BY_TEMPLATE_ID']); if ($arTemplate = $rsTemplate->Fetch()) { $arTemplate['REPLICATE_PARAMS'] = unserialize($arTemplate['REPLICATE_PARAMS']); $arResult['TASK']['FORKED_BY_TEMPLATE'] = $arTemplate; } } if (($arResult['TASK']["RESPONSIBLE_ID"] == $arResult['LOGGED_IN_USER'] || in_array($arResult['LOGGED_IN_USER'], $arResult['TASK']['ACCOMPLICES'])) && CModule::IncludeModule("timeman") && (!CModule::IncludeModule('extranet') || !CExtranet::IsExtranetSite())) { $arResult['TASK']['META:CAN_ADD_TO_DAY_PLAN'] = 'Y'; $arTasksInPlan = CTaskPlannerMaintance::getCurrentTasksList(); // If in day plan already if (is_array($arTasksInPlan) && in_array($arResult['TASK']["ID"], $arTasksInPlan)) { $arResult['TASK']['META:IN_DAY_PLAN'] = 'Y'; $arResult['TASK']['META:CAN_ADD_TO_DAY_PLAN'] = 'N'; } } }
if ($isUserAuthorized) { CModule::IncludeModule("tasks"); $arParams = array('FILE_ID' => false, 'TEMPLATE_ID' => false, 'TASK_ID' => false); if (isset($_GET['fid'])) { $arParams['FILE_ID'] = (int) $_GET['fid']; } if (isset($_GET['tid'])) { $arParams['TEMPLATE_ID'] = (int) $_GET['tid']; } if (isset($_GET['TASK_ID'])) { $arParams['TASK_ID'] = (int) $_GET['TASK_ID']; } $bFound = false; if ($arParams["FILE_ID"] > 0) { if ($arParams["TEMPLATE_ID"]) { $rsTemplate = CTaskTemplates::GetList(array(), array("ID" => $arParams["TEMPLATE_ID"], "CREATED_BY" => $USER->GetID())); if ($arTemplate = $rsTemplate->Fetch()) { $arTemplate["FILES"] = unserialize($arTemplate["FILES"]); if (is_array($arTemplate["FILES"]) && in_array($arParams["FILE_ID"], $arTemplate["FILES"])) { $bFound = true; } } } else { if ($arParams['TASK_ID']) { if (CTaskFiles::isUserfieldFileAccessibleByUser($arParams['TASK_ID'], $arParams['FILE_ID'], $USER->GetID())) { $bFound = true; } } if (!$bFound && CTaskFiles::isFileAccessibleByUser((int) $arParams["FILE_ID"], $USER->GetID())) { $bFound = true; }
if (is_array($arParams["FILTER"])) { $arFilter = array_merge($arFilter, $arParams["FILTER"]); } if (intval($arParams['TEMPLATE_ID'])) { $arFilter['BASE_TEMPLATE_ID'] = intval($arParams['TEMPLATE_ID']); $arFilter['!=ID'] = intval($arParams['TEMPLATE_ID']); // do not link to itself $arGetListParams['EXCLUDE_TEMPLATE_SUBTREE'] = true; // do not link to it`s subtree } $dbRes = CTaskTemplates::GetList($arOrder, $arFilter, $arNavParams, $arGetListParams, $arSelect); $arResult["LAST_TEMPLATES"] = array(); while ($arRes = $dbRes->GetNext()) { $arResult["LAST_TEMPLATES"][] = $arRes; } // current templates if (!is_array($arParams['VALUE'])) { $arParams['VALUE'] = explode(',', $arParams['VALUE']); } foreach ($arParams['VALUE'] as $key => $ID) { $arParams['VALUE'][$key] = intval(trim($ID)); } $arParams['VALUE'] = array_unique($arParams['VALUE']); $arResult["CURRENT_TEMPLATES"] = array(); if (sizeof($arParams["VALUE"])) { $dbRes = CTaskTemplates::GetList(array('TITLE' => 'ASC'), array('ID' => $arParams['VALUE'], '!TPARAM_TYPE' => CTaskTemplates::TYPE_FOR_NEW_USER), false, $arGetListParams); while ($arRes = $dbRes->GetNext()) { $arResult["CURRENT_TEMPLATES"][] = $arRes; } } $this->IncludeComponentTemplate();
if ($arTemplate = $rsTemplate->fetch()) { $arLinkedTemplate = $arTemplate; } } } else { // Try to found this template in already fetched templates foreach ($arResult['TEMPLATES'] as &$arTemplate) { if ($arTemplate['TASK_ID'] == $arParams['TASK_ID']) { $arLinkedTemplate = $arTemplate; break; } } unset($arTemplate); // Template not found in fetched? Take it from DB if ($arLinkedTemplate === null) { $rsTemplate = CTaskTemplates::GetList(array(), array('TASK_ID' => $arParams['TASK_ID']), array(), array(), array('ID', 'TASK_ID', 'REPLICATE_PARAMS')); if ($arTemplate = $rsTemplate->fetch()) { $arLinkedTemplate = $arTemplate; } } } if ($arLinkedTemplate !== null) { if (isset($arLinkedTemplate['~REPLICATE_PARAMS'])) { $arLinkedTemplate['REPLICATE_PARAMS'] = unserialize($arLinkedTemplate['~REPLICATE_PARAMS']); } else { $arLinkedTemplate['REPLICATE_PARAMS'] = unserialize($arLinkedTemplate['REPLICATE_PARAMS']); } $arTask['TEMPLATE'] = $arTask['FORKED_BY_TEMPLATE'] = $arLinkedTemplate; } $arResult["TASK"] = $arTask; $arTasksIDs = array($arTask['ID']);
function lambda_sgkrg455d_funcCreateSubtasks($arFields, $arAllResponsibles, $index, $loggedInUserId, $woStepper = false, $parameters = array()) { $allResponsiblesCount = count($arAllResponsibles); $arResponsibles = array_slice($arAllResponsibles, $index); $cutoffTime = microtime(true) + 5; foreach ($arResponsibles as $responsible) { $arFields['RESPONSIBLE_ID'] = $responsible; ++$index; try { $arFieldsToSave = $arFields; // transform UF files if (is_array($arFieldsToSave['UF_TASK_WEBDAV_FILES']) && !empty($arFieldsToSave['UF_TASK_WEBDAV_FILES']) && \Bitrix\Main\Loader::includeModule('disk')) { // find which files are new and which are old $old = array(); $new = array(); foreach ($arFieldsToSave['UF_TASK_WEBDAV_FILES'] as $fileId) { if ((string) $fileId) { if (strpos($fileId, 'n') === 0) { $new[] = $fileId; } else { $old[] = $fileId; } } } if (!empty($old)) { $userFieldManager = \Bitrix\Disk\Driver::getInstance()->getUserFieldManager(); $old = $userFieldManager->cloneUfValuesFromAttachedObject($old, $loggedInUserId); if (is_array($old) && !empty($old)) { $new = array_merge($new, $old); } } $arFieldsToSave['UF_TASK_WEBDAV_FILES'] = $new; } $oTask = CTaskItem::add($arFieldsToSave, $loggedInUserId); // Save checklist data $GLOBALS['APPLICATION']->IncludeComponent("bitrix:tasks.task.detail.parts", ".default", array('MODE' => 'JUST AFTER TASK CREATED', 'BLOCKS' => array("checklist"), 'TASK_ID' => (int) $oTask->getId()), null, array('HIDE_ICONS' => 'Y')); // copy child tasks if ($parameters['COPY_PARAMS']['COPY_CHILD_TASKS'] && intval($parameters['COPY_PARAMS']['ORIGIN_TASK'])) { $parentTaskInstance = CTaskItem::getInstance(intval($parameters['COPY_PARAMS']['ORIGIN_TASK']), $loggedInUserId); $parentTaskInstance->duplicateChildTasks($oTask); // task access rights check inside } // create child tasks by child templates if ($parameters['COPY_PARAMS']['COPY_CHILD_TEMPLATES'] && intval($parameters['COPY_PARAMS']['ORIGIN_TEMPLATE'])) { // get template to ensure we own it... $templateData = CTaskTemplates::GetList(false, array('ID' => intval($parameters['COPY_PARAMS']['ORIGIN_TEMPLATE'])), false, array('USER_ID' => $loggedInUserId))->fetch(); if (is_array($templateData)) { $oTask->addChildTasksByTemplate(intval($parameters['COPY_PARAMS']['ORIGIN_TEMPLATE'])); // task access rights check inside } } } catch (Exception $e) { } // Timeout only if multistepper can be used if (!$woStepper && microtime(true) > $cutoffTime) { break; } } if ($woStepper) { $needStep = false; } else { $needStep = true; if ($index >= $allResponsiblesCount) { $needStep = false; } } return array($needStep, $index, $allResponsiblesCount); }