/** * Commit changed field data * */ protected function ___processImport() { $data = $this->session->get('FieldImportData'); if (!$data) { throw new WireException("Invalid import data"); } $numChangedFields = 0; $numAddedFields = 0; $skipFieldNames = array(); // iterate through data for each field foreach ($data as $name => $fieldData) { $name = $this->wire('sanitizer')->fieldName($name); if (!$this->input->post("import_field_{$name}")) { $skipFieldNames[] = $name; unset($data[$name]); continue; } $field = $this->wire('fields')->get($name); if (!$field) { $new = true; $field = new Field(); $field->name = $name; } else { $new = false; } unset($fieldData['id']); foreach ($fieldData as $property => $value) { if (!in_array($property, $this->input->post("field_{$name}"))) { unset($fieldData[$property]); } } try { $changes = $field->setImportData($fieldData); foreach ($changes as $key => $info) { $this->message($this->_('Saved:') . " {$name}.{$key} => {$info['new']}"); } $field->save(); if ($new) { $numAddedFields++; $this->message($this->_('Added field') . ' - ' . $name); } else { $numChangedFields++; $this->message($this->_('Modified field') . ' - ' . $name); } } catch (Exception $e) { $this->error($e->getMessage()); } $data[$name] = $fieldData; } $this->session->set('FieldImportSkipNames', $skipFieldNames); $this->session->set('FieldImportData', $data); $numSkippedFields = count($skipFieldNames); if ($numAddedFields) { $this->message(sprintf($this->_n('Added %d field', 'Added %d fields', $numAddedFields), $numAddedFields)); } if ($numChangedFields) { $this->message(sprintf($this->_n('Modified %d field', 'Modified %d fields', $numChangedFields), $numChangedFields)); } if ($numSkippedFields) { $this->message(sprintf($this->_n('Skipped %d field', 'Skipped %d fields', $numSkippedFields), $numSkippedFields)); } $this->session->redirect("./?verify=1"); }