• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/import/personnameformatter.php
  • Класс: BitrixTasksImportPersonNameFormatter
  • Вызов: PersonNameFormatter::tryParseName
static function tryParseName($name, $formatID, &$nameParts)
{
	if(!is_string($name) || $name === '')
	{
		return false;
	}

	$formatID = intval($formatID);
	if(!self::isDefined($formatID))
	{
		throw new MainNotSupportedException("Format: '{$formatID}' is not supported in current context");
	}

	if($formatID === self::FirstSecondLast || $formatID === self::LastFirstSecond)
	{
		if(preg_match('/^s*(S+)s+(S+)s+(S+)s*$/', $name, $m) === 1)
		{
			if(!is_array($nameParts))
			{
				$nameParts = array();
			}

			if($formatID === self::FirstSecondLast)
			{
				$nameParts['NAME'] = $m[1];
				$nameParts['SECOND_NAME'] = $m[2];
				$nameParts['LAST_NAME'] = $m[3];
			}
			else //$formatID === self::LastFirstSecond
			{
				$nameParts['LAST_NAME'] = $m[1];
				$nameParts['NAME'] = $m[2];
				$nameParts['SECOND_NAME'] = $m[3];
			}

			return true;
		}
	}

	if(preg_match('/^s*(S+)s+(S+)s*$/', $name, $m) === 1)
	{
		if(!is_array($nameParts))
		{
			$nameParts = array();
		}

		if($formatID === self::HonorificLast)
		{
			$nameParts['TITLE'] = $m[1];
			$nameParts['NAME'] = '';
			$nameParts['SECOND_NAME'] = '';
			$nameParts['LAST_NAME'] = $m[2];
		}
		elseif($formatID === self::FirstLast || $formatID === self::FirstSecondLast)
		{
			$nameParts['NAME'] = $m[1];
			$nameParts['SECOND_NAME'] = '';
			$nameParts['LAST_NAME'] = $m[2];
		}
		else //$formatID === self::LastFirst || $formatID === self::LastFirstSecond
		{
			$nameParts['LAST_NAME'] = $m[1];
			$nameParts['NAME'] = $m[2];
			$nameParts['SECOND_NAME'] = '';
		}

		return true;
	}

	return false;
}