/** * Imports a file in the default file storage location's incoming directory. * * @param string $filename * @param ConcreteFile|bool $fr * * @return number Error Code | \Concrete\Core\File\Version */ public function importIncomingFile($filename, $fr = false) { $fh = Loader::helper('validation/file'); $fi = Loader::helper('file'); $cf = Core::make('helper/concrete/file'); $sanitizedFilename = $fi->sanitize($filename); $default = StorageLocation::getDefault(); $storage = $default->getFileSystemObject(); if (!$storage->has(REL_DIR_FILES_INCOMING . '/' . $filename)) { return Importer::E_FILE_INVALID; } if (!$fh->extension($filename)) { return Importer::E_FILE_INVALID_EXTENSION; } // first we import the file into the storage location that is the same. $prefix = $this->generatePrefix(); try { $copied = $storage->copy(REL_DIR_FILES_INCOMING . '/' . $filename, $cf->prefix($prefix, $sanitizedFilename)); } catch (\Exception $e) { $copied = false; } if (!$copied) { $storage->write($cf->prefix($prefix, $sanitizedFilename), $storage->read(REL_DIR_FILES_INCOMING . '/' . $filename)); } if (!$fr instanceof File) { // we have to create a new file object for this file version $fv = ConcreteFile::add($sanitizedFilename, $prefix, array('fvTitle' => $filename), $default); $fv->refreshAttributes($this->rescanThumbnailsOnImport); $fr = $fv->getFile(); } else { // We get a new version to modify $fv = $fr->getVersionToModify(true); $fv->updateFile($sanitizedFilename, $prefix); $fv->refreshAttributes($this->rescanThumbnailsOnImport); } return $fv; }