Passed
Push — master ( 7b3a8c...be70ce )
by Jean-Christophe
22:44
created

SqlUtils::getWherePK()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 4
dl 0
loc 6
ccs 5
cts 5
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2
1
<?php
2
3
namespace Ubiquity\db;
4
5
use Ubiquity\orm\OrmUtils;
6
7
/**
8
 * SQL utilities
9
 *
10
 * @author jc
11
 * @version 1.0.4
12
 */
13
class SqlUtils {
14
	public static $quote = '`';
15
16 20
	private static function getParameters($keyAndValues) {
17 20
		$ret = array();
18 20
		foreach ($keyAndValues as $key => $value) {
19 20
			$ret [] = ':' . $key;
20
		}
21 20
		return $ret;
22
	}
23
24 20
	private static function getQuotedKeys($keyAndValues) {
25 20
		$ret = array();
26 20
		foreach ($keyAndValues as $key => $value) {
27 20
			$ret [] = self::$quote . $key . self::$quote;
28
		}
29 20
		return $ret;
30
	}
31
32 14
	public static function getWhere($keyAndValues) {
33 14
		$ret = array();
34 14
		foreach ($keyAndValues as $key => $value) {
35 14
			$ret [] = self::$quote . $key . self::$quote . '= :' . $key;
36
		}
37 14
		return \implode(' AND ', $ret);
38
	}
39
40 3
	public static function getWherePK($pkKeyAndValues) {
41 3
		$ret = array();
42 3
		foreach ($pkKeyAndValues as $key => $value) {
43 3
			$ret [] = self::$quote . \trim($key, '___') . self::$quote . '= :' . $key;
44
		}
45 3
		return \implode(' AND ', $ret);
46
	}
47
48
	public static function getMultiWhere($values, $field) {
49
		$ret = array();
50
		foreach ($values as $value) {
51
			$ret [] = self::$quote . $field . self::$quote . "='" . $value . "'";
52
		}
53
		return \implode(' OR ', $ret);
54
	}
55
56 1
	public static function getSearchWhere($likeOp, $fields, $value, $jokerBefore = '%', $jokerAfter = '%') {
57 1
		$ret = array();
58 1
		foreach ($fields as $field) {
59 1
			$ret [] = self::$quote . $field . self::$quote . $likeOp . $jokerBefore . $value . $jokerAfter;
60
		}
61 1
		return \implode(' OR ', $ret);
62
	}
63
64 20
	public static function getInsertFields($keyAndValues) {
65 20
		return \implode(',', self::getQuotedKeys($keyAndValues));
66
	}
67
68 20
	public static function getInsertFieldsValues($keyAndValues) {
69 20
		return \implode(',', self::getParameters($keyAndValues));
70
	}
71
72 4
	public static function getUpdateFieldsKeyAndParams($keyAndValues) {
73 4
		$ret = array();
74 4
		foreach ($keyAndValues as $key => $value) {
75 4
			$ret [] = self::$quote . $key . self::$quote . '= :' . $key;
76
		}
77 4
		return \implode(',', $ret);
78
	}
79
80
	public static function getUpdateFieldsKeyAndValues($keyAndValues) {
81
		$ret = array();
82
		foreach ($keyAndValues as $key => $value) {
83
			$ret [] = self::$quote . $key . self::$quote . '= :' . $key;
84
		}
85
		return \implode(',', $ret);
86
	}
87
88 160
	public static function checkWhere($condition) {
89 160
		if ($condition != null && \stristr($condition, ' join ') === false) {
90 138
			$condition = ' WHERE ' . $condition;
91
		}
92 160
		return $condition;
93
	}
94
95
	public static function checkWhereParams($condition, &$params = []) {
96
		if (\strpos($condition, '?') !== -1) {
97
			foreach ($params as $k => $v) {
98
				if (\is_int($k)) {
99
					$params["_$k"] = $v;
100
					unset($params[$k]);
101
					$k = "_$k";
102
				}
103
				$condition = \str_replace('?', ":$k", $condition);
104
			}
105
		}
106
		return self::checkWhere($condition);
107
	}
108
109 5
	public static function getCondition($keyValues, $classname = null, $separator = ' AND ') {
110 5
		if (!\is_array($keyValues)) {
111 5
			return $keyValues;
112
		} else {
113
			if ((\array_keys($keyValues) === \range(0, \count($keyValues) - 1))) {//Not associative array
114
				if (isset ($classname)) {
115
					$keys = OrmUtils::getKeyFields($classname);
116
					if (\is_array($keys)) {
117
						$keyValues = \array_combine($keys, $keyValues);
118
					}
119
				}
120
			}
121
			$retArray = array();
122
			foreach ($keyValues as $key => $value) {
123
				$retArray [] = self::$quote . $key . self::$quote . " = '" . $value . "'";
124
			}
125
			return \implode($separator, $retArray);
126
		}
127
	}
128
129
	/**
130
	 *
131
	 * @param array|string $fields
132
	 * @param boolean|string $tableName
133
	 * @return string
134
	 */
135 28
	public static function getFieldList($fields, $tableName = false) {
136 28
		if (!\is_array($fields)) {
137
			return $fields;
138
		}
139 28
		$result = [];
140 28
		$prefix = '';
141 28
		if (\is_string($tableName)) {
142 28
			$prefix = self::$quote . $tableName . self::$quote . '.';
143
		}
144 28
		foreach ($fields as $field) {
145 28
			$result [] = $prefix . self::$quote . $field . self::$quote;
146
		}
147 28
		return \implode(',', $result);
148
	}
149
}
150