/** * @param Document $doc * @return Document * @throws Model\Exception */ public static function wrap(Document $doc) { if ($doc instanceof Document\Hardlink) { if ($sourceDoc = $doc->getSourceDocument()) { $destDoc = self::upperCastDocument($sourceDoc); $destDoc->setKey($doc->getKey()); $destDoc->setPath($doc->getRealPath()); $destDoc->initResource(get_class($sourceDoc)); $destDoc->setHardLinkSource($doc); return $destDoc; } } else { $sourceClass = get_class($doc); $doc = self::upperCastDocument($doc); $doc->initResource($sourceClass); return $doc; } return; }