source: branches/comu-ver2/data/module/MDB2/Driver/Function/Common.php @ 18754

Revision 18754, 9.2 KB checked in by nanasess, 14 years ago (diff)

PEAR::MDB2 のライブラリ追加(#564)

Line 
1<?php
2// +----------------------------------------------------------------------+
3// | PHP versions 4 and 5                                                 |
4// +----------------------------------------------------------------------+
5// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
6// | Stig. S. Bakken, Lukas Smith                                         |
7// | All rights reserved.                                                 |
8// +----------------------------------------------------------------------+
9// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
10// | API as well as database abstraction for PHP applications.            |
11// | This LICENSE is in the BSD license style.                            |
12// |                                                                      |
13// | Redistribution and use in source and binary forms, with or without   |
14// | modification, are permitted provided that the following conditions   |
15// | are met:                                                             |
16// |                                                                      |
17// | Redistributions of source code must retain the above copyright       |
18// | notice, this list of conditions and the following disclaimer.        |
19// |                                                                      |
20// | Redistributions in binary form must reproduce the above copyright    |
21// | notice, this list of conditions and the following disclaimer in the  |
22// | documentation and/or other materials provided with the distribution. |
23// |                                                                      |
24// | Neither the name of Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
25// | Lukas Smith nor the names of his contributors may be used to endorse |
26// | or promote products derived from this software without specific prior|
27// | written permission.                                                  |
28// |                                                                      |
29// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS  |
30// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT    |
31// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS    |
32// | FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE      |
33// | REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,          |
34// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
35// | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS|
36// |  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED  |
37// | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT          |
38// | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY|
39// | WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE          |
40// | POSSIBILITY OF SUCH DAMAGE.                                          |
41// +----------------------------------------------------------------------+
42// | Author: Lukas Smith <smith@pooteeweet.org>                           |
43// +----------------------------------------------------------------------+
44//
45// $Id: Common.php,v 1.21 2008/02/17 18:51:39 quipo Exp $
46//
47
48/**
49 * @package  MDB2
50 * @category Database
51 * @author   Lukas Smith <smith@pooteeweet.org>
52 */
53
54/**
55 * Base class for the function modules that is extended by each MDB2 driver
56 *
57 * To load this module in the MDB2 object:
58 * $mdb->loadModule('Function');
59 *
60 * @package  MDB2
61 * @category Database
62 * @author   Lukas Smith <smith@pooteeweet.org>
63 */
64class MDB2_Driver_Function_Common extends MDB2_Module_Common
65{
66    // {{{ executeStoredProc()
67
68    /**
69     * Execute a stored procedure and return any results
70     *
71     * @param string $name string that identifies the function to execute
72     * @param mixed  $params  array that contains the paramaters to pass the stored proc
73     * @param mixed   $types  array that contains the types of the columns in
74     *                        the result set
75     * @param mixed $result_class string which specifies which result class to use
76     * @param mixed $result_wrap_class string which specifies which class to wrap results in
77     *
78     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
79     * @access public
80     */
81    function &executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
82    {
83        $db =& $this->getDBInstance();
84        if (PEAR::isError($db)) {
85            return $db;
86        }
87
88        $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
89            'method not implemented', __FUNCTION__);
90        return $error;
91    }
92
93    // }}}
94    // {{{ functionTable()
95
96    /**
97     * return string for internal table used when calling only a function
98     *
99     * @return string for internal table used when calling only a function
100     * @access public
101     */
102    function functionTable()
103    {
104        return '';
105    }
106
107    // }}}
108    // {{{ now()
109
110    /**
111     * Return string to call a variable with the current timestamp inside an SQL statement
112     * There are three special variables for current date and time:
113     * - CURRENT_TIMESTAMP (date and time, TIMESTAMP type)
114     * - CURRENT_DATE (date, DATE type)
115     * - CURRENT_TIME (time, TIME type)
116     *
117     * @param string $type 'timestamp' | 'time' | 'date'
118     *
119     * @return string to call a variable with the current timestamp
120     * @access public
121     */
122    function now($type = 'timestamp')
123    {
124        switch ($type) {
125        case 'time':
126            return 'CURRENT_TIME';
127        case 'date':
128            return 'CURRENT_DATE';
129        case 'timestamp':
130        default:
131            return 'CURRENT_TIMESTAMP';
132        }
133    }
134
135    // }}}
136    // {{{ unixtimestamp()
137
138    /**
139     * return string to call a function to get the unix timestamp from a iso timestamp
140     *
141     * @param string $expression
142     *
143     * @return string to call a variable with the timestamp
144     * @access public
145     */
146    function unixtimestamp($expression)
147    {
148        $db =& $this->getDBInstance();
149        if (PEAR::isError($db)) {
150            return $db;
151        }
152
153        $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
154            'method not implemented', __FUNCTION__);
155        return $error;
156    }
157
158    // }}}
159    // {{{ substring()
160
161    /**
162     * return string to call a function to get a substring inside an SQL statement
163     *
164     * @return string to call a function to get a substring
165     * @access public
166     */
167    function substring($value, $position = 1, $length = null)
168    {
169        if (!is_null($length)) {
170            return "SUBSTRING($value FROM $position FOR $length)";
171        }
172        return "SUBSTRING($value FROM $position)";
173    }
174
175    // }}}
176    // {{{ replace()
177
178    /**
179     * return string to call a function to get replace inside an SQL statement.
180     *
181     * @return string to call a function to get a replace
182     * @access public
183     */
184    function replace($str, $from_str, $to_str)
185    {
186        return "REPLACE($str, $from_str , $to_str)";
187    }
188
189    // }}}
190    // {{{ concat()
191
192    /**
193     * Returns string to concatenate two or more string parameters
194     *
195     * @param string $value1
196     * @param string $value2
197     * @param string $values...
198     *
199     * @return string to concatenate two strings
200     * @access public
201     */
202    function concat($value1, $value2)
203    {
204        $args = func_get_args();
205        return "(".implode(' || ', $args).")";
206    }
207
208    // }}}
209    // {{{ random()
210
211    /**
212     * return string to call a function to get random value inside an SQL statement
213     *
214     * @return return string to generate float between 0 and 1
215     * @access public
216     */
217    function random()
218    {
219        return 'RAND()';
220    }
221
222    // }}}
223    // {{{ lower()
224
225    /**
226     * return string to call a function to lower the case of an expression
227     *
228     * @param string $expression
229     *
230     * @return return string to lower case of an expression
231     * @access public
232     */
233    function lower($expression)
234    {
235        return "LOWER($expression)";
236    }
237
238    // }}}
239    // {{{ upper()
240
241    /**
242     * return string to call a function to upper the case of an expression
243     *
244     * @param string $expression
245     *
246     * @return return string to upper case of an expression
247     * @access public
248     */
249    function upper($expression)
250    {
251        return "UPPER($expression)";
252    }
253
254    // }}}
255    // {{{ length()
256
257    /**
258     * return string to call a function to get the length of a string expression
259     *
260     * @param string $expression
261     *
262     * @return return string to get the string expression length
263     * @access public
264     */
265    function length($expression)
266    {
267        return "LENGTH($expression)";
268    }
269
270    // }}}
271    // {{{ guid()
272
273    /**
274     * Returns global unique identifier
275     *
276     * @return string to get global unique identifier
277     * @access public
278     */
279    function guid()
280    {
281        $db =& $this->getDBInstance();
282        if (PEAR::isError($db)) {
283            return $db;
284        }
285
286        $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
287            'method not implemented', __FUNCTION__);
288        return $error;
289    }
290
291    // }}}
292}
293?>
Note: See TracBrowser for help on using the repository browser.