From 19f9940dc968afae01b54377ee23ec59069c9646 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 27 Jan 2009 23:25:11 +0000 Subject: --- 0.8/src/chat/room.cpp | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 0.8/src/chat/room.cpp (limited to '0.8/src/chat/room.cpp') diff --git a/0.8/src/chat/room.cpp b/0.8/src/chat/room.cpp new file mode 100644 index 0000000..39177e7 --- /dev/null +++ b/0.8/src/chat/room.cpp @@ -0,0 +1,133 @@ +/*:* + *: File: ./src/chat/room.cpp + *: + *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT + *: + *: Copyright (C) 2003 Paul C. Buetow, Volker Richter + *: Copyright (C) 2004 Paul C. Buetow + *: Copyright (C) 2005 EXA Digital Solutions GbR + *: Copyright (C) 2006, 2007 Paul C. Buetow + *: + *: This program is free software; you can redistribute it and/or + *: modify it under the terms of the GNU General Public License + *: as published by the Free Software Foundation; either version 2 + *: of the License, or (at your option) any later version. + *: + *: This program 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 General Public License for more details. + *: + *: You should have received a copy of the GNU General Public License + *: along with this program; if not, write to the Free Software + *: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *:*/ + +#ifndef ROOM_CPP +#define ROOM_CPP + +#include "room.h" +#include "../maps/mtools.h" + +using namespace std; + +room::room( string s_name ) : name( s_name ) +{ +#ifdef LOGGING + + p_logd = new logd( wrap::CONF->get_elem("chat.logging.roomlogdir") + get_lowercase_name(), + wrap::CONF->get_elem("chat.logging.roomloglines") ); +#endif + + wrap::STAT->increment_num_rooms(); +} + +room::~room() +{ + wrap::STAT->decrement_num_rooms(); + + // Delete all user objects + run_func( mtools::delete_obj ); + +#ifdef LOGGING + + delete p_logd; +#endif + +} + +string +room::get_topic() +{ + string s_ret; + s_ret = s_topic; + return s_ret; +} + +void +room::set_topic( string s_topic ) +{ + if ( s_topic == "" ) + this->s_topic = ""; + else + this->s_topic = s_topic + "

"; + reload_onlineframe(); +} + +void +room::set_topic( string s_topic, string s_color ) +{ + set_topic( "" + s_topic + ""); +} + +void +room::clean_room() +{ + this->s_topic = ""; + wrap::CHAT->del_elem( get_lowercase_name() ); + wrap::GCOL->add_room_to_garbage( this ); +} + +void +room::reload_onlineframe() +{ + javascript_post("parent.online.location.reload();"); +} + +void +room::set_name( string s_name ) +{ + if ( tool::to_lower(s_name) == get_lowercase_name() ) + { + name::set_name( s_name ); + return; + } + +#ifdef LOGGING + p_logd->flush_logs(); +#endif + + if ( s_name == "" ) + return; + + name::set_name( s_name ); +#ifdef LOGGING + + p_logd->set_logfile( wrap::CONF->get_elem("chat.logging.roomlogdir"), get_lowercase_name() ); +#endif +} + +void +room::dumpit() +{ + dumpable::add + ("[room]"); + dumpable::add + ("Name: "+get_name()); + dumpable::add + ("Topic: "+get_topic()); + base::dumpit(); +} + + +#endif -- cgit v1.2.3