You are here

rewrite.inc in Feeds Tamper 6

Same filename and directory in other branches
  1. 7 plugins/rewrite.inc

File

plugins/rewrite.inc
View source
<?php

/**
 * @file
 * Rewrite a field using tokens.
 */
$plugin = array(
  'form' => 'feeds_tamper_rewrite_form',
  'callback' => 'feeds_tamper_rewrite_callback',
  'name' => 'Rewrite',
  'multi' => 'skip',
  'category' => 'Other',
);
function feeds_tamper_rewrite_form($importer, $element_key, $settings) {
  $form = array();

  // The CSV parser automagically lowercases all sources.
  $is_csv = FALSE;
  if (get_class($importer->parser) == 'FeedsCSVParser') {
    $is_csv = TRUE;
  }
  $mappings = $importer->processor->config['mappings'];
  $replace = array();
  foreach ($mappings as $mapping) {
    if ($is_csv) {
      $replace[] = '[' . drupal_strtolower($mapping['source']) . ']';
    }
    else {
      $replace[] = '[' . $mapping['source'] . ']';
    }
  }
  $form['text'] = array(
    '#type' => 'textarea',
    '#title' => t('Replacement pattern'),
    '#default_value' => isset($settings['text']) ? $settings['text'] : '',
  );
  $form['help'] = array(
    '#type' => 'fieldset',
    '#title' => t('Available replacement patterns'),
    '#value' => theme('item_list', $replace),
  );
  return $form;
}
function feeds_tamper_rewrite_callback($source, $item_key, $element_key, &$field, $settings) {
  $trans = array();
  $item = $source->batch->items[$item_key];
  foreach ($item as $key => $value) {
    $trans['[' . $key . ']'] = is_array($value) ? reset($value) : $value;
  }
  $field = strtr($settings['text'], $trans);
}