Changelog

2.0.3 – 8/1/10

Changes

  • New feature: Reload plugin allows for hot reloading of plugins during development
  • New feature: Acl plugin can be used to restrict access to plugins and their methods based on user hostmask and op status
  • New feature: Ideone plugin allows for safe execution of code in multiple languages
  • New feature: TheFuckingWeather plugin integrates with a web service by the same name to provide an alternative to the Weather plugin
  • New feature: Censor plugin integrates with a web service to censor or discard outgoing events based on objectionable content (issue #9)
  • New feature: Remind plugin is a port from Phergie 1.x (issue #6)
  • New feature: SpellCheck plugin is a port from Phergie 1.x (issue #16)
  • New feature: UserInfo plugin is a port of the ServerInfo plugin from Phergie 1.x (issue #48)
  • New feature: Weather plugin is a port from Phergie 1.x (issue #17)
  • New feature: Tld plugin is a port from Phergie 1.x; now required by the Url plugin (issue #27)
  • New feature: Encoding plugin handles decoding markup entities and character encoding conversions (issue #5); now required by the Url plugin
  • New feature: Lart plugin is a port from Phergie 1.x (issue #47)
  • New feature: Karma plugin is a port from Phergie 1.x (issue #20)
  • New feature: Serve, Beer, Cocktail, Tea, and Caffeine plugins are derived from the Drink plugin from Phergie 1.x (issue #2)
  • New feature: Cookie and Wine are new plugins inspired by the Drink plugin; both require the Serve plugin
  • New feature: Youtube plugin supports “I’m Feeling Lucky”-style searches of YouTube and handles rendering YouTube URLs to provide video information for them
  • New feature: Command plugin now supports aliasing commands using an associative array keyed by alias in the command.aliases setting
  • New feature: Google plugin now includes a define command that pulls from Google Dictionary and includes a google.lang setting for specifying the language in which results should be returned for commands that support it
  • New feature: NickServ plugin now supports use of regular expressions in the identification trigger phrase
  • New feature: Temperature plugin handles conversion between Celsius and Fahrenheit plus calculating the heat index; now required by the Weather and Google plugins
  • New feature: Url plugin now detects URLs in both PRIVMSG and CTCP ACTION events
  • New feaure: Response class for the Http plugin now has a getCodeAsString() method
  • New feature: Streams driver, Phergie_Connection, and Settings.php.dist have been modified to add support for encodings other than ISO-8859-1
  • New feature: New core component methods: Phergie_Event_Handler::removeEvent(), Phergie_Event_Request::setArgument(), Phergie_Plugin_Abstract::setName(), Phergie_Plugin_Handler::getPluginInfo()
  • New feature: More unit tests: TerryChay and SpellCheck plugins, plugin handler
  • Change: Url plugin has been refactored to use the Http plugin
  • Change: Phergie_Plugin_Helper_Time was mistakenly not included in 2.0.2, preventing installation of the Twitter plugin – it has been renamed to Phergie_Plugin_Time and the Twitter plugin has been updated accordingly
  • Change: Help plugin now uses camelCase for annotations and automatically pulls data for them from class and method docblocks if it is not provided
  • Change: Event processing has moved from Phergie_Bot to Phergie_Process classes (commit)
  • Change: Streams driver has been updated to account for the possibility of write failure (issue #43)
  • Change: Url plugin has been modified to not include the requesting user’s nick in its responses by default
  • Change: Url plugin now supports setting the cache time-to-live in seconds using the configuration setting url.expire
  • Change: Short-circuiting of event processing from preEvent has been removed; instead, use the Phergie_Plugin_Iterator instance returned by $this->plugins->getIterator() from within a plugin
  • Bug fix: Runtime issue with the Google plugin was preventing its gmap command from working (issue #49)
  • Bug fix: Google plugin was updated to account for markup changes related to its convert command
  • Bug fix: Some single-parameter commands like QUIT were having their parameter values truncated in the Streams driver
  • Bug fix: Help plugin was truncating annotation values spanning multiple lines
  • Bug fix: Phergie_Autoload was not working properly with the unit test suite in some cases
  • Bug fix: Plugin handler was not injecting dependencies for added concrete plugin instances
  • Bug fix: Php plugin was not returning results (issue #41)
  • Bug fix: AudioScrobbler plugin was returning blank results (issue #44)
  • Bug fix: Url plugin no longer attempts to download the contents of non-HTML files
  • Bug fix: Http plugin error handler is now public to allow PHP to use it
  • Bug fix: Streams driver now correctly populates the source for CTCP events
  • Bug fix: Url plugin now handles decoding more markup entities using the Encoding plugin (issue #50)
  • Bug fix: Url plugin now converts vertical spacing in HTML document titles to horizontal spacing for display purposes
  • Bug fix: Streams driver now correctly populates the event hostmask for servers not using a command prefix
  • Bug fix: preDispatch and postDispatch hooks are now executed even if no events were queued

Affected Packages

  • Phergie
  • Phergie_Docs
  • Phergie_Plugin_AudioScrobbler
  • Phergie_Plugin_Beer
  • Phergie_Plugin_Caffeine
  • Phergie_Plugin_Censor
  • Phergie_Plugin_Cocktail
  • Phergie_Plugin_Command
  • Phergie_Plugin_Cookie
  • Phergie_Plugin_Encoding
  • Phergie_Plugin_Google
  • Phergie_Plugin_Help
  • Phergie_Plugin_Http
  • Phergie_Plugin_Ideone
  • Phergie_Plugin_Karma
  • Phergie_Plugin_Lart
  • Phergie_Plugin_NickServ
  • Phergie_Plugin_Php
  • Phergie_Plugin_Reload
  • Phergie_Plugin_Remind
  • Phergie_Plugin_Serve
  • Phergie_Plugin_SpellCheck
  • Phergie_Plugin_Tea
  • Phergie_Plugin_Temperature
  • Phergie_Plugin_TheFuckingWeather
  • Phergie_Plugin_Time
  • Phergie_Plugin_Tld
  • Phergie_Plugin_Url
  • Phergie_Plugin_UserInfo
  • Phergie_Plugin_Weather
  • Phergie_Plugin_Wine
  • Phergie_Plugin_Youtube

2.0.2 – 5/3/10

Release Statement

The most noteworthy change in this release is how PING events are processed. Previously, they were processed once per call of the method in Phergie_Bot for handling events. Now, they are processed on a per-connection basis as they should be. This change affected very few core plugins, but they have been modified to account for this change.

Another noteworthy point regarding this release is that it is the first release to sport unit tests, thanks largely to the efforts of Evan Fribourg and Ryan Mauger.

Changes

  • New feature: The AudioScrobbler plugin has been ported over from Phergie 1.x
  • New feature: A new Http service plugin has been created for plugins requiring a simple HTTP client
  • New feature: A new Cache service plugin has been created for general time-based data caching
  • New feature: A new Help service plugin has been created to allow plugins to register information about themselves with a central help system using code to parse annotations borrowed from PHPUnit with attribution
  • New feature: Plugins can now short-circuit further processing of an event in the preEvent event handler by returning false
  • Bug fix: The streams driver now populates server-initiated events with hostmasks
  • Bug fix: Configuration and event handler objects are now available to the onLoad event handler
  • Bug fix: Phergie_Plugin_Command now uses the getConfig() accessor method rather than attempting to access the $config property directly, which can result in an error in some cases
  • Bug fix: Phergie_Plugin_Helper_Time is now included as a dependency of Phergie_Plugin_Twitter
  • Bug fix: A typo in Phergie_Plugin_Handler::getPlugin() prevented it from returning plugins correctly in some cases
  • Bug fix: The onLoad event handler is now called for plugins loaded automatically as dependencies by Phergie_Plugin_Handler
  • Bug fix: Phergie_Plugin_Handler now uses include_once instead of include to load plugin classes, mainly to support use of multiple instances of it during testing
  • Bug fix: PING events are now processed for each connection rather than once per call to the event-handling method in Phergie_Bot; Phergie_Plugin_Prioritize has been updated to account for this

Affected Packages

  • Phergie
  • Phergie_Docs
  • Phergie_Plugin_AudioScrobbler
  • Phergie_Plugin_Cache
  • Phergie_Plugin_Command
  • Phergie_Plugin_Help
  • Phergie_Plugin_Http
  • Phergie_Plugin_Prioritize

2.0.1 – 3/6/10

Release Statement

An unfortunate defect was discovered in the core that prompted BC-breaking changes in this release. Methods in the driver classes for sending CTCP event responses and the event processing logic used by the bot class were found to be incompatible, causing the bot to crash if any plugins attempted to send any of these responses. To address this, the offending response methods doVersionResponse, doTimeResponse, and doFingerResponse have been consolidated into their request counterparts. Removing the Response segment from calls to these methods in custom plugins should account for the changes, which are illuminated in this commit. The Ctcp plugin was the only affected core plugin.

Changes

  • New feature: The Streams driver now includes SSL support – see the sample configuration file for an example
  • New feature: A custom driver can now be enabled via the driver configuration setting (issue #30)
  • New feature: The AutoJoin plugin now supports different channels per server in the autojoin.channels setting
  • Bug fix: The Streams driver no longer blocks indefinitely, allowing the onTick event to function properly
  • Bug fix: The Ping plugin now includes sane defaults for configuration settings
  • Bug fix: phergie.php now emits a message if register_argc_argv is disabled
  • Bug fix: Phergie_Event_Request now supports the INVITE event type
  • Bug fix: Include path mishandling causes namespace conflicts with third party components (issue #28)
  • Bug fix: phergie.php attempts to include itself as a configuration file in manual installations (issue #29)
  • Bug fix: Typo in a variable name in Phergie_Driver_Streams::doFinger() (issue #31)
  • Bug fix: Default configuration file not loaded for manual installations (issue #32)
  • Bug fix: Missing VERSION constant in Phergie_Bot (issue #33)

Affected Packages

  • Phergie
  • Phergie_Docs
  • Phergie_Plugin_AutoJoin
  • Phergie_Plugin_Ctcp
  • Phergie_Plugin_Ping

2.0.0 – 2/1/10

  • Initial release.