Changelog
2.1.0 – 8/15/11
Changes
- New feature: Twitter plugin now processes tweet URLs
- New feature: Beer plugin output now includes URLs
- New feature: More and improved unit tests – Phergie_Autoload, Phergie_Config, Phergie_Connection, Phergie_Driver_Streams, Phergie_Event_Request, Phergie_Plugin_Cache, Phergie_Plugin_Handler, Phergie_Plugin_Karma, Phergie_Plugin_Message, Phergie_Plugin_Temperature, Phergie_Plugin_Twitter, Phergie_Plugin_Weather
- New feature: Command plugin now supports quoted parameter values
- New feature: Lart plugin supports a
$nickparameter for the bot’s nick in triggers - New feature: Command plugin now supports returning a list of available commands
- New feature: Quit plugin’s command now accepts an optional parameter for a quit message
- New feature: Weather plugin has been refactored to make weather and location data available to other plugins
- New feature: Message plugin now supports bot aliases via its
message.aliasessetting - New feature: Added Dice plugin that provides a roll command for simulating dice rolls
- New feature: Karma, Lart, and FeedTicker plugins now allow their database locations to be configured
- New feature: Db plugin will now attempt to create the destination directory if it doesn’t exist
- New feature: Db plugin now supports configurable storage of database files to a central directory
- New feature: Added Ai plugin, which currently supports PandoraBots
- Change: Url plugin now uses the Cache plugin with a default TTL of 5 minutes
- Change: Coding standard compliance fixes
- Change: Twitter plugin now uses strings instead of integers for tweet IDs
- Change: Beer plugin import script updated to reflect new URL and data format for OpenBeer
- Change: Updated PHP plugin to account for PHP migration from CVS to SVN
- Change: The autoloader and some test cases no longer use
realpath()to be compatible with PHAR - Change: Updated
assertType()calls in unit tests to useassertInstanceOf()instead - Change: Remind plugin now uses the event’s
isInChannel()method indeliverReminders() - Change: Weather plugin now uses the Cache plugin and makes the integration configurable
- Change: Cache plugin’s
expire()method is now publicly accessible - Change: Unit tests now require PHPUnit 3.5+ (issue #148)
- Change: Execution permission bit has been removed from files that do not require it
- Change: FeedTicker plugin will now attempt to create its database if it doesn’t exist
- Change: Message plugin now processes private messages using a prefix
- Bug fix: Markup syntax for unit conversions updated in the Google plugin
- Bug fix: Serve plugin no longer includes excessive whitespace when serving custom requests
- Bug fix: Added missing event types and nick argument for some CTCP event types in Phergie_Event_Request
- Bug fix: Lart plugin correctly processes regex triggers
- Bug fix: Weather plugin now calculates heat index correctly
- Bug fix: Weather plugin now returns correct links
- Bug fix:
assertRequiresPlugin()andassertRemovesPlugin()in the plugin test case now work reliably - Bug fix: Weather plugin now properly uses
Phergie_Exceptioninstead ofException - Bug fix: Cache plugin could not store values in readonly mode after a key was expired but not erased from the cache
- Bug fix: Ping plugin now properly handles server responses (issue #146)
- Bug fix: Php plugin was missing its functions.db database
- Bug fix: Timeout in
Phergie_Driver_Streams::getActiveReadSockets()was always ignored - Bug fix:
Phergie_Process_Asyncshould now allow the Ping plugin to pick up dropped server connections - Bug fix: AutoJoin plugin now correctly handles channel passwords
- Bug fix: Php plugin will now fail to load if the database can’t be accessed
- Bug fix: Autoloader will now not attempt to load a file if it doesn’t exist
- Bug fix: Autoloader will now throw an exception if a file is loaded, but does not contain the corresponding class or interface
- Bug fix:
Phergie_Botwill now use an absolute path to access the configuration file - Bug fix: UserInfo plugin no longer stores user nicks in lowercase
Affected Plugins
- Phergie
- Phergie_Docs
- Phergie_Plugin_Ai
- Phergie_Plugin_AutoJoin
- Phergie_Plugin_Cache
- Phergie_Plugin_Command
- Phergie_Plugin_Db
- Phergie_Plugin_Dice
- Phergie_Plugin_FeedManager
- Phergie_Plugin_FeedTicker
- Phergie_Plugin_Google
- Phergie_Plugin_Karma
- Phergie_Plugin_Lart
- Phergie_Plugin_Message
- Phergie_Plugin_Php
- Phergie_Plugin_Ping
- Phergie_Plugin_Quit
- Phergie_Plugin_Remind
- Phergie_Plugin_Serve
- Phergie_Plugin_Twitter
- Phergie_Plugin_Url
- Phergie_Plugin_UserInfo
- Phergie_Plugin_Weather
2.0.4 – 9/28/10
Changes
- New feature: Url plugin now automatically shortens URLs in all outgoing messages
- New feature:
Phergie_Plugin_Handlernow supports specification of a custom iterator class - New feature: Http plugin now handles RSS and Atom feeds as it does generic XML documents
- New feature: Url plugin now allows shorteners to specify a minimum length for URLs to be shortened
- New feature:
Phergie_Plugin_Handlernow supports specification of custom plugin class paths using the plugins.paths configuration setting - New feature: FeedParser plugin provides RSS and Atom feed parsing for other plugins
- New feature: FeedManager plugin provides commands for managing a list of feeds from IRC
- New feature: FeedTicker port from Phergie 1.x; requires Http, Cron, FeedParser, and FeedManager
- New feature:
Phergie_Plugin_UserInfo::getRandomUser()now accepts a list of users to ignore - Change: Trim shortener for the Url plugin has been deprecated and the default changed to the Isgd shortener
- Change: Beer plugin scraper now accounts for the new location and format of the openbeerdb data set
- Change: More coding standard compliance issues (issue #46)
- Change: Twitter plugin no longer supports the tweet command due to the deprecated of basic HTTP authentication in the Twitter API (issue #86)
- Change:
Phergie_Connection_Handler::getConnections()now returns all connections when its keys parameter is unspecified - Bug fix:
Phergie_Connectionrelated to typos in the names of constants indicating use of an unsupported encoding or transport - Bug fix: Beer plugin scraper now strips newlines and escaping slashes from beer names (issue #80)
- Bug fix: Cookie plugin database now contains a default data set
- Bug fix: Http plugin
post()method variable misreference - Bug fix: Cron plugin
onTick()method variable misreferences (issue #96) - Bug fix:
Phergie_Plugin_Abstract::getEvent()variable misreference - Bug fix: Command plugin now populates the method cache for all plugins rather than a potentially filtered list of plugins
- Bug fix: Karma plugin now uses correct whitespace formatting in outgoing events
- Bug fix: Command plugin now properly escapes user-supplied values where it uses regular expression
- Bug fix: Reload plugin no longer causes the bot to crash when a non-existent plugin was requested
- Bug fix: Ideone plugin now explicitly indicates the SOAP extension to be a dependency
- Bug fix:
Phergie_Plugin_Iteratornow includes logic to work around bugs in PHP - Bug fix: Array returned by
Phergie_Plugin_Handler::getPlugins()now uses lowercased keys - Bug fix: Twitter plugin now properly decodes HTML entities in tweet bodies and requires the Encoding plugin (issue #73)
- Bug fix: Google plugin now properly decodes HTML entities in convert command responses and requires the Encoding plugin (issue #68)
- Bug fix: Streams driver now checks for a trailing newline at the end of messages to prevent partial messages from being interpreted
- Bug fix:
Phergie_Event_Requestnow includes previously missing parameter information for multiple event types - Bug fix: Raw commands weren’t working in the streams driver (issue #78, issue #94)
- Bug fix: Plugins that throw exceptions in
onLoad()are now removed from the plugin handler - Bug fix: Twitter plugin now uses the Url plugin as an optional dependency rather than a required one and explicitly requires the Time plugin (issue #79)
- Bug fix: Join plugin now properly handles keys so that the streams driver doesn’t reject them
- Bug fix: Notice in the Cron plugin when no callbacks are set up
- Bug fix: Streams driver now strips newlines from arguments
- Bug fix: Twitter plugin now properly handles newlines in tweet bodies
- Bug fix: Caffeine plugin scraper and database now exclude decaffeinated beverages
- Bug fix: Streams driver now correctly parses both user and channel forms of the MODE command (issue #84)
- Bug fix: Project build.xml file now includes
Phergie_Processclasses in the core package - Bug fix:
Phergie_Event_RequestisInChannel()andgetSource()methods now properly detect #, &, +, and ! as channel name prefixes per RFCs 1459, 2811, and 2812 (issue #83) - Bug fix: Help plugin now shows all parameters for commands and includes command information in cases where a plugin has a command by the same name (issue #64, issue #87)
- Bug fix: Reload plugin now uses tokenization and replaces instances of
__FILE__and__DIR__with appropriate equivalents with respect to the file containing the original class definition (issue #71) - Bug fix:
Phergie_Connectionnow accounts for the mbstring extension not being available - Bug fix: Url plugin now falls back to a GET request when a HEAD request fails (due to a 405 response)
- Bug fix:
Phergie_Driver_Streams::doKick()variable misreference - Bug fix: YouTube plugin now allows video identifiers beginning with characters that might otherwise be interpreted as boolean operators (issue #91)
- Bug fix: Google plugin now requires Temperature plugin instead of Weather plugin
- Bug fix: Moved Php plugin data source initialization from onConnect() to onLoad()
Affected Plugins
- Phergie
- Phergie_Docs
- Phergie_Plugin_Beer
- Phergie_Plugin_Caffeine
- Phergie_Plugin_Command
- Phergie_Plugin_Cookie
- Phergie_Plugin_Cron
- Phergie_Plugin_FeedManager
- Phergie_Plugin_FeedParser
- Phergie_Plugin_FeedTicker
- Phergie_Plugin_Google
- Phergie_Plugin_Help
- Phergie_Plugin_Http
- Phergie_Plugin_Ideone
- Phergie_Plugin_Join
- Phergie_Plugin_Karma
- Phergie_Plugin_Php
- Phergie_Plugin_Reload
- Phergie_Plugin_Twitter
- Phergie_Plugin_Url
- Phergie_Plugin_UserInfo
- Phergie_Plugin_YouTube
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.aliasessetting - New feature: Google plugin now includes a define command that pulls from Google Dictionary and includes a
google.langsetting 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, andSettings.php.disthave 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_Timewas mistakenly not included in 2.0.2, preventing installation of the Twitter plugin – it has been renamed toPhergie_Plugin_Timeand 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_BottoPhergie_Processclasses (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_Iteratorinstance 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_Autoloadwas 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
preEventevent handler by returningfalse - Bug fix: The streams driver now populates server-initiated events with hostmasks
- Bug fix: Configuration and event handler objects are now available to the
onLoadevent handler - Bug fix:
Phergie_Plugin_Commandnow uses thegetConfig()accessor method rather than attempting to access the$configproperty directly, which can result in an error in some cases - Bug fix:
Phergie_Plugin_Helper_Timeis now included as a dependency ofPhergie_Plugin_Twitter - Bug fix: A typo in
Phergie_Plugin_Handler::getPlugin()prevented it from returning plugins correctly in some cases - Bug fix: The
onLoadevent handler is now called for plugins loaded automatically as dependencies byPhergie_Plugin_Handler - Bug fix:
Phergie_Plugin_Handlernow usesinclude_onceinstead ofincludeto load plugin classes, mainly to support use of multiple instances of it during testing - Bug fix:
PINGevents are now processed for each connection rather than once per call to the event-handling method inPhergie_Bot;Phergie_Plugin_Prioritizehas 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
driverconfiguration 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_argvis disabled - Bug fix:
Phergie_Event_Requestnow supports theINVITEevent 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
VERSIONconstant inPhergie_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.
