diff libpurple/plugins/fortuneprofile.pl @ 15373:5fe8042783c1

Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author Sean Egan <seanegan@gmail.com>
date Sat, 20 Jan 2007 02:32:10 +0000
parents
children 44b4e8bd759b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/plugins/fortuneprofile.pl	Sat Jan 20 02:32:10 2007 +0000
@@ -0,0 +1,125 @@
+# FORTUNE PROFILE
+#
+# Sets your AIM profile to a fortune (with a header and footer of your
+# choice).
+#
+
+# By Sean Egan
+# seanegan@gmail.com
+# AIM: SeanEgn
+#
+# Updated by Nathan Conrad, 31 January 2002
+# Changes:
+#  * Fortunes have HTML tabs and newlines
+# AIM: t98502
+# ICQ: 16106363
+#
+# Updated by Mark Doliner, 15 October 2002
+# Changes:
+#  * Modified to work with the changed perl interface of gaim 0.60
+#  * Fixed a bug where your info would be set to nothing if you had 
+#    no pre and no post message
+# AIM: lbdash
+#
+# Updated by Christian Hammond, 20 August 2003
+# Changes:
+#  * Modified to work with the changed perl interface of gaim 0.68
+# AIM: ChipX86
+
+# Copyright (C) 2001 Sean Egan
+
+# This program is free software; you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation; either version 2 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program; if not, write to the Free Software
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+use Gaim;
+
+%PLUGIN_INFO = (
+	perl_api_version => 2,
+	name             => "Fortune Profile",
+	version          => "3.4",
+	summary          => "Sets your AIM profile to a fortune (with a header and footer of your choice).",
+	description      => "Sets your AIM profile to a fortune (with a header and footer of your choice).",
+	author           => "Sean Egan <seanegan\@gmail.com>",
+	url              => "http://gaim.sf.net/",
+
+	load             => "plugin_load"
+);
+
+sub plugin_init {
+	return %PLUGIN_INFO;
+}
+
+sub plugin_load {
+	$plugin = shift;
+
+	$tab = "&nbsp;";
+	$tab = $tab . $tab . $tab . $tab;
+	$nl = "<BR>";
+
+	$seconds = 30;                   # Delay before updating away messages.
+	$max = 1020;                     # Max length of an profile. It should be
+									 # 1024, but I am being safe
+	$pre_message = "";               # This gets added before the fortune
+
+	$post_message ="";
+
+	$len = 0;
+	if ($pre_message ne "") {
+	  $len += length( $pre_message . "---$nl" );
+	}
+	if ($post_message ne "") {
+	  $len += length("---$nl" . $post_message);
+	}
+
+	# Command to get dynamic message from
+	$command = "fortune -sn " . ($max - $len);
+
+	# output the first message and start the timers...
+	# This is done as a timeout to prevent attempts to set the
+	# profile before logging in.
+	Gaim::timeout_add($plugin, $seconds, \&update_away, 0);
+}
+
+sub update_away {
+  # The fortunes are expanded into HTML (the tabs and newlines) which
+  # causes the -s option of fortune to be a little bit meaningless. This
+  # will loop until it gets a fortune of a good size (after expansion).
+
+  do {
+    do {  #It's a while loop because it doesn't always work for some reason
+      $fortune =  `$command`;
+      if ($? == -1) {
+        return;
+      }
+    } while ($fortune eq "");
+    $fortune =~ s/\n/$nl/g;
+    $fortune =~ s/\t/$tab/g;
+  } while ((length($fortune) + $len ) > $max);
+
+  $message = $fortune;
+  if ($pre_message ne "") {
+    $message = $pre_message . "---$nl" . $message;
+  }
+  if ($post_message ne "") {
+    $message = $message . "---$nl" . $post_message ;
+  }
+
+  foreach $account (Gaim::accounts()) {
+    if ($account->is_connected()) {
+      $account->set_user_info($message);
+    }
+  }
+
+  Gaim::timeout_add($plugin, $seconds, \&update_away, 0);
+}