Example #1
0
 protected static function onTaskChange($taskId, $taskData, $status)
 {
     $workflowId = isset($taskData['WORKFLOW_ID']) ? $taskData['WORKFLOW_ID'] : null;
     if (!$workflowId) {
         $iterator = CBPTaskService::GetList(array('ID' => 'DESC'), array('ID' => $taskId), false, false, array('WORKFLOW_ID'));
         $row = $iterator->fetch();
         if (!$row) {
             return false;
         }
         $workflowId = $row['WORKFLOW_ID'];
         $taskData['WORKFLOW_ID'] = $workflowId;
     }
     //clean counters cache
     $users = array();
     if (!empty($taskData['USERS'])) {
         $users = $taskData['USERS'];
     }
     if (!empty($taskData['USERS_REMOVED'])) {
         $users = array_merge($users, $taskData['USERS_REMOVED']);
     }
     if (!empty($taskData['USERS_STATUSES'])) {
         $users = array_merge($users, array_keys($taskData['USERS_STATUSES']));
     }
     self::cleanCountersCache($users);
     //ping document
     $runtime = CBPRuntime::GetRuntime();
     $runtime->StartRuntime();
     $documentId = CBPStateService::GetStateDocumentId($workflowId);
     $documentService = $runtime->GetService('DocumentService');
     try {
         $documentService->onTaskChange($documentId, $taskId, $taskData, $status);
     } catch (Exception $e) {
     }
     return true;
 }
Example #2
0
    $dbTask = CBPTaskService::GetList(array(), array("ID" => $taskId, "USER_ID" => $userId), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS", "USER_ID", 'STATUS', 'USER_STATUS'));
    $arTask = $dbTask->GetNext();
}
if (!$arTask) {
    $workflowId = trim($_REQUEST["workflow_id"]);
    if (strlen($workflowId) > 0) {
        $dbTask = CBPTaskService::GetList(array(), array("WORKFLOW_ID" => $workflowId, "USER_ID" => $userId), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS", "USER_ID", 'STATUS', 'USER_STATUS'));
        $arTask = $dbTask->GetNext();
    }
}
if (!$arTask) {
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
    $APPLICATION->SetTitle(GetMessage("BPAT_NO_TASK"));
    CAdminMessage::ShowMessage(GetMessage("BPAT_NO_TASK") . ". ");
} else {
    $arTask["PARAMETERS"]["DOCUMENT_ID"] = CBPStateService::GetStateDocumentId($arTask['WORKFLOW_ID']);
    $backUrl = "/" . ltrim(trim($_REQUEST["back_url"]), "\\/");
    if (strlen($backUrl) <= 0) {
        $backUrl = "/bitrix/admin/bizproc_task_list.php?lang=" . LANGUAGE_ID;
    }
    if (strlen($backUrl) <= 0 && !empty($arTask["PARAMETERS"]["DOCUMENT_ID"])) {
        $backUrl = CBPDocument::GetDocumentAdminPage($arTask["PARAMETERS"]["DOCUMENT_ID"]);
    }
    $backUrl = CHTTP::urlDeleteParams($backUrl, array('mode'));
    $showType = "Form";
    if ($arTask['STATUS'] > CBPTaskStatus::Running || $arTask['USER_STATUS'] > CBPTaskUserStatus::Waiting) {
        $showType = "Success";
    }
    if ($_SERVER["REQUEST_METHOD"] == "POST" && check_bitrix_sessid()) {
        if ($_POST["action"] == "doTask") {
            $arErrorsTmp = array();
Example #3
0
 function BeforeIndexSocNet($bxSocNetSearch, $fields)
 {
     static $bizprocForumId = false;
     if (!$bizprocForumId) {
         $bizprocForumId = intval(COption::GetOptionString('bizproc', 'forum_id'));
     }
     if ($fields['ENTITY_TYPE_ID'] == 'FORUM_POST' && intval($fields['PARAM1']) == $bizprocForumId && !empty($fields['PARAM2']) && !empty($bxSocNetSearch->_params["PATH_TO_WORKFLOW"]) && CModule::IncludeModule("forum") && CModule::IncludeModule("bizproc")) {
         $topic = CForumTopic::GetByID($fields['PARAM2']);
         if (!empty($topic) && is_array($topic) && !empty($topic["XML_ID"])) {
             if (preg_match('/^WF_([0-9a-f\\.]+)/', $topic["XML_ID"], $match)) {
                 $workflowId = $match[1];
                 $state = CBPStateService::GetStateDocumentId($workflowId);
                 if ($state[0] == 'lists' && $state[1] == 'BizprocDocument' && CModule::IncludeModule('iblock') && intval($state[2]) > 0) {
                     $iblockElementQuery = CIBlockElement::GetList(array(), array("ID" => intval($state[2])), false, false, array("ID", "IBLOCK_ID"));
                     if ($iblockElement = $iblockElementQuery->Fetch()) {
                         $listId = $iblockElement["IBLOCK_ID"];
                         $fields["URL"] = $bxSocNetSearch->Url(str_replace(array("#list_id#", "#workflow_id#"), array($listId, urlencode($workflowId)), $bxSocNetSearch->_params["PATH_TO_WORKFLOW"]), array("MID" => $fields["ENTITY_ID"]), "message" . $fields["ENTITY_ID"]);
                         if (!empty($fields["LID"]) && is_array($fields["LID"])) {
                             foreach ($fields["LID"] as $siteId => $url) {
                                 $fields["LID"][$siteId] = $fields["URL"];
                             }
                         }
                     }
                 }
             }
         }
     }
     return $fields;
 }