Exemple #1
0
 protected function processActionPerformActionBp()
 {
     if (!Loader::includeModule('bizproc')) {
         $this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_LAC_MODULE_NOT_INSTALLED'))));
     }
     $this->checkRequiredPostParams(array('iblockTypeId', 'iblockId', 'sectionId', 'workflowId', 'elementId', 'action'));
     if ($this->request->getPost('iblockTypeId') == COption::getOptionString('lists', 'livefeed_iblock_type_id')) {
         $this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_LAC_UNKNOWN_ERROR'))));
     }
     if ($this->errorCollection->hasErrors()) {
         $this->sendJsonErrorResponse();
     }
     $this->iblockTypeId = $this->request->getPost('iblockTypeId');
     $this->iblockId = $this->request->getPost('iblockId');
     $this->sectionId = $this->request->getPost('sectionId');
     $workflowId = $this->request->getPost('workflowId');
     $elementId = $this->request->getPost('elementId');
     $action = $this->request->getPost('action');
     $this->documentStates = CBPDocument::getDocumentStates(BizProcDocument::generateDocumentComplexType($this->iblockTypeId, $this->iblockId), BizProcDocument::getDocumentComplexId($this->iblockTypeId, $elementId));
     if (isset($this->documentStates[$workflowId]['WORKFLOW_STATUS']) && $this->documentStates[$workflowId]['WORKFLOW_STATUS'] !== null) {
         $this->terminateWorkflow($workflowId, $elementId);
     }
     if ($action == 'delete') {
         if (CBPDocument::canUserOperateDocument(CBPCanUserOperateOperation::CreateWorkflow, $this->getUser(), BizProcDocument::getDocumentComplexId($this->iblockTypeId, $elementId), array("DocumentStates" => $this->documentStates))) {
             CBPTaskService::DeleteByWorkflow($workflowId);
             CBPTrackingService::DeleteByWorkflow($workflowId);
             CBPStateService::DeleteWorkflow($workflowId);
         } else {
             $this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_LAC_ACCESS_DENIED'))));
         }
         if ($this->errorCollection->hasErrors()) {
             $this->sendJsonErrorResponse();
         }
     }
     $this->sendJsonSuccessResponse(array('message' => Loc::getMessage('LISTS_LAC_MESSAGE_SUCCESS')));
 }
Exemple #2
0
 public static function getWorkflowTasks($workflowId, $withUsers = false, $extendUserInfo = false)
 {
     $withUsers = $withUsers ? 1 : 0;
     $extendUserInfo = $extendUserInfo ? 1 : 0;
     if (!isset(self::$cachedTasks[$workflowId][$withUsers][$extendUserInfo])) {
         $tasks = array('COMPLETED' => array(), 'RUNNING' => array());
         $ids = array();
         $taskIterator = CBPTaskService::GetList(array('MODIFIED' => 'DESC'), array('WORKFLOW_ID' => $workflowId), false, false, array('ID', 'MODIFIED', 'NAME', 'DESCRIPTION', 'PARAMETERS', 'STATUS', 'IS_INLINE', 'ACTIVITY'));
         while ($task = $taskIterator->getNext()) {
             $key = $task['STATUS'] == CBPTaskStatus::Running ? 'RUNNING' : 'COMPLETED';
             $tasks[$key][] = $task;
             $ids[] = $task['ID'];
         }
         if ($withUsers && sizeof($ids)) {
             $taskUsers = \CBPTaskService::getTaskUsers($ids);
             self::joinUsersToTasks($tasks['COMPLETED'], $taskUsers, $extendUserInfo);
             $tasks['RUNNING_ALL_USERS'] = self::joinUsersToTasks($tasks['RUNNING'], $taskUsers, $extendUserInfo);
         }
         $tasks['COMPLETED_CNT'] = sizeof($tasks['COMPLETED']);
         $tasks['RUNNING_CNT'] = sizeof($tasks['RUNNING']);
         self::$cachedTasks[$workflowId][$withUsers][$extendUserInfo] = $tasks;
     }
     return self::$cachedTasks[$workflowId][$withUsers][$extendUserInfo];
 }
