source: closed/dev/data/module/MDB2/Driver/Function/Common.php @ 15918

Revision 15918, 7.8 KB checked in by kakinaka, 19 years ago (diff)
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 <[email protected]>                           |
43// +----------------------------------------------------------------------+
44//
45// $Id: Common.php,v 1.17 2007/01/12 11:29:12 quipo Exp $
46//
47
48/**
49 * @package  MDB2
50 * @category Database
51 * @author   Lukas Smith <[email protected]>
52 */
53
54/**
55 * Base class for the function modules that is extended by each MDB2 driver
56 *
57 * @package MDB2
58 * @category Database
59 * @author  Lukas Smith <[email protected]>
60 */
61class MDB2_Driver_Function_Common extends MDB2_Module_Common
62{
63    // {{{ executeStoredProc()
64
65    /**
66     * Execute a stored procedure and return any results
67     *
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
71     *                        the result set
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
75     * @access public
76     */
77    function &executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
78    {
79        $db =& $this->getDBInstance();
80        if (PEAR::isError($db)) {
81            return $db;
82        }
83
84        $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
85            'method not implemented', __FUNCTION__);
86        return $error;
87    }
88
89    // }}}
90    // {{{ functionTable()
91
92    /**
93     * return string for internal table used when calling only a function
94     *
95     * @return string for internal table used when calling only a function
96     * @access public
97     */
98    function functionTable()
99    {
100        return '';
101    }
102
103    // }}}
104    // {{{ now()
105
106    /**
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)
112     *
113     * @return string to call a variable with the current timestamp
114     * @access public
115     */
116    function now($type = 'timestamp')
117    {
118        switch ($type) {
119        case 'time':
120            return 'CURRENT_TIME';
121        case 'date':
122            return 'CURRENT_DATE';
123        case 'timestamp':
124        default:
125            return 'CURRENT_TIMESTAMP';
126        }
127    }
128
129    // }}}
130    // {{{ substring()
131
132    /**
133     * return string to call a function to get a substring inside an SQL statement
134     *
135     * @return string to call a function to get a substring
136     * @access public
137     */
138    function substring($value, $position = 1, $length = null)
139    {
140        if (!is_null($length)) {
141            return "SUBSTRING($value FROM $position FOR $length)";
142        }
143        return "SUBSTRING($value FROM $position)";
144    }
145
146    // }}}
147    // {{{ concat()
148
149    /**
150     * Returns string to concatenate two or more string parameters
151     *
152     * @param string $value1
153     * @param string $value2
154     * @param string $values...
155     * @return string to concatenate two strings
156     * @access public
157     */
158    function concat($value1, $value2)
159    {
160        $args = func_get_args();
161        return "(".implode(' || ', $args).")";
162    }
163
164    // }}}
165    // {{{ random()
166
167    /**
168     * return string to call a function to get random value inside an SQL statement
169     *
170     * @return return string to generate float between 0 and 1
171     * @access public
172     */
173    function random()
174    {
175        return 'RAND()';
176    }
177
178    // }}}
179    // {{{ lower()
180
181    /**
182     * return string to call a function to lower the case of an expression
183     *
184     * @param string $expression
185     * @return return string to lower case of an expression
186     * @access public
187     */
188    function lower($expression)
189    {
190        return "LOWER($expression)";
191    }
192
193    // }}}
194    // {{{ upper()
195
196    /**
197     * return string to call a function to upper the case of an expression
198     *
199     * @param string $expression
200     * @return return string to upper case of an expression
201     * @access public
202     */
203    function upper($expression)
204    {
205        return "UPPER($expression)";
206    }
207
208    // }}}
209    // {{{ guid()
210
211    /**
212     * Returns global unique identifier
213     *
214     * @return string to get global unique identifier
215     * @access public
216     */
217    function guid()
218    {
219        $db =& $this->getDBInstance();
220        if (PEAR::isError($db)) {
221            return $db;
222        }
223
224        $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
225            'method not implemented', __FUNCTION__);
226        return $error;
227    }
228
229    // }}}
230}
231?>
Note: See TracBrowser for help on using the repository browser.