Fix license headers: Quassel IRC Team -> Quassel Project, 2007 -> 2008
[quassel.git] / src / core / sqlitestorage.cpp
index 0ccb43d..d81deee 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by the Quassel IRC Team                         *
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -62,6 +62,7 @@ QString SqliteStorage::displayName() {
 }
 
 bool SqliteStorage::setup(const QVariantMap &settings) {
+  Q_UNUSED(settings);
   bool ok;
   // this extra scope is needed to be able to remove the database connection later
   {
@@ -135,6 +136,7 @@ bool SqliteStorage::setup(const QVariantMap &settings) {
 }
 
 bool SqliteStorage::init(const QVariantMap &settings) {
+  Q_UNUSED(settings);
   bool ok;
   // i need the extra scope to be able to remove the database connection
   {
@@ -167,7 +169,7 @@ bool SqliteStorage::init(const QVariantMap &settings) {
 
   // we will need those pretty often... so let's speed things up:
   createBufferQuery = new QSqlQuery(logDb);
-  createBufferQuery->prepare("INSERT INTO buffer (userid, networkid, buffername) VALUES (:userid, (SELECT networkid FROM network WHERE networkname = :networkname), :buffername)");
+  createBufferQuery->prepare("INSERT INTO buffer (userid, networkid, buffername) VALUES (:userid, (SELECT networkid FROM network WHERE networkname = :networkname AND userid = :userid2), :buffername)");
 
   createNetworkQuery = new QSqlQuery(logDb);
   createNetworkQuery->prepare("INSERT INTO network (userid, networkname) VALUES (:userid, :networkname)");
@@ -175,7 +177,7 @@ bool SqliteStorage::init(const QVariantMap &settings) {
   getBufferInfoQuery = new QSqlQuery(logDb);
   getBufferInfoQuery->prepare("SELECT bufferid FROM buffer "
                             "JOIN network ON buffer.networkid = network.networkid "
-                            "WHERE network.networkname = :networkname AND buffer.userid = :userid AND lower(buffer.buffername) = lower(:buffername)");
+                            "WHERE network.networkname = :networkname AND network.userid = :userid AND buffer.userid = :userid2 AND lower(buffer.buffername) = lower(:buffername)");
 
   logMessageQuery = new QSqlQuery(logDb);
   logMessageQuery->prepare("INSERT INTO backlog (time, bufferid, type, flags, senderid, message) "
@@ -311,6 +313,7 @@ void SqliteStorage::delUser(UserId user) {
 
 void SqliteStorage::createBuffer(UserId user, const QString &network, const QString &buffer) {
   createBufferQuery->bindValue(":userid", user);
+  createBufferQuery->bindValue(":userid2", user);  // Qt can't handle same placeholder twice (maybe sqlites fault)
   createBufferQuery->bindValue(":networkname", network);
   createBufferQuery->bindValue(":buffername", buffer);
   createBufferQuery->exec();
@@ -359,6 +362,7 @@ BufferInfo SqliteStorage::getBufferInfo(UserId user, const QString &network, con
   uint networkId = getNetworkId(user, network);
   getBufferInfoQuery->bindValue(":networkname", network);
   getBufferInfoQuery->bindValue(":userid", user);
+  getBufferInfoQuery->bindValue(":userid2", user); // Qt can't handle same placeholder twice... though I guess it's sqlites fault
   getBufferInfoQuery->bindValue(":buffername", buffer);
   getBufferInfoQuery->exec();