]> git.mxchange.org Git - friendica-addons.git/blobdiff - irc/irc.php
Merge commit 'upstream/master'
[friendica-addons.git] / irc / irc.php
index 397844e051f726ad86ae8867ba83865f8bc6bf43..1ce4ee14deb65fbde30a51009b8da6df49165ef2 100644 (file)
@@ -3,21 +3,75 @@
 * Name: IRC Chat Plugin
 * Description: add an Internet Relay Chat chatroom
 * Version: 1.0
-* Author: tony baldwin <http://tonybaldwin.me>
+* 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('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('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>';
+$b['app_menu'][] = '<div class="app-title"><a href="irc">' . t('IRC Chatroom') . '</a></div>';
 }
 
 
@@ -28,14 +82,35 @@ return;
 
 function irc_content(&$a) {
 
-$baseurl = $a->get_baseurl() . '/addon/irc';
-$o = '';
+       $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
+/* add the chatroom frame and some html */
   $o .= <<< EOT
 <h2>IRC chat</h2>
-<iframe src="http://webchat.freenode.net?channels=friendica" width="600" height="600"></iframe>
+<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;