summaryrefslogtreecommitdiffstats
path: root/scripts/mh_invite.pl
diff options
context:
space:
mode:
authormh2016-03-05 15:31:20 +0100
committermh2016-03-05 15:31:20 +0100
commit570cf54a039325fb48f3887b1cca1bc13d073fd0 (patch)
treeb64250dc57dfd04ac16809bb515dab576bf79a9d /scripts/mh_invite.pl
parent333ed4ba683968cf2def24c52132a69372630b9e (diff)
downloadscripts.irssi.org-570cf54a039325fb48f3887b1cca1bc13d073fd0.tar.bz2
mh_invite.pl v1.02
print invites in server, channel, query and active window
Diffstat (limited to 'scripts/mh_invite.pl')
-rw-r--r--scripts/mh_invite.pl235
1 files changed, 235 insertions, 0 deletions
diff --git a/scripts/mh_invite.pl b/scripts/mh_invite.pl
new file mode 100644
index 0000000..5e94b345
--- /dev/null
+++ b/scripts/mh_invite.pl
@@ -0,0 +1,235 @@
+##############################################################################
+#
+# mh_invite.pl v1.02 (20160305)
+#
+# Copyright (c) 2016 Michael Hansen
+#
+# Permission to use, copy, modify, and distribute this software
+# for any purpose with or without fee is hereby granted, provided
+# that the above copyright notice and this permission notice
+# appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+# THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+##############################################################################
+#
+# print invites in server, channel, query and active window
+#
+# invites are printet in the following format:
+#
+# <nick> [<userhost>] invites you to <network>/<channel>
+#
+# settings:
+#
+# mh_invite_show_network (default ON): enable/disable showing the
+# <network>/ part of the printet line
+#
+# mh_invite_show_host (default ON): enable/disable showing the
+# [<userhost>] part of the printet line
+#
+# mh_invite_server (default ON): enable/disable printing the line
+# in the relevant server window
+#
+# mh_invite_channel (default ON): enable/disable printing the line
+# in all shared channels of the inviter if they exist
+#
+# mh_invite_query (default ON): enable/disable printing the line
+# in queries with the inviter if they exist
+#
+# mh_invite_active (default ON): enable/disable printing the line
+# in the active window (however, we will always print in the active
+# window if we didnt print to a server, query or channel, even if this
+# is disabled)
+#
+# mh_invite_no_act_server (default OFF): enable/disable not setting
+# window activity when printing in a server window
+#
+# mh_invite_no_act_channel (default OFF): enable/disable not
+# setting window activity when printing in a channel window
+#
+# mh_invite_no_act_query (default OFF): enable/disable not setting
+# window activity when printing in a query window
+#
+# history:
+#
+# v1.02 (20160305)
+# added scripts.irssi.org to url
+# v1.01 (20160213)
+# edited comment whitespace
+# v1.00 (20160104)
+# initial release
+#
+
+use v5.14.2;
+
+use strict;
+
+##############################################################################
+#
+# irssi head
+#
+##############################################################################
+
+use Irssi 20100403;
+
+{ package Irssi::Nick }
+
+our $VERSION = '1.02';
+our %IRSSI =
+(
+ 'name' => 'mh_invite',
+ 'description' => 'print invites in server, channel, query and active window',
+ 'license' => 'BSD',
+ 'authors' => 'Michael Hansen',
+ 'contact' => 'mh on IRCnet #help',
+ 'url' => 'http://scripts.irssi.org / https://github.com/mh-source/irssi-scripts',
+ 'changed' => 'Sat Mar 5 15:23:47 CET 2016',
+);
+
+##############################################################################
+#
+# irssi signal handlers
+#
+##############################################################################
+
+sub signal_message_invite_last
+{
+ my ($server, $channelname, $nickname, $userhost) = @_;
+
+ my $msglevel = Irssi::MSGLEVEL_CRAP;
+ my $printactive = 1;
+ my $printed = 0;
+ my $format = 'mh_invite_line_';
+
+ if (Irssi::settings_get_bool('mh_invite_show_host'))
+ {
+ $format = $format . 'h';
+ }
+
+ if (Irssi::settings_get_bool('mh_invite_show_network'))
+ {
+ $format = $format . 'n';
+ }
+
+ if (Irssi::settings_get_bool('mh_invite_server'))
+ {
+ if (Irssi::settings_get_bool('mh_invite_no_act_server'))
+ {
+ $server->printformat('(status)', $msglevel | Irssi::MSGLEVEL_NO_ACT, $format, $nickname, $userhost, $channelname, $server->{'tag'});
+
+ } else
+ {
+ $server->printformat('(status)', $msglevel, $format, $nickname, $userhost, $channelname, $server->{'tag'});
+ }
+
+ $printed = 1;
+
+ if (Irssi::active_win()->{'name'} eq '(status)')
+ {
+ $printactive = 0;
+ }
+ }
+
+ if (Irssi::settings_get_bool('mh_invite_channel'))
+ {
+ for my $channel ($server->channels())
+ {
+ if ($channel->nick_find($nickname))
+ {
+ if (Irssi::settings_get_bool('mh_invite_no_act_channel'))
+ {
+ $channel->printformat($msglevel | Irssi::MSGLEVEL_NO_ACT, $format, $nickname, $userhost, $channelname, $server->{'tag'});
+
+ } else
+ {
+ $channel->printformat($msglevel, $format, $nickname, $userhost, $channelname, $server->{'tag'});
+ }
+
+ $printed = 1;
+
+ if (ref(Irssi::active_win()->{'active'}) eq 'Irssi::Irc::Channel')
+ {
+ if (Irssi::active_win()->{'active'}->{'name'} eq $channel->{'name'})
+ {
+ $printactive = 0;
+ }
+ }
+ }
+ }
+ }
+
+ if (Irssi::settings_get_bool('mh_invite_query'))
+ {
+ for my $query ($server->queries())
+ {
+ if ($query->{'name'} eq $nickname)
+ {
+ if (Irssi::settings_get_bool('mh_invite_no_act_query'))
+ {
+ $query->printformat($msglevel | Irssi::MSGLEVEL_NO_ACT, $format, $nickname, $userhost, $channelname, $server->{'tag'});
+
+ } else
+ {
+ $query->printformat($msglevel, $format, $nickname, $userhost, $channelname, $server->{'tag'});
+ }
+
+ $printed = 1;
+
+ if (ref(Irssi::active_win()->{'active'}) eq 'Irssi::Irc::Query')
+ {
+ if (Irssi::active_win()->{'active'}->{'name'} eq $query->{'name'})
+ {
+ $printactive = 0;
+ }
+ }
+ }
+ }
+ }
+
+ if (($printactive and Irssi::settings_get_bool('mh_invite_active')) or (not $printed))
+ {
+ Irssi::active_win->printformat($msglevel, $format, $nickname, $userhost, $channelname, $server->{'tag'});
+ }
+
+ Irssi::signal_stop();
+}
+
+##############################################################################
+#
+# script on load
+#
+##############################################################################
+
+Irssi::theme_register([
+ 'mh_invite_line_', '{nick $0} invites you to {channel $2}',
+ 'mh_invite_line_h', '{nick $0} {nickhost $1} invites you to {channel $2}',
+ 'mh_invite_line_n', '{nick $0} invites you to {server $3}/{channel $2}',
+ 'mh_invite_line_hn', '{nick $0} {nickhost $1} invites you to {server $3}/{channel $2}',
+]);
+
+Irssi::settings_add_bool('mh_invite', 'mh_invite_show_network', 1);
+Irssi::settings_add_bool('mh_invite', 'mh_invite_show_host', 1);
+Irssi::settings_add_bool('mh_invite', 'mh_invite_server', 1);
+Irssi::settings_add_bool('mh_invite', 'mh_invite_channel', 1);
+Irssi::settings_add_bool('mh_invite', 'mh_invite_query', 1);
+Irssi::settings_add_bool('mh_invite', 'mh_invite_active', 1);
+Irssi::settings_add_bool('mh_invite', 'mh_invite_no_act_server', 0);
+Irssi::settings_add_bool('mh_invite', 'mh_invite_no_act_channel', 0);
+Irssi::settings_add_bool('mh_invite', 'mh_invite_no_act_query', 0);
+
+Irssi::signal_add_last('message invite', 'signal_message_invite_last');
+
+1;
+
+##############################################################################
+#
+# eof mh_invite.pl
+#
+##############################################################################