コード例 #1
0
 /**
  * Add a new file node and adds the associated file.
  *
  * @param Element|string $parentElement
  * @param string $newFile Full path to the new file
  * @param string $newFileName the new disired filename
  * @return Node
  */
 public function addFileNode($parentElement, $newFile, $newFileName)
 {
     // get the file element
     $element = $this->ElementService->oneFromAspect('@files');
     // get storage facility
     list($storageFacility, $sfParams) = $this->deriveStorageFacility($parentElement);
     // add the new file
     $newId = $storageFacility->findUniqueFileID($sfParams, $this->buildFilename($newFileName));
     $file = new StorageFacilityFile($newId, $newFile);
     $file = $storageFacility->putFile($sfParams, $file);
     //create the node
     $nodeRef = new NodeRef($element);
     $slug = SlugUtils::createSlug($newId);
     $nodeRef = $this->NodeService->generateUniqueNodeRef($nodeRef, $slug);
     $fileNode = $nodeRef->generateNode();
     // set the new id as title
     $fileNode->Title = $newId;
     // set permenant fields
     $fileNode->ActiveDate = $this->DateFactory->newStorageDate();
     $fileNode->Status = 'draft';
     // get metrics
     list($width, $height) = ImageUtils::getImageDimensions($newFile);
     // and mime-type
     $mimetype = FileSystemUtils::getMimetype($file->getExtension());
     // add the meta fields
     $fileNode->setMeta('#url', $file->getURL());
     $fileNode->setMeta('#mimetype', $mimetype);
     $fileNode->setMeta('#size', filesize($newFile));
     $fileNode->setMeta('#width', $width);
     $fileNode->setMeta('#height', $height);
     $fileNode->setMeta('#parent-element', $parentElement instanceof Element ? $parentElement->Slug : $parentElement);
     // do the add
     $this->RegulatedNodeService->add($fileNode);
     //add the node
     return $fileNode;
 }