Helper::getDateTimeIntervalString: Bitrix method

      
<?php 
//  Bitrix\Bizproc\Automation\Helper :: getDateTimeIntervalString()
//  /dist/bitrix/modules/bizproc/lib/automation/helper.php:431

    
public static function getDateTimeIntervalString($interval)
    {
        if (!
$interval['basis'] || !\CBPDocument::IsExpression($interval['basis']))
            
$interval['basis'] = static::CURRENT_DATE_BASIS;

        
$days = isset($interval['d']) ? (int)$interval['d'] : 0;
        
$hours = isset($interval['h']) ? (int)$interval['h'] : 0;
        
$minutes = isset($interval['i']) ? (int)$interval['i'] : 0;

        if (isset(
$interval['value']) && isset($interval['valueType']))
        {
            switch (
$interval['valueType'])
            {
                case 
'i':
                    
$minutes = (int)$interval['value'];
                    break;
                case 
'h':
                    
$hours = (int)$interval['value'];
                    break;
                case 
'd':
                    
$days = (int)$interval['value'];
                    break;
            }
        }

        
$add '';
        if (isset(
$interval['type']) && $interval['type'] == DelayInterval::TYPE_BEFORE)
            
$add '-';

        if (
$days 0)
            
$add .= $days.'d';
        if (
$hours 0)
            
$add .= $hours.'h';
        if (
$minutes 0)
            
$add .= $minutes.'i';

        
$fn = !empty($interval['workTime']) ? 'workdateadd' 'dateadd';

        if (
$fn === 'workdateadd' && $add === '')
        {
            
$add '0d';
        }

        
$worker '';
        if (
$fn === 'workdateadd' && isset($interval['worker']))
        {
            
$worker $interval['worker'];
        }

        return 
'='.$fn.'('.$interval['basis'].',"'.$add.'"'.($worker ','.$worker '').')';
    }