| // +----------------------------------------------------------------------+ // // $Id$ // /** * @package MDB2 * @category Database * @author Lukas Smith */ /** * Base class for the function modules that is extended by each MDB2 driver * * To load this module in the MDB2 object: * $mdb->loadModule('Function'); * * @package MDB2 * @category Database * @author Lukas Smith */ class MDB2_Driver_Function_Common extends MDB2_Module_Common { // {{{ executeStoredProc() /** * Execute a stored procedure and return any results * * @param string $name string that identifies the function to execute * @param mixed $params array that contains the paramaters to pass the stored proc * @param mixed $types array that contains the types of the columns in * the result set * @param mixed $result_class string which specifies which result class to use * @param mixed $result_wrap_class string which specifies which class to wrap results in * * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure * @access public */ function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false) { $db = $this->getDBInstance(); if (MDB2::isError($db)) { return $db; } $error = $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, 'method not implemented', __FUNCTION__); return $error; } // }}} // {{{ functionTable() /** * return string for internal table used when calling only a function * * @return string for internal table used when calling only a function * @access public */ function functionTable() { return ''; } // }}} // {{{ now() /** * Return string to call a variable with the current timestamp inside an SQL statement * There are three special variables for current date and time: * - CURRENT_TIMESTAMP (date and time, TIMESTAMP type) * - CURRENT_DATE (date, DATE type) * - CURRENT_TIME (time, TIME type) * * @param string $type 'timestamp' | 'time' | 'date' * * @return string to call a variable with the current timestamp * @access public */ function now($type = 'timestamp') { switch ($type) { case 'time': return 'CURRENT_TIME'; case 'date': return 'CURRENT_DATE'; case 'timestamp': default: return 'CURRENT_TIMESTAMP'; } } // }}} // {{{ unixtimestamp() /** * return string to call a function to get the unix timestamp from a iso timestamp * * @param string $expression * * @return string to call a variable with the timestamp * @access public */ function unixtimestamp($expression) { $db = $this->getDBInstance(); if (MDB2::isError($db)) { return $db; } $error = $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, 'method not implemented', __FUNCTION__); return $error; } // }}} // {{{ substring() /** * return string to call a function to get a substring inside an SQL statement * * @return string to call a function to get a substring * @access public */ function substring($value, $position = 1, $length = null) { if (null !== $length) { return "SUBSTRING($value FROM $position FOR $length)"; } return "SUBSTRING($value FROM $position)"; } // }}} // {{{ replace() /** * return string to call a function to get replace inside an SQL statement. * * @return string to call a function to get a replace * @access public */ function replace($str, $from_str, $to_str) { return "REPLACE($str, $from_str , $to_str)"; } // }}} // {{{ concat() /** * Returns string to concatenate two or more string parameters * * @param string $value1 * @param string $value2 * @param string $values... * * @return string to concatenate two strings * @access public */ function concat($value1, $value2) { $args = func_get_args(); return "(".implode(' || ', $args).")"; } // }}} // {{{ random() /** * return string to call a function to get random value inside an SQL statement * * @return return string to generate float between 0 and 1 * @access public */ function random() { return 'RAND()'; } // }}} // {{{ lower() /** * return string to call a function to lower the case of an expression * * @param string $expression * * @return return string to lower case of an expression * @access public */ function lower($expression) { return "LOWER($expression)"; } // }}} // {{{ upper() /** * return string to call a function to upper the case of an expression * * @param string $expression * * @return return string to upper case of an expression * @access public */ function upper($expression) { return "UPPER($expression)"; } // }}} // {{{ length() /** * return string to call a function to get the length of a string expression * * @param string $expression * * @return return string to get the string expression length * @access public */ function length($expression) { return "LENGTH($expression)"; } // }}} // {{{ guid() /** * Returns global unique identifier * * @return string to get global unique identifier * @access public */ function guid() { $db = $this->getDBInstance(); if (MDB2::isError($db)) { return $db; } $error = $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, 'method not implemented', __FUNCTION__); return $error; } // }}} } ?>