/**
* Manage importing process.
*
* @since 2.0.0
* @access public
*/
public function go($transientKey = '')
{
$this->permission('Garden.Settings.Manage');
if (!Gdn::session()->validateTransientKey($transientKey) && !Gdn::request()->isAuthenticatedPostBack()) {
throw new Gdn_UserException('The CSRF token is invalid.', 403);
}
$Imp = new ImportModel();
$Imp->loadState();
$this->setData('Steps', $Imp->steps());
$this->Form = new Gdn_Form();
if ($Imp->CurrentStep < 1) {
// Check for the import file.
if ($Imp->ImportPath) {
$Imp->CurrentStep = 1;
} else {
redirect(strtolower($this->Application) . '/import');
}
}
if ($Imp->CurrentStep >= 1) {
if ($this->Form->authenticatedPostBack()) {
$Imp->fromPost($this->Form->formValues());
}
try {
$Result = $Imp->runStep($Imp->CurrentStep);
} catch (Exception $Ex) {
$Result = false;
$this->Form->addError($Ex);
$this->setJson('Error', true);
}
if ($Result === true) {
$Imp->CurrentStep++;
} elseif ($Result === 'COMPLETE') {
$this->setJson('Complete', true);
}
/*elseif(is_array($Result)) {
saveToConfig(array(
'Garden.Import.CurrentStep' => $CurrentStep,
'Garden.Import.CurrentStepData' => val('Data', $Result)));
$this->setData('CurrentStepMessage', val('Message', $Result));
}*/
}
$Imp->saveState();
$this->Form->setValidationResults($Imp->Validation->results());
$this->setData('Stats', val('Stats', $Imp->Data, array()));
$this->setData('CurrentStep', $Imp->CurrentStep);
$this->setData('CurrentStepMessage', val('CurrentStepMessage', $Imp->Data, ''));
$this->setData('ErrorType', val('ErrorType', $Imp));
if ($this->data('ErrorType')) {
$this->setJson('Error', true);
}
$Imp->toPost($Post);
$this->Form->formValues($Post);
$this->addJsFile('import.js');
$this->render();
}