Passed
Push — developer ( 5a7d78...6a35f4 )
by Radosław
17:06
created

Vtiger_Double_InventoryField   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 9
eloc 20
dl 0
loc 44
ccs 0
cts 11
cp 0
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getDisplayValue() 0 3 1
A validate() 0 11 5
A getDBValue() 0 6 2
A compare() 0 3 1
1
<?php
2
3
/**
4
 * Inventory Double Field Class.
5
 *
6
 * @package   InventoryField
7
 *
8
 * @copyright YetiForce S.A.
9
 * @license   YetiForce Public License 5.0 (licenses/LicenseEN.txt or yetiforce.com)
10
 * @author    Mariusz Krzaczkowski <[email protected]>
11
 * @author    Radosław Skrzypczak <[email protected]>
12
 */
13
class Vtiger_Double_InventoryField extends Vtiger_Basic_InventoryField
14
{
15
	protected $type = 'Double';
16
	protected $defaultLabel = 'LBL_DOUBLE';
17
	protected $columnName = 'double';
18
	protected $dbType = [\yii\db\Schema::TYPE_DECIMAL, '28,8'];
19
	protected $onlyOne = false;
20
	protected $maximumLength = '99999999999999999999';
21
	protected $purifyType = \App\Purifier::NUMBER;
22
23
	/** {@inheritdoc} */
24
	public function getDisplayValue($value, array $rowData = [], bool $rawText = false)
25
	{
26
		return \App\Fields\Double::formatToDisplay($value);
27
	}
28
29
	/** {@inheritdoc} */
30
	public function getDBValue($value, ?string $name = '')
31
	{
32
		if (!isset($this->dbValue["{$value}"])) {
33
			$this->dbValue["{$value}"] = App\Fields\Double::formatToDb($value);
0 ignored issues
show
Bug Best Practice introduced by
The property dbValue does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
34
		}
35
		return $this->dbValue["{$value}"];
36
	}
37
38
	/** {@inheritdoc} */
39
	public function validate($value, string $columnName, bool $isUserFormat, $originalValue = null)
40
	{
41
		if ($isUserFormat) {
42
			$value = $this->getDBValue($value, $columnName);
43
		}
44
		$moduleName = $this->getModuleName();
45
		if (!is_numeric($value)) {
46
			throw new \App\Exceptions\Security("ERR_ILLEGAL_FIELD_VALUE||$columnName||$moduleName||$value", 406);
47
		}
48
		if ($this->maximumLength < $value || -$this->maximumLength > $value) {
49
			throw new \App\Exceptions\Security("ERR_VALUE_IS_TOO_LONG||$columnName||$moduleName||$value", 406);
50
		}
51
	}
52
53
	/** {@inheritdoc} */
54
	public function compare($value, $prevValue, string $column): bool
55
	{
56
		return \App\Validator::floatIsEqual((float) $value, (float) $prevValue, 8);
57
	}
58
}
59