Passed
Push — master ( caa32e...4f267a )
by Jean-Christophe
09:15
created

SqlUtils::getQuotedKeys()   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\utils\base\UArray;
6
use Ubiquity\orm\OrmUtils;
7
8
/**
9
 * SQL utilities
10
 *
11
 * @author jc
12
 * @version 1.0.1
13
 */
14
class SqlUtils {
15
	public static $quote = '`';
16
17 11
	private static function getParameters($keyAndValues) {
18 11
		$ret = array ();
19 11
		foreach ( $keyAndValues as $key => $value ) {
20 11
			$ret [] = ":" . $key;
21
		}
22 11
		return $ret;
23
	}
24
25 11
	private static function getQuotedKeys($keyAndValues) {
26 11
		$ret = array ();
27 11
		foreach ( $keyAndValues as $key => $value ) {
28 11
			$ret [] = self::$quote . $key . self::$quote;
29
		}
30 11
		return $ret;
31
	}
32
33 10
	public static function getWhere($keyAndValues) {
34 10
		$ret = array ();
35 10
		foreach ( $keyAndValues as $key => $value ) {
36 10
			$ret [] = self::$quote . $key . self::$quote . "= :" . $key;
37
		}
38 10
		return \implode ( " AND ", $ret );
39
	}
40
41
	public static function getMultiWhere($values, $field) {
42
		$ret = array ();
43
		foreach ( $values as $value ) {
44
			$ret [] = self::$quote . $field . self::$quote . "='" . $value . "'";
45
		}
46
		return \implode ( " OR ", $ret );
47
	}
48
49 1
	public static function getSearchWhere($fields, $value, $jokerBefore = "%", $jokerAfter = "%") {
50 1
		$ret = array ();
51 1
		foreach ( $fields as $field ) {
52 1
			$ret [] = self::$quote . $field . self::$quote . " LIKE '" . $jokerBefore . $value . $jokerAfter . "'";
53
		}
54 1
		return \implode ( " OR ", $ret );
55
	}
56
57 11
	public static function getInsertFields($keyAndValues) {
58 11
		return \implode ( ",", self::getQuotedKeys ( $keyAndValues ) );
59
	}
60
61 11
	public static function getInsertFieldsValues($keyAndValues) {
62 11
		return \implode ( ",", self::getParameters ( $keyAndValues ) );
63
	}
64
65 3
	public static function getUpdateFieldsKeyAndValues($keyAndValues) {
66 3
		$ret = array ();
67 3
		foreach ( $keyAndValues as $key => $value ) {
68 3
			$ret [] = self::$quote . $key . self::$quote . "= :" . $key;
69
		}
70 3
		return \implode ( ",", $ret );
71
	}
72
73 58
	public static function checkWhere($condition) {
74 58
		$c = \strtolower ( $condition );
75 58
		if ($condition != '' && \strstr ( $c, " join " ) === false) {
76 49
			$condition = " WHERE " . $condition;
77
		}
78 58
		return $condition;
79
	}
80
81 3
	public static function getCondition($keyValues, $classname = NULL, $separator = " AND ") {
82 3
		if (! \is_array ( $keyValues )) {
83 3
			return $keyValues;
84
		} else {
85
			if (! UArray::isAssociative ( $keyValues )) {
86
				if (isset ( $classname )) {
87
					$keys = OrmUtils::getKeyFields ( $classname );
88
					if (\is_array ( $keys )) {
89
						$keyValues = \array_combine ( $keys, $keyValues );
90
					}
91
				}
92
			}
93
			$retArray = array ();
94
			foreach ( $keyValues as $key => $value ) {
95
				$retArray [] = self::$quote . $key . self::$quote . " = '" . $value . "'";
96
			}
97
			return \implode ( $separator, $retArray );
98
		}
99
	}
100
101
	/**
102
	 *
103
	 * @param array|string $fields
104
	 * @param boolean|string $tableName
105
	 * @return string
106
	 */
107 58
	public static function getFieldList($fields, $tableName = false) {
108 58
		if (! \is_array ( $fields )) {
109
			return $fields;
110
		}
111 58
		$result = [ ];
112 58
		$prefix = '';
113 58
		if (is_string ( $tableName )) {
114 58
			$prefix = self::$quote . $tableName . self::$quote . '.';
115
		}
116 58
		foreach ( $fields as $field ) {
117 58
			$result [] = $prefix . self::$quote . $field . self::$quote;
118
		}
119 58
		return \implode ( ',', $result );
120
	}
121
}
122