Helper :: parseDateTimeInterval: Bitrix method

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

    
public static function parseDateTimeInterval($interval)
    {
        
$interval = (string)$interval;
        
$result = array(
            
'basis' => null,
            
'i' => 0,
            
'h' => 0,
            
'd' => 0,
            
'workTime' => false
        
);

        if (
strpos($interval'=dateadd(') === || strpos($interval'=workdateadd(') === 0)
        {
            if (
strpos($interval'=workdateadd(') === 0)
            {
                
$interval substr($interval13, -1); // cut =workdateadd(...)
                
$result['workTime'] = true;
            }
            else
            {
                
$interval substr($interval9, -1); // cut =dateadd(...)
            
}

            
$arguments explode(','$interval);
            
$result['basis'] = trim($arguments[0]);

            
$arguments[1] = trim($arguments[1], '"\'');
            
$result['type'] = strpos($arguments[1], '-') === DelayInterval::TYPE_BEFORE DelayInterval::TYPE_AFTER;

            
preg_match_all('/\s*([\d]+)\s*(i|h|d)\s*/i'$arguments[1], $matches);
            foreach (
$matches[0] as $i => $match)
            {
                
$result[$matches[2][$i]] = (int)$matches[1][$i];
            }
        }
        elseif (\
CBPDocument::IsExpression($interval))
            
$result['basis'] = $interval;

        
$minutes $result['i'] + $result['h'] * 60 $result['d'] * 60 24;

        if (
$minutes 1440 === 0)
        {
            
$result['value'] = $minutes 1440;
            
$result['valueType'] = 'd';
        }
        elseif (
$minutes 60 === 0)
        {
            
$result['value'] = $minutes 60;
            
$result['valueType'] = 'h';
        }
        else
        {
            
$result['value'] = $minutes;
            
$result['valueType'] = 'i';
        }

        if (
            !
$result['value']
            && 
$result['basis'] !== static::CURRENT_DATETIME_BASIS
            
&& \CBPDocument::IsExpression($result['basis'])
        )
        {
            
$result['type'] =  DelayInterval::TYPE_IN;
        }

        return 
$result;
    }