From 3e99aefb7ebdb115794ec7d25b2e73db504252ff Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind1991@gmail.com>
Date: Thu, 28 Apr 2011 17:40:51 +0200
Subject: [PATCH] make logs work with sqlite

---
 lib/database.php | 10 ++++++++--
 lib/log.php      | 17 +++++++++++++++--
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/lib/database.php b/lib/database.php
index 3c2480c8b6d..728e7359040 100644
--- a/lib/database.php
+++ b/lib/database.php
@@ -300,7 +300,13 @@ class OC_DB {
 		// We need Database type and table prefix
 		$CONFIG_DBTYPE = OC_CONFIG::getValue( "dbtype", "sqlite" );
 		$CONFIG_DBTABLEPREFIX = OC_CONFIG::getValue( "dbtableprefix", "oc_" );
-
+		
+		// differences is getting the current timestamp
+		if( $CONFIG_DBTYPE == 'sqlite' ){
+			$query = str_replace( 'NOW()', "strftime('%s', 'now')", $query );
+			$query = str_replace( 'now()', "strftime('%s', 'now')", $query );
+		}
+		
 		// differences in escaping of table names (` for mysql)
 		// Problem: what if there is a ` in the value we want to insert?
 		if( $CONFIG_DBTYPE == 'sqlite' ){
@@ -310,7 +316,7 @@ class OC_DB {
 			$query = str_replace( '`', '"', $query );
 		}
 
-		// replace table names
+		// replace table name prefix
 		$query = str_replace( '*PREFIX*', $CONFIG_DBTABLEPREFIX, $query );
 
 		return $query;
diff --git a/lib/log.php b/lib/log.php
index f5651514108..02ad8162d51 100644
--- a/lib/log.php
+++ b/lib/log.php
@@ -52,7 +52,14 @@ class OC_LOG {
 	 */
 	public static function add( $appid, $subject, $predicate, $object = ' ' ){
 		$query=OC_DB::prepare("INSERT INTO *PREFIX*log(`timestamp`,appid,user,action,info) VALUES(NOW(),?,?,?,?)");
-		$query->execute(array($appid,$subject,$predicate,$object));
+		$result=$query->execute(array($appid,$subject,$predicate,$object));
+		// Die if we have an error
+		if( PEAR::isError($result)) {
+			$entry = 'DB Error: "'.$result->getMessage().'"<br />';
+			$entry .= 'Offending command was: '.$query.'<br />';
+			error_log( $entry );
+			die( $entry );
+		}
 		return true;
 	}
 
@@ -91,7 +98,13 @@ class OC_LOG {
 			array_push($params,$filter('app'));
 		}
 		$query=OC_DB::prepare($queryString);
-		return $query->execute($params)->fetchAll();
+		$result=$query->execute($params)->fetchAll();
+		if(count($result)>0 and is_numeric($result[0]['timestamp'])){
+			foreach($result as &$row){
+				$row['timestamp']=OC_UTIL::formatDate($row['timestamp']);
+			}
+		}
+		return $result;
 		
 	}
 
-- 
GitLab