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",
|
$r = q("select * from chatroom where cr_id = %d limit 1",
|
||||||
intval($room_id)
|
intval($room_id)
|
||||||
);
|
);
|
||||||
if(! $r)
|
if(! $r) {
|
||||||
return;
|
notice( t('Room not found.') . EOL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
require_once('include/security.php');
|
require_once('include/security.php');
|
||||||
$sql_extra = permissions_sql($r[0]['cr_uid']);
|
$sql_extra = permissions_sql($r[0]['cr_uid']);
|
||||||
|
|
||||||
@ -94,7 +96,7 @@ function chatroom_enter($observer_xchan,$room_id,$status,$client) {
|
|||||||
);
|
);
|
||||||
if(! $x) {
|
if(! $x) {
|
||||||
notice( t('Permission denied.') . EOL);
|
notice( t('Permission denied.') . EOL);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$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 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)
|
if(! $room_id || ! $observer_xchan)
|
||||||
return;
|
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),
|
dbesc($observer_xchan),
|
||||||
intval($room_id)
|
intval($room_id),
|
||||||
|
dbesc($client)
|
||||||
);
|
);
|
||||||
if($r) {
|
if($r) {
|
||||||
q("delete from chatpresence where cp_id = %d limit 1",
|
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