/** * @param AttachedObject $attachedObject * @return static * @throws \Bitrix\Main\SystemException */ public static function buildByAttachedObject(AttachedObject $attachedObject) { /** @var Entry $cloudImport */ $cloudImport = $attachedObject->getObject()->getLastCloudImportEntry(); $documentHandler = Driver::getInstance()->getDocumentHandlersManager()->getHandlerByCode($cloudImport->getService()); if (!$documentHandler) { return null; } return new static($documentHandler); }
/** * Gets data attributes by attached object to viewer. * @param AttachedObject $attachedObject Target attached object. * @param array $additionalParams Additional parameters 'relativePath', 'externalId', 'canUpdate', 'canFakeUpdate', 'showStorage', 'version'. * @return string */ public static function getAttributesByAttachedObject(AttachedObject $attachedObject, array $additionalParams = array()) { $urlManager = Driver::getInstance()->getUrlManager(); $version = $object = null; if ($attachedObject->isSpecificVersion()) { $version = $attachedObject->getVersion(); if (!$version) { return ''; } $name = $version->getName(); $extension = $version->getExtension(); $size = $version->getSize(); $updateTime = $version->getCreateTime(); } else { $object = $attachedObject->getObject(); if (!$object) { return ''; } $name = $object->getName(); $extension = $object->getExtension(); $size = $object->getSize(); $updateTime = $object->getUpdateTime(); } if (DocumentHandler::isEditable($extension)) { $dataAttributesForViewer = 'data-bx-viewer="iframe" ' . 'data-bx-title="' . htmlspecialcharsbx($name) . '" ' . 'data-bx-src="' . $urlManager->getUrlToShowAttachedFileByService($attachedObject->getId(), 'gvdrive') . '" ' . 'data-bx-isFromUserLib="" ' . 'data-bx-askConvert="' . (DocumentHandler::isNeedConvertExtension($extension) ? '1' : '') . '" ' . 'data-bx-download="' . $urlManager->getUrlUfController('download', array('attachedId' => $attachedObject->getId())) . '" ' . 'data-bx-size="' . htmlspecialcharsbx(CFile::formatSize($size)) . '" '; } elseif (Viewer::isViewable($extension)) { $dataAttributesForViewer = 'data-bx-viewer="iframe" ' . 'data-bx-title="' . htmlspecialcharsbx($name) . '" ' . 'data-bx-src="' . $urlManager->getUrlToShowAttachedFileByService($attachedObject->getId(), 'gvdrive') . '" ' . 'data-bx-isFromUserLib="" ' . 'data-bx-askConvert="0" ' . 'data-bx-download="' . $urlManager->getUrlUfController('download', array('attachedId' => $attachedObject->getId())) . '" ' . 'data-bx-size="' . htmlspecialcharsbx(CFile::formatSize($size)) . '" ' . 'data-bx-dateModify="' . htmlspecialcharsbx($updateTime) . '" '; } elseif (TypeFile::isImage($name)) { $dataAttributesForViewer = 'data-bx-viewer="image" ' . 'data-bx-title="' . htmlspecialcharsbx($name) . '" ' . 'data-bx-src="' . $urlManager->getUrlUfController('download', array('attachedId' => $attachedObject->getId())) . '" ' . 'data-bx-isFromUserLib="" ' . 'data-bx-download="' . $urlManager->getUrlUfController('download', array('attachedId' => $attachedObject->getId())) . '" '; } else { $user = $version ? $version->getCreateUser() : $object->getCreateUser(); $formattedName = $user ? $user->getFormattedName() : ''; $dataAttributesForViewer = 'data-bx-viewer="unknown" ' . 'data-bx-src="' . $urlManager->getUrlUfController('download', array('attachedId' => $attachedObject->getId())) . '" ' . 'data-bx-isFromUserLib="" ' . 'data-bx-download="' . $urlManager->getUrlUfController('download', array('attachedId' => $attachedObject->getId())) . '" ' . 'data-bx-title="' . htmlspecialcharsbx($name) . '" ' . 'data-bx-owner="' . htmlspecialcharsbx($formattedName) . '" ' . 'data-bx-dateModify="' . htmlspecialcharsbx($updateTime) . '" ' . 'data-bx-size="' . htmlspecialcharsbx(CFile::formatSize($size)) . '" '; } $dataAttributesForViewer .= " data-bx-history=\"\"" . " data-bx-historyPage=\"\""; if ($object) { $dataAttributesForViewer .= " bx-attach-file-id=\"{$object->getId()}\""; } if (!empty($additionalParams['relativePath'])) { $dataAttributesForViewer .= ' data-bx-relativePath="' . htmlspecialcharsbx($additionalParams['relativePath'] . '/' . $name) . '" '; } if (!empty($additionalParams['externalId'])) { $dataAttributesForViewer .= ' data-bx-externalId="' . htmlspecialcharsbx($additionalParams['externalId']) . '" '; } if (!empty($additionalParams['canUpdate'])) { $dataAttributesForViewer .= ' data-bx-edit="' . $urlManager->getUrlToStartEditUfFileByService($attachedObject->getId(), 'gdrive') . '" '; } if (!empty($additionalParams['canFakeUpdate'])) { $dataAttributesForViewer .= ' data-bx-fakeEdit="' . $urlManager->getUrlToStartEditUfFileByService($attachedObject->getId(), 'gdrive') . '" '; } if (!empty($additionalParams['showStorage']) && $object) { $dataAttributesForViewer .= ' data-bx-storage="' . htmlspecialcharsbx($object->getParent()->getName()) . '" '; } if (!empty($additionalParams['version'])) { $dataAttributesForViewer .= ' data-bx-version="' . htmlspecialcharsbx($additionalParams['version']) . '" '; } return $dataAttributesForViewer; }