aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Module/Chat.php
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs/Module/Chat.php')
-rw-r--r--Zotlabs/Module/Chat.php110
1 files changed, 54 insertions, 56 deletions
diff --git a/Zotlabs/Module/Chat.php b/Zotlabs/Module/Chat.php
index 28e775f9d..323471161 100644
--- a/Zotlabs/Module/Chat.php
+++ b/Zotlabs/Module/Chat.php
@@ -14,7 +14,7 @@ require_once('include/bookmarks.php');
class Chat extends Controller {
function init() {
-
+
$which = null;
if(argc() > 1)
$which = argv(1);
@@ -29,79 +29,77 @@ class Chat extends Controller {
notice( t('You must be logged in to see this page.') . EOL );
return;
}
-
+
$profile = 0;
$channel = App::get_channel();
-
+
if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
$which = $channel['channel_address'];
- $profile = argv(1);
+ $profile = argv(1);
}
-
+
// Run profile_load() here to make sure the theme is set before
// we start loading content
-
+
profile_load($which,$profile);
-
+
}
-
+
function post() {
-
+
if($_POST['room_name'])
- $room = strip_tags(trim($_POST['room_name']));
-
+ $room = strip_tags(trim($_POST['room_name']));
+
if((! $room) || (! local_channel()))
return;
-
+
$channel = App::get_channel();
-
-
+
+
if($_POST['action'] === 'drop') {
logger('delete chatroom');
Chatroom::destroy($channel,array('cr_name' => $room));
goaway(z_root() . '/chat/' . $channel['channel_address']);
}
-
+
$acl = new AccessList($channel);
$acl->set_from_array($_REQUEST);
-
+
$arr = $acl->get();
$arr['name'] = $room;
$arr['expire'] = intval($_POST['chat_expire']);
if(intval($arr['expire']) < 0)
$arr['expire'] = 0;
-
+
Chatroom::create($channel,$arr);
-
+
$x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
dbesc($room),
intval(local_channel())
);
-
+
Libsync::build_sync_packet(0, array('chatroom' => $x));
-
+
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 get() {
if(! Apps::system_app_installed(App::$profile_uid, 'Chatrooms')) {
//Do not display any associated widgets at this point
App::$pdl = '';
-
- $o = '<b>' . t('Chatrooms App') . ' (' . t('Not Installed') . '):</b><br>';
- $o .= t('Access Controlled Chatrooms');
- return $o;
+ $papp = Apps::get_papp('Chatrooms');
+ return Apps::app_render($papp, 'module');
}
-
+
if(local_channel()) {
$channel = App::get_channel();
nav_set_selected('Chatrooms');
@@ -113,24 +111,24 @@ class Chat extends Controller {
notice( t('Permission denied.') . EOL);
return;
}
-
+
if(! perm_is_allowed(App::$profile['profile_uid'],$observer,'chat')) {
notice( t('Permission denied.') . EOL);
return;
}
-
+
if((argc() > 3) && intval(argv(2)) && (argv(3) === 'leave')) {
Chatroom::leave($observer,argv(2),$_SERVER['REMOTE_ADDR']);
goaway(z_root() . '/channel/' . argv(1));
}
-
-
+
+
if((argc() > 3) && intval(argv(2)) && (argv(3) === 'status')) {
$ret = array('success' => false);
$room_id = intval(argv(2));
if(! $room_id || ! $observer)
return;
-
+
$r = q("select * from chatroom where cr_id = %d limit 1",
intval($room_id)
);
@@ -139,7 +137,7 @@ class Chat extends Controller {
}
require_once('include/security.php');
$sql_extra = permissions_sql($r[0]['cr_uid']);
-
+
$x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
intval($room_id),
intval($r[0]['cr_uid'])
@@ -155,9 +153,9 @@ class Chat extends Controller {
$ret['chatroom'] = $r[0]['cr_name'];
$ret['inroom'] = $y[0]['total'];
}
-
+
// figure out how to present a timestamp of the last activity, since we don't know the observer's timezone.
-
+
$z = q("select created from chat where chat_room = %d order by created desc limit 1",
intval($room_id)
);
@@ -166,13 +164,13 @@ class Chat extends Controller {
}
json_return_and_die($ret);
}
-
-
+
+
if(argc() > 2 && intval(argv(2))) {
-
+
$room_id = intval(argv(2));
$bookmark_link = get_bookmark_link($ob);
-
+
$x = Chatroom::enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
if(! $x)
return;
@@ -180,26 +178,26 @@ class Chat extends Controller {
intval($room_id),
intval(App::$profile['profile_uid'])
);
-
+
if($x) {
$acl = new AccessList(false);
$acl->set($x[0]);
-
+
$private = $acl->is_private();
$room_name = $x[0]['cr_name'];
if($bookmark_link)
- $bookmark_link .= '&url=' . z_root() . '/chat/' . argv(1) . '/' . argv(2) . '&title=' . urlencode($x[0]['cr_name']) . (($private) ? '&private=1' : '') . '&ischat=1';
+ $bookmark_link .= '&url=' . z_root() . '/chat/' . argv(1) . '/' . argv(2) . '&title=' . urlencode($x[0]['cr_name']) . (($private) ? '&private=1' : '') . '&ischat=1';
}
else {
notice( t('Room not found') . EOL);
return;
}
-
+
$cipher = get_pconfig(local_channel(),'system','default_cipher');
if(! $cipher)
$cipher = 'AES-128-CCM';
-
-
+
+
$o = replace_macros(get_markup_template('chat.tpl'),array(
'$is_owner' => ((local_channel() && local_channel() == $x[0]['cr_uid']) ? true : false),
'$room_name' => $room_name,
@@ -223,7 +221,7 @@ class Chat extends Controller {
}
require_once('include/conversation.php');
-
+
$o = '';
$acl = new AccessList($channel);
@@ -246,12 +244,12 @@ class Chat extends Controller {
'$deny_gid' => acl2json($channel_acl['deny_gid']),
'$lockstate' => $lockstate,
'$submit' => t('Submit')
-
+
));
}
$rooms = Chatroom::roomlist(App::$profile['profile_uid']);
-
+
$o .= replace_macros(get_markup_template('chatrooms.tpl'), array(
'$header' => sprintf( t('%1$s\'s Chatrooms'), App::$profile['fullname']),
'$name' => t('Name'),
@@ -259,15 +257,15 @@ class Chat extends Controller {
'$nickname' => App::$profile['channel_address'],
'$rooms' => $rooms,
'$norooms' => t('No chatrooms available'),
- '$newroom' => t('Create New'),
+ '$newroom' => t('Add Room'),
'$is_owner' => ((local_channel() && local_channel() == App::$profile['profile_uid']) ? 1 : 0),
'$chatroom_new' => $chatroom_new,
'$expire' => t('Expiration'),
'$expire_unit' => t('min') //minutes
));
-
+
return $o;
-
+
}
-
+
}