FeedWordPress FeedWordPress 2009.0618: bug fix eliminates HTTP request failures when FeedFinder uses WP_Http_Fsockopen (posted 18 June 2009)

FeedWordPress 2009.0618 is now available for download.

This is a bug fix release. Other than a few mainly cosmetic code clean-ups, there is only one change between this release and the previous release, 2009.0613. But it’s an important one.

After upgrading to WordPress 2.8, many users reported encountering the following error whenever they attempted to add a new feed through FeedWordPress’s feed-finder interface:

HTTP request failure

:

HTTP Transports available:

  1. WP_Http_Fsockopen

I reported earlier that this error was the result of some changes in the HTTP request functions provided by FeedWordPress (changes to the order in which different HTTP transports are used; changes which I think were rather ill-considered). After managing to replicate the problem and investigating more deeply, I found out that it was actually the result of a combination of two factors — the changes in WordPress 2.8 (which I still think were a mistake) and also a subtle bug in FeedWordPress’s feed-finder code, which the changes in the HTTP transport code ended up exposing. In any case, the subtle bug has now been fixed, and with it, the source of most of these HTTP request errors should be eliminated.

So, if you’ve been encountering this problem, be sure to download the most recent FeedWordPress. Then, after it’s installed, make sure you also upgrade your MagpieRSS to the version included with the most recent FeedWordPress. The fix is included in the MagpieRSS code, and will not be applied unless and until you upgrade your MagpieRSS to version 2009.0618.

Download and enjoy! As always, you have any issues with the release, or if there is anything that you would like to see included in a future release, please use the comments form or drop me a line to let me know about it.

Please remember that your generous gifts to the project tip jar make ongoing development and support for FeedWordPress possible.

FeedWordPress FeedWordPress 2009.0613: minor UI glitches fixed and improved diagnostics for feed problems (posted 13 June 2009)

FeedWordPress version 2009.0613 is now available for download.

This is a very minor update, which I guess should not be too much of a surprise, if you take into account the fact that I made a major release just yesterday. However, due to some difficulties that some people have been having, I thought it would be a good idea to push out a release with better diagnostics.

The basic issue is this: until WordPress version 2.7, FeedWordPress used the Snoopy HTTP library (which is included in WordPress) to fetch feeds for updating, and also for the feed finder that helps you subscribe to new feeds in the administrative interface. With WordPress 2.7, however, the WordPress team decided to deprecate Snoopy — so it’s still included with WordPress, but not used internally, and it may be dropped from future releases — and to introduce a new custom API for HTTP requests (the WP_Http class and some wrapper functions that make use of it). So, if you’re using WordPress 2.7.x or 2.8, FeedWordPress uses the new functions rather than the deprecated Snoopy module. One of the advantages of the new code is that it is supposed to be able to make use of any of several different HTTP transport APIs which may be available, depending on your PHP set-up (for example libcurl, fsockopen, URL support in fopen, etc.). But I’ve been noticing problems that many users have had that tie back to problems with the underlying HTTP transports used by WordPress’s new code, and, for reasons that are unclear to me, the WordPress development team decided to make some changes in WordPress 2.8 which make these problems even more likely to occur and even harder to get around. In any case, this is almost certainly the underlying issue if you, like others, are encountering something like this when you try to syndicate a new feed:

Error: I couldn’t find any feeds at <http://example.com/> [HTTP request error: :]. Try another URL

The best solution for you will depend on details about your own hosting situation — in particular, what version of WordPress you are using FeedWordPress with, and whether or not you are able to install new PHP modules on your web host, or, if not, whether or not you have someone who is willing to install new PHP modules for you. Unfortunately it’s not likely to be something that FeedWordPress itself can fix. But I have made some updates so that FeedWordPress will, at least, provide some more useful diagnostic information — which may help you figure out what needs to be done, or which will hep me help you figure it out, if you send the diagnostic information to me along with your support request.

So, anyway, all that said, that’s why I’m pushing out a new release today. (There are also a couple other minor changes included in the release, but I would probably not have bothered with a public release just yet except for the number of support requests I’ve gotten since yesterday’s release, which the diagnostics would help with.) Other than some under-the-hood re-arranging of the code, here are the significant changes between 2009.0613 and the previous releas, 2009.0612:

  • INTERFACE/BUGFIX: WORDPRESS 2.8 CATEGORY BOX FIX. Thanks to a subtle change in class names between the WordPress 2.7 and 2.8 stylesheets, category boxes in the FeedWordPress settings interface tended to overflow and have a lot of messy-looking overlapping text under WordPress 2.8. This has now been fixed.

  • FeedFinder FAILURE DIAGNOSTICS: When FWP’s FeedFinder fails to find any feeds at a given URL (for example, when you are trying to add a subscription through the administrative interface and you run into an error message), FeedWordPress now provides more diagnostic information for the reasons behind the failure. If that helps you, great; if not, it should help me respond more intelligently to your support request..