Exemple #3
0
	/**
	* Метод возвращает массив заданий для данного пользователя в данном рабочем потоке.
	* Возвращаемый массив имеет вид:
	*	array(
	*		array(
	*			"ID" => код_задания,
	*			"NAME" => название_задания,
	*			"DESCRIPTION" => описание_задания,
	*		),
	*		. . .
	*	)
	*
	* @param int $userId - код пользователя.
	* @param string $workflowId - код рабочего потока.
	* @return array - массив заданий.
	*/
	public static function GetUserTasksForWorkflow($userId, $workflowId)
	{
		$userId = intval($userId);
		if ($userId <= 0)
			return array();

		$workflowId = trim($workflowId);
		if (strlen($workflowId) <= 0)
			return array();

		$arResult = array();

		$dbTask = CBPTaskService::GetList(
			array(),
			array("WORKFLOW_ID" => $workflowId, "USER_ID" => $userId),
			false,
			false,
			array("ID", "WORKFLOW_ID", "NAME", "DESCRIPTION")
		);
		while ($arTask = $dbTask->GetNext())
			$arResult[] = $arTask;

		return $arResult;
	}
 /**
  * @param $userId
  * @return bool
  */
 public function canRead($userId)
 {
     if ($this->canRead !== null) {
         return $this->canRead;
     }
     if (($res = $this->getDataToCheck($this->entityId)) && !empty($res)) {
         list($message, $topic) = $res;
         $entityId = null;
         $entityType = null;
         if (!empty($topic["XML_ID"])) {
             $entityId = substr($topic["XML_ID"], strrpos($topic["XML_ID"], "_") + 1);
             $entityType = substr($topic["XML_ID"], 0, strrpos($topic["XML_ID"], "_"));
         }
         switch ($entityType) {
             case "TASK":
                 if (Loader::includeModule("tasks")) {
                     $connector = new TaskConnector($entityId, $this->attachedObject);
                     $this->canRead = $connector->canRead($userId);
                     return $this->canRead;
                 }
                 break;
             case "EVENT":
                 if (Loader::includeModule("calendar")) {
                     $connector = new CalendarEventConnector($entityId, $this->attachedObject);
                     $this->canRead = $connector->canRead($userId);
                     return $this->canRead;
                 }
                 break;
             case "IBLOCK":
                 if ((int) $topic["USER_ID"] > 0 && Loader::includeModule("socialnetwork")) {
                     $codes = array();
                     if (($res = \CSocNetLog::getList(array(), array("SOURCE_ID" => $entityId, "EVENT_ID" => array("photo_photo", "news", "wiki")), false, false, array("ID"))->fetch()) && $res) {
                         $db_res = \CSocNetLogRights::getList(array(), array("LOG_ID" => $res["ID"]));
                         while ($res = $db_res->fetch()) {
                             $codes[] = $res["GROUP_CODE"];
                         }
                     }
                     $this->canRead = $this->canAccess($userId, $codes);
                     return $this->canRead;
                 }
                 $this->canRead = true;
                 return $this->canRead;
             case "MEETING":
                 $this->canRead = (int) $message["FORUM_ID"] == (int) \COption::getOptionInt('meeting', 'comments_forum_id', 0, SITE_ID);
                 return $this->canRead;
             case "TIMEMAN_ENTRY":
                 if (Loader::includeModule("timeman")) {
                     $dbEntry = \CTimeManEntry::getList(array(), array("ID" => $entityId), false, false, array("ID", "USER_ID"));
                     if ($arEntry = $dbEntry->fetch()) {
                         if ($arEntry["USER_ID"] == $userId) {
                             $this->canRead = true;
                             return $this->canRead;
                         } else {
                             $arManagers = \CTimeMan::getUserManagers($arEntry["USER_ID"]);
                             $this->canRead = in_array($userId, $arManagers);
                             return $this->canRead;
                         }
                     }
                 }
                 $this->canRead = false;
                 return $this->canRead;
             case "TIMEMAN_REPORT":
                 if (Loader::includeModule("timeman")) {
                     $dbReport = \CTimeManReportFull::getList(array(), array("ID" => $entityId), array("ID", "USER_ID"));
                     if ($arReport = $dbReport->fetch()) {
                         if ($arReport["USER_ID"] == $userId) {
                             $this->canRead = true;
                             return $this->canRead;
                         } else {
                             $arManagers = \CTimeMan::getUserManagers($arReport["USER_ID"]);
                             $this->canRead = in_array($userId, $arManagers);
                             return $this->canRead;
                         }
                     }
                 }
                 $this->canRead = false;
                 return $this->canRead;
             case "WF":
                 $this->canRead = false;
                 if (Loader::includeModule("bizproc")) {
                     $currentUserId = (int) $this->getUser()->getId();
                     $participants = \CBPTaskService::getWorkflowParticipants($entityId);
                     if (in_array($currentUserId, $participants)) {
                         $this->canRead = true;
                     } else {
                         $state = \CBPStateService::getWorkflowStateInfo($entityId);
                         if ($state && $currentUserId === (int) $state['STARTED_BY']) {
                             $this->canRead = true;
                         }
                     }
                 }
                 return $this->canRead;
         }
         if ((!empty($topic["SOCNET_GROUP_ID"]) || !empty($topic["OWNER_ID"])) && Loader::includeModule("socialnetwork")) {
             if (!empty($topic["SOCNET_GROUP_ID"])) {
                 $this->canRead = \CSocNetFeatures::isActiveFeature(SONET_ENTITY_GROUP, $topic["SOCNET_GROUP_ID"], "forum") && \CSocNetFeaturesPerms::canPerformOperation($userId, SONET_ENTITY_GROUP, $topic["SOCNET_GROUP_ID"], "forum", "view");
                 return $this->canRead;
             } else {
                 $this->canRead = \CSocNetFeatures::isActiveFeature(SONET_ENTITY_USER, $topic["OWNER_ID"], "forum") && \CSocNetFeaturesPerms::canPerformOperation($userId, SONET_ENTITY_USER, $topic["OWNER_ID"], "forum", "view");
                 return $this->canRead;
             }
         }
         if ($message) {
             $user = $this->getUser();
             if ($user && $userId == $user->getId()) {
                 $userGroups = $user->getUserGroupArray();
             } else {
                 $userGroups = array(2);
             }
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             if (\CForumUser::isAdmin($userId, $userGroups)) {
                 $this->canRead = true;
                 return $this->canRead;
             }
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             $perms = \CForumNew::getUserPermission($message["FORUM_ID"], $userGroups);
             if ($perms >= "Y") {
                 $this->canRead = true;
                 return $this->canRead;
             }
             if ($perms < "E" || $perms < "Q" && $message["APPROVED"] != "Y") {
                 $this->canRead = false;
                 return $this->canRead;
             }
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             $forum = \CForumNew::getByID($message["FORUM_ID"]);
             $this->canRead = $forum["ACTIVE"] == "Y";
             return $this->canRead;
         }
     }
     $this->canRead = false;
     return $this->canRead;
 }
Exemple #5
0
			</select>
		</td>
	</tr>
	<tr>
		<td><?php 
echo GetMessage("BPATL_WORKFLOW_NAME");
?>
:</td>
		<td>
			<select name="filter_workflow_template_id">
				<option value=""><?php 
echo GetMessage("BPATL_FILTER_STATUS_ALL");
?>
</option>
				<?php 
$dbResTmp = CBPTaskService::GetList(array("WORKFLOW_TEMPLATE_NAME" => "ASC"), array(), array("WORKFLOW_TEMPLATE_TEMPLATE_ID", "WORKFLOW_TEMPLATE_NAME"), false, array("WORKFLOW_TEMPLATE_TEMPLATE_ID", "WORKFLOW_TEMPLATE_NAME"));
while ($arResTmp = $dbResTmp->GetNext()) {
    ?>
					<option value="<?php 
    echo $arResTmp["WORKFLOW_TEMPLATE_TEMPLATE_ID"];
    ?>
"><?php 
    echo $arResTmp["WORKFLOW_TEMPLATE_NAME"];
    ?>
</option>
				<?php 
}
?>
			</select>
		</td>
	</tr>
Exemple #6
0
if ($allowAdminAccess) {
    if ($userId <= 0) {
        $userId = $USER->GetID();
    }
} else {
    $userId = $USER->GetID();
}
$arTask = false;
if ($taskId > 0) {
    $dbTask = CBPTaskService::GetList(array(), array("ID" => $taskId, "USER_ID" => $allowAdminAccess ? $userId : $USER->GetID()), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS", "USER_ID"));
    $arTask = $dbTask->GetNext();
}
if (!$arTask) {
    $workflowId = trim($_REQUEST["workflow_id"]);
    if (strlen($workflowId) > 0) {
        $dbTask = CBPTaskService::GetList(array(), array("WORKFLOW_ID" => $workflowId, "USER_ID" => $allowAdminAccess ? $userId : $USER->GetID()), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS", "USER_ID"));
        $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 {
    $backUrl = "/" . ltrim(trim($_REQUEST["back_url"]), "\\/");
    if (strlen($backUrl) <= 0) {
        $backUrl = "/bitrix/admin/bizproc_task_list.php?lang=" . LANGUAGE_ID;
    }
    if (strlen($backUrl) <= 0 && isset($arTask["PARAMETERS"]["DOCUMENT_ID"])) {
        $backUrl = CBPDocument::GetDocumentAdminPage($arTask["PARAMETERS"]["DOCUMENT_ID"]);
    }
Exemple #7
0
    $arFilter["<=MODIFIED"] = $filter_modified_2;
}
if (strlen($filter_name) > 0) {
    $arFilter["~NAME"] = "%" . $filter_name . "%";
}
$arAddHeaders = array(array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => true), array("id" => "NAME", "content" => GetMessage("BPATL_NAME"), "sort" => "NAME", "default" => true), array("id" => "DESCRIPTION", "content" => GetMessage("BPATL_DESCR"), "default" => true), array("id" => "DESCRIPTION_FULL", "content" => GetMessage("BPATL_DESCR_FULL"), "default" => false), array("id" => "MODIFIED", "content" => GetMessage("BPATL_MODIFIED"), "sort" => "MODIFIED", "default" => true), array("id" => "WORKFLOW_NAME", "content" => GetMessage("BPATL_WORKFLOW_NAME"), "default" => true, "sort" => ""), array("id" => "WORKFLOW_STATE", "content" => GetMessage("BPATL_WORKFLOW_STATE"), "default" => true, "sort" => ""));
if ($allowAdminAccess) {
    $arAddHeaders[] = array("id" => "USER", "content" => GetMessage("BPATL_USER"), "default" => true, "sort" => "");
}
$lAdmin->AddHeaders($arAddHeaders);
$arVisibleColumns = $lAdmin->GetVisibleHeaderColumns();
$arSelectFields = array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS");
if (in_array("USER", $arVisibleColumns) && $allowAdminAccess) {
    $arSelectFields[] = "USER_ID";
}
$dbResultList = CBPTaskService::GetList(array($by => $order), $arFilter, false, false, $arSelectFields);
$dbResultList = new CAdminResult($dbResultList, $sTableID);
$dbResultList->NavStart();
$lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("BPATL_NAV")));
while ($arResultItem = $dbResultList->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arResultItem);
    $s = $allowAdminAccess ? "&uid=" . intval($arResultItem["USER_ID"]) : "";
    $row->AddField("ID", '<a href="bizproc_task.php?id=' . $f_ID . $s . '&back_url=' . urlencode($APPLICATION->GetCurPageParam("lang=" . LANGUAGE_ID, array("lang"))) . '" title="' . GetMessage("BPATL_VIEW") . '">' . $f_ID . '</a>');
    $row->AddField("NAME", $f_NAME);
    $description = $f_DESCRIPTION;
    if (strlen($description) > 100) {
        $description = substr($description, 0, 97) . "...";
    }
    $row->AddField("DESCRIPTION", $description);
    $row->AddField("DESCRIPTION_FULL", $f_DESCRIPTION);
    $row->AddField("MODIFIED", $f_MODIFIED);
Exemple #8
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;
 }
