diff --git a/mappers/date.inc b/mappers/date.inc index 3de6a69..732ec67 100644 --- a/mappers/date.inc +++ b/mappers/date.inc @@ -35,8 +35,8 @@ function date_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_nam /** * Implements hook_feeds_set_target(). * - * @param $node - * The target node. + * @param $entity + * The target entity. * @param $field_name * The name of field on the target node to map to. * @param $feed_element @@ -44,18 +44,32 @@ function date_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_nam * or a FeedsDateTimeElement object. * * @todo Support array of values for dates. + * @todo Update parameter list in docstring above */ function date_feeds_set_target($source, $entity, $target, $feed_element) { list($field_name, $sub_field) = explode(':', $target, 2); + if(empty($feed_element)) { + return; + } if (!($feed_element instanceof FeedsDateTimeElement)) { if (is_array($feed_element)) { $feed_element = $feed_element[0]; } - if ($sub_field == 'end') { - $feed_element = new FeedsDateTimeElement(NULL, $feed_element); + try { + if ($sub_field == 'end') { + $feed_element = new FeedsDateTimeElement(NULL, $feed_element); + } + else { + $feed_element = new FeedsDateTimeElement($feed_element, NULL); + } } - else { - $feed_element = new FeedsDateTimeElement($feed_element, NULL); + catch (Exception $e) { + watchdog_exception( + 'feeds', + $e, + 'Invalid date (@value) for target: @target', + array('@value' => $feed_element, '@target' => $field_name) + ); } } $feed_element->buildDateField($entity, $field_name); diff --git a/plugins/FeedsParser.inc b/plugins/FeedsParser.inc index 8772e32..e727f90 100644 --- a/plugins/FeedsParser.inc +++ b/plugins/FeedsParser.inc @@ -463,7 +463,7 @@ class FeedsDateTimeElement extends FeedsElement { /** * Helper method for buildDateField(). Build a FeedsDateTimeElement object - * from a standard formatted node. + * from a standard formatted entity. */ protected static function readDateField($entity, $field_name) { $ret = new FeedsDateTimeElement(); @@ -484,6 +484,7 @@ class FeedsDateTimeElement extends FeedsElement { * @param $field_name * The name of the field to build. */ + // @todo: add $delta parameter to support multiple items public function buildDateField($entity, $field_name) { $info = field_info_field($field_name); @@ -602,11 +603,6 @@ class FeedsDateTime extends DateTime { $time = str_replace("GMT-", "-", $time); $time = str_replace("GMT+", "+", $time); - // Some PHP 5.2 version's DateTime class chokes on invalid dates. - if (!strtotime($time)) { - $time = 'now'; - } - // Create and set time zone separately, PHP 5.2.6 does not respect time zone // argument in __construct(). parent::__construct($time);