From 5b0318bdf3cfd2d46dddfa67886cdcf9c88e4571 Mon Sep 17 00:00:00 2001 From: Sean Harvey Date: Sat, 15 May 2010 04:59:18 +0000 Subject: [PATCH] ENHANCEMENT Added SQLiteDatabaseConfigurationHelper::requireDatabaseVersion() for checking SQLite library version is at least 3.3 --- code/SQLiteDatabaseConfigurationHelper.php | 31 ++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/code/SQLiteDatabaseConfigurationHelper.php b/code/SQLiteDatabaseConfigurationHelper.php index 285d51c..98cd985 100644 --- a/code/SQLiteDatabaseConfigurationHelper.php +++ b/code/SQLiteDatabaseConfigurationHelper.php @@ -108,9 +108,36 @@ class SQLiteDatabaseConfigurationHelper implements DatabaseConfigurationHelper { } public function requireDatabaseVersion($databaseConfig) { + $success = false; + $error = ''; + $version = 0; + + if(class_exists('SQLite3')) { + $info = SQLite3::version(); + if($info && isset($info['versionString'])) { + $version = trim($info['versionString']); + } + } else { + // Fallback to using sqlite_version() query + $file = $databaseConfig['path'] . '/' . $databaseConfig['database']; + $file = preg_replace('/\/$/', '', $file); + $conn = @(new PDO("sqlite:$file")); + if($conn) { + $result = @$conn->query('SELECT sqlite_version()'); + $version = $result->fetchColumn(); + } + } + + if($version) { + $success = version_compare($version, '3.3', '>='); + if(!$success) { + $error = "Your SQLite3 library version is $version. It's recommended you use at least 3.3."; + } + } + return array( - 'success' => true, - 'error' => '' + 'success' => $success, + 'error' => $error ); }