int cMsgList::DeliverMessagesForUser(cUser *dest) { db_iterator it; int n = 0; long max_date = 0; mQuery.Clear(); SelectFields(mQuery.OStream()); mQuery.OStream() << "WHERE " << "receiver" << "='" ; WriteStringConstant(mQuery.OStream(),dest->mNick); mQuery.OStream()<< "'"; SetBaseTo(&mModel); for( it = db_begin(); it != db_end(); ++it, ++n ) { if (mModel.mDateSent > max_date) max_date = mModel.mDateSent; DeliverModelToUser(dest); } mQuery.Clear(); mQuery.OStream() << "DELETE FROM " << mMySQLTable.mName << " WHERE receiver = '" ; WriteStringConstant(mQuery.OStream(),dest->mNick); mQuery.OStream() << "' AND date_sent <= " << max_date; mQuery.Query(); return n; }
void cIPLog::MakeSearchQuery(const string &who, bool isNick, int action, int limit) { SelectFields(mQuery.OStream()); mQuery.OStream() << (isNick ? "WHERE nick='" : "WHERE ip="); if(isNick) { WriteStringConstant(mQuery.OStream(),who); mQuery.OStream() << "'"; } else mQuery.OStream() << cBanList::Ip2Num(who); if(action>= 0) mQuery.OStream() << " AND action =" << action; mQuery.OStream() << " ORDER BY date DESC LIMIT " << limit; }
int cMsgList::CountMessages(const string &nick, bool sender) { // quick cache response if(!sender && mCache.IsLoaded() && !mCache.Find(nick)) return 0; // if found in cache then count it.. mQuery.Clear(); mQuery.OStream() << "SELECT COUNT(body) FROM " << this->mMySQLTable.mName << " WHERE " << (sender ? "sender" : "receiver") << "='"; WriteStringConstant(mQuery.OStream(), nick ); mQuery.OStream() << "'"; mQuery.Query(); int n = 0; MYSQL_ROW row; if(mQuery.StoreResult() && ( NULL != (row = mQuery.Row()))) n = atoi(row[0]); mQuery.Clear(); return n; }
int cMsgList::PrintSubjects(ostream &os, const string &nick, bool IsSender) { int n = 0; mQuery.Clear(); SelectFields(mQuery.OStream()); mQuery.OStream() << "WHERE " << (IsSender ? "sender" : "receiver") << "='"; WriteStringConstant(mQuery.OStream(), nick ); mQuery.OStream() << "'"; db_iterator it; SetBaseTo(&mModel); for(it = db_begin(); it != db_end(); ++it) { os << mModel.AsSubj() << endl; n++; } mQuery.Clear(); return 0; }