Skip to content
Snippets Groups Projects
feeds_ui.admin.inc 4.79 KiB
Newer Older
<?php
// $Id$
/**
 * @file
 */

/**
 * Build overview of available configurations.
 */
function feeds_ui_build_overview() {
  $rows = array();
  if ($feeds = feeds_load_all()) {
    foreach ($feeds as $feed) {
      $rows[] = array(
        $feed->getId(),
        l(t('Edit'), 'admin/build/feeds/edit/'. $feed->getId()) .' | '. 
        l(t('Delete'), 'admin/build/feeds/delete/'. $feed->getId()),
      );
    }
  }
  $rows[] = array(
    l(t('New configuration'), 'admin/build/feeds/create'),
    '&nbsp;',
  );
  $header = array(
    t('Configurations'),
    t('Operations'),
  );
  return theme('table', $header, $rows);
}

/**
 * Create a new configuration.
 */
function feeds_ui_build_create_form(&$form_state) {
  $form = array();
  if (!$form_state['storage']['id']) {
    $form['id'] = array(
      '#type' => 'textfield',
      '#title' => t('Id'),
      '#description' => t('A unique identifier for this preset.'),
    );
    $form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Next'),
    );
  }
  else {
    $form += _feeds_ui_config_form();
    $form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Create'),
    );
  }
  return $form;
}

/**
 * Submit handler for feeds_build_create_form().
 */
function feeds_ui_build_create_form_submit($form, &$form_state) {
  if ($form_state['values']['id']) {
    $form_state['storage']['id'] = $form_state['values']['id'];
  }
  else {
    // Build and save feed.
    feeds_include('feed');
    $feed = new Feed($form_state['storage']['id'], $form_state['values']);
    $feed->save();
    drupal_set_message(t('Created configuration'));

    // Unset storage to enable redirect.
    unset($form_state['storage']);
    $form_state['redirect'] = 'admin/build/feeds';
  }
}

/**
 * Edit an existing configuration.
 */
function feeds_ui_build_edit_form(&$form_state, $feed) {
  $form = _feeds_ui_config_form ($feed);
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  return $form;
}

/**
 * Edit an existing configuration.
 */
function feeds_ui_build_mapping_form(&$form_state, $feed) {
  $form = array();
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  return $form;
}

/**
 * Edit an existing configuration.
 */
function feeds_ui_build_advanced_form(&$form_state, $feed) {
  $form = array();
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  return $form;
}

/**
 * Helper, build edit UI for a feed. Used for editing and creating.
 */
function _feeds_ui_config_form($feed = NULL) {
  $form = array();
  $plugins = feeds_get_plugins();
  $form['plugins'] = array(
    '#type' => 'fieldset',
    '#title' => t('Plugins'),
  );
  $form['plugins']['fetcher'] = array(
    '#type' => 'radios',
    '#title' => t('Fetcher'),
    '#options' => $plugins['fetcher'],
    '#description' => t('Select a fetcher for this preset'),
    '#default_value' => empty($feed) ? key($plugins['fetcher']) : get_class($feed->fetcher),
  );
  $form['plugins']['parser'] = array(
    '#type' => 'radios',
    '#title' => t('Parser'),
    '#options' => $plugins['parser'],
    '#description' => t('Select a parser for this preset'),
    '#default_value' =>  empty($feed) ? key($plugins['parser']) : get_class($feed->parser),
  );
  if (empty($feed)) {
    $default = array(key($plugins['processor']));
  }
  else {
    foreach ($feed->processors as $processor) {
      $default[get_class($processor)] = get_class($processor);
    }
  }
  $form['plugins']['processors'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Processors'),
    '#options' => $plugins['processor'],
    '#description' => t('Select processors for this preset'),
    '#default_value' => $default,
  );
  $form['settings'] = array(
    '#type' => 'fieldset',
    '#title' => t('Basic settings'),
  );
  $form['settings']['content_type'] = array(
    '#type' => 'select',
    '#title' => t('Attach to content type'),
    '#description' => t('When you attach a feeds configuration to a node, you can use nodes for creating feeds on your site.'),
    '#options' => array('' => t('None')) + node_get_types('names'),
    '#default_value' => '',
  );
  $form['settings']['update'] = array(
    '#type' => 'radios',
    '#title' => t('Update existing'),
    '#options' => array(1 => t('Yes'), 0 => t('No')),
    '#default_value' => 0, // @todo
  );
  $period = drupal_map_assoc(array(1, 900, 1800, 3600, 10800, 21600, 32400, 43200, 86400, 172800, 259200, 604800, 1209600, 2419200, 3628800, 4838400, 7257600, 15724800, 31536000), 'format_interval');
  $period[FEEDAPI_CRON_NEVER_REFRESH] = t('Never refresh');
  $period[1] = t('As often as possible');
  $form['settings']['refresh_period'] = array(
    '#type' => 'select',
    '#title' => t('Minimum refresh period'),
    '#options' => $period,
    '#default_value' => 0, // @todo
  );
  return $form;
}