public function Index() { $this->Permission('Garden.Import'); // This permission doesn't exist, so only users with Admin == '1' will succeed. $Timer = new Gdn_Timer(); // Determine the current step. $this->Form = new Gdn_Form(); $Imp = new ImportModel(); $Imp->LoadState(); if ($Imp->CurrentStep < 1) { // Check to see if there is a file. $ImportPath = Gdn::Config('Garden.Import.ImportPath'); $Validation = new Gdn_Validation(); if (strcasecmp(Gdn::Request()->RequestMethod(), 'post') == 0) { $Upload = new Gdn_Upload(); $Validation = new Gdn_Validation(); $TmpFile = $Upload->ValidateUpload('ImportFile', FALSE); if ($TmpFile) { $Filename = $_FILES['ImportFile']['name']; $Extension = pathinfo($Filename, PATHINFO_EXTENSION); $TargetFolder = PATH_ROOT . DS . 'uploads' . DS . 'import'; if (!file_exists($TargetFolder)) { mkdir($TargetFolder, 0777, TRUE); } $ImportPath = $Upload->GenerateTargetName(PATH_ROOT . DS . 'uploads' . DS . 'import', $Extension); $Upload->SaveAs($TmpFile, $ImportPath); $Imp->ImportPath = $ImportPath; $Imp->Data['OriginalFilename'] = basename($Filename); } elseif (!$Imp->ImportPath) { // There was no file uploaded this request or before. $Validation->AddValidationResult('ImportFile', $Upload->Exception); } // Validate the overwrite. if (strcasecmp($this->Form->GetFormValue('Overwrite'), 'Overwrite') == 0) { $Validation->ApplyRule('Email', 'Required'); $Validation->ApplyRule('Password', 'Required'); } if ($Validation->Validate($this->Form->FormValues())) { $Imp->Overwrite($this->Form->GetFormValue('Overwrite', 'Overwrite'), $this->Form->GetFormValue('Email'), $this->Form->GetFormValue('Password')); $this->View = 'Info'; } else { $this->Form->SetValidationResults($Validation->Results()); } } else { // Search for an existing file that was uploaded by the web admin. $ImportPaths = SafeGlob(PATH_ROOT . DS . 'uploads' . DS . 'import' . DS . 'import.*'); if ($ImportPaths) { $ImportPath = $ImportPaths[0]; if (in_array(pathinfo($ImportPath, PATHINFO_EXTENSION), array('gz', 'txt'))) { $Imp->ImportPath = $ImportPath; $Imp->Data['OriginalFilename'] = basename($ImportPath); } } } $Imp->SaveState(); } else { $this->View = 'Info'; } $this->SetData('Header', $Imp->GetImportHeader()); $this->SetData('ImportPath', $Imp->ImportPath); $this->SetData('OriginalFilename', GetValue('OriginalFilename', $Imp->Data)); $this->Render(); }