more chat infrastructure
This commit is contained in:
parent
677f5f641e
commit
b8fb6a4373
@ -83,8 +83,10 @@ function chatroom_enter($observer_xchan,$room_id,$status,$client) {
|
||||
$r = q("select * from chatroom where cr_id = %d limit 1",
|
||||
intval($room_id)
|
||||
);
|
||||
if(! $r)
|
||||
return;
|
||||
if(! $r) {
|
||||
notice( t('Room not found.') . EOL);
|
||||
return false;
|
||||
}
|
||||
require_once('include/security.php');
|
||||
$sql_extra = permissions_sql($r[0]['cr_uid']);
|
||||
|
||||
@ -94,7 +96,7 @@ function chatroom_enter($observer_xchan,$room_id,$status,$client) {
|
||||
);
|
||||
if(! $x) {
|
||||
notice( t('Permission denied.') . EOL);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
$r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d limit 1",
|
||||
@ -122,12 +124,13 @@ function chatroom_enter($observer_xchan,$room_id,$status,$client) {
|
||||
}
|
||||
|
||||
|
||||
function chatroom_leave($observer_xchan,$room_id,$status) {
|
||||
function chatroom_leave($observer_xchan,$room_id,$client) {
|
||||
if(! $room_id || ! $observer_xchan)
|
||||
return;
|
||||
$r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d limit 1",
|
||||
$r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d and cp_client = '%s' limit 1",
|
||||
dbesc($observer_xchan),
|
||||
intval($room_id)
|
||||
intval($room_id),
|
||||
dbesc($client)
|
||||
);
|
||||
if($r) {
|
||||
q("delete from chatpresence where cp_id = %d limit 1",
|
||||
|
62
mod/chat.php
Normal file
62
mod/chat.php
Normal file
@ -0,0 +1,62 @@
|
||||
<?php /** @file */
|
||||
|
||||
require_once('include/chat.php');
|
||||
|
||||
function chat_init(&$a) {
|
||||
|
||||
$which = null;
|
||||
if(argc() > 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'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\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;
|
||||
}
|
||||
|
||||
}
|
18
view/tpl/chat.tpl
Normal file
18
view/tpl/chat.tpl
Normal file
@ -0,0 +1,18 @@
|
||||
<div id="chatContainer">
|
||||
|
||||
<div id="chatTopBar" class="rounded"></div>
|
||||
<div id="chatLineHolder"></div>
|
||||
|
||||
<div id="chatUsers" class="rounded"></div>
|
||||
|
||||
<div id="chatBottomBar" class="rounded">
|
||||
<div class="tip"></div>
|
||||
|
||||
<form id="submitForm" method="post" action="">
|
||||
<input id="chatText" name="chatText" class="rounded" maxlength="255" />
|
||||
<input type="submit" class="blueButton" value="Submit" />
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
Reference in New Issue
Block a user