class ImportForm in Feed Import 8
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\feed_import\Form\ImportForm
Expanded class hierarchy of ImportForm
1 string reference to 'ImportForm'
File
- src/
Form/ ImportForm.php, line 13 - Contains \Drupal\feed_import\Form\ImportForm
Namespace
Drupal\feed_import\FormView source
class ImportForm extends FormBase {
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'feed_import_import';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Feed name'),
'#maxlength' => 64,
'#description' => t('This usually is source name.'),
'#required' => TRUE,
);
$form['machine_name'] = array(
'#type' => 'machine_name',
'#title' => t('Feed machine name'),
'#description' => t('This must be unique for each feed and must be not numeric.') . '<br />' . t('Once saved this can not be changed!'),
'#maxlength' => 64,
'#required' => TRUE,
'#machine_name' => array(
'source' => array(
'name',
),
'exists' => '\\Drupal\\feed_import_base\\FeedImport::loadFeed',
),
);
$form['code'] = array(
'#type' => 'textarea',
'#rows' => 10,
'#title' => t('Enter feed in JSON format'),
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Import'),
);
return $form;
}
/**
* {@inheritdoc}
*/
public function validateForm(array &$form, FormStateInterface $form_state) {
if ($machine_name = $form_state
->getValue('machine_name')) {
if (is_numeric($machine_name) || is_numeric($machine_name[0])) {
$form_state
->setError($form['machine_name'], t('Machine name must be not numeric!'));
}
}
$code = trim($form_state
->getValue('code'));
if (!$code || !($code = @json_decode($code, TRUE))) {
$form_state
->setError($form['code'], t('Invalid JSON code!'));
return;
}
if (!is_array($code)) {
$form_state
->setError($form['code'], t('Invalid feed format!'));
return;
}
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$options = array(
'name' => $form_state
->getValue('name'),
'machine_name' => $form_state
->getValue('machine_name'),
);
if ($code = $this
->importFromJson($form_state
->getValue('code'), $options)) {
drupal_set_message(t('Feed imported'));
$form_state
->setRedirect('feed_import.admin_edit', [
'fid' => $code->machine_name,
]);
}
else {
drupal_set_message(t('Feed cannot be imported!'), 'error');
$form_state
->setRedirect('feed_import.admin');
}
}
/**
* Import a feed from a json file.
*
* @param string $json The JSON encoded feed configuration
* @param array $options An array of options to add to $json configuration
* @param bool $cleanup TRUE to reset import information
*
* @return mixed A feed configuration object on success or false on error
*/
protected function importFromJson($json, array $options = array(), $cleanup = TRUE, $keep_id = FALSE) {
if ($code = @json_decode($json, TRUE)) {
// Get an empty feed configuration.
$ef = FeedImport::getEmptyFeed();
// Add options.
$code = $options + $code;
// Add empty feed items.
$code += $ef;
// Add settings options if any.
if (!empty($options['settings'])) {
$code['settings'] = $options['settings'] + $code['settings'];
}
// Add empty feed settings.
$code['settings'] += $ef['settings'];
// Not needed anymore.
unset($json, $ef, $options);
if (!$keep_id) {
unset($code['id']);
}
// Convert to object.
$code = (object) $code;
// Cleanup import info.
if ($cleanup) {
$code->cron_import = 0;
$code->last_run = 0;
$code->last_run_duration = 0;
$code->last_run_items = 0;
}
// Check for group, if no group then use machine_name as group.
if (empty($code->settings['hashes']['options']['group'])) {
$code->settings['hashes']['options']['group'] = $code->machine_name;
}
// Save feed.
if (FeedImport::saveFeed($code)) {
return $code;
}
}
return FALSE;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormBase:: |
protected | property | The config factory. | 1 |
FormBase:: |
protected | property | The request stack. | 1 |
FormBase:: |
protected | property | The route match. | |
FormBase:: |
protected | function | Retrieves a configuration object. | |
FormBase:: |
protected | function | Gets the config factory for this form. | 1 |
FormBase:: |
private | function | Returns the service container. | |
FormBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
87 |
FormBase:: |
protected | function | Gets the current user. | |
FormBase:: |
protected | function | Gets the request object. | |
FormBase:: |
protected | function | Gets the route match. | |
FormBase:: |
protected | function | Gets the logger for a specific channel. | |
FormBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
FormBase:: |
public | function | Resets the configuration factory. | |
FormBase:: |
public | function | Sets the config factory for this form. | |
FormBase:: |
public | function | Sets the request stack object to use. | |
ImportForm:: |
public | function |
Form constructor. Overrides FormInterface:: |
|
ImportForm:: |
public | function |
Returns a unique string identifying the form. Overrides FormInterface:: |
|
ImportForm:: |
protected | function | Import a feed from a json file. | |
ImportForm:: |
public | function |
Form submission handler. Overrides FormInterface:: |
|
ImportForm:: |
public | function |
Form validation handler. Overrides FormBase:: |
|
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |