示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
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;
}
示例#4
0
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;
}