/** * (non-PHPdoc) * @see tao_models_classes_import_ImportHandler::import() */ public function import($class, $form) { $fileInfo = $form->getValue('source'); //import for CSV if (isset($fileInfo)) { set_time_limit(200); //the zip extraction is a long process that can exced the 30s timeout //get the services instances we will need $itemService = taoItems_models_classes_ItemsService::singleton(); $uploadedFile = $fileInfo['uploaded_file']; $uploadedFileBaseName = basename($uploadedFile); // uploaded file name contains an extra prefix that we have to remove. $uploadedFileBaseName = preg_replace('/^([0-9a-z])+_/', '', $uploadedFileBaseName, 1); $uploadedFileBaseName = preg_replace('/.zip|.ZIP$/', '', $uploadedFileBaseName); $validate = count($form->getValue('disable_validation')) == 0 ? true : false; try { $report = taoDelivery_models_classes_import_Assembler::importDelivery($class, $uploadedFile); } catch (common_Exception $e) { $report = common_report_Report::createFailure(__('An error occured during the import')); if ($e instanceof common_exception_UserReadableException) { $report->add($e); } } tao_helpers_File::remove($uploadedFile); } else { throw new common_exception_Error('No file provided as parameter \'source\' for OWI import'); } return $report; }
/** * Import file entry point by using $this->service * Check POST method & get valid uploaded file */ public function import() { try { // Check if it's post method if ($this->getRequestMethod() != Request::HTTP_POST) { throw new \common_exception_NotImplemented('Only post method is accepted to import Qti package.'); } // Get valid package parameter $package = $this->getUploadedPackage(); // Call service to import package \helpers_TimeOutHelper::setTimeOutLimit(\helpers_TimeOutHelper::LONG); $report = ImportService::singleton()->importQTIPACKFile($package, $this->getDestinationClass()); \helpers_TimeOutHelper::reset(); \tao_helpers_File::remove($package); if ($report->getType() !== \common_report_Report::TYPE_SUCCESS) { $this->returnFailure(new \common_Exception(__("An unexpected error occured during the import of the IMS QTI Item Package."))); } else { $itemIds = []; /** @var \common_report_Report $subReport */ foreach ($report as $subReport) { $itemIds[] = $subReport->getData()->getUri(); } $this->returnSuccess(array('items' => $itemIds)); } } catch (ExtractException $e) { $this->returnFailure(new \common_Exception(__('The ZIP archive containing the IMS QTI Item cannot be extracted.'))); } catch (ParsingException $e) { $this->returnFailure(new \common_Exception(__('The ZIP archive does not contain an imsmanifest.xml file or is an invalid ZIP archive.'))); } catch (\Exception $e) { $this->returnFailure($e); } }
/** * (non-PHPdoc) * @see tao_models_classes_import_ImportHandler::import() */ public function import($class, $form) { $fileInfo = $form->getValue('source'); //import for CSV if (isset($fileInfo)) { \helpers_TimeOutHelper::setTimeOutLimit(\helpers_TimeOutHelper::MEDIUM); //get the services instances we will need $itemService = \taoItems_models_classes_ItemsService::singleton(); $uploadedFile = $fileInfo['uploaded_file']; $uploadedFileBaseName = basename($uploadedFile); // uploaded file name contains an extra prefix that we have to remove. $uploadedFileBaseName = preg_replace('/^([0-9a-z])+_/', '', $uploadedFileBaseName, 1); $uploadedFileBaseName = preg_replace('/.zip|.ZIP$/', '', $uploadedFileBaseName); $validate = count($form->getValue('disable_validation')) == 0 ? true : false; try { $importer = new Assembler(); $report = $importer->importDelivery($class, $uploadedFile); } catch (\common_Exception $e) { $report = common_report_Report::createFailure(__('An error occured during the import')); if ($e instanceof \common_exception_UserReadableException) { $report->add($e); } } \tao_helpers_File::remove($uploadedFile); \helpers_TimeOutHelper::reset(); } else { throw new \common_exception_Error('No file provided as parameter \'source\' for Delivery Assembly import'); } return $report; }
public function cancelUpload() { $removed = 0; if ($this->hasRequestParameter('filename')) { $filename = trim($this->getRequestParameter('filename')); if (!empty($filename)) { $pattern = "/^[0-9a-f]*_" . preg_quote($filename, "/") . "\$/"; $targetPath = tao_helpers_File::concat(array($this->rootFolder, $_REQUEST['folder'])); foreach (scandir($targetPath) as $file) { if (preg_match($pattern, $file)) { if (tao_helpers_File::remove($targetPath . '/' . $file)) { $removed++; } } } } } echo json_encode(array('removed' => $removed)); }
/** * (non-PHPdoc) * @see tao_models_classes_import_ImportHandler::import() */ public function import($class, $form) { try { $fileInfo = $form->getValue('source'); if (isset($fileInfo['uploaded_file'])) { $uploadedFile = $fileInfo['uploaded_file']; // The zip extraction is a long process that can exceed the 30s timeout helpers_TimeOutHelper::setTimeOutLimit(helpers_TimeOutHelper::LONG); $report = taoQtiTest_models_classes_QtiTestService::singleton()->importMultipleTests($class, $uploadedFile); helpers_TimeOutHelper::reset(); tao_helpers_File::remove($uploadedFile); } else { throw new common_exception_Error('No source file for import'); } return $report; } catch (Exception $e) { return common_report_Report::createFailure($e->getMessage()); } }
/** * Binds an UploadFileDescription with the target instance. * * @access protected * @author Jerome Bogaerts <*****@*****.**> * @param Property property The property to bind the data. * @param UploadFileDescription desc the upload file description. * @return void */ protected function bindUploadFileDescription(core_kernel_classes_Property $property, tao_helpers_form_data_UploadFileDescription $desc) { $instance = $this->getTargetInstance(); // Delete old files. foreach ($instance->getPropertyValues($property) as $oF) { $oldFile = new core_kernel_versioning_File($oF); $oldFile->delete(true); } $name = $desc->getName(); $size = $desc->getSize(); if (!empty($name) && !empty($size)) { // Move the file at the right place. $source = $desc->getTmpPath(); $repository = tao_models_classes_TaoService::singleton()->getUploadFileSource(); $file = $repository->spawnFile($source, $desc->getName()); tao_helpers_File::remove($source); $instance->setPropertyValue($property, $file->getUri()); // Update the UploadFileDescription with the stored file. $desc->setFile($file); } }
/** * Implementation of the 'delete' action. * * @access public * @author Joel Bout, <*****@*****.**> * @return void */ public function actionDelete() { $this->outVerbose("Deleting language '" . $this->options['language'] . "' for extension '" . $this->options['extension'] . "' ..."); $dir = $this->buildLanguagePath($this->options['extension'], $this->options['language']); if (!tao_helpers_File::remove($dir, true)) { $this->err("Could not delete language '" . $this->options['language'] . "' for extension '" . $this->options['extension'] . "'.", true); } $this->outVerbose("Language '" . $this->options['language'] . "' for extension '" . $this->options['extension'] . "' successfully deleted."); }
public function tearDown() { parent::tearDown(); tao_helpers_File::remove($this->envPath, true); $this->assertFalse(is_dir($this->envPath)); }
public function testImportRules() { $path = $this->getSamplePath('/csv/users1-header-rules-validator.csv'); $file = tao_helpers_File::createTempDir() . '/temp-import-rules-validator.csv'; tao_helpers_File::copy($path, $file); $this->assertFileExists($file); $importer = new CsvBasicImporter(); $class = $this->prophesize('\\core_kernel_classes_Class'); $resource = $this->prophesize('\\core_kernel_classes_Resource'); $class->createInstanceWithProperties(["label" => ["Correct row"], "firstName" => ["Jérôme"], "lastName" => ["Bogaerts"], "login" => ["jbogaerts"], "mail" => ["*****@*****.**"], "password" => ["jbogaerts!!!111Ok"], "UserUIlg" => ["http://www.tao.lu/Ontologies/TAO.rdf#LangEN"]])->shouldBeCalledTimes(1)->willReturn($resource->reveal()); $importer->setValidators(['label' => [tao_helpers_form_FormFactory::getValidator('Length', ["max" => 20])], 'firstName' => [tao_helpers_form_FormFactory::getValidator('NotEmpty'), tao_helpers_form_FormFactory::getValidator('Length', ["min" => 2, "max" => 25])], 'lastName' => [tao_helpers_form_FormFactory::getValidator('NotEmpty'), tao_helpers_form_FormFactory::getValidator('Length', ["min" => 2, "max" => 12])], 'login' => [tao_helpers_form_FormFactory::getValidator('NotEmpty'), tao_helpers_form_FormFactory::getValidator('AlphaNum'), tao_helpers_form_FormFactory::getValidator('Unique'), tao_helpers_form_FormFactory::getValidator('Length', ["min" => 2, "max" => 12])], 'mail' => [tao_helpers_form_FormFactory::getValidator('NotEmpty'), tao_helpers_form_FormFactory::getValidator('Email'), tao_helpers_form_FormFactory::getValidator('Length', ["min" => 6, "max" => 100])], 'password' => [tao_helpers_form_FormFactory::getValidator('NotEmpty')], 'UserUIlg' => [tao_helpers_form_FormFactory::getValidator('Url')]]); $report = $importer->import($class->reveal(), ['file' => $file, 'map' => ['label' => "0", 'firstName' => "1", 'lastName' => "2", 'login' => "3", 'mail' => "4", 'password' => "5", 'UserUIlg' => "6"]]); $this->assertInstanceOf('common_report_Report', $report); $this->assertEquals(common_report_Report::TYPE_WARNING, $report->getType()); $this->assertCount(6, $report->getErrors()); //cause import has errors $this->assertFileExists($file); tao_helpers_File::remove($file); $this->assertFileNotExists($file); }
/** * Binds an UploadFileDescription with the target instance. * * @access protected * @author Jerome Bogaerts <*****@*****.**> * @param core_kernel_classes_Property $property The property to bind the data. * @param tao_helpers_form_data_UploadFileDescription $desc the upload file description. * @return void */ protected function bindUploadFileDescription(core_kernel_classes_Property $property, tao_helpers_form_data_UploadFileDescription $desc) { $instance = $this->getTargetInstance(); // If form has delete action, remove file if ($desc->getAction() == tao_helpers_form_data_UploadFileDescription::FORM_ACTION_DELETE) { $this->removeFile($property); } elseif ($desc->getAction() == tao_helpers_form_data_UploadFileDescription::FORM_ACTION_ADD) { $name = $desc->getName(); $size = $desc->getSize(); if (!empty($name) && !empty($size)) { // Remove old $this->removeFile($property); // Move the file at the right place. $source = $desc->getTmpPath(); $serial = tao_models_classes_TaoService::singleton()->storeUploadedFile($source, $name); tao_helpers_File::remove($source); // Create association between item & file, database side $instance->editPropertyValues($property, $serial); // Update the UploadFileDescription with the stored file. $desc->setFile($serial); } } }