Exemple #9
0
if (strlen($arResult["FatalErrorMessage"]) <= 0) {
    $arResult["Block"] = null;
    $db = CIBlock::GetList(array(), array("ID" => $arParams["BLOCK_ID"], "TYPE" => $arParams["IBLOCK_TYPE"], "ACTIVE" => "Y"));
    if ($ar = $db->GetNext()) {
        $arResult["Block"] = $ar;
    } else {
        $arResult["FatalErrorMessage"] .= GetMessage("BPWC_WTC_WRONG_IBLOCK") . ". ";
    }
}
if (strlen($arResult["FatalErrorMessage"]) <= 0) {
    $arResult["ShowType"] = "Form";
    if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["action"] == "doTask" && check_bitrix_sessid()) {
        $arErrorsTmp = array();
        if (CBPDocument::PostTaskForm($arResult["Task"], $USER->GetID(), $_REQUEST + $_FILES, $arErrorsTmp, $USER->GetFormattedName(false))) {
            $arResult["ShowType"] = "Success";
            $d = CBPTaskService::GetList(array(), array("WORKFLOW_ID" => $arResult["Task"]['WORKFLOW_ID'], "USER_ID" => (int) $GLOBALS["USER"]->GetID(), 'STATUS' => CBPTaskStatus::Running), false, false, array("ID"));
            if ($r = $d->Fetch()) {
                $backUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TASK"], array("task_id" => $r["ID"], "block_id" => $arParams["BLOCK_ID"]));
            } else {
                $backUrl = $arResult["BackUrl"];
            }
            if (strlen($backUrl) > 0) {
                LocalRedirect($backUrl);
                die;
            }
        } else {
            foreach ($arErrorsTmp as $e) {
                $arResult["ErrorMessage"] .= $e["message"] . ".<br />";
            }
        }
    }
Exemple #10
0
if (!$GLOBALS["USER"]->IsAuthorized() || !check_bitrix_sessid() || !CModule::IncludeModule("bizproc")) {
    die;
}
$taskId = isset($_REQUEST['TASK_ID']) ? (int) $_REQUEST['TASK_ID'] : 0;
$userId = isset($_REQUEST['USER_ID']) ? (int) $_REQUEST['USER_ID'] : 0;
if (!$userId) {
    $userId = $GLOBALS['USER']->getId();
}
if ($userId != $GLOBALS["USER"]->getId()) {
    if (!CBPHelper::checkUserSubordination($GLOBALS["USER"]->GetID(), $userId)) {
        die;
    }
}
$task = null;
if ($taskId > 0) {
    $dbTask = CBPTaskService::GetList(array(), array("ID" => $taskId, "USER_ID" => $userId), false, false, array("ID", "WORKFLOW_ID"));
    $task = $dbTask->fetch();
}
if (!$task) {
    die;
}
$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="<?php 
echo LANGUAGE_ID;
?>
" lang="<?php 
echo LANGUAGE_ID;
?>
">
Exemple #11
0
 /**
  * @param string $workflowId
  * @param string $iblockType
  * @param int $elementId
  * @param int $iblockId
  * @param string $action Action stop or delete
  * @return string error
  */
 public static function completeWorkflow($workflowId, $iblockType, $elementId, $iblockId, $action)
 {
     if (!Loader::includeModule('bizproc')) {
         return Loc::getMessage('LISTS_MODULE_BIZPROC_NOT_INSTALLED');
     }
     global $USER;
     $userId = $USER->getID();
     $documentType = BizprocDocument::generateDocumentComplexType($iblockType, $iblockId);
     $documentId = BizprocDocument::getDocumentComplexId($iblockType, $elementId);
     $documentStates = CBPDocument::getDocumentStates($documentType, $documentId);
     $permission = CBPDocument::canUserOperateDocument($action == 'stop' ? CBPCanUserOperateOperation::StartWorkflow : CBPCanUserOperateOperation::CreateWorkflow, $userId, $documentId, array("DocumentStates" => $documentStates));
     if (!$permission) {
         return Loc::getMessage('LISTS_ACCESS_DENIED');
     }
     $stringError = '';
     if ($action == 'stop') {
         $errors = array();
         CBPDocument::terminateWorkflow($workflowId, $documentId, $errors);
         if (!empty($errors)) {
             $stringError = '';
             foreach ($errors as $error) {
                 $stringError .= $error['message'];
             }
             $listError[] = array('id' => 'stopBizproc', 'text' => $stringError);
         }
     } else {
         $errors = array();
         if (isset($documentStates[$workflowId]['WORKFLOW_STATUS']) && $documentStates[$workflowId]['WORKFLOW_STATUS'] !== null) {
             CBPDocument::terminateWorkflow($workflowId, $documentId, $errors);
         }
         if (!empty($errors)) {
             $stringError = '';
             foreach ($errors as $error) {
                 $stringError .= $error['message'];
             }
             $listError[] = array('id' => 'stopBizproc', 'text' => $stringError);
         } else {
             CBPTaskService::deleteByWorkflow($workflowId);
             CBPTrackingService::deleteByWorkflow($workflowId);
             CBPStateService::deleteWorkflow($workflowId);
         }
     }
     if (empty($listError) && Loader::includeModule('socialnetwork') && $iblockType == COption::getOptionString("lists", "livefeed_iblock_type_id")) {
         $sourceId = CBPStateService::getWorkflowIntegerId($workflowId);
         $resultQuery = CSocNetLog::getList(array(), array('EVENT_ID' => 'lists_new_element', 'SOURCE_ID' => $sourceId), false, false, array('ID'));
         while ($log = $resultQuery->fetch()) {
             CSocNetLog::delete($log['ID']);
         }
     }
     if (!empty($listError)) {
         $errorObject = new CAdminException($listError);
         $stringError = $errorObject->getString();
     }
     return $stringError;
 }
