You are here

function feed_import_edit_filter_form in Feed Import 7.3

Same name and namespace in other branches
  1. 7 feed_import.module \feed_import_edit_filter_form()
  2. 7.2 feed_import.module \feed_import_edit_filter_form()

Edit filter form

1 string reference to 'feed_import_edit_filter_form'
feed_import_menu in ./feed_import.module
Implements hook_menu().

File

./feed_import.module, line 1709
User interface, cron functions for feed_import module

Code

function feed_import_edit_filter_form($form, &$form_state, $feed, $f) {

  // Set page title.
  drupal_set_title(t('Edit @filter - @name', array(
    '@filter' => $f,
    '@name' => $feed->name,
  )), PASS_THROUGH);
  $fields = array_keys($feed->settings['fields']);
  if (!isset($form_state['#item_filter'])) {

    // Save filter.
    $form_state['#item_filter'] = $f;

    // Save fields to be filtered.
    $form_state['#filter_fields'] =& $fields;
  }
  $form['#filter_fields'] = $form_state['#filter_fields'];
  $param_field = $feed->settings['filter']['options']['param'];
  $help = array();
  $help[0] = t('Filter name') . ': ' . t('A name given by you for this filter.');
  $help[1] = t('Filter function') . ': ' . t('Name of the php function to apply on field value.') . ' ';
  $help[1] .= t('You may also use a static function like this: ClassName::functionName.') . ' ';
  $help[1] .= t('Also check our provided filters in FeedImportFilter class.');
  $help[2] = t('Function params') . ': ' . t('Enter here params (one per line) for php function.') . ' ';
  $help[2] .= t('Enter "@param_field" (without quotes) were you want to be sent field value as parameter.', array(
    '@param_field' => $param_field,
  )) . ' ';
  $help[3] = t('Filtered value is the resulted string of all function calls from top to bottom.');
  $help = implode('<br />', $help);
  $form['help'] = array(
    '#markup' => &$help,
  );
  $vars = array(
    '@name' => $feed->name,
    '@filter' => $form_state['#item_filter'] == 'filters' ? t('filters') : t('pre-filters'),
  );
  $form['machine_name'] = array(
    '#type' => 'value',
    '#value' => $feed->machine_name,
  );
  if (isset($form_state['values'])) {
    foreach ($form_state['#filter_fields'] as &$field) {
      $filters = array();
      $filter[$field]['#tree'] = TRUE;
      $pos = 0;
      if (!empty($form_state['values']['table_content'][$field])) {
        foreach ($form_state['values']['table_content'][$field] as &$filter) {
          $vars = array(
            'name' => $filter['name'],
            'function' => $filter['function'],
            'params' => _feed_import_lines($filter['params']),
          );
          $filters[$field][$pos] = feed_import_new_filter($pos, $vars);
          $pos++;
        }
      }

      // Add new field.
      if ($form_state['#add_filter'] == $field) {
        $vars = array(
          'name' => '',
          'function' => '',
          'params' => array(
            $param_field,
          ),
        );
        $filters[$field][$pos] = feed_import_new_filter($pos, $vars);
      }
      $form['container_' . $field] = array(
        '#type' => 'fieldset',
        '#title' => check_plain($field),
        '#collapsible' => TRUE,
        '#collapsed' => $field != $form_state['#add_filter'] && $field != $form_state['#delete_filter'],
        'table_content' => array(
          '#tree' => TRUE,
        ) + $filters,
        'actions' => feed_import_add_filter_actions($field),
      );
    }
  }
  else {
    foreach ($feed->settings['fields'] as $field => &$val) {
      $filters = array();
      $filters[$field]['#tree'] = TRUE;
      $pos = 0;
      foreach ($val[$form_state['#item_filter']] as $name => &$filter) {
        $vars = array(
          'name' => $name,
          'function' => $filter['function'],
          'params' => $filter['params'],
        );
        $filters[$field][$pos] = feed_import_new_filter($pos, $vars);
        $pos++;
      }
      $form['container_' . $field] = array(
        '#type' => 'fieldset',
        '#title' => check_plain($field),
        '#collapsible' => TRUE,
        '#collapsed' => TRUE,
        'table_content' => array(
          '#tree' => TRUE,
        ) + $filters,
        'actions' => feed_import_add_filter_actions($field),
      );
    }
  }
  if ($fields) {
    $form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Save filters'),
      '#prefix' => t('Your filters will be saved only after you press the button below.') . '<br />',
    );
  }
  return $form;
}