Your IP : 3.138.154.250


Current Path : /var/www/axolotl/data/www/kirov.axolotls.ru/bitrix/modules/disk/lib/ui/
Upload File :
Current File : /var/www/axolotl/data/www/kirov.axolotls.ru/bitrix/modules/disk/lib/ui/text.php

<?php

namespace Bitrix\Disk\Ui;

use Bitrix\Disk\BaseObject;
use Bitrix\Main\IO\Path;
use Bitrix\Main\Text\Emoji;

final class Text
{

	/**
	 * Get numeric case for lang messages.
	 * @param $number
	 * @param $once
	 * @param $multi21
	 * @param $multi2_4
	 * @param $multi5_20
	 * @return string
	 */
	public static function getNumericCase($number, $once, $multi21, $multi2_4, $multi5_20)
	{
		if($number == 1)
		{
			return $once;
		}

		if($number < 0)
		{
			$number = -$number;
		}

		$number %= 100;
		if($number >= 5 && $number <= 20)
		{
			return $multi5_20;
		}

		$number %= 10;
		if($number == 1)
		{
			return $multi21;
		}

		if($number >= 2 && $number <= 4)
		{
			return $multi2_4;
		}

		return $multi5_20;
	}

	/**
	 * Clean possible trash can suffix from string. We know suffix length.
	 * @param $string
	 * @return string
	 */
	public static function cleanTrashCanSuffix($string)
	{
		if(
			substr($string, -1) !== 'i' ||
			strlen($string) < 17 ||
			substr($string, -16, 1) !== 'i' ||
			!(
				preg_match('%i[0-9a-z]{0,4}[0-9]{10,12}i$%iU' . BX_UTF_PCRE_MODIFIER, $string) ||
				preg_match('%i[0-9]{11}[a-z]{3}i$%iU' . BX_UTF_PCRE_MODIFIER, $string) //our cp old version
			)
		)
		{
			return $string;
		}

		return substr($string, 0, -16);
	}

	/**
	 * Append trash can suffix to string.
	 * @param $string
	 * @return string
	 */
	public static function appendTrashCanSuffix($string)
	{
		return $string . 'i' . str_pad(strtr(microtime(true), array('.' => '')), 14, chr(rand(97, 122)), STR_PAD_LEFT) . 'i';
	}

	/**
	 * Kill all tags from text.
	 * @param $text
	 * @return string
	 */
	public static function killTags($text)
	{
		$text = strip_tags($text);
		return preg_replace(
			array(
				"/\<(\/?)(quote|code|font|color|video)([^\>]*)\>/is".BX_UTF_PCRE_MODIFIER,
				"/\[(\/?)(b|u|i|s|list|code|quote|font|color|url|img|video)([^\]]*)\]/is".BX_UTF_PCRE_MODIFIER,
				"/\[[0-9a-zA-Z\W\=]+\]/iUs".BX_UTF_PCRE_MODIFIER,
			),
			"",
			$text);
	}

	/**
	 * Replaces invalid characters in filename by _.
	 * @param $filename
	 * @return string
	 */
	public static function correctFilename($filename)
	{
		return self::correctObjectName($filename);
	}

	/**
	 * Replaces invalid characters in folder name by _.
	 * Removes dots in folder name from end of string. It's for compatible with Windows.
	 * @param $folderName
	 * @return string
	 */
	public static function correctFolderName($folderName)
	{
		$folderName = self::correctObjectName($folderName);
		if(substr($folderName, -1) === '.')
		{
			return rtrim($folderName, '.');
		}

		return $folderName;
	}

	protected static function correctObjectName($objectName)
	{
		$objectName = trim($objectName);
		$objectName = Emoji::replace($objectName, function(){
			return '_';
		});

		if (BaseObject::isValidValueForField('NAME', $objectName))
		{
			return $objectName;
		}

		return \Bitrix\Main\IO\Path::replaceInvalidFilename($objectName, function(){
			return '_';
		});
	}
}