Your IP : 3.148.210.23


Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/tasks/lib/util/
Upload File :
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/tasks/lib/util/type.php

<?
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage tasks
 * @copyright 2001-2016 Bitrix
 *
 * @access private
 */

namespace Bitrix\Tasks\Util;

abstract class Type
{
	public static function isIterable($arg)
	{
		if(is_array($arg))
		{
			return true;
		}

		if(is_object($arg))
		{
			$iFaces = class_implements($arg);
			return isset($iFaces['Iterator']) || isset($iFaces['IteratorAggregate']);
		}

		return false;
	}

	public static function convertBooleanUserFieldValue($value)
	{
		if (mb_strtolower($value) == 'n')
		{
			return false;
		}
		elseif ($value)
		{
			return true;
		}

		return false;
	}

	/////////////////////////////////
	// helper functions for checking elements of component parameters and other similar places

	public static function checkYNKey(array &$data, $paramName)
	{
		if((string) $paramName != '' && array_key_exists($paramName, $data))
		{
			$data[$paramName] = $data[$paramName] == 'Y' ? 'Y' : 'N';
		}
	}

	public static function checkBooleanKey(array &$data, $paramName, $default = null)
	{
		if((string) $paramName != '' && array_key_exists($paramName, $data))
		{
			if($data[$paramName] != 'Y' && $data[$paramName] != 'N' && $default !== null)
			{
				$data[$paramName] = $default;
			}
			else
			{
				$data[$paramName] = $data[$paramName] == 'Y';
			}
		}
	}

	public static function checkEnumKey(array &$data, $paramName, array $enum, $default = null)
	{
		if((string) $paramName != '' && array_key_exists($paramName, $data))
		{
			$enum = array_flip($enum);

			if(!isset($enum[$data[$paramName]]))
			{
				if($default !== null)
				{
					$data[$paramName] = $default;
				}
				else
				{
					unset($data[$paramName]);
					return false; // value was incorrect
				}
			}
		}

		return true; // value was correct or was replaced with the default one (which is assumed to be correct)
	}

	public static function checkArrayOfUPIntegerKey(&$data, $paramName)
	{
		if((array) $data !== $data)
		{
			$data = array();
		}

		if((string) $paramName != '' && array_key_exists($paramName, $data))
		{
			$data[$paramName] = static::castToArrayOfUniquePositiveInteger($data[$paramName]);
		}
	}

	private static function castToArrayOfUniquePositiveInteger($arg)
	{
		if(isset($arg))
		{
			if(!is_array($arg))
			{
				$arg = array();
			}
			else
			{
				foreach($arg as $i => &$item)
				{
					$item = intval($item);
					if($item <= 0)
					{
						unset($arg[$i]);
					}
				}
				unset($item);

				$arg = array_unique($arg);
			}
		}

		return $arg;
	}

	public static function serializeArray($data, $returnFalse = false)
	{
		if(!is_array($data))
		{
			$data = $returnFalse ? false : array();
		}

		return serialize($data);
	}

	public static function unSerializeArray($data)
	{
		if(!\CheckSerializedData($data))
		{
			return array();
		}

		$data = unserialize($data);
		return is_array($data) ? $data : array();
	}

	/**
	 * Normalizes array of not empty strings passed
	 *
	 * @param $data
	 * @return array
	 */
	public static function normalizeArray($data)
	{
		if(!is_array($data))
		{
			return array();
		}

		foreach($data as $i => $value)
		{
			if((string) $value == '')
			{
				unset($data[$i]);
			}
		}

		return $data;
	}

	/**
	 * Normalizes array of positive IDs passed
	 *
	 * @param $data
	 * @return array
	 */
	public static function normalizeArrayOfUInteger($data)
	{
		if(!is_array($data))
		{
			return array();
		}

		return array_unique(array_filter($data, 'intval'));
	}

	/**
	 * @param $arg
	 * @return bool|int
	 *
	 * @deprecated
	 */
	public static function checkDateTimeString($arg)
	{
		return \Bitrix\Tasks\UI::checkDateTime($arg);
	}
}