/** * @param $ID * @param int $WF_ID * @param bool $NotCheckWebRights * @param array $params */ function SendHistoryFile($ID, $WF_ID = 0, $NotCheckWebRights = false, $params = array()) { $ID = intval($ID); $WF_ID = intval($WF_ID); if ($ID <= 0) { return; } list($contextType, $contextEntityId) = $this->getContextData(); if (CWebDavSymlinkHelper::isLinkElement($contextType, $contextEntityId, $ID)) { $parentSectionData = CWebDavSymlinkHelper::getLinkDataOfElement($contextType, $contextEntityId, $ID); if ($parentSectionData) { $linkWebdav = new self($parentSectionData[self::UF_LINK_IBLOCK_ID], $this->base_url . $this->_path, array('ROOT_SECTION_ID' => $parentSectionData[self::UF_LINK_SECTION_ID], 'symlinkMode' => true, 'symlinkSectionData' => $parentSectionData, 'symlinkRealRootSectionData' => $this->arRootSection)); if ($this->withoutAuthorization) { $linkWebdav->withoutAuthorization = true; } return $linkWebdav->SendHistoryFile($ID, $WF_ID, $NotCheckWebRights, $params); } } $io = self::GetIo(); list($arFile, $options, $fullpath, $filename) = $this->getHistoryFileData($ID, $WF_ID, $params); if (empty($arFile)) { return; } $options["logica_full_path"] = $fullpath; if (!file_exists($fullpath) && file_exists($io->GetPhysicalName($fullpath))) { $fullpath = $io->GetPhysicalName($fullpath); } $options["path"] = $this->_path; $options["mimetype"] = !empty($arFile["CONTENT_TYPE"]) && $arFile["CONTENT_TYPE"] != "unknown" && $arFile["CONTENT_TYPE"] != "application/octet-stream" ? $arFile["CONTENT_TYPE"] : $this->get_mime_type($filename); $options["size"] = !empty($arFile["FILE_SIZE"]) ? $arFile["FILE_SIZE"] : 0; $options["name"] = $filename; if (!$NotCheckWebRights) { $arElementData = $this->GetObject(array("element_id" => $ID, "check_permissions" => false), false); if (!$this->CheckWebRights("", array("action" => "read", "arElement" => $arElementData), false)) { return; } } if ($options["resized"] == "Y" || $params["cache_image"] == "Y") { CFile::ViewByUser($arFile, array("content_type" => $options["mimetype"], "cache_time" => $options["cache_time"])); } if (file_exists($fullpath)) { if (empty($options['size'])) { $options['size'] = filesize($fullpath); } $options["mtime"] = filemtime($fullpath); $options["stream"] = fopen($fullpath, "r"); } $x = $this->SendFile($options); //, true }