Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
The patch for supporting multiple values in the #697842: Support array of values for dates issue and the patch for supporting empty values in Date in the #857216: Behavior on importing empty/NULL/invalid dates issue edit the same lines of codes in the date.inc file.
Here is what I have for supporting multiple values.
function date_feeds_set_target($source, $entity, $target, $feed_element) {
list($field_name, $sub_field) = explode(':', $target, 2);
if (!($feed_element instanceof FeedsDateTimeElement)) {
if (is_array($feed_element)) {
$delta = 0;
foreach ($feed_element as $f) {
if ($sub_field == 'end') {
$array_element = new FeedsDateTimeElement(NULL, $f);
}
else {
$array_element = new FeedsDateTimeElement($f, NULL);
}
$array_element->buildDateField($entity, $field_name, $delta);
$delta++;
}
}
else {
if ($sub_field == 'end') {
$feed_element = new FeedsDateTimeElement(NULL, $feed_element);
}
else {
$feed_element = new FeedsDateTimeElement($feed_element, NULL);
}
$feed_element->buildDateField($entity, $field_name);
}
}
}
I tried this per the empty values patch, but it doesn't seem to work.
function date_feeds_set_target($source, $entity, $target, $feed_element) {
list($field_name, $sub_field) = explode(':', $target, 2);
if (!($feed_element instanceof FeedsDateTimeElement)) {
if (is_array($feed_element)) {
$delta = 0;
foreach ($feed_element as $f) {
if ($sub_field == 'end') {
$array_element = new FeedsDateTimeElement(NULL, $f);
}
else {
$array_element = new FeedsDateTimeElement($f, NULL);
}
$array_element->buildDateField($entity, $field_name, $delta);
$delta++;
}
}
else {
if (!is_numeric($feed_element) && !strtotime($feed_element)) {
$feed_element = new FeedsDateTimeElement(NULL, NULL);
}
elseif ($sub_field == 'end') {
$feed_element = new FeedsDateTimeElement(NULL, $feed_element);
}
else {
$feed_element = new FeedsDateTimeElement($feed_element, NULL);
}
$feed_element->buildDateField($entity, $field_name);
}
}
}
Anyone have any thoughts on what I am doing wrong?
Comments
Comment #1
liquid06 CreditAttribution: liquid06 commentedI've been assembling a feeds patchwork quilt and I ran into the same thing. The data I'm trying to import looks kind of like this:
I set up feeds_tamper (the latest -dev seems to be the best version) to explode the date field on semicolon. Then on feeds: the patch here #697842: Support array of values for dates seems quite a bit bigger, so I applied that one first (comment #39.) After applying that, the patch in #1537776: Importing a single 21st century year defaults to the current year failed. So I tried to apply those changes by hand.
Here's the full
date.inc
file that seems to work for my case.Comment #2
colanThis looks a lot like #1989196: Never Pass FeedsDateTime objects into date_create.