Wrong cleanup action fix; periodic import per feed; bug fixes
This release contains an important bug fix: when running multiple feed imports in the same request, the wrong cleanup action could be applied if feed types had different "Previously imported items" settings — potentially causing items to be deleted instead of unpublished.
This is a corrective release. Versions 8.x-3.0-rc1 through 8.x-3.0 mistakenly claimed Drupal 10.1 compatibility. To restore proper support, several changes (including Drupal 11-related updates) have been reverted. This release is therefore compatible with Drupal 10 only.
A follow-up release will restore those changes and will require Drupal 10.2.
In this release a feature is added to download a CSV template: this means that after you mapped a list of CSV sources on the mapping page, on the feed page you can download a CSV file where on the first row you'll get the CSV column names that you have configured. This is a feature that already existed in the D7 version of Feeds, but that is now finally completed for the modern Drupal version.
There is also a backwards compatibility fix for something that could cause errors after updating from 8.x-3.0-beta5 or earlier (only if you had unfinished imports when updating).
Lots of PHPStan issues were fixed, including dependency injection issues. In theory this could cause issues in code that extend classes from Feeds, most likely when overriding constructors.
A new service is added called "feeds.state_factory". Code that creates instances of \Drupal\feeds\State in the form of new State(); need to be updated. It is more likely this happens in automated tests, because usually State objects are created by Feeds itself. See also the change record.
On the feed type you can now configure to skip entity validation during an import. This can for example be useful if you have a required field on an entity type, but you want to ignore that during a feed import. You can choose to skip all validations or only validations of a certain type. To ignore required fields, select the validation type "NotNull".
Indefinitely growing filesystem on a failed http fetch
When fetching a http resource fails with a 404, Feeds retries to fetch the resource on every cron run. There was a bug that caused the filesystem to grow during this process. That bug is now fixed. However, the issue that Feeds retries to fetch the same resource over and over again remains.
Next release: Drupal 11 support will be added, Drupal 9 support will be dropped
This is the last Drupal 9 compatible Feeds release. Next release will focus on making Feeds compatible with Drupal 11 and support for Drupal 9 will be dropped in that process.
Big changes: New Feeds Log module, Drupal 10 support
New Feeds Log module!
A module is added to Feeds with which you can track your imports. It lets you see in detail which items were created or updated and which one failed.
See the video for a quick introduction: https://youtu.be/P3ipggf5Irs
PHP 8.1 support; Book target; Catch EmptyFeedException on cron imports
This release adds support for PHP 8.1. It also adds a new target for importing books for the core book module.
An important bug was fixed that would cause filling up the log: an EmptyFeedException was not being catched on cron imports. This could happen when using the Download (http) fetcher. The more serious part of the bug was that the import task was being kept on the queue, possibly causing concurrent imports to happen for the same feed. Concurrent imports are especially bad when using the feature to delete or unpublish items that are no longer provided by the source.
Custom source UI added; new plugin type "FeedsCustomSource" added; new permissions added for "own" feeds.
In this release, a UI for managing custom sources is added. You can now edit and delete custom sources that you typically add when using the CSV parser or when using one of the parser that are provided by Feeds extensible parsers. For that module a new release has also been made in order to make use of this new feature.
This release adds compatibility with Drupal 9.3, replacing Zend components with Laminas components. This release is still compatible with Drupal 8, though the version requirement has been raised to Drupal 8.9 (the previous release required at least Drupal 8.8).
There are also a few new features in this release, among them are a feature to only updating content and a feature to map a source to a temporary target.
Drush support; targets for entity ID, user role, password
Feeds now support several drush commands, including "feeds:import", "feeds:list-feeds" and "feeds:unlock".
A mapping target to the entity's ID was added, which you can use to update content by. You cannot change the ID for existing entities.
A mapping target to user role is added. Roles not specified by the source are not revoked by default. For security reasons, an option exist to only allow some roles to be imported.
This releases contains a fix for a bug, introduced in 8.x-3.0-alpha7, that could result into imported taxonomy terms not being editable in the UI. Specifically it's about terms imported in the default language, via a taxonomy reference field and using the "autocreate" option.
There are no big changes in this release, but when you update from 8.x-3.0-alpha6 or earlier, be sure to read the release notes from 8.x-3.0-alpha7, because that release introduced some BC breaks.
This release contains some small bug fixes and one new feature: for timestamp targets (like 'Authored on' and 'created') date strings are now accepted as source (previously it only accepted integers).
In this release lots of bugs have been fixed, including ones that did cause fatal errors!
One of the bugs that were fixed was that deleting a field used in mapping caused the mapping page and the import to crash. This is fixed by declaring dependencies on fields that are used in mapping. Be sure to run database updates so all your feed types get these dependencies calculated.
There are also two big new features in this release:
A generic content entity processor, allowing you to import content for a whole lot more content entity types!
FeedsSource plugins, with which you can add in additional sources, above the "main" source.
The first alpha release for Feeds 8.x-3.x is finally here!
This release is usable for basic use cases. Importing from CSV, RSS feeds, OPML and Sitemap XML is possible. Supported target entity types are node, user and taxonomy term.
In this release a big issue is fixed: downloaded content is no longer cached in the database! An other improvement is that you can now see on the import page when Feeds will run the next import. For this release there is also a small chance of a backwards compatibility break if you use a custom fetcher. Read on for more details.
In this release Drush support has been added to Feeds! You can now use the command drush feeds-import to perform an import. There are also commands for deleting all imported items (drush feeds-clear) and for operations on an importer (enable, disable, revert, delete).
Also new in this release:
Some issues with importing dates have been fixed, most notability timezone support.
An option is added to specify if files to import should overwrite existing or not (the default is renaming the file to import).
If you are using the Administration menu module, you can now go straight to the import page for a particular importer via Content > Import > [importer name], rather than having to type "import" manually in the URL bar.
This is a security release. People running 7.x-2.0-alpha8 or below should update. This release only contains security fixes, no additional bug fixes or features.
Changes since 7.x-2.0-alpha8:
#2495145 by twistor, cashwilliams, greggles, klausi: Possible XSS in PuSHSubscriber.inc
#2502419 by klausi: Log messages XSS attack vector
#1848498 by twistor: Respect allowed file extensions in file mapper
This release is usable for basic use cases. Importing from CSV, RSS feeds, OPML and Sitemap XML is possible. Supported target entity types are node, user and taxonomy term.
Not all features from the D7 version of Feeds have been ported yet. You may also run into some bugs.
#953538 yhahn: Remove BOM from UTF-8 files. Adds sanitizeFile() and sanitizeRaw() methods to FeedsFetcherResult. Extending classes that override either the getRaw() or getFilePath() methods should call these sanitization methods to ensure that the returned output / file has been cleaned for parsing.
Expand batch support to fetchers and parsers. Drastically lowers memory consumption for large CSV imports.
Support batching through directories on disk.
All tests passing.
This release is the first usable upgrade from Drupal 6. It also brings full batch support for fetching and parsing with a series of API changes. This is the reason why we branched to 2.x.
Maintainers of plugins
If you are a maintainer of a third party plugin for Feeds, make sure to carefully read these release notes and upgrade your module accordingly. Expect further changes to the API until we reach beta phase.