Example #1
0
 /**
  * @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
 }