From b8fb6a437335ce16e658f8acda632916bb28e574 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Jan 2014 17:09:20 -0800 Subject: more chat infrastructure --- mod/chat.php | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 mod/chat.php (limited to 'mod/chat.php') diff --git a/mod/chat.php b/mod/chat.php new file mode 100644 index 000000000..bc981b76b --- /dev/null +++ b/mod/chat.php @@ -0,0 +1,62 @@ + 1) + $which = argv(1); + if(! $which) { + if(local_user()) { + $channel = $a->get_channel(); + if($channel && $channel['channel_address']) + $which = $channel['channel_address']; + } + } + if(! $which) { + notice( t('You must be logged in to see this page.') . EOL ); + return; + } + + $profile = 0; + $channel = $a->get_channel(); + + if((local_user()) && (argc() > 2) && (argv(2) === 'view')) { + $which = $channel['channel_address']; + $profile = argv(1); + } + + $a->page['htmlhead'] .= '' . "\r\n" ; + + // Run profile_load() here to make sure the theme is set before + // we start loading content + + profile_load($a,$which,$profile); + +} + + +function chat_content(&$a) { + + if(! perm_is_allowed($a->profile['profile_uid'],get_observer_hash(),'chat')) { + notice( t('Permission denied.') . EOL); + return; + } + + if((argc() > 3) && intval(argv(2)) && (argv(3) === 'leave')) { + chatroom_leave(get_observer_hash(),$room_id,$_SERVER['REMOTE_ADDR']); + goaway(z_root() . '/channel/' . argv(1)); + } + + + if(argc() > 2 && intval(argv(2))) { + $room_id = intval(argv(2)); + $x = chatroom_enter(get_observer_hash(),$room_id,'online',$_SERVER['REMOTE_ADDR']); + if(! $x) + return; + $o = replace_macros(get_markup_template('chat.tpl'),array()); + return $o; + } + +} \ No newline at end of file -- cgit v1.2.3 From c24aa824fe49d6dc803fb58c577d2238db416f2f Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Jan 2014 18:19:19 -0800 Subject: chat is a members only feature, there is no "guest" access. --- mod/chat.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'mod/chat.php') diff --git a/mod/chat.php b/mod/chat.php index bc981b76b..42a7808d9 100644 --- a/mod/chat.php +++ b/mod/chat.php @@ -39,20 +39,26 @@ function chat_init(&$a) { function chat_content(&$a) { - if(! perm_is_allowed($a->profile['profile_uid'],get_observer_hash(),'chat')) { + $observer = get_observer_hash(); + if(! $observer) { + notice( t('Permission denied.') . EOL); + return; + } + + if(! perm_is_allowed($a->profile['profile_uid'],$observer,'chat')) { notice( t('Permission denied.') . EOL); return; } if((argc() > 3) && intval(argv(2)) && (argv(3) === 'leave')) { - chatroom_leave(get_observer_hash(),$room_id,$_SERVER['REMOTE_ADDR']); + chatroom_leave($observer,$room_id,$_SERVER['REMOTE_ADDR']); goaway(z_root() . '/channel/' . argv(1)); } if(argc() > 2 && intval(argv(2))) { $room_id = intval(argv(2)); - $x = chatroom_enter(get_observer_hash(),$room_id,'online',$_SERVER['REMOTE_ADDR']); + $x = chatroom_enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']); if(! $x) return; $o = replace_macros(get_markup_template('chat.tpl'),array()); -- cgit v1.2.3 From 9fdee53c9a35d584de8cacd071c6608de88a18b6 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Jan 2014 20:14:18 -0800 Subject: start on the ajax bits --- mod/chat.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'mod/chat.php') diff --git a/mod/chat.php b/mod/chat.php index 42a7808d9..b8af4c1a6 100644 --- a/mod/chat.php +++ b/mod/chat.php @@ -61,7 +61,10 @@ function chat_content(&$a) { $x = chatroom_enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']); if(! $x) return; - $o = replace_macros(get_markup_template('chat.tpl'),array()); + $o = replace_macros(get_markup_template('chat.tpl'),array( + '$room_id' => $room_id, + '$submit' => t('Submit') + )); return $o; } -- cgit v1.2.3 From 7b609782623d91c2bdf81c04cd801aaae927e9fa Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Jan 2014 20:40:37 -0800 Subject: back-end for changing online status and keeping presence refreshed --- mod/chat.php | 3 +++ 1 file changed, 3 insertions(+) (limited to 'mod/chat.php') diff --git a/mod/chat.php b/mod/chat.php index b8af4c1a6..fa3d05364 100644 --- a/mod/chat.php +++ b/mod/chat.php @@ -67,5 +67,8 @@ function chat_content(&$a) { )); return $o; } + require_once('include/widgets.php'); + + return widget_chatroom_list(array()); } \ No newline at end of file -- cgit v1.2.3 From 080928f214c9f83879f1578e05baa6032fa2b7b8 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Jan 2014 21:29:48 -0800 Subject: chatroom management front-end stuff --- mod/chat.php | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) (limited to 'mod/chat.php') diff --git a/mod/chat.php b/mod/chat.php index fa3d05364..54fa58092 100644 --- a/mod/chat.php +++ b/mod/chat.php @@ -36,6 +36,46 @@ function chat_init(&$a) { } +function chat_post(&$a) { + + if($_POST['room_name']) + $room = strip_tags(trim($_POST['room_name'])); + + if((! $room) || (! local_user())) + return; + + $channel = $a->get_channel(); + + + if($_POST['action'] === 'drop') { + chatroom_destroy($channel,array('cr_name' => $room)); + goaway(z_root() . '/chat/' . $channel['channel_address']); + } + + + $arr = array('name' => $room); + $arr['allow_gid'] = perms2str($_REQUEST['group_allow']); + $arr['allow_cid'] = perms2str($_REQUEST['contact_allow']); + $arr['deny_gid'] = perms2str($_REQUEST['group_deny']); + $arr['deny_cid'] = perms2str($_REQUEST['contact_deny']); + + chatroom_create($channel,$arr); + + $x = q("select cr_id from chatroom where cr_name = '%s' and cr_uid = %d limit 1", + dbesc($room), + intval(local_user()) + ); + + if($x) + goaway(z_root() . '/chat/' . $channel['channel_address'] . '/' . $x[0]['cr_id']); + + // that failed. Try again perhaps? + + goaway(z_root() . '/chat/' . $channel['channel_address'] . '/new'); + + +} + function chat_content(&$a) { @@ -62,11 +102,44 @@ function chat_content(&$a) { if(! $x) return; $o = replace_macros(get_markup_template('chat.tpl'),array( + '$room_name' => '', // should we get this from the API? '$room_id' => $room_id, '$submit' => t('Submit') )); return $o; } + + + + + + if(local_user() && argc() > 2 && argv(2) === 'new') { + + + $channel = $a->get_channel(); + $channel_acl = array( + 'allow_cid' => $channel['channel_allow_cid'], + 'allow_gid' => $channel['channel_allow_gid'], + 'deny_cid' => $channel['channel_deny_cid'], + 'deny_gid' => $channel['channel_deny_gid'] + ); + + require_once('include/acl_selectors.php'); + + $o = replace_macros(get_markup_template('chatroom_new.tpl'),array( + '$header' => t('New Chatroom'), + '$name' => array('room_name',t('Chatroom Name'),'', ''), + '$acl' => populate_acl($channel_acl), + '$submit' => t('Submit') + )); + return $o; + } + + + + + + require_once('include/widgets.php'); return widget_chatroom_list(array()); -- cgit v1.2.3