You are here

public function FeedsTermProcessor::setTargetElement in Feeds 8.2

Override setTargetElement to operate on a target item that is a taxonomy term.

Overrides FeedsProcessor::setTargetElement

File

lib/Drupal/feeds/Plugin/feeds/processor/FeedsTermProcessor.php, line 106
FeedsTermProcessor class.

Class

FeedsTermProcessor
Defines a taxonomy term processor.

Namespace

Drupal\feeds\Plugin\feeds\processor

Code

public function setTargetElement(FeedsSource $source, $target_term, $target_element, $value) {
  switch ($target_element) {
    case 'parent':
      if (!empty($value)) {
        $terms = taxonomy_term_load_multiple_by_name($value);
        $parent_tid = '';
        foreach ($terms as $term) {
          if ($term->vid == $target_term->vid) {
            $parent_tid = $term->tid;
          }
        }
        if (!empty($parent_tid)) {
          $target_term->parent[] = $parent_tid;
        }
        else {
          $target_term->parent[] = 0;
        }
      }
      else {
        $target_term->parent[] = 0;
      }
      break;
    case 'parentguid':

      // value is parent_guid field value
      $query = db_select('feeds_item')
        ->fields('feeds_item', array(
        'entity_id',
      ))
        ->condition('entity_type', $this
        ->entityType());
      $parent_tid = $query
        ->condition('guid', $value)
        ->execute()
        ->fetchField();
      $target_term->parent[] = $parent_tid ? $parent_tid : 0;
      break;
    case 'weight':
      if (!empty($value)) {
        $weight = intval($value);
      }
      else {
        $weight = 0;
      }
      $target_term->weight = $weight;
      break;
    default:
      parent::setTargetElement($source, $target_term, $target_element, $value);
      break;
  }
}