/** * @param kOperationResource $resource * @param entry $dbEntry * @param asset $dbAsset * @return asset */ protected function attachOperationResource(kOperationResource $resource, entry $dbEntry, asset $dbAsset = null) { $isNewAsset = false; $isSource = false; if ($dbAsset) { if ($dbAsset instanceof flavorAsset) { $isSource = $dbAsset->getIsOriginal(); } } else { $isNewAsset = true; $isSource = true; $dbAsset = kFlowHelper::createOriginalFlavorAsset($this->getPartnerId(), $dbEntry->getId()); } if (!$dbAsset && $dbEntry->getStatus() == entryStatus::NO_CONTENT) { $dbEntry->setStatus(entryStatus::ERROR_CONVERTING); $dbEntry->save(); } $operationAttributes = $resource->getOperationAttributes(); $internalResource = $resource->getResource(); if ($internalResource instanceof kLiveEntryResource) { $dbEntry->setOperationAttributes($operationAttributes); $dbEntry->save(); return $this->attachLiveEntryResource($internalResource, $dbEntry, $dbAsset, $operationAttributes); } $dbAsset = $this->attachResource($internalResource, $dbEntry, $dbAsset); $sourceType = $resource->getSourceType(); if ($sourceType) { $dbEntry->setSource($sourceType); $dbEntry->save(); } $errDescription = ''; kBusinessPreConvertDL::decideAddEntryFlavor(null, $dbEntry->getId(), $resource->getAssetParamsId(), $errDescription, $dbAsset->getId(), $operationAttributes); if ($isNewAsset) { kEventsManager::raiseEvent(new kObjectAddedEvent($dbAsset)); } kEventsManager::raiseEvent(new kObjectDataChangedEvent($dbAsset)); if ($isSource && $internalResource instanceof kFileSyncResource) { $srcEntryId = $internalResource->getEntryId(); if ($srcEntryId) { $srcEntry = entryPeer::retrieveByPKNoFilter($srcEntryId); if ($srcEntry) { $dbEntry->setSourceEntryId($srcEntryId); $dbEntry->setRootEntryId($srcEntry->getRootEntryId(true)); } } $dbEntry->setOperationAttributes($operationAttributes); $dbEntry->save(); } return $dbAsset; }