]> git.mxchange.org Git - friendica-addons.git/blobdiff - irc/irc.php
FR translation of various addons updated
[friendica-addons.git] / irc / irc.php
index ef9c3fdaccc22d778d0039a69730f64e2607a19f..206b1e7f89027c1eec5f39e8306147cb1b656289 100644 (file)
 <?php
 /**
-* Name: IRC Chat Plugin
-* Description: add an Internet Relay Chat chatroom
-* Version: 1.0
+* Name: IRC Chat Addon
+* Description: add an Internet Relay Chat chatroom on freenode
+* Version: 1.1
 * Author: tony baldwin <https://free-haven.org/profile/tony>
+* Author: Tobias Diekershoff <https://f.diekershoff.de/u/tobias>
 */
 
-/* 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
- */
+use Friendica\App;
+use Friendica\Core\Hook;
+use Friendica\Core\Renderer;
+use Friendica\DI;
 
-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_install()
+{
+       Hook::register('app_menu', 'addon/irc/irc.php', 'irc_app_menu');
+       Hook::register('addon_settings', 'addon/irc/irc.php', 'irc_addon_settings');
+       Hook::register('addon_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())
+function irc_addon_settings(App &$a, array &$data)
+{
+       if (!local_user()) {
                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="irc-autochans" type="text" name="autochans" value="' . $autochans .'" />';
-       $s .= '</div><div class="clear"></div>';
-
-       $s .= '<div id="irc-popchans">';
-       $s .= '<label id="irc-pop-label" for="sitechats">' . t('Popular Channels (comma separated)') . '</label>';
-       $s .= '<input id="irc-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('Save Settings') . '" /></div></div>';
-
-       return;
-
+       $sitechats = DI::pConfig()->get(local_user(), 'irc', 'sitechats'); /* popular channels */
+       $autochans = DI::pConfig()->get(local_user(), 'irc', 'autochans');  /* auto connect chans */
+
+       $t    = Renderer::getMarkupTemplate('settings.tpl', 'addon/irc/');
+       $html = Renderer::replaceMacros($t, [
+               '$info'      => DI::l10n()->t('Here you can change the system wide settings for the channels to automatically join and access via the side bar. Note the changes you do here, only effect the channel selection if you are logged in.'),
+               '$autochans' => ['autochans', DI::l10n()->t('Channel(s) to auto connect (comma separated)'), $autochans, DI::l10n()->t('List of channels that shall automatically connected to when the app is launched.')],
+               '$sitechats' => ['sitechats', DI::l10n()->t('Popular Channels (comma separated)'), $sitechats, DI::l10n()->t('List of popular channels, will be displayed at the side and hotlinked for easy joining.')],
+       ]);
+
+       $data = [
+               'addon' => 'irc',
+               'title' => DI::l10n()->t('IRC Settings'),
+               'html'  => $html,
+       ];
 }
 
-function irc_addon_settings_post(&$a,&$b) {
-       if(! is_site_admin())
+function irc_addon_settings_post(App $a, array &$b)
+{
+       if (!local_user()) {
                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>';
+       if (!empty($_POST['irc-submit'])) {
+               if (isset($_POST['autochans'])) {
+                       DI::pConfig()->set(local_user(), 'irc', 'autochans', trim(($_POST['autochans'])));
+               }
+               if (isset($_POST['sitechats'])) {
+                       DI::pConfig()->set(local_user(), 'irc', 'sitechats', trim($_POST['sitechats']));
+               }
+               /* upid pop-up thing */
+       }
 }
 
-
-function irc_module() {
-return;
+function irc_app_menu(App $a, array &$b)
+{
+       $b['app_menu'][] = '<div class="app-title"><a href="irc">' . DI::l10n()->t('IRC Chatroom') . '</a></div>';
 }
 
+/**
+ * This is a statement rather than an actual function definition. The simple
+ * existence of this method is checked to figure out if the addon offers a
+ * module.
+ */
+function irc_module() {}
 
-function irc_content(&$a) {
-
-       $baseurl = $a->get_baseurl() . '/addon/irc';
+function irc_content(App $a)
+{
+       $baseurl = DI::baseUrl()->get() . '/addon/irc';
        $o = '';
 
        /* set the list of popular channels */
-       $sitechats = get_config('irc','sitechats');
-       if($sitechats)
+       if (local_user()) {
+               $sitechats = DI::pConfig()->get( local_user(), 'irc', 'sitechats');
+               if (!$sitechats) {
+                       $sitechats = DI::config()->get('irc', 'sitechats');
+               }
+       } else {
+               $sitechats = DI::config()->get('irc','sitechats');
+       }
+
+       if ($sitechats) {
                $chats = explode(',',$sitechats);
-       else
-               $chats = array('friendica','chat','chatback','hottub','ircbar','dateroom','debian');
+       } else {
+               $chats = ['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>';
+       DI::page()['aside'] .= '<div class="widget"><h3>' . DI::l10n()->t('Popular Channels') . '</h3><ul>';
+       foreach ($chats as $chat) {
+               DI::page()['aside'] .= '<li><a href="' . DI::baseUrl()->get() . '/irc?channels=' . $chat . '" >' . '#' . $chat . '</a></li>';
        }
-       $a->page['aside'] .= '</ul></div>';
+       DI::page()['aside'] .= '</ul></div>';
 
         /* setting the channel(s) to auto connect */
-       $autochans = get_config('irc','autochans');
-       if($autochans)
+       if (local_user()) {
+           $autochans = DI::pConfig()->get(local_user(), 'irc', 'autochans');
+           if (!$autochans)
+               $autochans = DI::config()->get('irc','autochans');
+       } else {
+           $autochans = DI::config()->get('irc','autochans');
+       }
+
+       if ($autochans) {
                $channels = $autochans;
-       else
-               $channels = ((x($_GET,'channels')) ? $_GET['channels'] : 'friendica');
+       } else {
+               $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="//webchat.freenode.net?channels=$channels" width="600" height="600"></iframe>
+<p><a href="https://tldp.org/HOWTO/IRC/beginners.html" target="_blank" rel="noopener noreferrer">A beginner's guide to using IRC. [en]</a></p>
+<iframe src="//web.libera.chat?channels=$channels" style="width:100%; max-width:900px; height: 600px;"></iframe>
 EOT;
 
-return $o;
-    
+       return $o;
 }
 
+function irc_addon_admin_post (App $a)
+{
+       if (!$a->isSiteAdmin()) {
+               return;
+       }
 
+       if ($_POST['irc-submit']) {
+               DI::config()->set('irc', 'autochans', trim($_POST['autochans']));
+               DI::config()->set('irc', 'sitechats', trim($_POST['sitechats']));
+       }
+}
+function irc_addon_admin (App $a, string &$o) {
+       $sitechats = DI::config()->get('irc', 'sitechats'); /* popular channels */
+       $autochans = DI::config()->get('irc', 'autochans');  /* auto connect chans */
+       $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/irc/' );
+       $o = Renderer::replaceMacros($t, [
+               '$submit' => DI::l10n()->t('Save Settings'),
+               '$autochans' => [ 'autochans', DI::l10n()->t('Channel(s) to auto connect (comma separated)'), $autochans, DI::l10n()->t('List of channels that shall automatically connected to when the app is launched.')],
+               '$sitechats' => [ 'sitechats', DI::l10n()->t('Popular Channels (comma separated)'), $sitechats, DI::l10n()->t('List of popular channels, will be displayed at the side and hotlinked for easy joining.') ]
+       ]);
+}