Passed
Push — master ( e1ca0a...c1379c )
by Jean-Christophe
04:54
created

SqlUtils::getParameters()   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
 * @author jc
11
 * @version 1.0.1
12
 */
13
class SqlUtils {
14
	
15
	public static $quote='`';
16
17 1
	private static function getParameters($keyAndValues) {
18 1
		$ret=array ();
19 1
		foreach ( $keyAndValues as $key => $value ) {
20 1
			$ret[]=":" . $key;
21
		}
22 1
		return $ret;
23
	}
24
25 1
	private static function getQuotedKeys($keyAndValues) {
26 1
		$ret=array ();
27 1
		foreach ( $keyAndValues as $key => $value ) {
28 1
			$ret[]=self::$quote . $key . self::$quote;
29
		}
30 1
		return $ret;
31
	}
32
33 3
	public static function getWhere($keyAndValues) {
34 3
		$ret=array ();
35 3
		foreach ( $keyAndValues as $key => $value ) {
36 3
			$ret[]=self::$quote . $key . self::$quote . "= :" . $key;
37
		}
38 3
		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 1
	public static function getInsertFields($keyAndValues) {
58 1
		return implode(",", self::getQuotedKeys($keyAndValues));
59
	}
60
61 1
	public static function getInsertFieldsValues($keyAndValues) {
62 1
		return implode(",", self::getParameters($keyAndValues));
63
	}
64
65 2
	public static function getUpdateFieldsKeyAndValues($keyAndValues) {
66 2
		$ret=array ();
67 2
		foreach ( $keyAndValues as $key => $value ) {
68 2
			$ret[]=self::$quote . $key . self::$quote . "= :" . $key;
69
		}
70 2
		return implode(",", $ret);
71
	}
72
73 18
	public static function checkWhere($condition){
74 18
		$c=\strtolower($condition);
75 18
		if ($condition != '' && \strstr($c, " join ")===false){
76 14
			$condition=" WHERE " . $condition;
77
		}
78 18
		return $condition;
79
	}
80
81 1
	public static function getCondition($keyValues,$classname=NULL,$separator=" AND ") {
82 1
		if(!is_array($keyValues)){
83 1
			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
	 * @param array|string $fields
103
	 * @param boolean|string $tableName
104
	 * @return string
105
	 */
106 18
	public static function getFieldList($fields,$tableName=false){
107 18
		if(!\is_array($fields)){
108
			return $fields;
109
		}
110 18
		$result=[];
111 18
		$prefix='';
112 18
		if(is_string($tableName)){
113 18
			$prefix=self::$quote.$tableName.self::$quote.'.';
114
		}
115 18
		foreach ($fields as $field) {
116 18
			$result[]= $prefix.self::$quote.$field.self::$quote;
117
		}
118 18
		return \implode(',', $result);
119
	}
120
}
121