public function OrganigramsImportD7Form::submitForm in Organigrams 8.2
Same name and namespace in other branches
- 8 src/Form/OrganigramsImportD7Form.php \Drupal\organigrams\Form\OrganigramsImportD7Form::submitForm()
Form submission handler.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormInterface::submitForm
File
- src/
Form/ OrganigramsImportD7Form.php, line 97
Class
- OrganigramsImportD7Form
- Provides the settings form for this module.
Namespace
Drupal\organigrams\FormCode
public function submitForm(array &$form, FormStateInterface $form_state) {
$organigram = json_decode($form_state
->getValue('organigrams_d7_json'));
$vocabulary = Vocabulary::create([
'vid' => $organigram->organigram->machine_name,
'description' => $organigram->organigram->description,
'name' => $organigram->organigram->name,
]);
// Add a third party setting to indicate this vocabulary is an organigram.
$vocabulary
->setThirdPartySetting('organigrams', 'is_organigram', TRUE);
$vocabulary
->save();
organigrams_create_term_fields($vocabulary
->id());
if (!empty($organigram->items)) {
// Create a mapping array for the term ID's.
$iid_mapping = [];
// Iterate through the organigram items.
foreach ($organigram->items as $item) {
$term_array = [
'name' => $item->name,
'vid' => $vocabulary
->id(),
'parent' => $item->parent,
'weight' => $item->weight,
];
// Convert the old parent to the new parent if possible.
if (isset($iid_mapping[$item->parent])) {
$term_array['parent'] = $iid_mapping[$item->parent];
}
$ignore_keys = [
'iid',
'oid',
'rdf_mapping',
'organigrams_machine_name',
'depth',
];
foreach ($item as $key => $value) {
if (in_array($key, $ignore_keys)) {
continue;
}
// Change the value of the position to s if it's l or r.
if ($key == 'position' && in_array($value, [
'l',
'r',
])) {
$value = 's';
}
$term_array['field_o_' . $key] = $value;
}
// Create the term.
$term = Term::create($term_array);
// Save the term.
$term
->save();
// Create mapping for the new term ID to be used as parent.
$iid_mapping[$item->iid] = $term
->id();
}
}
$organigram_link = Link::fromTextAndUrl($organigram->organigram->name, Url::fromUserInput('/admin/structure/taxonomy/manage/' . $organigram->organigram->machine_name . '/overview'));
// Show message.
$this
->messenger()
->addMessage($this
->t('Organigram "@name" imported.', [
'@name' => $organigram_link
->toString(),
]));
}