diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/db.php | 2 | ||||
-rw-r--r-- | lib/db4app.php | 117 |
2 files changed, 118 insertions, 1 deletions
diff --git a/lib/db.php b/lib/db.php index 76d3fe5efcb..414525ae207 100644 --- a/lib/db.php +++ b/lib/db.php @@ -129,7 +129,7 @@ class OC_DB { // Die if we have an error (error means: bad query, not 0 results!) if( PEAR::isError($result)) { $entry = 'DB Error: "'.$result->getMessage().'"<br />'; - $entry .= 'Offending command was: '.$cmd.'<br />'; + $entry .= 'Offending command was: '.$query.'<br />'; error_log( $entry ); die( $entry ); } diff --git a/lib/db4app.php b/lib/db4app.php new file mode 100644 index 00000000000..1200652fada --- /dev/null +++ b/lib/db4app.php @@ -0,0 +1,117 @@ +<?php +/** + * ownCloud + * + * @author Côme BERNIGAUD + * @copyright 2011 Côme BERNIGAUD come.bernigaud@laposte.net + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + +require_once('base.php'); + +/** + * This class manages the access to the database from apps. It basically is a wrapper for + * OC_DB. It allows that apps doesn't contains SQL code. + */ +class OC_DB4App { + /** + * @brief Store an object in the database + * @param $appname Name of the application + * @param $table Name of the database table + * @param $userid Id of owner of the object + * @param $object Object to save in the database + * @returns id of the object in the database + * + */ + static public function store($appname,$tablename,$userid,$object) { + $table = $appname."_".$tablename; + if(OC_DB::connect()) { + $CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" ); + if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ + $idline = "id INTEGER PRIMARY KEY AUTOINCREMENT"; + } else { + $idline = "id int NOT NULL AUTO_INCREMENT"; + } + $query = "CREATE TABLE IF NOT EXISTS *PREFIX*$table ($idline,uid int REFERENCES user(id),object text)"; + OC_DB::query($query); + $query = "INSERT INTO *PREFIX*$table (uid,object) VALUES ('$userid','".OC_DB::escape(base64_encode(serialize($object)))."')"; + OC_DB::query($query); + return OC_DB::insertid(); + } else { + die ("could not connect to database"); + } + } + + /** + * @brief Get an object from the database + * @param $appname Name of the application + * @param $table Name of the database table + * @param $objectid Id of the object + * @returns the object + * + */ + static public function get_object($appname,$tablename,$objectid) { + $table = $appname."_".$tablename; + if(OC_DB::connect()) { + $query = "SELECT object FROM *PREFIX*$table WHERE id='".OC_DB::escape($objectid)."'"; + $q = OC_DB::prepare($query); + $result = $q->execute()->fetchOne(); + return unserialize(base64_decode($result)); + } else { + die ("could not connect to database"); + } + + } + + static public function get_objects($appname,$tablename,$userid) { + $table = $appname."_".$tablename; + if(OC_DB::connect()) { + $query = "SELECT id FROM *PREFIX*$table WHERE uid='".OC_DB::escape($userid)."'"; + $q = OC_DB::prepare($query); + $result = $q->execute()->fetchAll(); + return $result; + } else { + die ("could not connect to database"); + } + } + + static public function delete_object($appname,$tablename,$objectid) { + $table = $appname."_".$tablename; + if(OC_DB::connect()) { + $query = "DELETE FROM *PREFIX*$table WHERE id='".OC_DB::escape($objectid)."'"; + $q = OC_DB::prepare($query); + $q->execute(); + return true; + } else { + die ("could not connect to database"); + } + + } + + static public function drop($appname,$tablename) { + $table = $appname."_".$tablename; + if(OC_DB::connect()) { + $query = "DROP TABLE *PREFIX*$table"; + $q = OC_DB::prepare($query); + $q->execute(); + return true; + } else { + die ("could not connect to database"); + } + + } +} +?> |