mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 08:15:13 +00:00
mod/chatsvc - ajax backend for chat
This commit is contained in:
parent
b8fb6a4373
commit
0d326dfb45
1 changed files with 104 additions and 0 deletions
104
mod/chatsvc.php
Normal file
104
mod/chatsvc.php
Normal file
|
@ -0,0 +1,104 @@
|
|||
<?php /** @file */
|
||||
|
||||
require_once('include/security.php');
|
||||
|
||||
function chatsvc_init(&$a) {
|
||||
|
||||
$ret = array('success' => false);
|
||||
|
||||
$a->data['chat']['room_id'] = intval($_REQUEST['room_id']);
|
||||
$x = q("select cr_uid from chatroom where cr_id = %d and cr_id != 0 limit 1",
|
||||
intval($a->data['chat']['room_id'])
|
||||
);
|
||||
if(! $x)
|
||||
json_return_and_die($ret);
|
||||
|
||||
$a->data['chat']['uid'] = $x[0]['cr_uid'];
|
||||
|
||||
if(! perm_is_allowed($a->data['chat']['uid'],get_observer_hash(),'chat')) {
|
||||
json_return_and_die($ret);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function chatsvc_post(&$a) {
|
||||
|
||||
$ret = array('success' => false);
|
||||
|
||||
$room_id = $a->data['chat']['room_id'];
|
||||
$text = escape_tags($_REQUEST['chat_text']);
|
||||
|
||||
|
||||
$sql_extra = permissions_sql($a->data['chat']['uid']);
|
||||
|
||||
$r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra",
|
||||
intval($a->data['chat']['uid']),
|
||||
intval($a->data['chat']['room_id'])
|
||||
);
|
||||
if(! $r)
|
||||
json_return_and_die($ret);
|
||||
|
||||
$x = q("insert into chat ( chat_room, chat_xchan, created, chat_text )
|
||||
values( %d, '%s', '%s', '%s' )",
|
||||
intval($a->data['chat']['room_id']),
|
||||
dbesc(get_observer_hash()),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc($text)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
function chatsvc_content(&$a) {
|
||||
|
||||
$lastseen = intval($_REQUEST['last']);
|
||||
|
||||
$ret = array('success' => false);
|
||||
|
||||
$sql_extra = permissions_sql($a->data['chat']['uid']);
|
||||
|
||||
$r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra",
|
||||
intval($a->data['chat']['uid']),
|
||||
intval($a->data['chat']['room_id'])
|
||||
);
|
||||
if(! $r)
|
||||
json_return_and_die($ret);
|
||||
|
||||
$inroom = array();
|
||||
|
||||
$r = q("select * from chatpresence left join xchan on xchan_hash = cp_xchan where cp_room = %d order by xchan_name",
|
||||
intval($a->data['chat']['room_id'])
|
||||
);
|
||||
if($r) {
|
||||
foreach($r as $rr) {
|
||||
$inroom[] = array('img' => zid($rr['xchan_photo_m']), 'img_type' => $rr['xchan_photo_mimetype'],'name' => $rr['xchan_name']);
|
||||
}
|
||||
}
|
||||
|
||||
$chats = array();
|
||||
|
||||
$r = q("select * from chat left join xchan on chat_xchan = xchan_hash where chat_room = %d and chat_id > %d",
|
||||
intval($a->data['chat']['room_id']),
|
||||
intval($lastseen)
|
||||
);
|
||||
if($r) {
|
||||
foreach($r as $rr) {
|
||||
$chats[] = array(
|
||||
'id' => $rr['chat_id'],
|
||||
'img' => zid($rr['xchan_photo_m']),
|
||||
'img_type' => $rr['xchan_photo_mimetype'],
|
||||
'name' => $rr['xchan_name'],
|
||||
'isotime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'c'),
|
||||
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'r'),
|
||||
'text' => smilies(bbcode($rr['chat_text']))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$ret['success'] = true;
|
||||
$ret['inroom'] = $inroom;
|
||||
$ret['chats'] = $chats;
|
||||
|
||||
json_return_and_die($ret);
|
||||
|
||||
}
|
||||
|
Loading…
Reference in a new issue