• Модуль: clouds
  • Путь к файлу: ~/bitrix/modules/clouds/classes/general/security_service_s3.php
  • Класс: CCloudSecurityService_AmazonS3
  • Вызов: CCloudSecurityService_AmazonS3::PhpToJSObject
function PhpToJSObject($arData, $bWS = false, $bSkipTilda = false)
{
	static $aSearch = array("r", "n");
	if(is_array($arData))
	{
		if($arData == array_values($arData))
		{
			foreach($arData as $key => $value)
			{
				if(is_array($value))
				{
					$arData[$key] = $this->PhpToJSObject($value, $bWS, $bSkipTilda);
				}
				elseif(is_bool($value))
				{
					if($value === true)
						$arData[$key] = 'true';
					else
						$arData[$key] = 'false';
				}
				else
				{
					if(preg_match("#['"\n\r<\\]#", $value))
						$arData[$key] = '"'.CUtil::JSEscape($value).'"';
					else
						$arData[$key] = '"'.$value.'"';
				}
			}
			return '['.implode(',', $arData).']';
		}

		$sWS = ','.($bWS ? "n" : '');
		$res = ($bWS ? "n" : '').'{';
		$first = true;
		foreach($arData as $key => $value)
		{
			if ($bSkipTilda && mb_substr($key, 0, 1) == '~')
				continue;

			if($first)
				$first = false;
			else
				$res .= $sWS;

			if(preg_match("#['"\n\r<\\]#", $key))
				$res .= '"'.str_replace($aSearch, '', CUtil::JSEscape($key)).'":';
			else
				$res .= '"'.$key.'":';

			if(is_array($value))
			{
				$res .= $this->PhpToJSObject($value, $bWS, $bSkipTilda);
			}
			elseif(is_bool($value))
			{
				if($value === true)
					$res .= 'true';
				else
					$res .= 'false';
			}
			else
			{
				if(preg_match("#['"\n\r<\\]#", $value))
					$res .= '"'.CUtil::JSEscape($value).'"';
				else
					$res .= '"'.$value.'"';
			}
		}
		$res .= ($bWS ? "n" : '').'}';

		return $res;
	}
	elseif(is_bool($arData))
	{
		if($arData === true)
			return 'true';
		else
			return 'false';
	}
	else
	{
		if(preg_match("#['"\n\r<\\]#", $arData))
			return '"'.CUtil::JSEscape($arData).'"';
		else
			return '"'.$arData.'"';
	}
}