169 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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_post(&$a) {
 | |
| 
 | |
| 	if($_POST['room_name'])
 | |
| 		$room = strip_tags(trim($_POST['room_name']));	
 | |
| 
 | |
| 	if((! $room) || (! local_user()))
 | |
| 		return;
 | |
| 
 | |
| 	$channel = $a->get_channel();
 | |
| 
 | |
| 
 | |
| 	if($_POST['action'] === 'drop') {
 | |
| 		chatroom_destroy($channel,array('cr_name' => $room));
 | |
| 		goaway(z_root() . '/chat/' . $channel['channel_address']);
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	$arr = array('name' => $room);
 | |
| 	$arr['allow_gid']   = perms2str($_REQUEST['group_allow']);
 | |
|     $arr['allow_cid']   = perms2str($_REQUEST['contact_allow']);
 | |
|     $arr['deny_gid']    = perms2str($_REQUEST['group_deny']);
 | |
|     $arr['deny_cid']    = perms2str($_REQUEST['contact_deny']);
 | |
| 
 | |
| 	chatroom_create($channel,$arr);
 | |
| 
 | |
| 	$x = q("select cr_id from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
 | |
| 		dbesc($room),
 | |
| 		intval(local_user())
 | |
| 	);
 | |
| 
 | |
| 	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 chat_content(&$a) {
 | |
| 
 | |
| 	$observer = get_observer_hash();
 | |
| 	if(! $observer) {
 | |
| 		notice( t('Permission denied.') . EOL);
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	if(! perm_is_allowed($a->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() > 2 && intval(argv(2))) {
 | |
| 		$room_id = intval(argv(2));
 | |
| 		$x = chatroom_enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
 | |
| 		if(! $x)
 | |
| 			return;
 | |
| 		$x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
 | |
| 			intval($room_id),
 | |
| 			intval($a->profile['profile_uid'])
 | |
| 		);
 | |
| 		if($x) {
 | |
| 			$room_name = $x[0]['cr_name'];
 | |
| 		}
 | |
| 		$o = replace_macros(get_markup_template('chat.tpl'),array(
 | |
| 			'$room_name' => $room_name,
 | |
| 			'$room_id' => $room_id,
 | |
| 			'$baseurl' => z_root(),
 | |
| 			'$nickname' => argv(1),
 | |
| 			'$submit' => t('Submit'),
 | |
| 			'$leave' => t('Leave Room'),
 | |
| 			'$away' => t('I am away right now'),
 | |
| 			'$online' => t('I am online')
 | |
| 
 | |
| 		));
 | |
| 		return $o;
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	if(local_user() && argc() > 2 && argv(2) === 'new') {
 | |
| 
 | |
| 
 | |
| 		$channel = $a->get_channel();  
 | |
| 		$channel_acl = array(
 | |
| 			'allow_cid' => $channel['channel_allow_cid'], 
 | |
| 			'allow_gid' => $channel['channel_allow_gid'], 
 | |
| 			'deny_cid'  => $channel['channel_deny_cid'], 
 | |
| 			'deny_gid'  => $channel['channel_deny_gid']
 | |
| 		); 
 | |
| 
 | |
| 		require_once('include/acl_selectors.php');
 | |
| 
 | |
| 		$o = replace_macros(get_markup_template('chatroom_new.tpl'),array(
 | |
| 			'$header' => t('New Chatroom'),
 | |
| 			'$name' => array('room_name',t('Chatroom Name'),'', ''),
 | |
| 			'$acl' => populate_acl($channel_acl),
 | |
| 			'$submit' => t('Submit')
 | |
| 		));
 | |
| 		return $o;
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	require_once('include/widgets.php');
 | |
| 
 | |
| 	$o = replace_macros(get_markup_template('chatrooms.tpl'), array(
 | |
| 		'$header' => sprintf( t('%1$s\'s Chatrooms'), $a->profile['name']),
 | |
| 		'$baseurl' => z_root(),
 | |
| 		'$nickname' => $channel['channel_address'],
 | |
| 		'$rooms' => widget_chatroom_list(array()),
 | |
| 		'$newroom' => t('New Chatroom'),
 | |
| 		'$is_owner' => ((local_user() && local_user() == $a->profile['profile_uid']) ? 1 : 0)
 | |
| 	));
 | |
|  
 | |
| 	return $o;
 | |
| 
 | |
| } |