Completed
Push — master ( 3ffd7e...e292fe )
by Ron
02:37
created

ConditionBuilder   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 6
c 2
b 0
f 0
lcom 0
cbo 1
dl 0
loc 41
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B build() 0 19 5
A buildCondition() 0 5 1
1
<?php
2
namespace Kir\MySQL\Builder\Internal;
3
4
use Kir\MySQL\Database;
5
6
final class ConditionBuilder {
7
	/**
8
	 * @param Database $db
9
	 * @param string $query
10
	 * @param array $conditions
11
	 * @param string $token
12
	 * @return string
13
	 */
14
	public static function build(Database $db, $query, array $conditions, $token) {
15
		if(!count($conditions)) {
16
			return $query;
17
		}
18
		$query .= "{$token}\n";
19
		$arr = [];
20
		foreach($conditions as $condition) {
21
			list($expression, $arguments) = $condition;
22
			if(is_array($expression)) {
23
				foreach($expression as $key => $value) {
24
					$arr = self::buildCondition($arr, "`{$key}`=?", [$value], $db);
25
				}
26
			} else {
27
				$arr = self::buildCondition($arr, $expression, $arguments, $db);
28
			}
29
		}
30
		$query .= join("\n\tAND\n", $arr);
31
		return "{$query}\n";
32
	}
33
34
	/**
35
	 * @param array $conditions
36
	 * @param mixed $expression
37
	 * @param mixed $arguments
38
	 * @param Database $db
39
	 * @return array
40
	 */
41
	private static function buildCondition(array $conditions, $expression, $arguments, Database $db) {
42
		$expr = $db->quoteExpression($expression, $arguments);
43
		$conditions[] = "\t({$expr})";
44
		return $conditions;
45
	}
46
}
47