CBPAllTaskService::delegateTask: Bitrix method

      
<?php 
//  CBPAllTaskService :: delegateTask()
//  /dist/bitrix/modules/bizproc/classes/general/taskservice.php:121

    
public static function delegateTask($taskId$fromUserId$toUserId)
    {
        global 
$DB;
        
$taskId = (int)$taskId;
        
$fromUserId = (int)$fromUserId;
        
$toUserId = (int)$toUserId;

        if (!
$taskId || !$fromUserId || !$toUserId)
            return 
false;

        
$originalUserId 0;

        
//check ORIGINAL_USER_ID
        
$iterator $DB->Query('SELECT ORIGINAL_USER_ID'
            
.' FROM b_bp_task_user'
            
.' WHERE TASK_ID = '.$taskId.' AND USER_ID = '.$fromUserId
        
);
        
$row $iterator->fetch();
        if (!empty(
$row['ORIGINAL_USER_ID']))
            
$originalUserId $row['ORIGINAL_USER_ID'];

        
// check USER_ID (USER_ID must be unique for task)
        
$iterator $DB->Query('SELECT USER_ID'
            
.' FROM b_bp_task_user'
            
.' WHERE TASK_ID = '.$taskId.' AND USER_ID = '.$toUserId
        
);
        
$row $iterator->fetch();
        if (!empty(
$row['USER_ID']))
            return 
false;

        
$DB->Query("UPDATE b_bp_task_user SET USER_ID = "
            
.$toUserId
            
.(!$originalUserId', ORIGINAL_USER_ID = '.$fromUserId '')
            .
" WHERE TASK_ID = ".$taskId." AND USER_ID = ".$fromUserIdtrue);
        
CUserCounter::Decrement($fromUserId'bp_tasks''**');
        
CUserCounter::Increment($toUserId'bp_tasks''**');
        
self::onTaskChange(
            
$taskId,
            [
                
'USERS' => [$toUserId],
                
'USERS_ADDED' => [$toUserId],
                
'USERS_REMOVED' => [$fromUserId],
                
'COUNTERS_DECREMENTED' => [$fromUserId],
                
'COUNTERS_INCREMENTED' => [$toUserId],
            ],
            
CBPTaskChangedStatus::Delegate
        
);
        foreach (
GetModuleEvents("bizproc""OnTaskDelegate"true) as $arEvent)
        {
            
ExecuteModuleEventEx($arEvent, array($taskId$fromUserId$toUserId));
        }
        return 
true;
    }