aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/chat.php41
-rw-r--r--mod/chatsvc.php11
2 files changed, 51 insertions, 1 deletions
diff --git a/include/chat.php b/include/chat.php
index 5a17230e0..8e84d9be0 100644
--- a/include/chat.php
+++ b/include/chat.php
@@ -182,3 +182,44 @@ function chatroom_list($uid) {
return $r;
}
+
+/**
+ * create a chat message via API.
+ * It is the caller's responsibility to enter the room.
+ */
+
+function chat_message($uid,$room_id,$xchan,$text) {
+
+ $ret = array('success' => false);
+
+ if(! $text)
+ return;
+
+ $sql_extra = permissions_sql($uid);
+
+ $r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra",
+ intval($uid),
+ intval($room_id)
+ );
+ if(! $r)
+ return $ret;
+
+ $arr = array(
+ 'chat_room' => $room_id,
+ 'chat_xchan' => $xchan,
+ 'chat_text' => $text
+ );
+
+ call_hooks('chat_message',$arr);
+
+ $x = q("insert into chat ( chat_room, chat_xchan, created, chat_text )
+ values( %d, '%s', '%s', '%s' )",
+ intval($room_id),
+ dbesc($xchan),
+ dbesc(datetime_convert()),
+ dbesc($arr['chat_text'])
+ );
+
+ $ret['success'] = true;
+ return $ret;
+}
diff --git a/mod/chatsvc.php b/mod/chatsvc.php
index 9cc8778f5..43aa3d3c0 100644
--- a/mod/chatsvc.php
+++ b/mod/chatsvc.php
@@ -41,13 +41,22 @@ function chatsvc_post(&$a) {
if(! $r)
json_return_and_die($ret);
+ $arr = array(
+ 'chat_room' => $a->data['chat']['room_id'],
+ 'chat_xchan' => get_observer_hash(),
+ 'chat_text' => $text
+ );
+
+ call_hooks('chat_post',$arr);
+
$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)
+ dbesc($arr['chat_text'])
);
+
$ret['success'] = true;
json_return_and_die($ret);
}