1<?php
2
3namespace RainLoop\Providers\Filters\Classes;
4
5class FilterCondition
6{
7	/**
8	 * @var string
9	 */
10	private $sField;
11
12	/**
13	 * @var string
14	 */
15	private $sType;
16
17	/**
18	 * @var string
19	 */
20	private $sValue;
21
22	/**
23	 * @var string
24	 */
25	private $sValueSecond;
26
27	public function __construct()
28	{
29		$this->Clear();
30	}
31
32	public function Clear()
33	{
34		$this->sField = \RainLoop\Providers\Filters\Enumerations\ConditionField::FROM;
35		$this->sType = \RainLoop\Providers\Filters\Enumerations\ConditionType::EQUAL_TO;
36		$this->sValue = '';
37		$this->sValueSecond = '';
38	}
39
40	/**
41	 * @return string
42	 */
43	public function Field()
44	{
45		return $this->sField;
46	}
47
48	/**
49	 * @return string
50	 */
51	public function Type()
52	{
53		return $this->sType;
54	}
55
56	/**
57	 * @return string
58	 */
59	public function Value()
60	{
61		return $this->sValue;
62	}
63
64	/**
65	 * @return string
66	 */
67	public function ValueSecond()
68	{
69		return $this->sValueSecond;
70	}
71
72	/**
73	 * @param array $aData
74	 *
75	 * @return array
76	 */
77	public function FromJSON($aData)
78	{
79		if (\is_array($aData))
80		{
81			$this->sField = isset($aData['Field']) ? $aData['Field'] :
82				\RainLoop\Providers\Filters\Enumerations\ConditionField::FROM;
83
84			$this->sType = isset($aData['Type']) ? $aData['Type'] :
85				\RainLoop\Providers\Filters\Enumerations\ConditionType::EQUAL_TO;
86
87			$this->sValue = isset($aData['Value']) ? (string) $aData['Value'] : '';
88			$this->sValueSecond = isset($aData['ValueSecond']) ? (string) $aData['ValueSecond'] : '';
89
90			return true;
91		}
92
93		return false;
94	}
95
96	/**
97	 * @param bool $bAjax = false
98	 *
99	 * @return array
100	 */
101	public function ToSimpleJSON($bAjax = false)
102	{
103		return array(
104			'Field' => $this->Field(),
105			'Type' => $this->Type(),
106			'Value' => $this->Value(),
107			'ValueSecond' => $this->ValueSecond()
108		);
109	}
110
111	/**
112	 * @return array
113	 */
114	public static function CollectionFromJSON($aCollection)
115	{
116		$aResult = array();
117		if (\is_array($aCollection) && 0 < \count($aCollection))
118		{
119			foreach ($aCollection as $aItem)
120			{
121				if (\is_array($aItem) && 0 < \count($aItem))
122				{
123					$oItem = new \RainLoop\Providers\Filters\Classes\FilterCondition();
124					if ($oItem->FromJSON($aItem))
125					{
126						$aResult[] = $oItem;
127					}
128				}
129			}
130		}
131
132		return $aResult;
133	}
134}
135