| | |
| | | public $db_provider = 'sqlite'; |
| | | |
| | | /** |
| | | * Database character set |
| | | */ |
| | | protected function set_charset($charset) |
| | | { |
| | | } |
| | | |
| | | /** |
| | | * Prepare connection |
| | | */ |
| | | protected function conn_prepare($dsn) |
| | |
| | | */ |
| | | protected function conn_configure($dsn, $dbh) |
| | | { |
| | | // we emulate via callback some missing functions |
| | | $dbh->sqliteCreateFunction('unix_timestamp', array('rcube_db_sqlite', 'sqlite_unix_timestamp'), 1); |
| | | $dbh->sqliteCreateFunction('now', array('rcube_db_sqlite', 'sqlite_now'), 0); |
| | | |
| | | // Initialize database structure in file is empty |
| | | if (!empty($dsn['database']) && !filesize($dsn['database'])) { |
| | | $data = file_get_contents(RCUBE_INSTALL_PATH . 'SQL/sqlite.initial.sql'); |
| | |
| | | } |
| | | |
| | | /** |
| | | * Callback for sqlite: unix_timestamp() |
| | | * Return SQL statement to convert a field value into a unix timestamp |
| | | * |
| | | * @param string $field Field name |
| | | * |
| | | * @return string SQL statement to use in query |
| | | * @deprecated |
| | | */ |
| | | public static function sqlite_unix_timestamp($timestamp = '') |
| | | public function unixtimestamp($field) |
| | | { |
| | | $timestamp = trim($timestamp); |
| | | if (!$timestamp) { |
| | | $ret = time(); |
| | | } |
| | | else if (!preg_match('/^[0-9]+$/s', $timestamp)) { |
| | | $ret = strtotime($timestamp); |
| | | } |
| | | else { |
| | | $ret = $timestamp; |
| | | } |
| | | |
| | | return $ret; |
| | | return "strftime('%s', $field)"; |
| | | } |
| | | |
| | | /** |
| | | * Callback for sqlite: now() |
| | | * Return SQL function for current time and date |
| | | * |
| | | * @param int $interval Optional interval (in seconds) to add/subtract |
| | | * |
| | | * @return string SQL function to use in query |
| | | */ |
| | | public static function sqlite_now() |
| | | public function now($interval = 0) |
| | | { |
| | | return date("Y-m-d H:i:s"); |
| | | if ($interval) { |
| | | $add = ($interval > 0 ? '+' : '') . intval($interval) . ' seconds'; |
| | | } |
| | | |
| | | return "datetime('now'" . ($add ? ",'$add'" : "") . ")"; |
| | | } |
| | | |
| | | /** |
| | |
| | | $q = $this->query('SELECT name FROM sqlite_master' |
| | | .' WHERE type = \'table\' ORDER BY name'); |
| | | |
| | | if ($res = $this->_get_result($q)) { |
| | | $this->tables = $res->fetchAll(PDO::FETCH_COLUMN, 0); |
| | | } |
| | | else { |
| | | $this->tables = array(); |
| | | } |
| | | $this->tables = $q ? $q->fetchAll(PDO::FETCH_COLUMN, 0) : array(); |
| | | } |
| | | |
| | | return $this->tables; |