Exemple #12
0
<?php

define("NOT_CHECK_PERMISSIONS", true);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
$arJsonData = array();
if (!CModule::IncludeModule("bizproc")) {
    $arJsonData["error"] = "Module is not installed";
}
if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["action"] == "doTask" && check_bitrix_sessid()) {
    if ($_POST["TASK_ID"] > 0) {
        $dbTask = CBPTaskService::GetList(array(), array("ID" => $_POST["TASK_ID"], "USER_ID" => $GLOBALS["USER"]->GetID()), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS", 'USER_STATUS'));
        $curTask = $dbTask->GetNext();
        if ($curTask) {
            if (isset($curTask['USER_STATUS']) && class_exists('CBPTaskUserStatus') && $curTask['USER_STATUS'] > CBPTaskUserStatus::Waiting) {
                $arJsonData["success"] = "Y";
            } else {
                $arErrorsTmp = array();
                if (CBPDocument::PostTaskForm($curTask, $GLOBALS["USER"]->GetID(), $_REQUEST + $_FILES, $arErrorsTmp, $GLOBALS["USER"]->GetFormattedName(false))) {
                    $arJsonData["success"] = "Y";
                } else {
                    $arError = array();
                    foreach ($arErrorsTmp as $e) {
                        $arError[] = $e["message"];
                    }
                    $arJsonData["error"] = implode("", $arError);
                }
            }
        } else {
            $arJsonData["error"] = "Task not found.";
        }
    } else {
Exemple #13
0
 public function processActionDeleteBizProc()
 {
     $this->checkRequiredPostParams(array('fileId', 'idBizProc'));
     if (!Loader::includeModule("bizproc")) {
         $this->errorCollection->addOne(new Error(Loc::getMessage('DISK_FILE_VIEW_BIZPROC_LOAD')));
     }
     if ($this->errorCollection->hasErrors()) {
         $this->sendJsonErrorResponse();
     }
     $fileId = (int) $this->request->getPost('fileId');
     /** @var File $file */
     $file = File::loadById((int) $fileId);
     if (!$file) {
         $this->errorCollection->addOne(new Error(Loc::getMessage('DISK_FILE_VIEW_ERROR_COULD_NOT_FIND_OBJECT'), self::ERROR_COULD_NOT_FIND_OBJECT));
         $this->sendJsonErrorResponse();
     }
     $documentData = array('DISK' => array('DOCUMENT_ID' => \Bitrix\Disk\BizProcDocument::getDocumentComplexId($fileId)), 'WEBDAV' => array('DOCUMENT_ID' => \Bitrix\Disk\BizProcDocumentCompatible::getDocumentComplexId($fileId)));
     $webdavFileId = $file->getXmlId();
     if (!empty($webdavFileId)) {
         $documentData['OLD_FILE_COMMON'] = array('DOCUMENT_ID' => array('webdav', 'CIBlockDocumentWebdav', $webdavFileId));
         $documentData['OLD_FILE_GROUP'] = array('DOCUMENT_ID' => array('webdav', 'CIBlockDocumentWebdavSocnet', $webdavFileId));
     }
     $workflowId = $this->request->getPost('idBizProc');
     foreach ($documentData as $nameModule => $data) {
         $availabilityProcess = CBPDocument::GetDocumentState($data['DOCUMENT_ID'], $workflowId);
         if (!empty($availabilityProcess)) {
             if (CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::CreateWorkflow, $this->getUser()->getId(), $data['DOCUMENT_ID'])) {
                 CBPTrackingService::deleteByWorkflow($workflowId);
                 CBPTaskService::deleteByWorkflow($workflowId);
                 /** @noinspection PhpDynamicAsStaticMethodCallInspection */
                 CBPStateService::deleteWorkflow($workflowId);
             }
         }
     }
     $this->sendJsonSuccessResponse();
 }
         }
     }
     $CACHE_MANAGER->RegisterTag("USER_CARD_" . intval($arUser['ID'] / TAGGED_user_card_size));
     $CACHE_MANAGER->EndTagCache();
     if ($obUserCache->StartDataCache()) {
         $obUserCache->EndDataCache(array('USER_NAME_FORMATTED' => $arResult['USER_NAME_FORMATTED'], 'USER_PERSONAL_PHOTO_SRC' => $arResult['USER_PERSONAL_PHOTO_SRC']));
     }
 }
 $arResult["SHOW_BIZPROC"] = false;
 if (CModule::IncludeModule("bizproc") && IsModuleInstalled("socialnetwork")) {
     $arResult["SHOW_BIZPROC"] = true;
     $arFilter = array("USER_ID" => $GLOBALS["USER"]->GetID());
     if (class_exists('CBPTaskUserStatus')) {
         $arFilter['USER_STATUS'] = CBPTaskUserStatus::Waiting;
     }
     $dbResultList = CBPTaskService::GetList(array(), $arFilter, array("USER_ID"), false, array("COUNT" => "ID"));
     $arResult["BZP_CNT"] = 0;
     if ($arResultList = $dbResultList->Fetch()) {
         $arResult["BZP_CNT"] = intval($arResultList["CNT"]);
     }
 }
 // live updates counter
 $arCounters = CUserCounter::GetValues($GLOBALS["USER"]->GetID(), SITE_ID);
 $arResult["LOG_ITEMS_TOTAL"] = isset($arCounters["**"]) ? intval($arCounters["**"]) : 0;
 // external mailbox messages counter
 $arResult["urlToExternalMailbox"] = "";
 $arResult["EXTERNAL_MAIL_CNT"] = 0;
 // exchange messages counter
 $arResult["urlToExchangeBox"] = "";
 $arResult["EXCHANGE_CNT"] = 0;
 if (CModule::IncludeModule("intranet") && CIntranetUtils::IsExternalMailAvailable()) {
Exemple #15
0
 /**
  * @param array $params Input params.
  * @param int $n Offset.
  * @param \CRestServer $server Rest server instance.
  * @return array
  * @throws AccessException
  */
 public static function getTaskList($params, $n, $server)
 {
     global $USER;
     self::checkAdminPermissions();
     $params = array_change_key_case($params, CASE_UPPER);
     $fields = array('ID' => 'ID', 'WORKFLOW_ID' => 'WORKFLOW_ID', 'DOCUMENT_NAME' => 'DOCUMENT_NAME', 'DESCRIPTION' => 'DESCRIPTION', 'NAME' => 'NAME', 'MODIFIED' => 'MODIFIED', 'WORKFLOW_STARTED' => 'WORKFLOW_STARTED', 'WORKFLOW_STARTED_BY' => 'WORKFLOW_STARTED_BY', 'OVERDUE_DATE' => 'OVERDUE_DATE', 'WORKFLOW_TEMPLATE_ID' => 'WORKFLOW_TEMPLATE_ID', 'WORKFLOW_TEMPLATE_NAME' => 'WORKFLOW_TEMPLATE_NAME', 'WORKFLOW_STATE' => 'WORKFLOW_STATE', 'STATUS' => 'STATUS', 'USER_ID' => 'USER_ID', 'USER_STATUS' => 'USER_STATUS', 'MODULE_ID' => 'MODULE_ID', 'ENTITY' => 'ENTITY', 'DOCUMENT_ID' => 'DOCUMENT_ID');
     $select = static::getSelect($params['SELECT'], $fields, array('ID', 'WORKFLOW_ID', 'DOCUMENT_NAME', 'NAME'));
     $select = array_merge(array('MODULE', 'ENTITY', 'DOCUMENT_ID'), $select);
     $filter = static::getFilter($params['FILTER'], $fields);
     $order = static::getOrder($params['ORDER'], $fields);
     $currentUserId = (int) $USER->getId();
     $targetUserId = isset($filter['USER_ID']) ? (int) $filter['USER_ID'] : 0;
     if ($targetUserId !== $currentUserId && !\CBPHelper::checkUserSubordination($currentUserId, $targetUserId)) {
         self::checkAdminPermissions();
     }
     $iterator = \CBPTaskService::getList($order, $filter, false, static::getNavData($n), $select);
     $result = array();
     while ($row = $iterator->fetch()) {
         if (isset($row['MODIFIED'])) {
             $row['MODIFIED'] = \CRestUtil::convertDateTime($row['MODIFIED']);
         }
         if (isset($row['WORKFLOW_STARTED'])) {
             $row['WORKFLOW_STARTED'] = \CRestUtil::convertDateTime($row['WORKFLOW_STARTED']);
         }
         if (isset($row['OVERDUE_DATE'])) {
             $row['OVERDUE_DATE'] = \CRestUtil::convertDateTime($row['OVERDUE_DATE']);
         }
         $row['DOCUMENT_URL'] = \CBPDocument::getDocumentAdminPage(array($row['MODULE_ID'], $row['ENTITY'], $row['DOCUMENT_ID']));
         $result[] = $row;
     }
     return $result;
 }
define("STOP_STATISTICS", true);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
$result = array('SUCCESS' => true);
$user = $GLOBALS["USER"];
if (!CModule::IncludeModule("bizproc") || !CModule::IncludeModule("iblock")) {
    $result['SUCCESS'] = false;
}
if ($_SERVER["REQUEST_METHOD"] != "POST" || !$user->IsAuthorized() || !check_bitrix_sessid()) {
    $result['SUCCESS'] = false;
    $result['ERROR'] = 'Access denied.';
}
if ($result['SUCCESS']) {
    $taskId = (int) $_REQUEST['TASK_ID'];
    $task = false;
    if ($taskId > 0) {
        $dbTask = CBPTaskService::GetList(array(), array("ID" => $taskId, "USER_ID" => $user->getId(), 'USER_STATUS' => CBPTaskUserStatus::Waiting), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS"));
        $task = $dbTask->fetch();
    }
    if (!$task) {
        $result['SUCCESS'] = false;
        $result['ERROR'] = 'Task not found.';
    } else {
        $task["PARAMETERS"]["DOCUMENT_ID"] = CBPStateService::GetStateDocumentId($task['WORKFLOW_ID']);
        $task["MODULE_ID"] = $task["PARAMETERS"]["DOCUMENT_ID"][0];
        $task["ENTITY"] = $task["PARAMETERS"]["DOCUMENT_ID"][1];
        $task["DOCUMENT_ID"] = $task["PARAMETERS"]["DOCUMENT_ID"][2];
        $arErrorsTmp = array();
        if (SITE_CHARSET != "utf-8" && !empty($_SERVER['HTTP_BX_AJAX'])) {
            CUtil::decodeURIComponent($_REQUEST);
            CUtil::decodeURIComponent($_FILES);
        }
 public static function GetUserWorkflowTaskCount($workflowIDs, $userID = 0)
 {
     if (!is_array($workflowIDs)) {
         return 0;
     }
     if (!(IsModuleInstalled('bizproc') && CModule::IncludeModule('bizproc'))) {
         return 0;
     }
     $userID = intval($userID);
     if ($userID <= 0) {
         $userID = CCrmSecurityHelper::GetCurrentUserID();
     }
     $filter = array('USER_ID' => $userID);
     $workflowQty = count($workflowIDs);
     if ($workflowQty > 1) {
         //IMPORTANT: will produce SQL error due to CBPTaskService::GetList bug
         //$filter['@WORKFLOW_ID'] = $workflowIDs;
         $filter['WORKFLOW_ID'] = $workflowIDs[0];
     }
     /*elseif($workflowQty === 1)
     		{
     			$filter['WORKFLOW_ID'] = $workflowIDs[0];
     		}*/
     $result = CBPTaskService::GetList(array(), $filter, array(), false, array());
     return is_int($result) ? $result : 0;
 }
Exemple #18
0
 } elseif ($_REQUEST["action"] == "del_bizproc") {
     if ($arParams["DropWorkflowPermission"] != "Y") {
         $arError[] = array("id" => "access_denied", "text" => GetMessage("BPADH_NO_PERMS"));
     } else {
         $ar = array();
         if (isset($arDocumentStates[$_REQUEST['id']]['WORKFLOW_STATUS']) && $arDocumentStates[$_REQUEST['id']]['WORKFLOW_STATUS'] !== null) {
             CBPDocument::TerminateWorkflow($_REQUEST["id"], $arParams["DOCUMENT_ID"], $ar);
         }
         if (count($ar) > 0) {
             $str = "";
             foreach ($ar as $a) {
                 $str .= $a["message"];
             }
             $arError[] = array("id" => "stop_bizproc", "text" => $str);
         } else {
             CBPTaskService::DeleteByWorkflow($_REQUEST["id"]);
             CBPTrackingService::DeleteByWorkflow($_REQUEST["id"]);
             CBPStateService::DeleteWorkflow($_REQUEST["id"]);
         }
     }
 } elseif ($_SERVER['REQUEST_METHOD'] == "POST" && intval($_REQUEST["bizproc_index"]) > 0) {
     $arBizProcWorkflowId = array();
     $bizprocIndex = intval($_REQUEST["bizproc_index"]);
     $needUpdateStatesList = false;
     for ($i = 1; $i <= $bizprocIndex; $i++) {
         $bpId = trim($_REQUEST["bizproc_id_" . $i]);
         $bpTemplateId = intval($_REQUEST["bizproc_template_id_" . $i]);
         $bpEvent = trim($_REQUEST["bizproc_event_" . $i]);
         if (strlen($bpEvent) > 0) {
             if (strlen($bpId) > 0) {
                 if (!array_key_exists($bpId, $arDocumentStates)) {
Exemple #19
0
 public static function addCommentLists($fields)
 {
     if (!CModule::IncludeModule('forum') || !CModule::IncludeModule('bizproc')) {
         return false;
     }
     $ufFileId = array();
     $ufDocId = array();
     $fieldsMessage = array();
     $messageId = array();
     $error = array();
     $note = array();
     $sonetLogQuery = CSocNetLog::GetList(array(), array('ID' => $fields['LOG_ID']), false, false, array('ID', 'SOURCE_ID', 'SITE_ID', 'MESSAGE', 'USER_ID'));
     if ($sonetLog = $sonetLogQuery->fetch()) {
         $users = CBPTaskService::getWorkflowParticipants($sonetLog['MESSAGE'], CBPTaskUserStatus::Waiting);
         if (preg_match_all("/(?<=\\[USER=)(?P<id>[0-9]+)(?=\\])/", $fields['TEXT_MESSAGE'], $matches)) {
             $users = array_unique(array_merge($users, $matches['id']));
         }
         $users[] = $sonetLog['USER_ID'];
         self::setSocnetFollow($users, $sonetLog['ID'], 'Y', false, true);
         $forumId = CBPHelper::getForumId();
         if ($forumId) {
             $topicQuery = CForumTopic::GetList(array(), array('FORUM_ID' => $forumId, 'XML_ID' => 'WF_' . $sonetLog['MESSAGE']));
             if ($topicQuery && ($topic = $topicQuery->fetch())) {
                 $topicId = $topic['ID'];
             } else {
                 $arTopic = array('AUTHOR_ID' => 0, 'TITLE' => 'WF_' . $sonetLog['MESSAGE'], 'TAGS' => '', 'MESSAGE' => 'WF_' . $sonetLog['MESSAGE'], 'XML_ID' => 'WF_' . $sonetLog['MESSAGE']);
                 $arUserStart = array("ID" => $arTopic["AUTHOR_ID"], "NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"]);
                 $GLOBALS["DB"]->StartTransaction();
                 $arTopicFields = array("TITLE" => $arTopic["TITLE"], "TAGS" => $arTopic["TAGS"], "FORUM_ID" => $forumId, "USER_START_ID" => $arUserStart["ID"], "USER_START_NAME" => $arUserStart["NAME"], "LAST_POSTER_NAME" => $arUserStart["NAME"], "XML_ID" => $arTopic["XML_ID"], "APPROVED" => "Y", "PERMISSION_EXTERNAL" => 'Q', "PERMISSION" => 'Y');
                 $topicId = CForumTopic::Add($arTopicFields);
                 if (intval($topicId) > 0) {
                     $arTopic['MESSAGE'] = strip_tags($arTopic['MESSAGE']);
                     $arFields = array("POST_MESSAGE" => $arTopic['MESSAGE'], "AUTHOR_ID" => $arUserStart["ID"], "AUTHOR_NAME" => $arUserStart["NAME"], "FORUM_ID" => $forumId, "TOPIC_ID" => $topicId, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => "WF", "PARAM2" => 0, "PERMISSION_EXTERNAL" => 'Q', "PERMISSION" => 'Y');
                     $startMessageId = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N"));
                     if (intVal($startMessageId) <= 0) {
                         CForumTopic::Delete($topicId);
                         $topicId = 0;
                     }
                 }
                 if (intval($topicId) <= 0) {
                     $GLOBALS["DB"]->Rollback();
                 } else {
                     $GLOBALS["DB"]->Commit();
                 }
             }
             if ($topicId) {
                 $fieldsMessage = array('POST_MESSAGE' => $fields['TEXT_MESSAGE'], 'USE_SMILES' => 'Y', 'PERMISSION_EXTERNAL' => 'Q', 'PERMISSION' => 'Y', 'APPROVED' => 'Y');
                 $tmp = false;
                 $GLOBALS['USER_FIELD_MANAGER']->editFormAddFields('SONET_COMMENT', $tmp);
                 if (is_array($tmp)) {
                     if (array_key_exists('UF_SONET_COM_DOC', $tmp)) {
                         $GLOBALS['UF_FORUM_MESSAGE_DOC'] = $tmp['UF_SONET_COM_DOC'];
                     } elseif (array_key_exists('UF_SONET_COM_FILE', $tmp)) {
                         $fieldsMessage['FILES'] = array();
                         foreach ($tmp['UF_SONET_COM_FILE'] as $fileId) {
                             $fieldsMessage['FILES'][] = array('FILE_ID' => $fileId);
                         }
                     }
                     if (array_key_exists("UF_SONET_COM_URL_PRV", $tmp)) {
                         $GLOBALS["UF_FORUM_MES_URL_PRV"] = $tmp["UF_SONET_COM_URL_PRV"];
                     }
                 }
                 $messageId = ForumAddMessage("REPLY", $forumId, $topicId, 0, $fieldsMessage, $error, $note);
                 if ($messageId > 0) {
                     $addedMessageFilesQuery = CForumFiles::getList(array('ID' => 'ASC'), array('MESSAGE_ID' => $messageId));
                     while ($addedMessageFiles = $addedMessageFilesQuery->fetch()) {
                         $ufFileId[] = $addedMessageFiles['FILE_ID'];
                     }
                     $ufDocId = $GLOBALS['USER_FIELD_MANAGER']->getUserFieldValue('FORUM_MESSAGE', 'UF_FORUM_MESSAGE_DOC', $messageId, LANGUAGE_ID);
                     $ufUrlPreview = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MES_URL_PRV", $messageID, LANGUAGE_ID);
                 }
             }
         }
     }
     if (!$messageId) {
         $error = Loc::getMessage('LISTS_LF_ADD_COMMENT_SOURCE_ERROR');
     }
     return array('SOURCE_ID' => $messageId, 'MESSAGE' => $fieldsMessage ? $fieldsMessage['POST_MESSAGE'] : false, 'RATING_TYPE_ID' => 'FORUM_POST', 'RATING_ENTITY_ID' => $messageId, 'ERROR' => $error, 'NOTES' => $note, 'UF' => array('FILE' => $ufFileId, 'DOC' => $ufDocId, 'URL_PREVIEW' => $ufUrlPreview));
 }
 public static function getTaskServiceList($taskId, $userId)
 {
     return \CBPTaskService::getList(array(), array("ID" => $taskId, "USER_ID" => $userId), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS"));
 }
Exemple #21
0
     } else {
         $op = "";
         $newKey = $key;
     }
     if (!in_array($newKey, array("NAME", "MODIFIED", "OVERDUE_DATE", "WORKFLOW_TEMPLATE_ID", "DESCRIPTION"))) {
         continue;
     }
     if (in_array($newKey, array("NAME", "DESCRIPTION")) && $op == "") {
         $op = "~";
         $value = "%" . $value . "%";
     }
     $arFilter[$op . $newKey] = $value;
 }
 $arResult["SORT"] = $gridSort["sort"];
 $arResult["RECORDS"] = array();
 $dbRecordsList = CBPTaskService::GetList($gridSort["sort"], $arFilter, false, $gridOptions->GetNavParams(), $arSelectFields);
 while ($arRecord = $dbRecordsList->GetNext()) {
     $arRecord['MODIFIED'] = FormatDateFromDB($arRecord['MODIFIED']);
     $arRecord["DOCUMENT_URL"] = CBPDocument::GetDocumentAdminPage($arRecord["PARAMETERS"]["DOCUMENT_ID"]);
     $arRecord["MODULE_ID"] = $arRecord["PARAMETERS"]["DOCUMENT_ID"][0];
     $arRecord["ENTITY"] = $arRecord["PARAMETERS"]["DOCUMENT_ID"][1];
     $arRecord["DOCUMENT_ID"] = $arRecord["PARAMETERS"]["DOCUMENT_ID"][2];
     $arRecord["URL"] = array("~TASK" => CComponentEngine::MakePathFromTemplate($arParams["~TASK_EDIT_URL"], $arRecord), "TASK" => CComponentEngine::MakePathFromTemplate($arParams["TASK_EDIT_URL"], $arRecord));
     if (array_key_exists("DESCRIPTION", $arRecord)) {
         $arRecord["DESCRIPTION"] = nl2br($arRecord["DESCRIPTION"]);
     }
     if (count(array_intersect($arSelectFields, array("WORKFLOW_NAME", "WORKFLOW_STATE", "WORKFLOW_STARTED", "WORKFLOW_STARTED_BY"))) > 0) {
         $arState = CBPStateService::GetWorkflowState($arRecord["WORKFLOW_ID"]);
         $arRecord["WORKFLOW_NAME"] = $arState["TEMPLATE_NAME"];
         $arRecord["WORKFLOW_STATE"] = $arState["STATE_TITLE"];
         $arRecord["WORKFLOW_STARTED"] = FormatDateFromDB($arState["STARTED_FORMATTED"]);
}
$arResult["TASK"]["MODULE_ID"] = $arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"][0];
$arResult["TASK"]["ENTITY"] = $arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"][1];
$arResult["TASK"]["DOCUMENT_ID"] = $arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"][2];
$arParams["DOCUMENT_URL"] = trim($arParams["DOCUMENT_URL"]);
if (empty($arParams["DOCUMENT_URL"])) {
    $arParams["DOCUMENT_URL"] = CBPDocument::GetDocumentAdminPage($arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"]);
} else {
    $arParams["DOCUMENT_URL"] = CComponentEngine::MakePathFromTemplate($arParams["DOCUMENT_URL"], $arResult["TASK"]);
}
$arResult["TASK"]["URL"] = array("VIEW" => htmlspecialcharsbx($arParams["DOCUMENT_URL"]), "~VIEW" => $arParams["DOCUMENT_URL"]);
if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["action"] == "doTask" && check_bitrix_sessid()) {
    $arErrorsTmp = array();
    if (CBPDocument::PostTaskForm($arResult["TASK"], $GLOBALS["USER"]->GetID(), $_REQUEST + $_FILES, $arErrorsTmp, $GLOBALS["USER"]->GetFormattedName(false))) {
        $arResult["ShowMode"] = "Success";
        $d = CBPTaskService::GetList(array(), array("WORKFLOW_ID" => $arResult["TASK"]["WORKFLOW_ID"], "USER_ID" => $arParams["USER_ID"]), false, false, array("ID"));
        if ($r = $d->Fetch()) {
            $backUrl = CComponentEngine::MakePathFromTemplate($arParams["TASK_EDIT_URL"], array("ID" => $r["ID"], "task_id" => $r["ID"]));
        } else {
            $backUrl = $arResult["backUrl"];
        }
        if (strlen($backUrl) > 0) {
            LocalRedirect($backUrl);
            die;
        }
    } else {
        $arError = array();
        foreach ($arErrorsTmp as $e) {
            $arError[] = array("id" => "bad_task", "text" => $e["message"]);
        }
        $e = new CAdminException($arError);
Exemple #23
0
$arResult['TASK']['PARAMETERS']['DOCUMENT_ID'] = $arState['DOCUMENT_ID'];
$arResult["TASK"]["MODULE_ID"] = $arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"][0];
$arResult["TASK"]["ENTITY"] = $arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"][1];
$arResult["TASK"]["DOCUMENT_ID"] = $arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"][2];
$arParams["DOCUMENT_URL"] = trim($arParams["DOCUMENT_URL"]);
if (empty($arParams["DOCUMENT_URL"])) {
    $arParams["DOCUMENT_URL"] = CBPDocument::GetDocumentAdminPage($arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"]);
} else {
    $arParams["DOCUMENT_URL"] = CComponentEngine::MakePathFromTemplate($arParams["DOCUMENT_URL"], $arResult["TASK"]);
}
$arResult["TASK"]["URL"] = array("VIEW" => htmlspecialcharsbx($arParams["DOCUMENT_URL"]), "~VIEW" => $arParams["DOCUMENT_URL"]);
if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["action"] == "doTask" && check_bitrix_sessid()) {
    $arErrorsTmp = array();
    if (CBPDocument::PostTaskForm($arResult["TASK"], $arParams['USER_ID'], $_REQUEST + $_FILES, $arErrorsTmp, $USER->GetFormattedName(false))) {
        $arResult["ShowMode"] = "Success";
        $d = CBPTaskService::GetList(array(), array('WORKFLOW_ID' => $arResult['TASK']['WORKFLOW_ID'], 'USER_ID' => $arParams['USER_ID'], 'USER_STATUS' => CBPTaskUserStatus::Waiting), false, false, array("ID"));
        if ($r = $d->Fetch()) {
            $backUrl = CComponentEngine::MakePathFromTemplate($arParams["TASK_EDIT_URL"], array("ID" => $r["ID"], "task_id" => $r["ID"]));
        } else {
            $backUrl = $arResult["backUrl"];
        }
        if (strlen($backUrl) > 0) {
            LocalRedirect($backUrl);
            die;
        }
    } else {
        $arError = array();
        foreach ($arErrorsTmp as $e) {
            $arError[] = array("id" => "bad_task", "text" => $e["message"]);
        }
        $e = new CAdminException($arError);
Exemple #24
0
    }
    $arResult["H_ROWS_COUNT"] = $dbRecordsList->SelectedRowsCount();
    $arResult["H_NAV_STRING"] = $dbRecordsList->GetPageNavStringEx($navComponentObject, GetMessage("INTS_TASKS_NAV"), "", false);
    $arResult["H_NAV_CACHED_DATA"] = $navComponentObject->GetTemplateCachedData();
    $arResult["H_NAV_RESULT"] = $dbRecordsList;
}
if (strlen($arResult["FatalErrorMessage"]) <= 0) {
    if (!$arParams['COUNTERS_ONLY']) {
        if ($arParams["SET_TITLE"] == "Y") {
            $APPLICATION->SetTitle(GetMessage("BPABS_TITLE"));
        }
        if ($arParams["SET_NAV_CHAIN"] == "Y") {
            $APPLICATION->AddChainItem(GetMessage("BPABS_TITLE"));
        }
    }
    $arResult['COUNTERS'] = CBPTaskService::getCounters($targetUserId);
    if ($arParams['COUNTERS_ONLY']) {
        $arResult['COUNTERS_RUNNING'] = CBPStateService::getRunningCounters($targetUserId);
    }
    //counter autofixer
    $currentCounter = (int) CUserCounter::GetValue($targetUserId, 'bp_tasks', '**');
    if (isset($arResult['COUNTERS']['*']) && $currentCounter != $arResult['COUNTERS']['*']) {
        CUserCounter::Set($targetUserId, 'bp_tasks', $arResult['COUNTERS']['*'], '**');
    }
} elseif (!$arParams['COUNTERS_ONLY']) {
    if ($arParams["SET_TITLE"] == "Y") {
        $APPLICATION->SetTitle(GetMessage("BPWC_WLC_ERROR"));
    }
    if ($arParams["SET_NAV_CHAIN"] == "Y") {
        $APPLICATION->AddChainItem(GetMessage("BPWC_WLC_ERROR"));
    }
Exemple #25
0
$errorMessage = "";
$allowAdminAccess = $USER->IsAdmin();
$taskId = intval($_REQUEST["id"]);
$userId = intval($_REQUEST["uid"]);
if (!$allowAdminAccess || $userId <= 0) {
    $userId = $USER->GetID();
}
$arTask = false;
if ($taskId > 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"]);
Exemple #26
0
             }
         }
     }
 }
 if ($bCanStartWorkflow) {
     $documentId = CBPVirtualDocument::CreateDocument(0, array("IBLOCK_ID" => $arParams["BLOCK_ID"], "NAME" => GetMessage("BPWC_WRC_Z"), "CREATED_BY" => "user_" . $GLOBALS["USER"]->GetID()));
     $arErrorsTmp = array();
     $wfId = CBPDocument::StartWorkflow($workflowTemplateId, array("bizproc", "CBPVirtualDocument", $documentId), array_merge($arWorkflowParameters, array("TargetUser" => "user_" . intval($GLOBALS["USER"]->GetID()))), $arErrorsTmp);
     if (count($arErrorsTmp) > 0) {
         $arResult["ShowMode"] = "StartWorkflowError";
         foreach ($arErrorsTmp as $e) {
             $arResult["ErrorMessage"] .= "[" . $e["code"] . "] " . $e["message"] . "<br />";
         }
     } else {
         $arResult["ShowMode"] = "StartWorkflowSuccess";
         $d = CBPTaskService::GetList(array(), array("WORKFLOW_ID" => $wfId, "USER_ID" => intval($GLOBALS["USER"]->GetID())), false, false, array("ID"));
         if ($r = $d->Fetch()) {
             $backUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TASK"], array("task_id" => $r["ID"], "block_id" => $arParams["BLOCK_ID"]));
         } else {
             $backUrl = $arResult["BackUrl"];
         }
         LocalRedirect($backUrl);
         die;
     }
 } else {
     $p = $_SERVER["REQUEST_METHOD"] == "POST" && strlen($_POST["DoStartParamWorkflow"]) > 0;
     $keys = array_keys($arResult["TEMPLATE"]["PARAMETERS"]);
     foreach ($keys as $key) {
         $v = $p ? $_REQUEST[$key] : $arResult["TEMPLATE"]["PARAMETERS"][$key]["Default"];
         if (!is_array($v)) {
             $arResult["ParametersValues"][$key] = CBPHelper::ConvertParameterValues($v);
Exemple #27
0
    $arParams["PAGE_VAR"] = "page";
}
$arParams["PATH_TO_BIZPROC_EDIT"] = trim($arParams["PATH_TO_BIZPROC_EDIT"]);
if (strlen($arParams["PATH_TO_BIZPROC_EDIT"]) <= 0) {
    $arParams["PATH_TO_BIZPROC_EDIT"] = htmlspecialcharsbx($APPLICATION->GetCurPage() . "?" . $arParams["PAGE_VAR"] . "=bizproc_edit&" . $arParams["TASK_VAR"] . "=#task_id#");
}
if (!$GLOBALS["USER"]->IsAuthorized()) {
    $arResult["NEED_AUTH"] = "Y";
} else {
    if ($arParams["SET_TITLE"] == "Y") {
        $APPLICATION->SetTitle(GetMessage("SONET_BIZPROC_TITLE"));
    }
    if ($arParams["SET_NAV_CHAIN"] != "N") {
        $APPLICATION->AddChainItem(GetMessage("SONET_BIZPROC_TITLE"));
    }
    $dbResultList = CBPTaskService::GetList(array("MODIFIED" => "DESC"), array("USER_ID" => $USER->GetID()), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS"));
    while ($arResultItem = $dbResultList->GetNext()) {
        if (strlen($arResultItem["DESCRIPTION"]) > 100) {
            $arResultItem["DESCRIPTION"] = substr($arResultItem["DESCRIPTION"], 0, 97) . "...";
        }
        $arResultItem["EditUrl"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BIZPROC_EDIT"], array("task_id" => $arResultItem["ID"]));
        $arResult["TASKS"][] = $arResultItem;
    }
    $dbTracking = CBPTrackingService::GetList(array("MODIFIED" => "DESC"), array("MODIFIED_BY" => $USER->GetID()));
    while ($arTracking = $dbTracking->GetNext()) {
        if (strlen($arTracking["WORKFLOW_ID"]) > 0) {
            $arTracking["STATE"] = CBPStateService::GetWorkflowState($arTracking["WORKFLOW_ID"]);
            $arTracking["STATE"]["Url"] = CBPDocument::GetDocumentAdminPage($arTracking["STATE"]["DOCUMENT_ID"]);
        }
        $arResult["TRACKING"][] = $arTracking;
    }
Exemple #28
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
$sTplDir = trim(preg_replace("'[\\\\/]+'", "/", dirname(__FILE__) . "/"));
$arParams["TASK_ID"] = intval($arResult["VARIABLES"]["ID"]);
$arParams["USER_ID"] = intval(empty($arParams["USER_ID"]) ? $GLOBALS["USER"]->GetID() : $arParams["USER_ID"]);
if ($arParams["TASK_ID"] > 0) {
    $dbTask = CBPTaskService::GetList(array(), array("ID" => $arParams["TASK_ID"], "USER_ID" => $arParams["USER_ID"]), false, false, array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS"));
    $arResult["TASK"] = $dbTask->GetNext();
}
if ($arResult["TASK"]) {
    $docID = $arResult["TASK"]["PARAMETERS"]["DOCUMENT_ID"][2];
    $arResult["VARIABLES"]["ELEMENT_ID"] = $docID;
    $arResult["VARIABLES"]["ACTION"] = "EDIT";
    $arInfo = (include $sTplDir . "tab_edit.php");
    if ($arParams["WORKFLOW"] == "bizproc") {
        include $sTplDir . "tab_bizproc_history.php";
        include $sTplDir . "tab_bizproc_task.php";
        include $sTplDir . "tab_versions.php";
    } elseif ($arParams["WORKFLOW"] == "workflow") {
        include $sTplDir . "tab_workflow_history.php";
    } else {
        include $sTplDir . "tab_bizproc_history.php";
    }
    include $sTplDir . "tab_comments.php";
    if (!isset($_GET[$arParams["FORM_ID"] . '_active_tab'])) {
        $_REQUEST[$arParams["FORM_ID"] . '_active_tab'] = "tab_bizproc_view";
    }
    if (!$arParams["FORM_ID"]) {