Index: openacs-4/packages/chat/catalog/chat.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/catalog/chat.en_US.ISO-8859-1.xml,v diff -u -r1.2 -r1.3 --- openacs-4/packages/chat/catalog/chat.en_US.ISO-8859-1.xml 24 Jun 2006 14:23:40 -0000 1.2 +++ openacs-4/packages/chat/catalog/chat.en_US.ISO-8859-1.xml 21 Jun 2007 11:06:29 -0000 1.3 @@ -97,6 +97,7 @@ rooms Send/Refresh Sending message... + There are no messages to delete There are no rooms available to Transcript Index: openacs-4/packages/chat/sql/postgresql/upgrade/upgrade-5.0d6-5.1d.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/sql/postgresql/upgrade/Attic/upgrade-5.0d6-5.1d.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/chat/sql/postgresql/upgrade/upgrade-5.0d6-5.1d.sql 21 Jun 2007 11:06:29 -0000 1.1 @@ -0,0 +1,692 @@ +-- upgrade script + +alter table chat_rooms add open boolean; +alter table chat_rooms add auto_transcript_p boolean; +alter table chat_rooms add private boolean; +alter table chat_rooms add file_sent boolean; +alter table chat_rooms add frequency1 varchar; + +--------------------------------- + +alter table chat_transcripts add date date; +alter table chat_transcripts add keywords varchar; + +--------------------------------- + +alter table chat_registered_users add frequency_mail varchar; +alter table chat_registered_users add registered_date timestamp(0) without time zone; + +--------------------------------- + +CREATE TABLE chat_keywords ( + room_id INTEGER, + keyword VARCHAR, + CONSTRAINT chat_keywords_fk FOREIGN KEY (room_id) + REFERENCES chat_rooms(room_id) + ON DELETE cascade + NOT DEFERRABLE +) WITH OIDS; + + +--------------------------------- + +CREATE TABLE chat_private_room_users ( + room_id INTEGER, + user_id1 INTEGER, + user_id2 INTEGER, + CONSTRAINT chat_private_room_users_fk FOREIGN KEY (room_id) + REFERENCES chat_rooms(room_id) + ON DELETE cascade + NOT DEFERRABLE +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_room_user_id ( + room_id INTEGER NOT NULL references chat_rooms + on delete cascade, + user_id INTEGER NOT NULL, + CONSTRAINT chat_room_user_id_fk FOREIGN KEY (user_id) + REFERENCES users(user_id) + ON DELETE cascade + NOT DEFERRABLE +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_rooms_files_sent ( + file VARCHAR, + title VARCHAR, + room_id INTEGER NOT NULL, + date DATE, + send_file_id INTEGER references cr_revisions + on delete cascade, + description VARCHAR, + message BOOLEAN, + creation_user INTEGER, + CONSTRAINT chat_rooms_files_sent_fk FOREIGN KEY (room_id) + REFERENCES chat_rooms(room_id) + ON DELETE cascade + NOT DEFERRABLE +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_rss ( + room_name VARCHAR, + creator VARCHAR, + end_date DATE, + description VARCHAR, + comm_name VARCHAR, + user_registered VARCHAR, + rss_id INTEGER NOT NULL, + date TIMESTAMP(0) WITHOUT TIME ZONE, + entry_timestamp TIMESTAMP(0) WITHOUT TIME ZONE, + CONSTRAINT "chat_rss_pkey" PRIMARY KEY("rss_id") +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_file_transcript ( + transcript_id INTEGER, + file_id INTEGER +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_files_rss ( + file_id INTEGER, + rss_id INTEGER +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_key_rss ( + rss_id INTEGER, + key VARCHAR +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_partitipants_rss ( + partitipant VARCHAR, + rss_id INTEGER +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_partitipants_transcript ( + transcript_id INTEGER, + partitipant VARCHAR +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_room_transcript_keywords ( + keyword VARCHAR, + transcript_id INTEGER +) WITH OIDS; + +--------------------------------- + +CREATE TABLE chat_transcription_rss ( + rss_id INTEGER, + transcription_id INTEGER +) WITH OIDS; + +--------------------------------- + +CREATE OR REPLACE FUNCTION chat_room__new (varchar, varchar, varchar, varchar, integer, timestamp, boolean, boolean, boolean, boolean, boolean, integer, integer, integer, varchar, varchar, varchar, varchar) RETURNS integer AS' +declare + p_pretty_name alias for $1; + p_alias alias for $2; + p_description alias for $3; + p_key_words alias for $4; + p_maxP alias for $5; + p_end_date alias for $6; + p_Rss_service alias for $7; + p_Mail_service alias for $8; + p_moderated_p alias for $9; + p_active_p alias for $10; + p_archive_p alias for $11; + p_context_id alias for $12; + p_comm_id alias for $13; + p_creation_user alias for $14; + p_creation_ip alias for $15; + p_object_type alias for $16; + p_frequency1 alias for $17; + p_frequency2 alias for $18; + v_room_id chat_rooms.room_id%TYPE; + v_registered_id chat_rooms.room_id%TYPE; + v_comm_name varchar; +begin + v_room_id := acs_object__new(null,''chat_room'',now(),p_creation_user,p_creation_ip,p_context_id ); + v_registered_id := acs_object__new(null,''chat_room'',now(),p_creation_user,p_creation_ip,p_context_id ); + + if exists (select dot.pretty_name from dotlrn_communities_all as dot where dot.community_id = p_comm_id) then + select into v_comm_name dot.pretty_name from dotlrn_communities_all as dot where dot.community_id = p_comm_id; + insert into chat_rooms + (room_id, pretty_name, description, moderated_p, active_p, archive_p, maximal_participants, end_date, creator, context_id,comm_name,auto_transcript_p,file_sent,private,frequency1) + values + (v_room_id, p_pretty_name, p_description, p_moderated_p, p_active_p, p_archive_p, p_maxP, p_end_date,p_creation_user, p_context_id,v_comm_name,''true'',''false'',''false'',p_frequency1); + else + insert into chat_rooms + (room_id, pretty_name, description, moderated_p, active_p, archive_p, maximal_participants, end_date, creator, context_id,comm_name,auto_transcript_p, file_sent,private,frequency1) + values + (v_room_id, p_pretty_name, p_description, p_moderated_p, p_active_p, p_archive_p, p_maxP, p_end_date,p_creation_user, p_context_id,''Dotlrn'',''true'', ''false'',''false'',p_frequency1); + end if; + + + insert into chat_registered_users + (alias, room_id, user_id, RSS_service, mail_service, registered_id, frequency_mail) + values + (p_alias, v_room_id, p_creation_user, p_Rss_service, p_Mail_service, v_registered_id, p_frequency2); + +return v_room_id; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +------------------------------- + +CREATE OR REPLACE FUNCTION chat_room__del (integer) RETURNS integer AS' +declare + p_room_id alias for $1; +begin + + --TO DO: delete transcriptions? + + -- Erase all the users relate to this chat room. + delete from chat_private_room_users where room_id = p_room_id; + + -- Erase all the files sent relate to this chat room. + delete from chat_rooms_files_sent where room_id = p_room_id; + + -- Erase all the messages relate to this chat room. + delete from chat_msgs where room_id = p_room_id; + + -- Erase all the registered users relate to this chat room. + delete from chat_registered_users where room_id = p_room_id; + + -- Erase all the transcripts relate to this chat room. + delete from chat_transcripts where room_id = p_room_id; + + -- Erase all the keywords to this chat room. + delete from chat_keywords where room_id = p_room_id; + + -- Delete all privileges associate with this room + delete from acs_permissions where object_id = p_room_id; + + -- Now delete the chat room itself. + delete from chat_rooms where room_id = p_room_id; + + delete from rss_gen_subscrs where summary_context_id = p_room_id; + + delete from acs_objects where context_id = p_room_id; + + PERFORM acs_object__delete(p_room_id); + + return 0; +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +--------------------------------- + +CREATE OR REPLACE FUNCTION chat_room_registered__user (varchar, integer, integer, boolean, boolean, integer, varchar, varchar) RETURNS integer AS' +declare + p_alias alias for $1; + p_user_id alias for $2; + p_room_id alias for $3; + p_RSS_service alias for $4; + p_mail_service alias for $5; + p_context_id alias for $6; + p_creation_ip alias for $7; + p_frequency_mail alias for $8; + v_registered_id chat_rooms.room_id%TYPE; +begin + v_registered_id := acs_object__new(null,''chat_room'',now(),p_user_id,p_creation_ip,p_context_id ); + insert into chat_registered_users + (alias, room_id, user_id, RSS_service, mail_service, registered_id, frequency_mail, registered_date) + values + (p_alias, p_room_id, p_user_id, p_RSS_service, p_mail_service, v_registered_id, p_frequency_mail, now()); +return v_registered_id; +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +--------------------------------- + +CREATE OR REPLACE FUNCTION chat_room__delete_registered_users (integer, integer) RETURNS integer AS' +declare + p_room_id alias for $1; + p_user_id alias for $2; +begin + delete from chat_registered_users where room_id = p_room_id + and user_id = p_user_id; + return 0; +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +--------------------------------- + +CREATE OR REPLACE FUNCTION chat_transcript__new (varchar, varchar, varchar, integer, integer, timestamptz, integer, varchar, varchar) RETURNS integer AS' +declare + + p_pretty_name alias for $1; + p_contents alias for $2; + p_description alias for $3; + p_room_id alias for $4; + p_context_id alias for $5; + p_creation_date alias for $6; + p_creation_user alias for $7; + p_creation_ip alias for $8; + p_object_type alias for $9; + v_transcript_id chat_transcripts.transcript_id%TYPE; +begin + v_transcript_id := acs_object__new ( + null, + ''chat_transcript'', + now(), + p_creation_user, + p_creation_ip, + p_context_id + ); + + insert into chat_transcripts (transcript_id, pretty_name, contents, description, room_id, date) + values (v_transcript_id, p_pretty_name, p_contents, p_description, p_room_id, now()); + + return v_transcript_id; +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +---------------------------- + +CREATE OR REPLACE FUNCTION chat_room__edit (varchar, varchar, varchar, varchar, integer, timestamp, boolean, boolean, boolean, boolean, boolean, integer, integer, varchar, varchar) RETURNS integer AS' +/* Nuevo cuerpo de Function */ +declare + p_pretty_name alias for $1; + p_alias alias for $2; + p_description alias for $3; + p_key_words alias for $4; + p_maxP alias for $5; + p_end_date alias for $6; + p_Rss_service alias for $7; + p_Mail_service alias for $8; + p_moderated_p alias for $9; + p_active_p alias for $10; + p_archive_p alias for $11; + p_user_id alias for $12; + p_room_id alias for $13; + p_frequency1 alias for $14; + p_frequency_mail alias for $15; +begin + + update chat_rooms + set pretty_name = p_pretty_name, + description = p_description, + maximal_participants = p_maxP, + end_date = p_end_date, + moderated_p = p_moderated_p, + active_p = p_active_p, + archive_p = p_archive_p, + frequency1 = p_frequency1 + where + room_id = p_room_id; + + update chat_registered_users + set alias = p_alias, + RSS_service = p_Rss_service, + mail_service = p_Mail_service, + frequency_mail = p_frequency_mail + where + room_id = p_room_id + and user_id = p_user_id; + + return 0; +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +--------------------------- + +CREATE OR REPLACE FUNCTION chat_room__insert_keywords (varchar, integer) RETURNS integer AS' +/* Nuevo cuerpo de Function */ +declare +p_word alias for $1; +p_room_id alias for $2; +begin +insert into chat_keywords + (keyword,room_id) + values + (p_word, p_room_id); +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +---------------------------- + +CREATE OR REPLACE FUNCTION chat_room__private_new (varchar, varchar, varchar, varchar, integer, timestamp, boolean, boolean, boolean, boolean, boolean, integer, integer, integer, varchar, varchar, boolean) RETURNS integer AS' +/* Nuevo cuerpo de Function */ +declare + p_pretty_name alias for $1; + p_alias alias for $2; + p_description alias for $3; + p_key_words alias for $4; + p_maxP alias for $5; + p_end_date alias for $6; + p_Rss_service alias for $7; + p_Mail_service alias for $8; + p_moderated_p alias for $9; + p_active_p alias for $10; + p_archive_p alias for $11; + p_context_id alias for $12; + p_comm_id alias for $13; + p_creation_user alias for $14; + p_creation_ip alias for $15; + p_object_type alias for $16; + p_private alias for $17; + v_room_id chat_rooms.room_id%TYPE; + v_registered_id chat_rooms.room_id%TYPE; + v_comm_name varchar; +begin + + v_room_id := acs_object__new(null,''chat_room'',now(),p_creation_user,p_creation_ip,p_context_id ); + v_registered_id := acs_object__new(null,''chat_room'',now(),p_creation_user,p_creation_ip,p_context_id ); + + if exists (select dot.pretty_name from dotlrn_communities_all as dot where dot.community_id = p_comm_id) then + select into v_comm_name dot.pretty_name from dotlrn_communities_all as dot where dot.community_id = p_comm_id; + insert into chat_rooms + (room_id, pretty_name, description, moderated_p, active_p, archive_p, maximal_participants, end_date, creator, context_id,comm_name,auto_transcript_p,file_sent,private) + values + (v_room_id, p_pretty_name, p_description, p_moderated_p, p_active_p, p_archive_p, p_maxP, p_end_date,p_creation_user, p_context_id,v_comm_name,''true'',''false'',p_private); + else + insert into chat_rooms + (room_id, pretty_name, description, moderated_p, active_p, archive_p, maximal_participants, end_date, creator, context_id,comm_name,auto_transcript_p, file_sent,private) + values + (v_room_id, p_pretty_name, p_description, p_moderated_p, p_active_p, p_archive_p, p_maxP, p_end_date,p_creation_user, p_context_id,''Dotlrn'',''true'', ''false'',p_private); + end if; + + + insert into chat_registered_users + (alias, room_id, user_id, RSS_service, mail_service, registered_id) + values + (p_alias, v_room_id, p_creation_user, p_Rss_service, p_Mail_service, v_registered_id); + +return v_room_id; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +------------------------------------ + +CREATE OR REPLACE FUNCTION chat_room__send_files (integer, varchar, varchar, varchar, date, integer, integer, varchar, integer) RETURNS integer AS' +/* Nuevo cuerpo de Function */ + +declare + p_chat_id alias for $1; + p_file alias for $2; + p_title alias for $3; + p_description alias for $4; + p_date alias for $5; + p_context_id alias for $6; + p_creation_user alias for $7; + p_creation_ip alias for $8; + p_send_file_id alias for $9; + +begin + + insert into chat_rooms_files_sent + (room_id, file, title, description, date, send_file_id, message,creation_user) + values + (p_chat_id, p_file, p_title, p_description, p_date, p_send_file_id,''false'',p_creation_user); + +return p_send_file_id; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +----------------------------------------- + + +CREATE OR REPLACE FUNCTION chat_room__send_files_message (integer) RETURNS integer AS' +declare +p_chat_id alias for $1; +begin +update chat_rooms_files_sent set + message = ''true'' + where room_id = p_chat_id; +return 0; +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +----------------------------------------- + + +CREATE OR REPLACE FUNCTION chat_rss__store_db (varchar, varchar, date, varchar, +varchar, varchar, timestamp) RETURNS integer AS' +declare +p_room_name alias for $1; +p_room_description alias for $2; +p_end_date alias for $3; +p_r_creator alias for $4; +p_comm_name alias for $5; +p_registered_users alias for $6; +p_entry_timestamp alias for $7; + +v_rss_id chat_rss.rss_id%TYPE; + +begin +v_rss_id := acs_object__new(null,''chat_room'',now(),null,null,null ); + +insert into chat_rss + ( room_name, creator, end_date, description, comm_name, +user_registered, rss_id,date, entry_timestamp) + values + (p_room_name, p_r_creator,p_end_date, +p_room_description,p_comm_name,p_registered_users,v_rss_id,now(),p_entry_timestamp); +return v_rss_id; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +------------------------------------------ + +CREATE OR REPLACE FUNCTION chat_update_rss (varchar, varchar, timestamp, varchar, varchar, varchar, varchar) RETURNS integer AS' +declare +p_room_name alias for $1; +p_room_creator alias for $2; +p_end_date alias for $3; +p_room_description alias for $4; +p_comm_name alias for $5; +p_msg_creator alias for $6; +p_registered_users alias for $7; + +begin + + update chat_rss set + room_name = p_room_name, + creator = p_room_creator, + end_date = p_end_date, + description = p_room_description, + comm_name = p_comm_name, + user_registered = p_registered_users + where room_id = p_room_id; + + return 0; +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +------------------------------------- + +CREATE OR REPLACE FUNCTION chat_upload (varchar, varchar, timestamp, varchar, varchar, varchar, varchar) RETURNS integer AS' +declare +p_room_name alias for $1; +p_room_creator alias for $2; +p_end_date alias for $3; +p_room_description alias for $4; +p_comm_name alias for $5; +p_msg_creator alias for $6; +p_registered_users alias for $7; + +begin + + update chat_rss set + room_name = p_room_name, + creator = p_room_creator, + end_date = p_end_date, + description = p_room_description, + comm_name = p_comm_name, + user_registered = p_registered_users + where rss_id = p_rss_id; + + return 0; +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +----------------------------------- + +CREATE OR REPLACE FUNCTION chat_room__edit_admin (varchar, boolean, boolean, integer, integer, varchar, integer, varchar) RETURNS integer AS' +declare + + p_alias alias for $1; + p_Rss_service alias for $2; + p_Mail_service alias for $3; + p_context_id alias for $4; + p_creation_user alias for $5; + p_creation_ip alias for $6; + p_room_id alias for $7; + p_frequency_mail alias for $8; + v_registered_id chat_rooms.room_id%TYPE; + + begin + + v_registered_id := acs_object__new(null,''chat_room'',now(),p_creation_user,p_creation_ip,p_context_id ); + if exists (select ru.user_id from chat_registered_users as ru where ru.room_id = p_room_id and ru.user_id = p_creation_user) then + + else + insert into chat_registered_users + (alias, room_id, user_id, RSS_service, mail_service, registered_id, frequency_mail) + values + (p_alias, p_room_id, p_creation_user, p_Rss_service, p_Mail_service, v_registered_id, p_frequency_mail); + end if; +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +------------------------------------- + +CREATE OR REPLACE FUNCTION chat_room__store_transcripts_keywords (varchar, integer) RETURNS integer AS' +declare +p_keyword alias for $1; +p_transcript_id alias for $2; +begin +insert into chat_room_transcript_keywords + ( transcript_id,keyword) + values + (p_transcript_id,p_keyword); +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +------------------------------------------ + +CREATE OR REPLACE FUNCTION chat_rss__store_keywords_rss (integer, varchar) RETURNS integer AS' +declare +p_rss_id alias for $1; +p_keywords alias for $2; + +begin +insert into chat_key_rss + (rss_id,key) + values + (p_rss_id, p_keywords); +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +--------------------------------------------- + +CREATE OR REPLACE FUNCTION chat_rss__store_partitipants_rss (integer, varchar) RETURNS integer AS' +declare +p_rss_id alias for $1; +p_partitipant alias for $2; +begin +insert into chat_partitipants_rss + ( partitipant,rss_id) + values + (p_partitipant,p_rss_id); +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +---------------------------------------------- + +CREATE OR REPLACE FUNCTION chat_rss__store_sent_files_rss (integer, integer) RETURNS integer AS' +declare +p_rss_id alias for $1; +p_file_id alias for $2; +begin +insert into chat_files_rss + ( rss_id,file_id) + values + (p_rss_id, p_file_id); +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +--------------------------------------------- + +CREATE OR REPLACE FUNCTION chat_rss__store_transcripts_rss (integer, integer) RETURNS integer AS' +declare +p_rss_id alias for $1; +p_t_id alias for $2; + +begin +insert into chat_transcription_rss + ( rss_id,transcription_id) + values + (p_rss_id, p_t_id); +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +---------------------------------------------- + +CREATE OR REPLACE FUNCTION chat_transcript__store_partitipants_transcript (integer, varchar) RETURNS integer AS' +declare +p_transcript_id alias for $1; +p_partitipant alias for $2; +begin +insert into chat_partitipants_transcript + ( transcript_id,partitipant) + values + (p_transcript_id,p_partitipant); +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + +------------------------------------------------ + +CREATE OR REPLACE FUNCTION chat_transcript__store_sent_files_tanscript (integer, integer) RETURNS integer AS' +declare +p_transcript_id alias for $1; +p_f_id alias for $2; +begin +insert into chat_file_transcript + ( transcript_id,file_id) + values + (p_transcript_id, p_f_id); +return 0; + +end; +'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; + + + + Index: openacs-4/packages/chat/tcl/chat-ajax-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/tcl/chat-ajax-procs.tcl,v diff -u -r1.5 -r1.6 --- openacs-4/packages/chat/tcl/chat-ajax-procs.tcl 7 Jun 2007 09:14:24 -0000 1.5 +++ openacs-4/packages/chat/tcl/chat-ajax-procs.tcl 21 Jun 2007 11:06:29 -0000 1.6 @@ -4,32 +4,77 @@ @creation-date 2006-02-02 @author Gustaf Neumann @author Peter Alberer +<<<<<<< chat-ajax-procs.tcl @cvs-id $Id$ +======= + @cvs-id $Id$ +>>>>>>> 1.5 } namespace eval ::chat { ::xo::ChatClass Chat -superclass ::xo::Chat - - Chat instproc render {} { - my orderby time - set result "" + + + Chat instproc login {} { + my instvar array user_id now chat_id - foreach child [my children] { - - set msg [$child msg] - set user_id [$child user_id] - set color [$child color] - set timelong [clock format [$child time]] - set timeshort [clock format [$child time] -format {[%H:%M:%S]}] - set userlink [my user_link -user_id $user_id -color $color] - append result "

$timeshort" \ - "$userlink:" \ - "[my encode $msg]

\n" - } - return $result - } + + db_1row room_info { + select maximal_participants as maximal + from chat_rooms as cp + where cp.room_id = :chat_id + } + db_1row room_info { + select count(cr.room_id) as count + from chat_room_user_id as cr + where cr.room_id = :chat_id + } + if { $count < $maximal} { + db_1row room_info { + select count(cr.room_id) as count2 + from chat_room_user_id as cr + where cr.user_id = :user_id + and cr.room_id = :chat_id + } + if { $count2 == 0 } { + db_dml insert_users {insert into chat_room_user_id (room_id,user_id) values (:chat_id,:user_id);} + } + } + if { $count == $maximal} { + + db_1row room_info { + select count(chat_room_user_id.user_id) as count + from chat_room_user_id + where chat_room_user_id.user_id = :user_id + and chat_room_user_id.room_id = :chat_id + } + if { $count == 0 } { + if { [permission::permission_p -party_id $user_id -object_id [dotlrn::get_package_id] -privilege admin] } { + + } else { + + ns_return 200 text/html "\ +
[_ chat.You_dont_have_permission_room]
\ + " + ad_script_abort + } + } + } + + if {![nsv_exists $array-last-activity $user_id]} { + my add_msg -get_new false [_ xotcl-core.has_entered_the_room] + + - Chat proc login {-chat_id -package_id} { + } + my encoder noencode + my get_all + } + + + + + Chat proc login {-chat_id -package_id -folder_id} { auth::require_login if {![info exists package_id]} {set package_id [ad_conn package_id] } if {![info exists chat_id]} {set chat_id $package_id } @@ -45,11 +90,26 @@ set file [open [acs_root_dir]/$jspath]; set js [read $file]; close $file set path [site_node::get_url_from_object_id -object_id $package_id] set login_url ${path}ajax/chat?m=login&$context +<<<<<<< chat-ajax-procs.tcl set send_url ${path}ajax/chat?m=add_msg&$context&msg= + +======= + set send_url ${path}ajax/chat?m=add_msg&$context&msg= #$send_file +>>>>>>> 1.5 +<<<<<<< chat-ajax-procs.tcl set user_id [ad_conn user_id] set return_url [ad_return_url] + + set users_url ${path}ajax/chat?m=get_users&$context + + set files_url ${path}ajax/chat?m=get_files&$context + + +======= + set user_id [ad_conn user_id] + set return_url [ad_return_url] db_1row room_info { select room.comm_name from chat_rooms as room @@ -88,6 +148,7 @@ set files_url ${path}ajax/chat?m=get_files&$context +>>>>>>> 1.5 return "\