- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/integration/bizproc/document/task.php
- Класс: BitrixTasksIntegrationBizprocDocumentTask
- Вызов: Task::canUserOperateDocument
static function canUserOperateDocument($operation, $userId, $documentId, $arParameters = array())
{
$userId = (int) $userId;
$user = new CBPWorkflowTemplateUser($userId);
if ($user->isAdmin())
{
return true; //Admin is the Lord of the Automation
}
if (BitrixTasksUtilUser::isExternalUser($userId))
{
return false;
}
switch ($operation)
{
case CBPCanUserOperateOperation::CreateWorkflow:
case CBPCanUserOperateOperation::CreateAutomation:
{
//for admins only, already checked
break;
}
case CBPCanUserOperateOperation::StartWorkflow:
case CBPCanUserOperateOperation::ViewWorkflow:
case CBPCanUserOperateOperation::ReadDocument:
{
$members = MemberTable::getList([
'filter' => ['=TASK_ID' => $documentId],
'select' => ['USER_ID']
])->fetchAll();
$members = array_column($members, 'USER_ID');
return in_array($userId, $members);
}
case CBPCanUserOperateOperation::WriteDocument:
{
$creatorId = MemberTable::getList([
'filter' => ['=TASK_ID' => $documentId, '=TYPE' => 'O'],
'select' => ['USER_ID']
])->fetch()['USER_ID'];
return (int) $creatorId === (int) $userId;
}
}
return false;
}