/** * called from ajax. */ public function importAction() { $this->requireAdminPrivileges(); // This is necessary in order to avoid session lock and being able to run two // ajax requests simultaneously session_write_close(); $this->nfilesprocessed = 0; $this->disableLayout(); $this->disableView(); $this->assetstores = $this->Assetstore->getAll(); $form = $this->Form->Import->createImportForm($this->assetstores); if ($this->getRequest()->isPost() && !$form->isValid($_POST)) { echo json_encode(array('error' => $this->t('The form is invalid. Missing values.'))); return false; } // If we just validate the form we return if ($this->getRequest()->getPost('validate')) { echo json_encode(array('stage' => 'validate')); return false; } elseif ($this->getRequest()->getPost('initialize')) { // Count the total number of files in the directory and return it $this->ntotalfiles = $this->_recursiveCountFiles($form->inputdirectory->getValue()); echo json_encode(array('stage' => 'initialize', 'totalfiles' => $this->ntotalfiles)); return false; } elseif ($this->getRequest()->isPost() && $form->isValid($_POST)) { $this->ntotalfiles = $this->getRequest()->getPost('totalfiles'); // Parse the directory $pathName = $form->inputdirectory->getValue(); $currentdirid = $form->importFolder->getValue(); // we just start with te initial dir $currentdir = new FolderDao(); $currentdir->setFolderId($currentdirid); // Set the file locations used to handle the async requests $this->progressfile = $this->getTempDirectory() . '/importprogress_' . $form->uploadid->getValue(); $this->stopfile = $this->getTempDirectory() . '/importstop_' . $form->uploadid->getValue(); $this->assetstoreid = $form->assetstore->getValue(); $this->importemptydirectories = $form->importemptydirectories->getValue(); try { if ($this->_recursiveParseDirectory($pathName, $currentdir)) { echo json_encode(array('message' => $this->t('Import successful.'))); } else { echo json_encode(array('error' => $this->t('Problem occured while importing. ' . 'Check the log files or contact an ' . 'administrator.'))); } } catch (Exception $e) { echo json_encode(array('error' => $this->t($e->getMessage()))); } // Remove the temp and stop files UtilityComponent::safedelete($this->progressfile); UtilityComponent::safedelete($this->stopfile); return true; } echo json_encode(array('error' => $this->t('The request should be a post.'))); return false; }