Exemple #1
0
 /**
  * @param $id
  * @param $wfId
  * @param $params
  * @return array
  */
 public function getHistoryFileData($id, $wfId, &$params)
 {
     $fullpath = '';
     $options = $arFile = $arr = array();
     $io = self::GetIo();
     $arFilter = array("IBLOCK_ID" => isset($this->arParams['element_array']['ID']) && $this->arParams['element_array']['ID'] == $id ? $this->arParams['element_array']['IBLOCK_ID'] : $this->IBLOCK_ID, "ID" => $id, "SHOW_HISTORY" => "Y", "CHECK_PERMISSIONS" => "Y");
     if ($this->permission < "U") {
         $arFilter["SHOW_HISTORY"] = "N";
     }
     if (($this->workflow == 'bizproc' || $this->workflow == 'bizproc_limited') && $wfId > 0) {
         $history = new CBPHistoryService();
         $db_res = $history->GetHistoryList(array("ID" => "DESC"), array("DOCUMENT_ID" => array($this->wfParams['DOCUMENT_TYPE'][0], $this->wfParams['DOCUMENT_TYPE'][1], $id), "ID" => $wfId), false, false, array("ID", "DOCUMENT", "NAME"));
         if ($db_res && ($arr = $db_res->Fetch())) {
             $arFile = array("SRC" => $arr["DOCUMENT"]["PROPERTIES"][$this->file_prop]["VALUE"], "NAME" => $arr["DOCUMENT"]["NAME"]);
             $arr["NAME"] = $arr["DOCUMENT"]["NAME"];
             $fullpath = urldecode($arFile["SRC"]);
             if (substr($fullpath, 0, 4) != "http") {
                 $fullpath = $io->GetPhysicalName($_SERVER['DOCUMENT_ROOT'] . $arFile["SRC"]);
             } else {
                 $fullpath = CWebDavTools::urlEncode($fullpath);
             }
             $arTmpFile = CFile::MakeFileArray($fullpath);
             $fullpath = $arTmpFile['tmp_name'];
             $arFile["FILE_SIZE"] = $arTmpFile["size"];
         }
     } else {
         $arFilter['CHECK_PERMISSIONS'] = 'N';
         //check permissions manual! While infoblock perm's check by every section's (in dropped - we have error).
         $rs = CIBlockElement::GetList(array(), $arFilter, false, array("nTopCount" => 1), array("ID", "NAME", "TIMESTAMP_X", "IBLOCK_ID", "PROPERTY_" . $this->file_prop));
         if ($rs && ($arr = $rs->Fetch())) {
             if (empty($this->arParams["element_array"])) {
                 $this->arParams["element_array"] = $arr;
             }
             $arFile = CFile::GetFileArray($arr["PROPERTY_FILE_VALUE"]);
             $options["from_cloud"] = intval($arFile['HANDLER_ID']) > 0 ? "Y" : "N";
             $arTmpFile = array();
             if (CFile::IsImage($arFile["FILE_NAME"], $arFile["CONTENT_TYPE"])) {
                 if ($params["width"] > 0 || $params["height"] > 0) {
                     $arTmpFile = CFile::ResizeImageGet($arFile, array("width" => $params["width"], "height" => $params["height"]), $params["exact"] == "Y" ? BX_RESIZE_IMAGE_EXACT : BX_RESIZE_IMAGE_PROPORTIONAL, true, false, true);
                     $arTmpFile['tmp_name'] = ($options["from_cloud"] == "Y" ? "" : $_SERVER["DOCUMENT_ROOT"]) . $arTmpFile["src"];
                     $options["resized"] = "Y";
                     $arFile["FILE_SIZE"] = $arTmpFile["size"];
                     $arFile["SRC"] = $arTmpFile["src"];
                 }
                 if ($params["cache_image"] == "Y") {
                     $options["cache_time"] = 86400;
                 }
             } else {
                 $params["cache_image"] = "N";
             }
             if (empty($arTmpFile)) {
                 $arTmpFile = CFile::MakeFileArray($arr["PROPERTY_FILE_VALUE"]);
             }
             $fullpath = $arTmpFile['tmp_name'];
         }
     }
     $elementName = $arr['NAME'];
     return array($arFile, $options, $fullpath, $elementName);
 }
Exemple #2
0
 public static function getHashLink($arParams, $options, $userId = null)
 {
     $o = array_merge(array_intersect_key($arParams, array('IBLOCK_TYPE' => true, 'IBLOCK_ID' => true, 'FOLDER' => true, 'ROOT_SECTION_ID' => true)), array_intersect_key($options, array('PASSWORD' => true, 'URL' => true, 'BASE_URL' => true, 'F_SIZE' => true, 'DESCRIPTION' => true, 'LIFETIME_TYPE' => true, 'LIFETIME_NUMBER' => true, 'SINGLE_SESSION' => true, 'LINK_TYPE' => true, 'VERSION_ID' => true, 'FILE_ID' => true, 'ELEMENT_ID' => true)), array('USER_ID' => self::getUserID($userId), 'LIFETIME' => self::getLifeTime($options)));
     $fileName = str_replace(' ', '_', getFileName($o['URL']));
     if (strlen($fileName) > 25) {
         $fileName = substr($fileName, 0, 25) . '...';
     }
     $fileName = CWebDavTools::urlEncode($fileName);
     $hash = self::AddExtLink($o);
     return $hash != false ? self::getFullExternalURL() . $hash . '/' . $fileName : false;
 }