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. |
13 // | Redistribution and use in source and binary forms, with or without |
14 // | modification, are permitted provided that the following conditions |
17 // | Redistributions of source code must retain the above copyright |
18 // | notice, this list of conditions and the following disclaimer. |
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. |
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. |
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 // +----------------------------------------------------------------------+
45 // $Id: Common.php,v 1.17 2007/01/12 11:29:12 quipo Exp $
51 * @author Lukas Smith <smith@pooteeweet.org>
55 * Base class for the function modules that is extended by each MDB2 driver
59 * @author Lukas Smith <smith@pooteeweet.org>
61 class MDB2_Driver_Function_Common extends MDB2_Module_Common
63 // {{{ executeStoredProc()
66 * Execute a stored procedure and return any results
68 * @param string $name string that identifies the function to execute
69 * @param mixed $params array that contains the paramaters to pass the stored proc
70 * @param mixed $types array that contains the types of the columns in
72 * @param mixed $result_class string which specifies which result class to use
73 * @param mixed $result_wrap_class string which specifies which class to wrap results in
74 * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
77 function &executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
79 $db =& $this->getDBInstance();
80 if (PEAR::isError($db)) {
84 $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
85 'method not implemented', __FUNCTION__);
90 // {{{ functionTable()
93 * return string for internal table used when calling only a function
95 * @return string for internal table used when calling only a function
98 function functionTable()
107 * Return string to call a variable with the current timestamp inside an SQL statement
108 * There are three special variables for current date and time:
109 * - CURRENT_TIMESTAMP (date and time, TIMESTAMP type)
110 * - CURRENT_DATE (date, DATE type)
111 * - CURRENT_TIME (time, TIME type)
113 * @return string to call a variable with the current timestamp
116 function now($type = 'timestamp')
120 return 'CURRENT_TIME';
122 return 'CURRENT_DATE';
125 return 'CURRENT_TIMESTAMP';
133 * return string to call a function to get a substring inside an SQL statement
135 * @return string to call a function to get a substring
138 function substring($value, $position = 1, $length = null)
140 if (!is_null($length)) {
141 return "SUBSTRING($value FROM $position FOR $length)";
143 return "SUBSTRING($value FROM $position)";
150 * Returns string to concatenate two or more string parameters
152 * @param string $value1
153 * @param string $value2
154 * @param string $values...
155 * @return string to concatenate two strings
158 function concat($value1, $value2)
160 $args = func_get_args();
161 return "(".implode(' || ', $args).")";
168 * return string to call a function to get random value inside an SQL statement
170 * @return return string to generate float between 0 and 1
182 * return string to call a function to lower the case of an expression
184 * @param string $expression
185 * @return return string to lower case of an expression
188 function lower($expression)
190 return "LOWER($expression)";
197 * return string to call a function to upper the case of an expression
199 * @param string $expression
200 * @return return string to upper case of an expression
203 function upper($expression)
205 return "UPPER($expression)";
212 * Returns global unique identifier
214 * @return string to get global unique identifier
219 $db =& $this->getDBInstance();
220 if (PEAR::isError($db)) {
224 $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
225 'method not implemented', __FUNCTION__);