From 9cd3ccffd5372dfde3af478e3f832f18db4be3f1 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Apr 2013 13:14:41 +0200 Subject: tagging tags --- ychat-0.8.1/src/mods/commands/yc_j.cpp | 104 +++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100755 ychat-0.8.1/src/mods/commands/yc_j.cpp (limited to 'ychat-0.8.1/src/mods/commands/yc_j.cpp') diff --git a/ychat-0.8.1/src/mods/commands/yc_j.cpp b/ychat-0.8.1/src/mods/commands/yc_j.cpp new file mode 100755 index 0000000..178a388 --- /dev/null +++ b/ychat-0.8.1/src/mods/commands/yc_j.cpp @@ -0,0 +1,104 @@ +#include "../../chat/user.h" +#include "../../chat/room.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector *) c->elem[2]; // param array + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + gcol* p_gcol = (gcol*) ((dynamic_wrap*)c->elem[3])->GCOL; + + if ( ! params->empty() ) + { + vector ::iterator iter; + + string s_room; + + for ( iter = params->begin(); iter != params->end(); iter++ ) + { + s_room.append( *iter ); + if ( iter+1 != params->end() ) + s_room.append(" "); + } + + int i_max_room_len = tool::string2int( p_conf->get_elem("chat.maxlength.roomname") ); + if ( i_max_room_len < s_room.length() ) + s_room = s_room.substr(0, i_max_room_len ); + + if ( tool::to_lower(s_room) == p_user->get_room()->get_lowercase_name() ) + { + string s_msg = "get_elem("chat.html.errorcolor") + "\">" + + p_conf->get_elem("chat.msgs.err.alreadyinroom") + "" + + p_user->get_room()->get_name() + "
\n"; + p_user->msg_post( &s_msg ); + } + else + { + string s_user = p_timr->get_time() + " " + p_user->get_colored_bold_name(); + string s_msg = s_user + p_conf->get_elem( "chat.msgs.userleavesroom" ) + ""; + string s_msg2 = s_user + p_conf->get_elem( "chat.msgs.userentersroom" ) + ""; + + bool b_flag; + room* p_room = p_chat->get_room( s_room , b_flag ); + + // if room does not exist add room to list! + if ( p_room == NULL ) + { + p_room = p_gcol->get_room_from_garbage_or_new( s_room ); + + s_msg.append( s_room + "
\n" ); + s_msg2.append( s_room + "

\n" ); + + room* p_room_old = p_user->get_room(); + + string s_name_lowercase = p_user->get_lowercase_name(); + p_user->get_room()->del_elem( s_name_lowercase ); + + p_gcol->lock_mutex(); + if ( p_room_old != NULL ) + p_room_old->msg_post( &s_msg ); + p_gcol->unlock_mutex(); + + p_room->add_user( p_user ); + p_chat->add_elem( p_room ); + p_room->msg_post( &s_msg2 ); + } + else // p_room != NULL + { + s_msg.append( p_room->get_name() + "
\n" ); + s_msg2.append( p_room->get_name() + "
\n" ); + + room* p_room_old = p_user->get_room(); + + string s_name_lowercase = p_user->get_lowercase_name(); + p_user->get_room()->del_elem( s_name_lowercase ); + + p_gcol->lock_mutex(); + if ( p_room_old != NULL ) + p_room_old->msg_post( &s_msg ); + p_gcol->unlock_mutex(); + + p_room->add_user( p_user ); + p_room->msg_post( &s_msg2 ); + } + } + } + + return 0; + } + +} + -- cgit v1.2.3