Download and enjoy! As always, you have any issues with the release, or if there is anything that you would like to see included in a future release, please use the comments form or drop me a line to let me know about it.

Please remember that your generous gifts to the project tip jar make ongoing development, quick fixes and timely support for FeedWordPress possible.

FeedWordPress FeedWordPress 2009.0612: tested for WordPress 2.8 compatibility, interface redesign, bug fixes, and significant convenience features added (posted 12 June 2009)

FeedWordPress version 2009.0612 is now available for download.

Given the recent release of WordPress 2.8 I thought it would be an opportune time to roll up the development I’ve been doing on FeedWordPress over the past few months and push out a new official release. A list of major changes since the last release follows below.

First things first, though. A new version of WordPress has come out, which has caused a number of e-mails — just like every WordPress release does — from people who upgraded WordPress to the latest version, and, in the process, inadvertently downgraded their MagpieRSS to the old, busted version included with WordPress. If you have noticed strange problems with syndicating feeds (especially Atom feeds) immediately after making the upgrade, like those described in my old post about upgrading to WordPress 2.5, then you need to re-copy the MagpieRSS upgrades from your FeedWordPress installation to the wp-includes/ subdirectory of your WordPress installation. Fortunately, if you upgrade to FeedWordPress 2009.0612, one of the new features included in the package is that it will politely remind you to perform this upgrade if it notices that the old version of MagpieRSS is the one that’s loading up.

