You are here

public function FeedsNodeProcessor::setTargetElement in Feeds 8.2

Override setTargetElement to operate on a target item that is a node.

Overrides FeedsProcessor::setTargetElement

File

lib/Drupal/feeds/Plugin/feeds/processor/FeedsNodeProcessor.php, line 241
Contains \Drupal\feeds\Plugin\feeds\fetcher\FeedsNodeProcessor.

Class

FeedsNodeProcessor
Defines a node processor.

Namespace

Drupal\feeds\Plugin\feeds\processor

Code

public function setTargetElement(FeedsSource $source, $target_node, $target_element, $value) {
  switch ($target_element) {
    case 'created':
      $target_node->created = feeds_to_unixtime($value, REQUEST_TIME);
      break;
    case 'feeds_source':

      // Get the class of the feed node importer's fetcher and set the source
      // property. See feeds_node_update() how $node->feeds gets stored.
      if ($id = feeds_get_importer_id($this
        ->bundle())) {
        $class = get_class(feeds_importer($id)->fetcher);
        $target_node->feeds[$class]['source'] = $value;

        // This effectively suppresses 'import on submission' feature.
        // See feeds_node_insert().
        $target_node->feeds['suppress_import'] = TRUE;
      }
      break;
    case 'user_name':
      if ($user = user_load_by_name($value)) {
        $target_node->uid = $user->uid;
      }
      break;
    case 'user_mail':
      if ($user = user_load_by_mail($value)) {
        $target_node->uid = $user->uid;
      }
      break;
    default:
      parent::setTargetElement($source, $target_node, $target_element, $value);
      break;
  }
}