. */ Doctrine::autoload('Doctrine_Expression'); /** * Doctrine_Expression_Sqlite * * @package Doctrine ORM * @url www.phpdoctrine.com * @license LGPL */ class Doctrine_Expression_Sqlite extends Doctrine_Expression { /** * Returns the md5 sum of the data that SQLite's md5() function receives. * * @return string */ public static function md5Impl($data) { return md5($data); } /** * Returns the modules of the data that SQLite's mod() function receives. * * @return string */ public static function modImpl($dividend, $divisor) { return $dividend % $divisor; } /** * Returns a concattenation of the data that SQLite's concat() function receives. * * @return string */ public static function concatImpl() { $args = func_get_args(); return join( '', $args ); } /** * returns the regular expression operator * * @return string */ public function regexp() { return 'RLIKE'; } /** * Return string to call a variable with the current timestamp inside an SQL statement * There are three special variables for current date and time. * * @return string sqlite function as string */ public function now($type = 'timestamp') { switch ($type) { case 'time': return 'time(\'now\')'; case 'date': return 'date(\'now\')'; case 'timestamp': default: return 'datetime(\'now\')'; } } /** * return string to call a function to get random value inside an SQL statement * * @return string to generate float between 0 and 1 */ public function random() { return '((RANDOM() + 2147483648) / 4294967296)'; } /** * return string to call a function to get a substring inside an SQL statement * * Note: Not SQL92, but common functionality. * * SQLite only supports the 2 parameter variant of this function * * @param string $value an sql string literal or column name/alias * @param integer $position where to start the substring portion * @param integer $length the substring portion length * @return string SQL substring function with given parameters */ public function substring($value, $position = 1, $length = null) { if($length !== null) return 'SUBSTR(' . $value . ', ' . $position . ', ' . $length . ')'; return 'SUBSTR(' . $value . ', ' . $position . ', LENGTH(' . $value . '))'; } }