diff options
Diffstat (limited to 'src/chat/room.cpp')
| -rw-r--r--[-rwxr-xr-x] | src/chat/room.cpp | 129 |
1 files changed, 87 insertions, 42 deletions
diff --git a/src/chat/room.cpp b/src/chat/room.cpp index 527e444..9ff5517 100755..100644 --- a/src/chat/room.cpp +++ b/src/chat/room.cpp @@ -1,3 +1,27 @@ +/*:* + *: File: ./src/chat/room.cpp + *: + *: yChat; Homepage: www.yChat.org; Version 0.7.9.5-RELEASE + *: + *: Copyright (C) 2003 Paul C. Buetow, Volker Richter + *: Copyright (C) 2004 Paul C. Buetow + *: Copyright (C) 2005 EXA Digital Solutions GbR + *: + *: 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 @@ -8,86 +32,107 @@ using namespace std; room::room( string s_name ) : name( s_name ) { - pthread_mutex_init( &mut_s_topic, NULL ); - p_logd = new logd( wrap::CONF->get_elem("chat.logging.roomlogdir") + get_lowercase_name(), - wrap::CONF->get_elem("chat.logging.roomloglines") ); - wrap::STAT->increment_num_rooms(); + pthread_mutex_init( &mut_s_topic, NULL ); +#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(); + wrap::STAT->decrement_num_rooms(); - // Delete all user objects - run_func( mtools<user*>::delete_obj ); + // Delete all user objects + run_func( mtools<user*>::delete_obj ); - delete p_logd; +#ifdef LOGGING - pthread_mutex_destroy( &mut_s_topic ); - pthread_mutex_destroy( &mut_s_name ); + delete p_logd; +#endif + + pthread_mutex_destroy( &mut_s_topic ); + pthread_mutex_destroy( &mut_s_name ); } string room::get_topic() { - string s_ret; - pthread_mutex_lock ( &mut_s_topic ); - s_ret = s_topic; - pthread_mutex_unlock( &mut_s_topic ); - return s_ret; + string s_ret; + pthread_mutex_lock ( &mut_s_topic ); + s_ret = s_topic; + pthread_mutex_unlock( &mut_s_topic ); + return s_ret; } void room::set_topic( string s_topic ) { - pthread_mutex_lock ( &mut_s_topic ); - if ( s_topic == "" ) - this->s_topic = ""; - else - this->s_topic = s_topic + "<br><br>"; - pthread_mutex_unlock( &mut_s_topic ); - reload_onlineframe(); + pthread_mutex_lock ( &mut_s_topic ); + if ( s_topic == "" ) + this->s_topic = ""; + else + this->s_topic = s_topic + "<br><br>"; + pthread_mutex_unlock( &mut_s_topic ); + reload_onlineframe(); } void room::set_topic( string s_topic, string s_color ) { - set_topic( "<font color=\"#" + s_color + "\">" + s_topic + "</font>"); + set_topic( "<font color=\"#" + s_color + "\">" + s_topic + "</font>"); } void room::clean_room() { - pthread_mutex_lock ( &mut_s_topic ); - this->s_topic = ""; - pthread_mutex_unlock( &mut_s_topic ); - wrap::CHAT->del_elem( get_lowercase_name() ); - wrap::GCOL->add_room_to_garbage( this ); + pthread_mutex_lock ( &mut_s_topic ); + this->s_topic = ""; + pthread_mutex_unlock( &mut_s_topic ); + wrap::CHAT->del_elem( get_lowercase_name() ); + wrap::GCOL->add_room_to_garbage( this ); } void room::reload_onlineframe() { - string s_msg = "<script language=\"JavaScript\"> parent.online.location.reload(); </script>\n"; - msg_post( &s_msg ); + javascript_post("parent.online.location.reload();"); } -void +void room::set_name( string s_name ) { - if ( tool::to_lower(s_name) == get_lowercase_name() ) - { - name::set_name( s_name ); - return; - } + 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; - p_logd->flush_logs(); + name::set_name( s_name ); +#ifdef LOGGING + + p_logd->set_logfile( wrap::CONF->get_elem("chat.logging.roomlogdir"), get_lowercase_name() ); +#endif +} - if ( s_name == "" ) - return; +void +room::dumpit() +{ + dumpable::add("[room]"); + dumpable::add("Name: "+get_name()); + dumpable::add("Topic: "+get_topic()); + base<user>::dumpit(); +} - name::set_name( s_name ); - p_logd->set_logfile( wrap::CONF->get_elem("chat.logging.roomlogdir"), get_lowercase_name() ); -} #endif |
