forked from friendica/friendica-addons
		
	
		
			
				
	
	
		
			120 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
* Name: IRC Chat Plugin
 | 
						|
* Description: add an Internet Relay Chat chatroom
 | 
						|
* Version: 1.0
 | 
						|
* Author: tony baldwin <https://free-haven.org/profile/tony>
 | 
						|
*/
 | 
						|
 | 
						|
/* enable in admin->plugins
 | 
						|
 * you will then have "irc chatroom" listed at yoursite/apps
 | 
						|
 * and the app will run at yoursite/irc
 | 
						|
 * documentation at http://tonybaldwin.me/hax/doku.php?id=friendica:irc
 | 
						|
 * admin can set popular chans, auto connect chans in settings->plugin settings
 | 
						|
 */
 | 
						|
 | 
						|
function irc_install() {
 | 
						|
	register_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu');
 | 
						|
	register_hook('plugin_settings', 'addon/irc/irc.php', 'irc_addon_settings');
 | 
						|
	register_hook('plugin_settings_post', 'addon/irc/irc.php', 'irc_addon_settings_post');
 | 
						|
}
 | 
						|
 | 
						|
function irc_uninstall() {
 | 
						|
	unregister_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu');
 | 
						|
	unregister_hook('plugin_settings', 'addon/irc/irc.php', 'irc_addon_settings');
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function irc_addon_settings(&$a,&$s) {
 | 
						|
 | 
						|
 | 
						|
	if(! is_site_admin())
 | 
						|
		return;
 | 
						|
 | 
						|
    /* Add our stylesheet to the page so we can make our settings look nice */
 | 
						|
 | 
						|
	$a->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $a->get_baseurl() . '/addon/irc/irc.css' . '" media="all" />' . "\r\n";
 | 
						|
 | 
						|
    /* setting popular channels, auto connect channels */
 | 
						|
	$sitechats = get_config('irc','sitechats'); /* popular channels */
 | 
						|
	$autochans = get_config('irc','autochans');  /* auto connect chans */
 | 
						|
 | 
						|
	$s .= '<div class="settings-block">';
 | 
						|
	$s .= '<h3>' . t('IRC Settings') . '</h3>';
 | 
						|
	$s .= '<div id="irc-chans">';
 | 
						|
	$s .= '<label id="irc-auto-label" for="autochans">' . t('Channel(s) to auto connect (comma separated)') . '</label>';
 | 
						|
	$s .= '<input id="autochans" type="text" name="autochans" value="' . $autochans .'" />';
 | 
						|
	$s .= '</div><div class="clear"></div>';
 | 
						|
 | 
						|
	$s .= '<div id="irc-chans">';
 | 
						|
	$s .= '<label id="irc-pop-label" for="sitechats">' . t('Popular Channels (comma separated)') . '</label>';
 | 
						|
	$s .= '<input id="sitechats" type="text" name="sitechats" value="' . $sitechats.'" />';
 | 
						|
	$s .= '</div><div class="clear"></div>';
 | 
						|
 | 
						|
	$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="irc-submit" name="irc-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
 | 
						|
 | 
						|
	return;
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
function irc_addon_settings_post(&$a,&$b) {
 | 
						|
	if(! is_site_admin())
 | 
						|
		return;
 | 
						|
 | 
						|
	if($_POST['irc-submit']) {
 | 
						|
		set_config('irc','autochans',trim($_POST['autochans']));
 | 
						|
		set_config('irc','sitechats',trim($_POST['sitechats']));
 | 
						|
		/* stupid pop-up thing */
 | 
						|
		info( t('IRC settings saved.') . EOL);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function irc_app_menu($a,&$b) {
 | 
						|
$b['app_menu'][] = '<div class="app-title"><a href="irc">' . t('IRC Chatroom') . '</a></div>';
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function irc_module() {
 | 
						|
return;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function irc_content(&$a) {
 | 
						|
 | 
						|
	$baseurl = $a->get_baseurl() . '/addon/irc';
 | 
						|
	$o = '';
 | 
						|
 | 
						|
	/* set the list of popular channels */
 | 
						|
	$sitechats = get_config('irc','sitechats');
 | 
						|
	if($sitechats)
 | 
						|
		$chats = explode(',',$sitechats);
 | 
						|
	else
 | 
						|
		$chats = array('friendica','chat','chatback','hottub','ircbar','dateroom','debian');
 | 
						|
 | 
						|
 | 
						|
	$a->page['aside'] .= '<div class="widget"><h3>' . t('Popular Channels') . '</h3><ul>';
 | 
						|
	foreach($chats as $chat) {
 | 
						|
		$a->page['aside'] .= '<li><a href="' . $a->get_baseurl() . '/irc?channels=' . $chat . '" >' . '#' . $chat . '</a></li>';
 | 
						|
	}
 | 
						|
	$a->page['aside'] .= '</ul></div>';
 | 
						|
 | 
						|
        /* setting the channel(s) to auto connect */
 | 
						|
	$autochans = get_config('irc','autochans');
 | 
						|
	if($autochans)
 | 
						|
		$channels = $autochans;
 | 
						|
	else
 | 
						|
		$channels = ((x($_GET,'channels')) ? $_GET['channels'] : 'friendica');
 | 
						|
 | 
						|
/* add the chatroom frame and some html */
 | 
						|
  $o .= <<< EOT
 | 
						|
<h2>IRC chat</h2>
 | 
						|
<p><a href="http://tldp.org/HOWTO/IRC/beginners.html" target="_blank">A beginner's guide to using IRC. [en]</a></p>
 | 
						|
<iframe src="http://webchat.freenode.net?channels=$channels" width="600" height="600"></iframe>
 | 
						|
EOT;
 | 
						|
 | 
						|
return $o;
 | 
						|
    
 | 
						|
}
 | 
						|
 | 
						|
 |