FeedWordPress 0.99 is hereby released; enjoy WP 2.2 and 2.3 compatibility, bug fixes, major new features, updates without cron
Update 2007-11-21: FeedWordPress 0.99 is now out of date. You can download the latest release -- 0.991 at the time of this writing -- from the project homepage.
The public (non-beta) release of FeedWordPress version 0.99 is now available for download.
There have been changes to the way that FeedWordPress's code is organized since version 0.98. If you successfully installed either of the beta releases, you don't need to do anything special to install the current release. However, if you are upgrading from version 0.98 or before, be sure to see the installation instructions below.
Changes since version 0.98
This release provides compatibility with WordPress 2.2 and 2.3. It has been extensively tested against WordPress version 2.2.3 and the version 2.3 release candidate. I think that all the compatibility issues have been hammered out; of course, if you notice any problems, please let me know and I'll get on a bugfix as soon as possible.
Version 0.99 also includes an overhaul to the user interface, some significant new features, and a number of bug fixes:
AUTOMATIC UPDATES WITHOUT CRON: FeedWordPress now allows you to automatically schedule checks for new posts without using external task scheduling tools such as cron. In order to enable automatic updates, go to Syndication --> Options and set "Check for new posts" to "automatically." When this option is turned on, FeedWordPress will check for new posts automatically (1) when someone views your page, (2) if it has been ten minutes (or whatever interval you set) since the last time someone viewed your page. This offers a way to keep FeedWordPress up-to-date without having to schedule a cron script. It also simplifies the process of updating if you do choose to use a cron script -- just have curl fetch your home page on a fixed schedule (so, for example, I would execute
curl http://feministblogs.org/every 15 minutes to keep Feminist Blogs up-to-date). Note that this is not the same thing as precisely scheduled updates -- at a minimum, FeedWordPress will not check for new posts unless and until the next time somebody views your page. But for practical purposes it does allow you to keep your aggregator updated without having to run cron, and it is as close to precisely scheduled updates as you can get without using real scheduling tools such as cron.An important side-effect of the changes to the update system is that if you were previously using the cron job and the
update-feeds.phpscript to schedule updates, you need to change your cron set-up. The oldupdate-feeds.phpscript no longer exists. Instead, if you wish to use a cron job to guarantee updates on a particular schedule, you should have the cron job fetch the front page of your blog (for example, by usingcurl http://www.zyx.com/blog/ > /dev/null) instead of activating theupdate-feeds.phpscript. If automatic updates have been enabled, fetching the front page will automatically trigger the update process.INTERFACE REORGANIZATION: All FeedWordPress functions are now located under a top-level "Syndication" menu in the WordPress Dashboard. To manage the list of syndicated sites, manually check for new posts on one or more feeds, or syndicate a new site, you should use the main page under Syndication. To change global settings for FeedWordPress, you should use Syndication --> Options.
FILE STRUCTURE REORGANIZATION: Due to a combination of changing styles for FeedWordPress plugins and lingering bugs in the FeedWordPress admin menu code, the code for FeedWordPress is now contained in two different PHP files, which should be installed together in a subdirectory of your plugins directory named
feedwordpress. (See README.text for installation and upgrade instructions relating to the change.)MULTIPLE CATEGORIES SETTING: Some feeds use non-standard methods to indicate multiple categories within a single category element. (The most popular site to do this is del.icio.us, which separates tags with a space.) FeedWordPress now allows you to set an optional setting, for any feed which does this, indicating the character or characters used to divide multiple categories, using a Perl-compatible regular expression. (In the case of del.icio.us feeds, FeedWordPress will automatically use \s for the pattern without your having to do any further configuration.) To turn this setting on, simply use the "Edit" link for the feed that you want to turn it on for.
REGULAR EXPRESSION BUG FIXED: Eliminated a minor bug in the regular expressions for e-mail addresses (used in parsing RSS
authorelements), which could produce unsightly error messages for some users parsing RSS 2.0 feeds.DATE / UPDATE BUG FIXED: A bug in date handling was eliminated that may have caused problems if any of (1) WordPress, or (2) PHP, or (3) your web server, or (4) your MySQL server, has been set to use a different time zone from the one that any of the others is set to use. If FeedWordPress has not been properly updating updated posts, or has been updating posts when there shouldn't be any changes for the update, this release may solve that problem.
GOOGLE READER BUGS FIXED: A couple of bugs that made it difficult for FeedWordPress to interact with Google Reader public feeds have been fixed. Firstly, if you encountered an error message reading "There was a problem adding the newsfeed. [SQL: ]" when you tried to add the feed, the cause of this error has been fixed. Secondly, if you succeeded in getting FeedWordPress to check a Google Reader feed, only to find that the title of posts had junk squashed on to the end of them, that bug has been fixed too. To fix this bug, you must install the newest version of the optional MagpieRSS upgrade.
FILTER PARAMETERS: Due to an old, old bug in WordPress 1.5.0 (which was what was available back when I first wrote the filter interface), FeedWordPress has traditionally only passed one parameter to syndicated_item and syndicated_post filters functions -- an array containing either the Magpie representation of a syndicated item from the feed, or the database representation of a post about to be inserted into the WordPress database. If you needed information about the feed that the item came from, this was accessible only through a pair of global variables, $fwp_channel and $fwp_feedmeta.
Since it's been a pretty long time since WordPress 1.5.0 was in widespread usage, I have gone ahead and added an optional second parameter to the invocation of the syndicated_item and syndicated_post filters. If you have written a filter for FeedWordPress that uses either of these hooks, you can now register that filter to accept 2 parameters. If you do so, the second parameter will be a SyndicatedPost object, which, among other things, allows you to access information about the feed from which an item is syndicated using the $post->feed and the $post->feedmeta elements (where $post is the name of the second parameter).
NOTE THAT THE OLD GLOBAL VARIABLES ARE STILL AVAILABLE, for the time being at least, so existing filters will not break with the upgrade. They should be considered deprecated, however, and may be eliminated in the future.
FILTER CHANGE / BUGFIX: the array that is passed as the first argument syndicated_post filters no longer is no longer backslash-escaped for MySQL when filters are called. This was originally a bug, or an oversight; the contents of the array should only be escaped for the database after they have gone through all filters. IF YOU HAVE WRITTEN ANY syndicated_post FILTERS THAT PRESUME THE OLD BEHAVIOR OF PASSING IN STRINGS THAT ARE ALREADY BACKSLASH-ESCAPED, UPDATE YOUR FILTERS ACCORDINGLY.
OTHER MINOR BUGFIXES AND INTERNAL CHANGES: The internal architecture of FeedWordPress has been significantly changed to make the code more modular and clean; hopefully this should help reduce the number of compatibility updates that are needed, and make them easier and quicker when they are needed.
Installation instructions
To upgrade an existing installation of FeedWordPress to version 0.99:
Download the FeedWordPress archive in zip or gzipped tar format and extract the files on your computer.
If you are upgrading from version 0.98 or earlier, then you need to create a new directory named
feedwordpressin thewp-content/pluginsdirectory of your WordPress installation, and you also need to delete your existingwp-content/update-feeds.phpandwp-content/plugins/feedwordpress.phpfiles. The file structure for FeedWordPress has changed and the files from your old version will not be overwritten, which could cause conflicts if you leave them in place.Upload the new PHP files to
wp-content/plugins/feedwordpress, overwriting any existing FeedWordPress files that are there. Also be sure to upgradewp-includes/rss.phpandwp-includes/rss-functions.phpif you use the optional MagpieRSS upgrade, or don't use it yet but do want to syndicate Atom 1.0 feeds.If you are upgrading from version 0.96 or earlier, immediately log in to the WordPress Dashboard, and go to Options --> Syndicated. Follow the directions to launch the database upgrade procedure. The new versions of FeedWordPress incorporate some long-needed improvements, but old meta-data needs to be updated to prevent duplicate posts and other possible maladies. If you're upgrading an existing installation, updates and FeedWordPress template functions will not work until you've done the upgrade. Then take a coffee break while the upgrade runs. It should, hopefully, finish within a few minutes even on relatively large databases.
If you are upgrading from version 0.98 or earlier, note that the old
update-feeds.phphas been eliminated in favor of a (hopefully) more humane method for automatic updating. If you used a cron job for scheduled updates, it will not work anymore, but there is another, simpler method which will. See Setting Up Feed Updates to get scheduled updates back on track.Enjoy your new installation of FeedWordPress.

