/var/www/hkosl.com/imusiccircle/webadmin/libraies/illuminate/database/Illuminate/Database/Grammar.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?php namespace Illuminate\Database;

abstract class 
Grammar {

    
/**
     * The grammar table prefix.
     *
     * @var string
     */
    
protected $tablePrefix '';

    
/**
     * Wrap an array of values.
     *
     * @param  array  $values
     * @return array
     */
    
public function wrapArray(array $values)
    {
        return 
array_map(array($this'wrap'), $values);
    }

    
/**
     * Wrap a table in keyword identifiers.
     *
     * @param  string  $table
     * @return string
     */
    
public function wrapTable($table)
    {
        if (
$this->isExpression($table)) return $this->getValue($table);

        return 
$this->wrap($this->tablePrefix.$table);
    }

    
/**
     * Wrap a value in keyword identifiers.
     *
     * @param  string  $value
     * @return string
     */
    
public function wrap($value)
    {
        if (
$this->isExpression($value)) return $this->getValue($value);

        
// If the value being wrapped has a column alias we will need to separate out
        // the pieces so we can wrap each of the segments of the expression on it
        // own, and then joins them both back together with the "as" connector.
        
if (strpos(strtolower($value), ' as ') !== false)
        {
            
$segments explode(' '$value);

            return 
$this->wrap($segments[0]).' as '.$this->wrap($segments[2]);
        }

        
$wrapped = array();

        
$segments explode('.'$value);

        
// If the value is not an aliased table expression, we'll just wrap it like
        // normal, so if there is more than one segment, we will wrap the first
        // segments as if it was a table and the rest as just regular values.
        
foreach ($segments as $key => $segment)
        {
            if (
$key == && count($segments) > 1)
            {
                
$wrapped[] = $this->wrapTable($segment);
            }
            else
            {
                
$wrapped[] = $this->wrapValue($segment);
            }
        }

        return 
implode('.'$wrapped);
    }

    
/**
     * Wrap a single string in keyword identifiers.
     *
     * @param  string  $value
     * @return string
     */
    
protected function wrapValue($value)
    {
        if (
$value === '*') return $value;

        return 
'"'.str_replace('"''""'$value).'"';
    }

    
/**
     * Convert an array of column names into a delimited string.
     *
     * @param  array   $columns
     * @return string
     */
    
public function columnize(array $columns)
    {
        return 
implode(', 'array_map(array($this'wrap'), $columns));
    }

    
/**
     * Create query parameter place-holders for an array.
     *
     * @param  array   $values
     * @return string
     */
    
public function parameterize(array $values)
    {
        return 
implode(', 'array_map(array($this'parameter'), $values));
    }

    
/**
     * Get the appropriate query parameter place-holder for a value.
     *
     * @param  mixed   $value
     * @return string
     */
    
public function parameter($value)
    {
        return 
$this->isExpression($value) ? $this->getValue($value) : '?';
    }

    
/**
     * Get the value of a raw expression.
     *
     * @param  \Illuminate\Database\Query\Expression  $expression
     * @return string
     */
    
public function getValue($expression)
    {
        return 
$expression->getValue();
    }

    
/**
     * Determine if the given value is a raw expression.
     *
     * @param  mixed  $value
     * @return bool
     */
    
public function isExpression($value)
    {
        return 
$value instanceof Query\Expression;
    }

    
/**
     * Get the format for database stored dates.
     *
     * @return string
     */
    
public function getDateFormat()
    {
        return 
'Y-m-d H:i:s';
    }

    
/**
     * Get the grammar's table prefix.
     *
     * @return string
     */
    
public function getTablePrefix()
    {
        return 
$this->tablePrefix;
    }

    
/**
     * Set the grammar's table prefix.
     *
     * @param  string  $prefix
     * @return \Illuminate\Database\Grammar
     */
    
public function setTablePrefix($prefix)
    {
        
$this->tablePrefix $prefix;

        return 
$this;
    }

}