Now, then. Here are the major changes since the release of FeedWordPress 2008.1214.

  • WORDPRESS 2.8 COMPATIBILITY: FeedWordPress 2009.0612 has been tested for compatibility with the recent version 2.8 release of WordPress.

  • INTERFACE RESTRUCTURING: In order to avoid settings posts from becoming too crowded, and to modularize and better organize the user interface, new “Posts” and “Categories & Tags” subpages have been created under the “Syndication” menu. “Posts” controls settings for individal syndicated posts (such as publication status, comment and ping status, whether or not to use the original location of the post as the permalink, whether or not to expose posts to formatting filters, and so on). “Categories & Tags” controls settings for assigning new syndicated posts to categories and tags, such as categories or tags to apply to all syndicated posts, and how to handle categories that do not yet exist in the WordPress database. These subpages, like the Authors subpage, handle settings for the global default level and for individual syndicated feeds.

    Corresponding to these new subpages, the old Syndication Settings and Feed Settings subpages have been cleaned up and simplified, and now only link to the appropriate subpages for options that can be set in the Posts, Authors, or Categories & Tags subpages.

  • FEATURE: ADD CUSTOM SETTINGS TO EACH SYNDICATED POST: FeedWordPress has long had an interface for creating custom settings for each syndicated feed which could be retrieved in templates using the get_feed_meta() template function. But it had no feature for adding custom fields to each individual syndicated post. In response to requests from users, I have added the ability to apply custom fields to each individual syndicated post, using the new Syndication –> Posts subpage. You can set up custom fields to be applied to every syndicated post, or custom fields to be applied to syndicated posts from a particular feed.

  • FEATURE: MAGPIERSS VERSION CHECK AND UPGRADE: FeedWordPress will attempt to determine whether or not you are using the upgraded version of MagpieRSS that comes packaged with FeedWordPress. If not, it will throw an error on admin pages, and, if you are a site administrator, it will give you the option to ignore the error message, or to attempt an automatic upgrade (using a native file copy). If the file copy fails, FeedWordPress will offer some guidance on how to perform the upgrade manually.

  • BLANK POSTS PROBLEM NO LONGER OCCURS WITH OLD & BUSTED MAGPIERSS: Due to the fact that I relied on a content normalization that occurs in my upgraded version of MagpieRSS, but not in the old & busted version of MagpieRSS that ships with WordPress, until this version, if you tried to syndicate an Atom feed without having performed the (strongly recommended) MagpieRSS upgrade, all of the posts would come up with completely blank contents. That’s not because MagpieRSS couldn’t read the data, but rather because the new Magpie version puts that data in a location where the old version doesn’t, and I was only looking in that newer location. Now it checks for both, meaning that posts will continue to display their contents even if you don’t upgrade MagpieRSS. (But you really should upgrade it, anyway.)

  • BUGFIX: RELATIVE URI RESOLUTION FOR POST CONTENT RESTORED. Some time back, I added support for resolving relative URIs against xml:base on feeds that support it to the MagpieRSS upgrade in FeedWordPress. Then I took out code that did the same thing from the main FeedWordPress code. Of course, the problem is that some people, even though it is clearly stupid or evil to do so, still include relative URIs for images or links in posts on feed formats that do not adequately support xml:base (notably, RSS 2.0 feeds). In response to a user request, I have added this functionality back in, so that MagpieRSS will resolve any relative URIs that it knows how to resolve using xml:base, and then FeedWordPress will attempt to resolve any relative URIs that are left over afterwards.

  • BUGFIX: INTERFACE OPTION FOR SETTING SYNDICATED POST PUBLICATION STATUS ON A FEED-BY-FEED BASIS HAS BEEN RESTORED: Due to a version-checking bug, users of WordPress 2.7.x lost an option from the “Edit a syndicated feed” interface which allowed them to determine whether newly syndicated posts should be published immediately, held as “Pending Review,” saved as drafts, or saved as private posts. (The option to change this setting globally remained in place, but users could no longer set it on a feed-by-feed basis.) The version-checking bug has been fixed, and the option has been restored.

  • BUGFIX: “ARE YOU SURE?” FATAL ERROR ELIMINATED AND SECURITY IMPROVED: Under certain circumstances (for example, when users have configured their browser or proxy not to send HTTP Referer headers, for privacy or other reasons), many features in the FeedWordPress administrative interface (such as adding new feeds or changing settings) would hit a fatal error, displaying only a cryptic message reading “Are you sure?” and a blank page following it. This problem has been eliminated by taking advantage of WordPress’s nonce functions, which allow the security check which ran into this error to work properly even without receiving an HTTP Referer header. (N.B.: WordPress’s nonce functions were first introduced in WordPress 2.0.3. If you’re using FeedWordPress with an older version of WordPress, there’s no fix for this problem: you’ll just need to turn Referer headers back on. Sorry.)

  • BUGFIX: MANUALLY-ALTERED POST STATUS, COMMENT STATUS, AND PING STATUS NO LONGER REVERTED BY POST UPDATES: If you manually altered the post status, comment status, or ping status of a syndicated post from what it was set to when first syndicated — for example, if you had a feed that was set to bring in new posts as “Pending Review,” and you then marked some of the pending posts as “Published” and others as “Unpublished” — then in previous versions of FeedWordPress, these manual changes to the status would be lost — so that, for example, your Published or Unpublished articles would revert to Pending Review — if the source feed made any upates to the item. This could make the Pending Review feature both unreliable and also extremely frustrating to work with. The good news is that this bug has since been fixed: if you manually update the status of a post, it will no longer be reverted if or when the post is updated.

  • BUGFIX: OCCASIONAL FATAL ERROR ON UPDATE ELIMINATED: Under certain limited conditions (specifically, when both the title and the content of a post to be updated are empty), an attempt to update the post would result in a fatal error. This has been fixed.

  • INTERFACE: “CONFIGURE SETTINGS” CONVENIENCE LINK ADDED TO CONFIRMATION MESSAGE WHEN A NEW FEED IS ADDED: When you add a new subscription to FeedWordPress, the message box that appears to confirm it now includes a handy link to the feed’s settings subpage, so that you can quickly set up any special settings you may want to set up for the new feed, without having to hunt through the list of all your other subscriptions to pick out the new one.

  • INTERFACE: SIMPLIFYING AND CLARIFYING AUTOMATIC UPDATES SETTINGS. I have removed an interval setting for the cronless automatic updates which has confused many FeedWordPress users. In past versions of FWP, when you turned on automatic updates, you would be presented with a time interval setting which controlled how often FeedWordPress would check for feeds ready to be polled for updates. (That is, it DID NOT control how often feeds would be polled; it controlled how often FeedWordPress would check for feeds that had become ready to poll. The schedule on which feeds became ready for polling was still controlled either by requests encoded in elements within the feed itself, or else according to an internal calculation within FeedWordPress, averaging out to about 1 hour, if the feed did not include any scheduling request elements.) Since many users very often (and understandably) confused the purpose of this setting, and since the setting is for a feature that’s actually very unlikely to require any manual control by the user, I have removed the setting; FeedWordPress now simply uses the default value of checking for feeds to poll every 10 minutes.

  • FEEDFINDER PERFORMANCE IMPROVEMENT: FeedWordPress’s FeedFinder class now uses array_unique() to make sure that it doesn’t waste time repeatedly iterating over and polling the same URI. Props to Camilo (http://projects.radgeek.com/2008/12/14/feedwordpress-20081214/#comment-20090122160414).

Enjoy! As always, you have any issues with the release, or if there is anything that you would like to see included in a future release, please use the comments form or drop me a line to let me know about it.

Please remember that your generous gifts to the project tip jar make ongoing development and support for FeedWordPress possible.

FeedWordPress FeedWordPress 2008.1214 fixes known compatibility issues with WordPress 2.7, fixes a couple bugs, and polishes the interface a bit. (posted 14 December 2008)

FeedWordPress version 2008.1214 is now available for download.

The advent of December has seen the release of WordPress 2.7, and I’ve been working to get out a new release of FeedWordPress before I leave to visit family for the holidays, which incorporates the couple of small compatibility fixes. In addition, I’ve added some interface improvements (to help FWP look a bit less out-of-place in the new user interface), and a couple of fixes of bugs reported or detected in the process of testing.

Also, I created a cheesy little logo icon for FeedWordPress to fit in with the general practice in the WordPress 2.7 interface. It’s not actually intended to be a distinctive logo for FeedWordPress (it just takes a syndication icon and the WordPress logo and puts them together), but it should at least visually mark off the FeedWordPress configuration interface from the rest of the Dashboard. Hope you like it.

First things first, though. A WordPress update has come out, which has caused a number of e-mails — just like every WordPress release does –from people who upgraded WordPress to the latest version, and, in the process, inadvertently downgraded their MagpieRSS to the old, busted version included with WordPress. If you have noticed strange problems with syndicating feeds (especially Atom feeds) immediately after making the upgrade, like those described in my old post about upgrading to WordPress 2.5, then you need to re-copy the MagpieRSS upgrades from your FeedWordPress installation to the wp-includes/ subdirectory of your WordPress installation. (The old post discusses this issue, and the steps for fixing it, in more detail.)

Now, then. Here are the major changes since the release of FeedWordPress 2008.1105:

  • WORDPRESS 2.7 COMPATIBILITY: FeedWordPress has been tested for compatibility with the newly released WordPress 2.7. WordPress 2.7 has deprecated the Snoopy library for HTTP requests, which caused a fatal error for users who had not installed the MagpieRSS upgrade (or whose installation of the MagpieRSS upgrade was overwritten by a recent update of WordPress). FeedWordPress now handles things gracefully when Snoopy is not immediately available. The 2008.1214 fix also releases a minor interface bug experienced when changing link settings under WordPress 2.7. (This was the result of some new caching features implemented in 2.7.)

  • INTERFACE SPIFFED UP: Interface elements have been updated so that FeedWordPress’s management interface fits in more naturally with the WordPress 2.7 interface (including a new logo and a number of small interface tweaks).

  • BUG WITH TAGS FOR SYNDICATED ARTICLES FIXED: Several users encountered a bug with the option to add tags to all syndicated posts under Syndication –> Settings — if you told FeedWordPress to add more than one tag to all syndicated posts, instead of doing so correctly, it would add a single tag instead, whose name was composed of the names of all the tags you asked it to add. This bug was the result of nothing more dignified than a typographical error on my part. It has now been fixed.

  • MORE INFORMATION AVAILABLE WHEN FEEDWORDPRESS CAN’T FIND A FEED: When you enter a URL for a new syndication source, FeedWordPress uses a simple feed-finding algorithm (originally based on Mark Pilgrim’s Universal Feed Finder) to try to determine whether the URL is the URL for a feed, or, if the URL points to an ordinary website rather than to a feed, whether there is a feed for that website. All well and good, but if FeedWordPress failed to find a feed, for whatever reason, it would typically return nothing more than a nasty little note to the effect of no feed found, without any explanation of what went wrong. FeedWordPress now keeps track of error conditions from the HTTP requests that it uses in the course of looking for the feed, and so may be able to give you a bit more information about the nature of the problem if something goes wrong.

Enjoy! As always, you have any issues with the release, or if there is anything that you would like to see included in a future release, please use the comments form or drop me a line to let me know about it.

Also, I know that there are a couple of issues that some users have already reported that have not yet been addressed in this release. (For example, I haven’t yet been able to investigate the issue reported by Scot Hacker and mn, as well as some private e-mails. I’m hoping to investigate this issue over the next couple weeks in order to discover what’s going on and how to fix it; if I can catch it in action, then I should be able to push out a release either during downtime on my winter vacation, or else shortly after New Years’.) In any case, please remember that your gifts to the project tip jar make ongoing development and support like this possible.