Beispiel #1
0
 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);
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
            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']);
        }
Beispiel #4
0
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;
}
Beispiel #5
0
 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_*'));
 }
Beispiel #6
0
        ?>

				<?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 
Beispiel #7
0
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");
    }
}
Beispiel #8
0
         }
         $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;
Beispiel #9
0
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'])) {
Beispiel #10
0
 /**
  * @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 '';
 }
Beispiel #11
0
     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';
         }
     }
 }
Beispiel #12
0
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;
            }
Beispiel #13
0
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();
Beispiel #14
0
         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']);
Beispiel #15
0
 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);
 }